{"Entry":{"collection":"hook","key":"explain_validate_options_hook","name":"explain_validate_options_hook","aliases":[],"metadata":{"aliases":[],"category":"EXPLAIN","content_hash":"870447523583f75acdee388ae2446cbdf41f18aa52094503b93c4d3e7c15d73a","imported_at":"2026-09-30T17:44:22.442776+08:00","name":"explain_validate_options_hook","name_zh":"explain_validate_options_hook","slug":"explain_validate_options_hook","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"],"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"}]},"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":"zh-Hans","Fallback":true,"Versions":["18","19","20"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
