* Determine the class of a given object identified by objectAddress. * * This function is essentially the reverse mapping for the object_classes[] * table. We implement it as a function because the OIDs aren't consecutive. */
| 2886 | * table. We implement it as a function because the OIDs aren't consecutive. |
| 2887 | */ |
| 2888 | ObjectClass |
| 2889 | getObjectClass(const ObjectAddress *object) |
| 2890 | { |
| 2891 | /* only pg_class entries can have nonzero objectSubId */ |
| 2892 | if (object->classId != RelationRelationId && |
| 2893 | object->objectSubId != 0) |
| 2894 | elog(ERROR, "invalid non-zero objectSubId for object class %u", |
| 2895 | object->classId); |
| 2896 | |
| 2897 | switch (object->classId) |
| 2898 | { |
| 2899 | case RelationRelationId: |
| 2900 | /* caller must check objectSubId */ |
| 2901 | return OCLASS_CLASS; |
| 2902 | |
| 2903 | case ProcedureRelationId: |
| 2904 | return OCLASS_PROC; |
| 2905 | |
| 2906 | case TypeRelationId: |
| 2907 | return OCLASS_TYPE; |
| 2908 | |
| 2909 | case CastRelationId: |
| 2910 | return OCLASS_CAST; |
| 2911 | |
| 2912 | case CollationRelationId: |
| 2913 | return OCLASS_COLLATION; |
| 2914 | |
| 2915 | case ConstraintRelationId: |
| 2916 | return OCLASS_CONSTRAINT; |
| 2917 | |
| 2918 | case ConversionRelationId: |
| 2919 | return OCLASS_CONVERSION; |
| 2920 | |
| 2921 | case AttrDefaultRelationId: |
| 2922 | return OCLASS_DEFAULT; |
| 2923 | |
| 2924 | case LanguageRelationId: |
| 2925 | return OCLASS_LANGUAGE; |
| 2926 | |
| 2927 | case LargeObjectRelationId: |
| 2928 | return OCLASS_LARGEOBJECT; |
| 2929 | |
| 2930 | case OperatorRelationId: |
| 2931 | return OCLASS_OPERATOR; |
| 2932 | |
| 2933 | case OperatorClassRelationId: |
| 2934 | return OCLASS_OPCLASS; |
| 2935 | |
| 2936 | case OperatorFamilyRelationId: |
| 2937 | return OCLASS_OPFAMILY; |
| 2938 | |
| 2939 | case AccessMethodRelationId: |
| 2940 | return OCLASS_AM; |
| 2941 | |
| 2942 | case AccessMethodOperatorRelationId: |
| 2943 | return OCLASS_AMOP; |
| 2944 | |
| 2945 | case AccessMethodProcedureRelationId: |
no test coverage detected