{"kind": "hook", "major": "18", "item": {"slug": "object_access_hook_str", "name": "object_access_hook_str", "name_zh": "object_access_hook_str", "category": "Permissions and object access", "summary": "object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below.", "aliases": [], "versions": {"15": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_15_STABLE", "label": "15", "major": "15", "channel": "stable", "revision": "0351991b8e7c7b64382e2f30ce581a8f276590a6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/include/catalog/objectaccess.h#L131", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "ba3dee1a62779eb477851f4f83104b3da763e321244283724468be06ef4be73e"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "9b6a2dcdc12c4ce7cf00e8430a07f79a9840a964586fdfa02e3eab64fdb53780"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "9b6a2dcdc12c4ce7cf00e8430a07f79a9840a964586fdfa02e3eab64fdb53780"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}, "16": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_16_STABLE", "label": "16", "major": "16", "channel": "stable", "revision": "dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/include/catalog/objectaccess.h#L133", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "9f45778794866f6869e635a0ea6098120ddb15c80018e891e40e1aeee90d5216"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "fc48d03f23ec66885d0154595be8ff27a1db4c67f132f0a8ef309e1efe56308a"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "fc48d03f23ec66885d0154595be8ff27a1db4c67f132f0a8ef309e1efe56308a"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}, "17": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_17_STABLE", "label": "17", "major": "17", "channel": "stable", "revision": "163288afd32a448244c8df75b3c33181aadd7f20"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/include/catalog/objectaccess.h#L133", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "5543550c9a6ac36fbde11cbf81a4f784b48745c78687092f2ba20e6b87e8a9c7"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "60ddde03a6c19eaf5189727359fefb8f4ce86d0b59e1765fd87482759ef4faa3"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "60ddde03a6c19eaf5189727359fefb8f4ce86d0b59e1765fd87482759ef4faa3"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}, "18": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/catalog/objectaccess.h#L133", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}, "19": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_19_BETA4", "label": "19 Beta 4", "major": "19", "channel": "preview", "revision": "b73d13c32c834a2c8e1c60cb92f79530376cedf1"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/include/catalog/objectaccess.h#L133", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "88dd617183bc0d0bfe74c9a591549c6b82cb5a65a96c2624f87f826249f59f6a"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}, "20": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "master", "label": "20 devel", "major": "20", "channel": "devel", "revision": "2c10c2ce4d7bcd57543a49ab402af02a39724e0a"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/include/catalog/objectaccess.h#L133", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "88dd617183bc0d0bfe74c9a591549c6b82cb5a65a96c2624f87f826249f59f6a"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}}, "content_hash": "2c57d97b48bd69f9c34287f2d2c2c88fc3e682fdc67bb1c434df3c04c0953817", "imported_at": "2026-09-27T09:57:58.855"}, "snapshot": {"facts": [{"label": "Interface type", "value": "object_access_hook_type_str"}, {"label": "Header", "value": "src/include/catalog/objectaccess.h"}, {"label": "Subsystem", "value": "Permissions and object access"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/catalog/objectaccess.h#L133", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L23", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L169", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}], "sections": [{"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:169", "src/backend/catalog/objectaccess.c:191", "src/backend/catalog/objectaccess.c:207", "src/backend/catalog/objectaccess.c:230", "src/backend/catalog/objectaccess.c:252", "src/backend/catalog/objectaccess.c:270"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook_str) (OAT_POST_CREATE,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:163\u2013177", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook_str) (OAT_DROP,\n\t\t\t\t\t\t\t   classId, objectName, subId,\n\t\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:185\u2013199", "paragraphs": []}, {"code": "void\nRunObjectTruncateHookStr(const char *objectName)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\t(*object_access_hook_str) (OAT_TRUNCATE,\n\t\t\t\t\t\t\t   RelationRelationId, objectName, 0,\n\t\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHookStr\n *\n * OAT_POST_ALTER object name based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:201\u2013215", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;", "description": ["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."]}, "comparison": {"left": "14", "right": "15", "status": "added", "diff": "--- PostgreSQL 14\n+++ PostgreSQL 15\n@@ -1 +1,22 @@\n-Not recorded in this version\n+{\n+  \"facts\": [\n+    {\n+      \"label\": \"Interface type\",\n+      \"value\": \"object_access_hook_type_str\"\n+    },\n+    {\n+      \"label\": \"Header\",\n+      \"value\": \"src/include/catalog/objectaccess.h\"\n+    },\n+    {\n+      \"label\": \"Subsystem\",\n+      \"value\": \"Permissions and object access\"\n+    },\n+    {\n+      \"label\": \"Initial value\",\n+      \"value\": \"NULL (no hook installed)\"\n+    }\n+  ],\n+  \"signature\": \"typedef void (*object_access_hook_type_str) (ObjectAccessType access, Oid classId, const char *objectStr, int subId, void *arg);\\nextern PGDLLIMPORT object_access_hook_type_str object_access_hook_str;\",\n+  \"tables\": null\n+}"}}