{"kind": "hook", "major": "18", "item": {"slug": "object_access_hook", "name": "object_access_hook", "name_zh": "object_access_hook", "category": "Permissions and object access", "summary": "Plugin provides a hook function matching one or both of these signatures.", "aliases": [], "versions": {"10": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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_10_STABLE", "label": "10", "major": "10", "channel": "historical", "revision": "f4e8f137bfb08a664c8288824c1e36b5143ac875"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/include/catalog/objectaccess.h#L120", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "e30bfd65348d387b238c5e86b76aad5ec508ca42a22879056d376f4cebedaea1"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/catalog/objectaccess.c#L21", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "f8c812a5e01b2a3ffc55c0ae6a8df7b596980da4f051567bafe5aebad684f8c1"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/catalog/objectaccess.c#L40", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "f8c812a5e01b2a3ffc55c0ae6a8df7b596980da4f051567bafe5aebad684f8c1"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:40", "src/backend/catalog/objectaccess.c:62", "src/backend/catalog/objectaccess.c:85", "src/backend/catalog/objectaccess.c:107", "src/backend/catalog/objectaccess.c:125"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * It is entrypoint of OAT_DROP event", "title": "Core call context: src/backend/catalog/objectaccess.c:34\u201348", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * It is entrypoint of OAT_POST_ALTER event", "title": "Core call context: src/backend/catalog/objectaccess.c:56\u201370", "paragraphs": []}, {"code": "\tAssert(object_access_hook != NULL);\n\n\tmemset(&pa_arg, 0, sizeof(ObjectAccessPostAlter));\n\tpa_arg.auxiliary_id = auxiliaryId;\n\tpa_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_ALTER,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pa_arg);\n}\n\n/*\n * RunNamespaceSearchHook\n *\n * It is entrypoint of OAT_NAMESPACE_SEARCH event", "title": "Core call context: src/backend/catalog/objectaccess.c:79\u201393", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching this signature."]}, "11": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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_11_STABLE", "label": "11", "major": "11", "channel": "historical", "revision": "170e416034ec0231d9e9238f2577eeb76ca8d181"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/include/catalog/objectaccess.h#L120", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "f04f07f697df75f4c1afbdfc456672f2251b3d0a182a6a1cd8ec0cfc05652131"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/catalog/objectaccess.c#L21", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "1a4daaa8248ea36d5a9de23e0f054008d9b79cdb3644252b279c00a0436d9a9f"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/catalog/objectaccess.c#L40", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "1a4daaa8248ea36d5a9de23e0f054008d9b79cdb3644252b279c00a0436d9a9f"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:40", "src/backend/catalog/objectaccess.c:62", "src/backend/catalog/objectaccess.c:85", "src/backend/catalog/objectaccess.c:107", "src/backend/catalog/objectaccess.c:125"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * It is entrypoint of OAT_DROP event", "title": "Core call context: src/backend/catalog/objectaccess.c:34\u201348", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * It is entrypoint of OAT_POST_ALTER event", "title": "Core call context: src/backend/catalog/objectaccess.c:56\u201370", "paragraphs": []}, {"code": "\tAssert(object_access_hook != NULL);\n\n\tmemset(&pa_arg, 0, sizeof(ObjectAccessPostAlter));\n\tpa_arg.auxiliary_id = auxiliaryId;\n\tpa_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_ALTER,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pa_arg);\n}\n\n/*\n * RunNamespaceSearchHook\n *\n * It is entrypoint of OAT_NAMESPACE_SEARCH event", "title": "Core call context: src/backend/catalog/objectaccess.c:79\u201393", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching this signature."]}, "12": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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_12_STABLE", "label": "12", "major": "12", "channel": "historical", "revision": "3f302f0ed06f69c5ebd33d4df95895323a3cbef6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/include/catalog/objectaccess.h#L120", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "d4aed5db7a94fccf12344b86752d17bbf08fc1b85ecf6e8f3e8ed58f49366f15"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/catalog/objectaccess.c#L21", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "d5c529cd17913daf8563aff169d162a5481d8b83cf1e26f86644a1766edfbb77"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/catalog/objectaccess.c#L40", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "d5c529cd17913daf8563aff169d162a5481d8b83cf1e26f86644a1766edfbb77"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:40", "src/backend/catalog/objectaccess.c:62", "src/backend/catalog/objectaccess.c:85", "src/backend/catalog/objectaccess.c:107", "src/backend/catalog/objectaccess.c:125"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * It is entrypoint of OAT_DROP event", "title": "Core call context: src/backend/catalog/objectaccess.c:34\u201348", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * It is entrypoint of OAT_POST_ALTER event", "title": "Core call context: src/backend/catalog/objectaccess.c:56\u201370", "paragraphs": []}, {"code": "\tAssert(object_access_hook != NULL);\n\n\tmemset(&pa_arg, 0, sizeof(ObjectAccessPostAlter));\n\tpa_arg.auxiliary_id = auxiliaryId;\n\tpa_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_ALTER,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pa_arg);\n}\n\n/*\n * RunNamespaceSearchHook\n *\n * It is entrypoint of OAT_NAMESPACE_SEARCH event", "title": "Core call context: src/backend/catalog/objectaccess.c:79\u201393", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching this signature."]}, "13": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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_13_STABLE", "label": "13", "major": "13", "channel": "historical", "revision": "05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/include/catalog/objectaccess.h#L125", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "a17dca9f250e80aa64ffbcf1d4b3cf0c0223a08c36c654384770cab6284cc856"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "24bb183df00689fb682b294bfb201b97a677f5f9519e6281fa80097ba36c1f0f"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/catalog/objectaccess.c#L41", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "24bb183df00689fb682b294bfb201b97a677f5f9519e6281fa80097ba36c1f0f"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:41", "src/backend/catalog/objectaccess.c:63", "src/backend/catalog/objectaccess.c:79", "src/backend/catalog/objectaccess.c:102", "src/backend/catalog/objectaccess.c:124", "src/backend/catalog/objectaccess.c:142"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * It is entrypoint of OAT_DROP event", "title": "Core call context: src/backend/catalog/objectaccess.c:35\u201349", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * It is the entrypoint of OAT_TRUNCATE event", "title": "Core call context: src/backend/catalog/objectaccess.c:57\u201371", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * It is entrypoint of OAT_POST_ALTER event", "title": "Core call context: src/backend/catalog/objectaccess.c:73\u201387", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching this signature."]}, "14": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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_14_STABLE", "label": "14", "major": "14", "channel": "stable", "revision": "fba35c7c28a567839faba867db0808564c0a66db"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/include/catalog/objectaccess.h#L125", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "72e3768ff719fe428ad5fb3d6eab6b2301978d058dfa9301ba4b82b31bbb91da"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "ebd0e800bba6e1a7b79b319e2993b8db446fea7bc6bc587883d67cd3885aece5"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/catalog/objectaccess.c#L41", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "ebd0e800bba6e1a7b79b319e2993b8db446fea7bc6bc587883d67cd3885aece5"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:41", "src/backend/catalog/objectaccess.c:63", "src/backend/catalog/objectaccess.c:79", "src/backend/catalog/objectaccess.c:102", "src/backend/catalog/objectaccess.c:124", "src/backend/catalog/objectaccess.c:142"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * It is entrypoint of OAT_DROP event", "title": "Core call context: src/backend/catalog/objectaccess.c:35\u201349", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * It is the entrypoint of OAT_TRUNCATE event", "title": "Core call context: src/backend/catalog/objectaccess.c:57\u201371", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * It is entrypoint of OAT_POST_ALTER event", "title": "Core call context: src/backend/catalog/objectaccess.c:73\u201387", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching this signature."]}, "15": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L125", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "ba3dee1a62779eb477851f4f83104b3da763e321244283724468be06ef4be73e"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "9b6a2dcdc12c4ce7cf00e8430a07f79a9840a964586fdfa02e3eab64fdb53780"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "9b6a2dcdc12c4ce7cf00e8430a07f79a9840a964586fdfa02e3eab64fdb53780"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}, "16": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L127", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "9f45778794866f6869e635a0ea6098120ddb15c80018e891e40e1aeee90d5216"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "fc48d03f23ec66885d0154595be8ff27a1db4c67f132f0a8ef309e1efe56308a"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "fc48d03f23ec66885d0154595be8ff27a1db4c67f132f0a8ef309e1efe56308a"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}, "17": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L127", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "5543550c9a6ac36fbde11cbf81a4f784b48745c78687092f2ba20e6b87e8a9c7"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "60ddde03a6c19eaf5189727359fefb8f4ce86d0b59e1765fd87482759ef4faa3"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "60ddde03a6c19eaf5189727359fefb8f4ce86d0b59e1765fd87482759ef4faa3"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   (void *) &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}, "18": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L127", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}, "19": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L127", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "88dd617183bc0d0bfe74c9a591549c6b82cb5a65a96c2624f87f826249f59f6a"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}, "20": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L127", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "88dd617183bc0d0bfe74c9a591549c6b82cb5a65a96c2624f87f826249f59f6a"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "458f41ace06b23e7aa5807ec8f620176749701b421b1b96bab87b7c86fe832b2"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}}, "content_hash": "8b52090e31aef806ad8077906062e2ae1a510df069fb79b3653067bb3acc7c62", "imported_at": "2026-09-27T09:57:58.853"}, "snapshot": {"facts": [{"label": "Interface type", "value": "object_access_hook_type"}, {"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#L127", "path": "src/include/catalog/objectaccess.h", "label": "Interface declaration", "sha256": "600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L22", "path": "src/backend/catalog/objectaccess.c", "label": "Core definition", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L43", "path": "src/backend/catalog/objectaccess.c", "label": "Call sites", "sha256": "37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91"}], "sections": [{"title": "Core source comments", "paragraphs": ["Hook on object accesses. This is intended as infrastructure for security and logging plugins."]}, {"title": "Call sites", "paragraphs": ["src/backend/catalog/objectaccess.c:43", "src/backend/catalog/objectaccess.c:65", "src/backend/catalog/objectaccess.c:81", "src/backend/catalog/objectaccess.c:104", "src/backend/catalog/objectaccess.c:126", "src/backend/catalog/objectaccess.c:144"]}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&pc_arg, 0, sizeof(ObjectAccessPostCreate));\n\tpc_arg.is_internal = is_internal;\n\n\t(*object_access_hook) (OAT_POST_CREATE,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &pc_arg);\n}\n\n/*\n * RunObjectDropHook\n *\n * OAT_DROP object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:37\u201351", "paragraphs": []}, {"code": "\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\tmemset(&drop_arg, 0, sizeof(ObjectAccessDrop));\n\tdrop_arg.dropflags = dropflags;\n\n\t(*object_access_hook) (OAT_DROP,\n\t\t\t\t\t\t   classId, objectId, subId,\n\t\t\t\t\t\t   &drop_arg);\n}\n\n/*\n * RunObjectTruncateHook\n *\n * OAT_TRUNCATE object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:59\u201373", "paragraphs": []}, {"code": "void\nRunObjectTruncateHook(Oid objectId)\n{\n\t/* caller should check, but just in case... */\n\tAssert(object_access_hook != NULL);\n\n\t(*object_access_hook) (OAT_TRUNCATE,\n\t\t\t\t\t\t   RelationRelationId, objectId, 0,\n\t\t\t\t\t\t   NULL);\n}\n\n/*\n * RunObjectPostAlterHook\n *\n * OAT_POST_ALTER object ID based event hook entrypoint", "title": "Core call context: src/backend/catalog/objectaccess.c:75\u201389", "paragraphs": []}], "signature": "typedef void (*object_access_hook_type) (ObjectAccessType access, Oid classId, Oid objectId, int subId, void *arg);\nextern PGDLLIMPORT object_access_hook_type object_access_hook;", "description": ["Plugin provides a hook function matching one or both of these signatures."]}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}