{"kind": "hook", "major": "18", "item": {"slug": "processutility_hook", "name": "ProcessUtility_hook", "name_zh": "ProcessUtility_hook", "category": "Parsing and utility commands", "summary": "Hook for plugins to get control in ProcessUtility()", "aliases": [], "versions": {"10": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L27", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "3e4aace62535c74c0d5895f7bcc9ef6697fb2b61f7e6beeeae2dd1f83922bc69"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/tcop/utility.c#L73", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "6e85342c474fc91df57ce1971ec9193d05bdeb24bee034a4f9e6c96dffb88435"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/tcop/utility.c#L353", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "6e85342c474fc91df57ce1971ec9193d05bdeb24bee034a4f9e6c96dffb88435"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:353"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, completionTag);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, completionTag);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:347\u2013361", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, char *completionTag);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "11": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L29", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "a675f5a8ae6e278afde37c1c3fa54f82e2656f36056194086285b46257e2eeb6"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/tcop/utility.c#L76", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "9d08b645bd71f9afeea6af4a4cef20ff13a6816815f81ef39779625cfa8ccf9a"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/tcop/utility.c#L356", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "9d08b645bd71f9afeea6af4a4cef20ff13a6816815f81ef39779625cfa8ccf9a"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:356"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, completionTag);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, completionTag);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:350\u2013364", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, char *completionTag);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "12": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L29", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "dacc31a4a8660632e7af65dd04d639280682920590e5e0545716c9d2e1a08576"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/tcop/utility.c#L76", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "41b0763680b8d69ef66c04b62f16939a64521c8a628237c7dc855c6ff9692f86"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/tcop/utility.c#L356", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "41b0763680b8d69ef66c04b62f16939a64521c8a628237c7dc855c6ff9692f86"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:356"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, completionTag);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, completionTag);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:350\u2013364", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, char *completionTag);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "13": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "e865c99eb37f022222b4f675dcfab8da8b7095df47d369085edd558f28e32153"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/tcop/utility.c#L75", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "eb04489e4b5f574263c3c6d7eabbafcb76a47b967cb7ed090d25077642e15ae1"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/tcop/utility.c#L520", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "eb04489e4b5f574263c3c6d7eabbafcb76a47b967cb7ed090d25077642e15ae1"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:520"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:514\u2013528", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "14": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "a30f2d1c64358a8b888376b7e597425f29dde8f4cb34cd0edf52c3491ab0e21a"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/tcop/utility.c#L76", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "b90aa634890e89bfb704ee60c0a3fe9722023f8f33a2c24a732acc00ca7b6785"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/tcop/utility.c#L523", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "b90aa634890e89bfb704ee60c0a3fe9722023f8f33a2c24a732acc00ca7b6785"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:523"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:517\u2013531", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "15": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "2217f54b0ef55840213fb3e414e33950cecdceee5dd9e315686a5fdd2eb517ac"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/tcop/utility.c#L77", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "db00d0af4ca3fd62ac4fd567e6b6ce5048020957db3afed087a8e1357ccf8ec9"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/tcop/utility.c#L526", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "db00d0af4ca3fd62ac4fd567e6b6ce5048020957db3afed087a8e1357ccf8ec9"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:526"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:520\u2013534", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "16": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "06b1fecb402ce6690c752059fb52b5ce6b5e9a267caa57d266f46079a0539f46"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/tcop/utility.c#L77", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "28742c9b0053cb588212f6bbc02b2712a5142d5dead1c108262cf382f3684d9a"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/tcop/utility.c#L526", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "28742c9b0053cb588212f6bbc02b2712a5142d5dead1c108262cf382f3684d9a"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:526"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:520\u2013534", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "17": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "c4ff0b264e321d5656110211b9e058ddca3207405a124de8e538487750adcc94"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/tcop/utility.c#L70", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "3768e954517dd79ea36420c8e0009ffe07ab2dcc0ff41ba2b756afaed77ca2e3"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/tcop/utility.c#L519", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "3768e954517dd79ea36420c8e0009ffe07ab2dcc0ff41ba2b756afaed77ca2e3"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:519"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:513\u2013527", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "18": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "726bfca02c8e0186b1b57f19c3319d11756d6b70a1b6f1cba7750c07aabdbbc3"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/tcop/utility.c#L70", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "7aae5d07628b6debf8456d1d4ea96f28912232192e56ea25773b4c4b61235a00"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/tcop/utility.c#L519", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "7aae5d07628b6debf8456d1d4ea96f28912232192e56ea25773b4c4b61235a00"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:519"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:513\u2013527", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "19": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "b051c4f13cd13745c78274661a199706ea6f3a987109b639de1a5591795421cc"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/tcop/utility.c#L71", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "dcb009e3d4dcfebf53b7a636d8815a0259fb8d793ecec36ee90613a8d9f9ebb1"}, {"url": "https://github.com/postgres/postgres/blob/b73d13c32c834a2c8e1c60cb92f79530376cedf1/src/backend/tcop/utility.c#L521", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "dcb009e3d4dcfebf53b7a636d8815a0259fb8d793ecec36ee90613a8d9f9ebb1"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:521"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:515\u2013529", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "20": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "b051c4f13cd13745c78274661a199706ea6f3a987109b639de1a5591795421cc"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/tcop/utility.c#L71", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "dcb009e3d4dcfebf53b7a636d8815a0259fb8d793ecec36ee90613a8d9f9ebb1"}, {"url": "https://github.com/postgres/postgres/blob/2c10c2ce4d7bcd57543a49ab402af02a39724e0a/src/backend/tcop/utility.c#L521", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "dcb009e3d4dcfebf53b7a636d8815a0259fb8d793ecec36ee90613a8d9f9ebb1"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:521"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:515\u2013529", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}}, "content_hash": "fad7b2deaaf5285ba21b2da5819afd853f016c08943a874fe9c86f0b88cc9d80", "imported_at": "2026-09-27T09:57:58.849"}, "snapshot": {"facts": [{"label": "Interface type", "value": "ProcessUtility_hook_type"}, {"label": "Header", "value": "src/include/tcop/utility.h"}, {"label": "Subsystem", "value": "Parsing and utility commands"}, {"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/tcop/utility.h#L71", "path": "src/include/tcop/utility.h", "label": "Interface declaration", "sha256": "726bfca02c8e0186b1b57f19c3319d11756d6b70a1b6f1cba7750c07aabdbbc3"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/tcop/utility.c#L70", "path": "src/backend/tcop/utility.c", "label": "Core definition", "sha256": "7aae5d07628b6debf8456d1d4ea96f28912232192e56ea25773b4c4b61235a00"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/tcop/utility.c#L519", "path": "src/backend/tcop/utility.c", "label": "Call sites", "sha256": "7aae5d07628b6debf8456d1d4ea96f28912232192e56ea25773b4c4b61235a00"}], "sections": [{"title": "Core source comments", "paragraphs": ["We provide a function hook variable that lets loadable plugins get control when ProcessUtility is called. Such a plugin would normally call standard_ProcessUtility()."]}, {"title": "Call sites", "paragraphs": ["src/backend/tcop/utility.c:519"]}, {"code": "\t/*\n\t * We provide a function hook variable that lets loadable plugins get\n\t * control when ProcessUtility is called.  Such a plugin would normally\n\t * call standard_ProcessUtility().\n\t */\n\tif (ProcessUtility_hook)\n\t\t(*ProcessUtility_hook) (pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n\telse\n\t\tstandard_ProcessUtility(pstmt, queryString, readOnlyTree,\n\t\t\t\t\t\t\t\tcontext, params, queryEnv,\n\t\t\t\t\t\t\t\tdest, qc);\n}\n", "title": "Core call context: src/backend/tcop/utility.c:513\u2013527", "paragraphs": []}], "signature": "typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, bool readOnlyTree, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;", "description": ["Hook for plugins to get control in ProcessUtility()"]}, "comparison": {"left": "12", "right": "13", "status": "changed", "diff": "--- PostgreSQL 12\n+++ PostgreSQL 13\n@@ -17,6 +17,6 @@\n       \"value\": \"NULL (no hook installed)\"\n     }\n   ],\n-  \"signature\": \"typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, char *completionTag);\\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;\",\n+  \"signature\": \"typedef void (*ProcessUtility_hook_type) (PlannedStmt *pstmt, const char *queryString, ProcessUtilityContext context, ParamListInfo params, QueryEnvironment *queryEnv, DestReceiver *dest, QueryCompletion *qc);\\nextern PGDLLIMPORT ProcessUtility_hook_type ProcessUtility_hook;\",\n   \"tables\": null\n }"}}