{"Entry":{"collection":"hook","key":"explain_validate_options_hook","name":"explain_validate_options_hook","aliases":[],"metadata":{"aliases":[],"category":"EXPLAIN","content_hash":"870447523583f75acdee388ae2446cbdf41f18aa52094503b93c4d3e7c15d73a","derived_content_hash":"fb044a6c3994e222c342256239ef462b4d6f8da6944b3b627348109ee72f32f3","imported_at":"2026-09-30T17:44:22.442776+08:00","name":"explain_validate_options_hook","name_zh":"explain_validate_options_hook","repair_provenance":{"original_source_revision":"","receipt_sha256":"497ef999d391f02a4efd46496d0f40e3aeaf48149ab378b03d4467b643be8771","repair":"wiki-repair-20261023"},"slug":"explain_validate_options_hook","source_rev":"wiki-repair-20261023:a9ee9b825d031e8879a08906f5c52bed1baa65565fd9ab46c0f0007f2f36f2fe","summary":"Hook to perform additional EXPLAIN options validation"}},"Definition":{"Collection":"hook","Key":"explain_validate_options_hook","SourceDatabase":"center","Version":"18","SourceTable":"hook","SourceKey":"explain_validate_options_hook","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","Facts":{"description":["Hook to perform additional EXPLAIN options validation"],"description_zh":"对 EXPLAIN 选项执行额外校验的钩子。","description_zh_html":"\u003cp\u003e对 EXPLAIN 选项执行额外校验的钩子。\u003c/p\u003e\u003cp\u003e以下中文为本站依据所列 PostgreSQL 源码注释编译的说明。\u003c/p\u003e\u003ch3\u003e接口声明\u003c/h3\u003e\u003cpre\u003etypedef void (*explain_validate_options_hook_type) (struct ExplainState *es, List *options, ParseState *pstate);\nextern PGDLLIMPORT explain_validate_options_hook_type explain_validate_options_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_state.c:206\u003c/code\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch3\u003e核心调用上下文：src/backend/commands/explain_state.c:200–214\u003c/h3\u003e\u003cpre\u003e\n\t/* if the summary was not set explicitly, set default value */\n\tes-\u0026gt;summary = (summary_set) ? es-\u0026gt;summary : es-\u0026gt;analyze;\n\n\t/* plugin specific option validation */\n\tif (explain_validate_options_hook)\n\t\t(*explain_validate_options_hook) (es, options, pstate);\n}\n\n/*\n * Map the name of an EXPLAIN extension to an integer ID.\n *\n * Within the lifetime of a particular backend, the same name will be mapped\n * to the same ID every time. IDs are not stable across backends. Use the ID\n * that you get from this function to call GetExplainExtensionState and\u003c/pre\u003e","facts":[{"label":"Interface type","value":"explain_validate_options_hook_type"},{"label":"Header","value":"src/include/commands/explain_state.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":["plugin specific option validation"],"title":"Core source comments"},{"paragraphs":["src/backend/commands/explain_state.c:206"],"title":"Call sites"},{"code":"\n\t/* if the summary was not set explicitly, set default value */\n\tes-\u003esummary = (summary_set) ? es-\u003esummary : es-\u003eanalyze;\n\n\t/* plugin specific option validation */\n\tif (explain_validate_options_hook)\n\t\t(*explain_validate_options_hook) (es, options, pstate);\n}\n\n/*\n * Map the name of an EXPLAIN extension to an integer ID.\n *\n * Within the lifetime of a particular backend, the same name will be mapped\n * to the same ID every time. IDs are not stable across backends. Use the ID\n * that you get from this function to call GetExplainExtensionState and","paragraphs":[],"title":"Core call context: src/backend/commands/explain_state.c:200–214"}],"signature":"typedef void (*explain_validate_options_hook_type) (struct ExplainState *es, List *options, ParseState *pstate);\nextern PGDLLIMPORT explain_validate_options_hook_type explain_validate_options_hook;","sources":[{"label":"Interface declaration","path":"src/include/commands/explain_state.h","sha256":"88894e050e956d07561de6cf6d57bb0d5de915cc2fb35565e3e7e68c4c59973d","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/explain_state.h#L82"},{"label":"Core definition","path":"src/backend/commands/explain_state.c","sha256":"408c1ec6cd8757c31914fb9015e8f01d3b5a9f8f59173fda7b65e76147447bb1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain_state.c#L41"},{"label":"Call sites","path":"src/backend/commands/explain_state.c","sha256":"408c1ec6cd8757c31914fb9015e8f01d3b5a9f8f59173fda7b65e76147447bb1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain_state.c#L206"}],"translation_provenance":{"inputs":[{"label":"Interface declaration","path":"src/include/commands/explain_state.h","sha256":"88894e050e956d07561de6cf6d57bb0d5de915cc2fb35565e3e7e68c4c59973d","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/explain_state.h#L82"},{"label":"Core definition","path":"src/backend/commands/explain_state.c","sha256":"408c1ec6cd8757c31914fb9015e8f01d3b5a9f8f59173fda7b65e76147447bb1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain_state.c#L41"},{"label":"Call sites","path":"src/backend/commands/explain_state.c","sha256":"408c1ec6cd8757c31914fb9015e8f01d3b5a9f8f59173fda7b65e76147447bb1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain_state.c#L206"}],"kind":"authored-source-translation","locale":"zh-Hans","source_revision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","translated_source_sha256":"696b461d501e005d2f74e74d6a9b263ac9456e8646c29c35088514891e76c480","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_state.h","sha256":"88894e050e956d07561de6cf6d57bb0d5de915cc2fb35565e3e7e68c4c59973d","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/commands/explain_state.h#L82"},{"label":"Core definition","path":"src/backend/commands/explain_state.c","sha256":"408c1ec6cd8757c31914fb9015e8f01d3b5a9f8f59173fda7b65e76147447bb1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain_state.c#L41"},{"label":"Call sites","path":"src/backend/commands/explain_state.c","sha256":"408c1ec6cd8757c31914fb9015e8f01d3b5a9f8f59173fda7b65e76147447bb1","url":"https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/commands/explain_state.c#L206"}]},"MeasuredEvidence":{}},"Text":{"Collection":"hook","Key":"explain_validate_options_hook","SourceDatabase":"center","Version":"18","Locale":"en","Title":"explain_validate_options_hook","Summary":"Hook to perform additional EXPLAIN options validation","BodyHTML":"\u003cp\u003eHook to perform additional EXPLAIN options validation\u003c/p\u003e","SourceRevision":"753057e340da8f22e57c9a409ea7a235fd6a46bd","ContentHash":"5c7d916786b3e741c68ce0b968d6484d6602644b816f8bbcb47a9c5fa0dfdb67","Payload":{"description":["Hook to perform additional EXPLAIN options validation"],"related":[{"label":"EXPLAIN","url":"/wiki/sql/explain/?v=18"}],"sections":[{"paragraphs":["plugin specific option validation"],"title":"Core source comments"},{"paragraphs":["src/backend/commands/explain_state.c:206"],"title":"Call sites"},{"code":"\n\t/* if the summary was not set explicitly, set default value */\n\tes-\u003esummary = (summary_set) ? es-\u003esummary : es-\u003eanalyze;\n\n\t/* plugin specific option validation */\n\tif (explain_validate_options_hook)\n\t\t(*explain_validate_options_hook) (es, options, pstate);\n}\n\n/*\n * Map the name of an EXPLAIN extension to an integer ID.\n *\n * Within the lifetime of a particular backend, the same name will be mapped\n * to the same ID every time. IDs are not stable across backends. Use the ID\n * that you get from this function to call GetExplainExtensionState and","paragraphs":[],"title":"Core call context: src/backend/commands/explain_state.c:200–214"}]}},"RequestedLocale":"en","Fallback":false,"Versions":["18","19","20"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
