{"Entry":{"collection":"hook","key":"object_access_hook_str","name":"object_access_hook_str","aliases":[],"metadata":{"aliases":[],"category":"Permissions and object access","content_hash":"2c57d97b48bd69f9c34287f2d2c2c88fc3e682fdc67bb1c434df3c04c0953817","derived_content_hash":"a8c7fe628fbf68ef6abce7a27994478e34a1a3b6d9facc0982b8fe4cb8732fe5","imported_at":"2026-09-27T17:57:58.855501+08:00","name":"object_access_hook_str","name_zh":"object_access_hook_str","repair_provenance":{"original_source_revision":"","receipt_sha256":"a3ac856eb82cfe392e922f08f132e09411509b10a6b637b2a8b38c080e25cbd3","repair":"wiki-repair-20261023"},"slug":"object_access_hook_str","source_rev":"wiki-repair-20261023:6d6d48ba4859d38987705dc5e55e9f9264925738da6ccfd1d0bdc16f15187532","summary":"object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."}},"Definition":{"Collection":"hook","Key":"object_access_hook_str","SourceDatabase":"center","Version":"18","SourceTable":"hook","SourceKey":"object_access_hook_str","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","Facts":{"description":["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."],"description_zh":"object_access_hook_str 是在 src/include/catalog/objectaccess.h 中声明的核心扩展钩子。下方保留精确接口与调用位置。","description_zh_html":"\u003cp\u003eobject_access_hook_str 是在 src/include/catalog/objectaccess.h 中声明的核心扩展钩子。下方保留精确接口与调用位置。\u003c/p\u003e\u003cp\u003e以下中文为本站依据所列 PostgreSQL 源码注释编译的说明。\u003c/p\u003e\u003ch3\u003e接口声明\u003c/h3\u003e\u003cpre\u003etypedef 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;\u003c/pre\u003e\u003ch3\u003e调用位置\u003c/h3\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003esrc/backend/catalog/objectaccess.c:169\u003c/code\u003e\u003c/li\u003e\u003cli\u003e\u003ccode\u003esrc/backend/catalog/objectaccess.c:191\u003c/code\u003e\u003c/li\u003e\u003cli\u003e\u003ccode\u003esrc/backend/catalog/objectaccess.c:207\u003c/code\u003e\u003c/li\u003e\u003cli\u003e\u003ccode\u003esrc/backend/catalog/objectaccess.c:230\u003c/code\u003e\u003c/li\u003e\u003cli\u003e\u003ccode\u003esrc/backend/catalog/objectaccess.c:252\u003c/code\u003e\u003c/li\u003e\u003cli\u003e\u003ccode\u003esrc/backend/catalog/objectaccess.c:270\u003c/code\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e核心调用上下文：src/backend/catalog/objectaccess.c:163–177\u003c/h3\u003e\u003cpre\u003e\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(\u0026amp;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   \u0026amp;pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint\u003c/pre\u003e\u003ch3\u003e核心调用上下文：src/backend/catalog/objectaccess.c:185–199\u003c/h3\u003e\u003cpre\u003e\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(\u0026amp;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   \u0026amp;drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint\u003c/pre\u003e\u003ch3\u003e核心调用上下文：src/backend/catalog/objectaccess.c:201–215\u003c/h3\u003e\u003cpre\u003evoid\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\u003c/pre\u003e","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":{"channel":"stable","label":"18","major":"18","ref":"REL_18_STABLE","revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd"},"sections":[{"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"],"title":"Call sites"},{"code":"\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(\u0026pc_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   \u0026pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint","paragraphs":[],"title":"Core call context: src/backend/catalog/objectaccess.c:163–177"},{"code":"\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(\u0026drop_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   \u0026drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint","paragraphs":[],"title":"Core call context: src/backend/catalog/objectaccess.c:185–199"},{"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","paragraphs":[],"title":"Core call context: src/backend/catalog/objectaccess.c:201–215"}],"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;","sources":[{"label":"Interface declaration","path":"src/include/catalog/objectaccess.h","sha256":"600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/catalog/objectaccess.h#L133"},{"label":"Core definition","path":"src/backend/catalog/objectaccess.c","sha256":"37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L23"},{"label":"Call sites","path":"src/backend/catalog/objectaccess.c","sha256":"37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L169"}],"translation_provenance":{"inputs":[{"label":"Interface declaration","path":"src/include/catalog/objectaccess.h","sha256":"600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/catalog/objectaccess.h#L133"},{"label":"Core definition","path":"src/backend/catalog/objectaccess.c","sha256":"37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L23"},{"label":"Call sites","path":"src/backend/catalog/objectaccess.c","sha256":"37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L169"}],"kind":"authored-source-translation","locale":"zh-Hans","source_revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","translated_source_sha256":"4c94568ac91b4c2461e2e6d784a4e6a3f9a11463f9a36d42a2026f8545d8203f","version":"18"},"zh_from":"authored-source-translation"},"ManualEvidence":{"release":{"channel":"stable","label":"18","major":"18","ref":"REL_18_STABLE","revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd"},"sources":[{"label":"Interface declaration","path":"src/include/catalog/objectaccess.h","sha256":"600e3cf42fb4c9bd8cdfa7f048dd1b7677bad5c558c9b65ecb976145d14c7781","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/catalog/objectaccess.h#L133"},{"label":"Core definition","path":"src/backend/catalog/objectaccess.c","sha256":"37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L23"},{"label":"Call sites","path":"src/backend/catalog/objectaccess.c","sha256":"37c09c923b0b0f07bcff22462814d4282fae75355b2e9058d63c68de2be76c91","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/catalog/objectaccess.c#L169"}]},"MeasuredEvidence":{}},"Text":{"Collection":"hook","Key":"object_access_hook_str","SourceDatabase":"center","Version":"18","Locale":"en","Title":"object_access_hook_str","Summary":"object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below.","BodyHTML":"\u003cp\u003eobject_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below.\u003c/p\u003e","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","ContentHash":"21c63ed432c7960c960d6c4b37c5e5500a35c876b7564ce9e1da04794238a4d1","Payload":{"description":["object_access_hook_str: core extension hook declared in src/include/catalog/objectaccess.h. The exact interface and call sites are recorded below."],"related":[],"sections":[{"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"],"title":"Call sites"},{"code":"\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(\u0026pc_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   \u0026pc_arg);\n}\n\n/*\n * RunObjectDropHookStr\n *\n * OAT_DROP object name based event hook entrypoint","paragraphs":[],"title":"Core call context: src/backend/catalog/objectaccess.c:163–177"},{"code":"\t/* caller should check, but just in case... */\n\tAssert(object_access_hook_str != NULL);\n\n\tmemset(\u0026drop_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   \u0026drop_arg);\n}\n\n/*\n * RunObjectTruncateHookStr\n *\n * OAT_TRUNCATE object name based event hook entrypoint","paragraphs":[],"title":"Core call context: src/backend/catalog/objectaccess.c:185–199"},{"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","paragraphs":[],"title":"Core call context: src/backend/catalog/objectaccess.c:201–215"}]}},"RequestedLocale":"en","Fallback":false,"Versions":["15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
