{"Entry":{"collection":"hook","key":"explainonequery_hook","name":"ExplainOneQuery_hook","aliases":[],"metadata":{"aliases":[],"category":"EXPLAIN","content_hash":"04f1f3dafaf5445b5d2fea4dc5acec7a730745ce1a66a4465643794380b2c2c0","derived_content_hash":"21b2d7f33488164c02e71ab921a8d818d6e2554fac9994ffe99e6873c9458b6d","imported_at":"2026-09-30T17:44:22.446632+08:00","name":"ExplainOneQuery_hook","name_zh":"ExplainOneQuery_hook","repair_provenance":{"original_source_revision":"","receipt_sha256":"6b989448c6ce3add65916fbd742c67a58f93a2c60e1a6f4fc68ce1d176e88594","repair":"wiki-repair-20261023"},"slug":"explainonequery_hook","source_rev":"wiki-repair-20261023:da6fd788265fa6d93faab72b83c376898cdff449e5b7ee608f3f7dd7ce7bdff4","summary":"Hook for plugins to get control in ExplainOneQuery()"}},"Definition":{"Collection":"hook","Key":"explainonequery_hook","SourceDatabase":"center","Version":"18","SourceTable":"hook","SourceKey":"explainonequery_hook","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","Facts":{"description":["Hook for plugins to get control in ExplainOneQuery()"],"description_zh":"供插件在 ExplainOneQuery() 中接管处理的钩子。","description_zh_html":"\u003cp\u003e供插件在 ExplainOneQuery() 中接管处理的钩子。\u003c/p\u003e\u003cp\u003e以下中文为本站依据所列 PostgreSQL 源码注释编译的说明。\u003c/p\u003e\u003ch3\u003e接口声明\u003c/h3\u003e\u003cpre\u003etypedef void (*ExplainOneQuery_hook_type) (Query *query, int cursorOptions, IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv);\nextern PGDLLIMPORT ExplainOneQuery_hook_type ExplainOneQuery_hook;\u003c/pre\u003e\u003ch3\u003e源码说明\u003c/h3\u003e\u003cp\u003e如果存在建议插件，则由该插件管理。\u003c/p\u003e\u003ch3\u003e调用位置\u003c/h3\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003esrc/backend/commands/explain.c:306\u003c/code\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e核心调用上下文：src/backend/commands/explain.c:300–314\u003c/h3\u003e\u003cpre\u003e\t\tExplainOneUtility(query-\u0026gt;utilityStmt, into, es, pstate, params);\n\t\treturn;\n\t}\n\n\t/* if an advisor plugin is present, let it manage things */\n\tif (ExplainOneQuery_hook)\n\t\t(*ExplainOneQuery_hook) (query, cursorOptions, into, es,\n\t\t\t\t\t\t\t\t pstate-\u0026gt;p_sourcetext, params, pstate-\u0026gt;p_queryEnv);\n\telse\n\t\tstandard_ExplainOneQuery(query, cursorOptions, into, es,\n\t\t\t\t\t\t\t\t pstate-\u0026gt;p_sourcetext, params, pstate-\u0026gt;p_queryEnv);\n}\n\n/*\n * standard_ExplainOneQuery -\u003c/pre\u003e","facts":[{"label":"Interface type","value":"ExplainOneQuery_hook_type"},{"label":"Header","value":"src/include/commands/explain.h"},{"label":"Subsystem","value":"EXPLAIN"},{"label":"Initial value","value":"NULL (no hook installed)"}],"related":[{"label":"EXPLAIN","url":"/wiki/sql/explain/?v=18"}],"release":{"channel":"stable","label":"18","major":"18","ref":"REL_18_STABLE","revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd"},"sections":[{"paragraphs":["if an advisor plugin is present, let it manage things"],"title":"Core source comments"},{"paragraphs":["src/backend/commands/explain.c:306"],"title":"Call sites"},{"code":"\t\tExplainOneUtility(query-\u003eutilityStmt, into, es, pstate, params);\n\t\treturn;\n\t}\n\n\t/* if an advisor plugin is present, let it manage things */\n\tif (ExplainOneQuery_hook)\n\t\t(*ExplainOneQuery_hook) (query, cursorOptions, into, es,\n\t\t\t\t\t\t\t\t pstate-\u003ep_sourcetext, params, pstate-\u003ep_queryEnv);\n\telse\n\t\tstandard_ExplainOneQuery(query, cursorOptions, into, es,\n\t\t\t\t\t\t\t\t pstate-\u003ep_sourcetext, params, pstate-\u003ep_queryEnv);\n}\n\n/*\n * standard_ExplainOneQuery -","paragraphs":[],"title":"Core call context: src/backend/commands/explain.c:300–314"}],"signature":"typedef void (*ExplainOneQuery_hook_type) (Query *query, int cursorOptions, IntoClause *into, struct ExplainState *es, const char *queryString, ParamListInfo params, QueryEnvironment *queryEnv);\nextern PGDLLIMPORT ExplainOneQuery_hook_type ExplainOneQuery_hook;","sources":[{"label":"Interface declaration","path":"src/include/commands/explain.h","sha256":"a8ef9548bccebb3c8f5255e8295d1d53dd0e4ea54b6be8b17dfe163ef2918b7f","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/explain.h#L22"},{"label":"Core definition","path":"src/backend/commands/explain.c","sha256":"34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain.c#L50"},{"label":"Call sites","path":"src/backend/commands/explain.c","sha256":"34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain.c#L306"}],"translation_provenance":{"inputs":[{"label":"Interface declaration","path":"src/include/commands/explain.h","sha256":"a8ef9548bccebb3c8f5255e8295d1d53dd0e4ea54b6be8b17dfe163ef2918b7f","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/explain.h#L22"},{"label":"Core definition","path":"src/backend/commands/explain.c","sha256":"34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain.c#L50"},{"label":"Call sites","path":"src/backend/commands/explain.c","sha256":"34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain.c#L306"}],"kind":"authored-source-translation","locale":"zh-Hans","source_revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","translated_source_sha256":"b4460bcb5682a7b4149be59d824fa33193d8c372ba55588e8b076067e6e43d8f","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/commands/explain.h","sha256":"a8ef9548bccebb3c8f5255e8295d1d53dd0e4ea54b6be8b17dfe163ef2918b7f","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/explain.h#L22"},{"label":"Core definition","path":"src/backend/commands/explain.c","sha256":"34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain.c#L50"},{"label":"Call sites","path":"src/backend/commands/explain.c","sha256":"34c86d6070224a0e981efef51f79101d6d505e5874f1684ace183034bab14bb4","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain.c#L306"}]},"MeasuredEvidence":{}},"Text":{"Collection":"hook","Key":"explainonequery_hook","SourceDatabase":"center","Version":"18","Locale":"en","Title":"ExplainOneQuery_hook","Summary":"Hook for plugins to get control in ExplainOneQuery()","BodyHTML":"\u003cp\u003eHook for plugins to get control in ExplainOneQuery()\u003c/p\u003e","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","ContentHash":"1b592052b6aebb8d7c73f93c9ad9d638af78ae99385f8f9922c2c48a8c2aef75","Payload":{"description":["Hook for plugins to get control in ExplainOneQuery()"],"related":[{"label":"EXPLAIN","url":"/wiki/sql/explain/?v=18"}],"sections":[{"paragraphs":["if an advisor plugin is present, let it manage things"],"title":"Core source comments"},{"paragraphs":["src/backend/commands/explain.c:306"],"title":"Call sites"},{"code":"\t\tExplainOneUtility(query-\u003eutilityStmt, into, es, pstate, params);\n\t\treturn;\n\t}\n\n\t/* if an advisor plugin is present, let it manage things */\n\tif (ExplainOneQuery_hook)\n\t\t(*ExplainOneQuery_hook) (query, cursorOptions, into, es,\n\t\t\t\t\t\t\t\t pstate-\u003ep_sourcetext, params, pstate-\u003ep_queryEnv);\n\telse\n\t\tstandard_ExplainOneQuery(query, cursorOptions, into, es,\n\t\t\t\t\t\t\t\t pstate-\u003ep_sourcetext, params, pstate-\u003ep_queryEnv);\n}\n\n/*\n * standard_ExplainOneQuery -","paragraphs":[],"title":"Core call context: src/backend/commands/explain.c:300–314"}]}},"RequestedLocale":"en","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
