{"kind": "hook", "major": "18", "item": {"slug": "get_relation_info_hook", "name": "get_relation_info_hook", "name_zh": "get_relation_info_hook", "category": "Query planning", "summary": "Hook for plugins to get control in get_relation_info()", "aliases": [], "versions": {"10": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/10/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_10_STABLE", "label": "10", "major": "10", "channel": "historical", "revision": "f4e8f137bfb08a664c8288824c1e36b5143ac875"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "7ce76ad50ed9ef5cc096a92ab1c7ec4647b0bd35f9316652517b0f82631457ef"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/optimizer/util/plancat.c#L57", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "5720ce4826c62f8706c10fe300946c71e29a2cecf419c7235e5e3197a98da398"}, {"url": "https://github.com/postgres/postgres/blob/f4e8f137bfb08a664c8288824c1e36b5143ac875/src/backend/optimizer/util/plancat.c#L433", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "5720ce4826c62f8706c10fe300946c71e29a2cecf419c7235e5e3197a98da398"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:433"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:427\u2013441", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "11": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/11/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_11_STABLE", "label": "11", "major": "11", "channel": "historical", "revision": "170e416034ec0231d9e9238f2577eeb76ca8d181"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "fd4fc55905a11764373cd3a2d7d9716175ef7295c0097c95106c8bd6e971d733"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/optimizer/util/plancat.c#L59", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "06010999272f067c861ed3a14f086990e48b2ba6554233d86b3856dfe2b0b4bc"}, {"url": "https://github.com/postgres/postgres/blob/170e416034ec0231d9e9238f2577eeb76ca8d181/src/backend/optimizer/util/plancat.c#L466", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "06010999272f067c861ed3a14f086990e48b2ba6554233d86b3856dfe2b0b4bc"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:466"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:460\u2013474", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "12": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/12/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_12_STABLE", "label": "12", "major": "12", "channel": "historical", "revision": "3f302f0ed06f69c5ebd33d4df95895323a3cbef6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "d47d45f3ef0e416c4e98e3a82a281c19773aad6310a871c8f6d228dcced2857c"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/optimizer/util/plancat.c#L62", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "a666ffcae2e245ce6d5bb32ba91b1ea62ab62e8701476f7330cce283a721243c"}, {"url": "https://github.com/postgres/postgres/blob/3f302f0ed06f69c5ebd33d4df95895323a3cbef6/src/backend/optimizer/util/plancat.c#L492", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "a666ffcae2e245ce6d5bb32ba91b1ea62ab62e8701476f7330cce283a721243c"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:492"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:486\u2013500", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "13": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/13/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_13_STABLE", "label": "13", "major": "13", "channel": "historical", "revision": "05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "850415a53c9ce7489fe0f7aa34574cceea9e38dce396b5603fd54a0def1de9bc"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/optimizer/util/plancat.c#L61", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "b1c3cdd7515de60e8700b90521b75d703788e78b43f9b52addb6b644ceb1cff4"}, {"url": "https://github.com/postgres/postgres/blob/05f6c9ec2c475fae8fdd56ae40bd01afcf70d1f2/src/backend/optimizer/util/plancat.c#L505", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "b1c3cdd7515de60e8700b90521b75d703788e78b43f9b52addb6b644ceb1cff4"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:505"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:499\u2013513", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "14": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/14/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_14_STABLE", "label": "14", "major": "14", "channel": "stable", "revision": "fba35c7c28a567839faba867db0808564c0a66db"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "352f459a510bb786878d3851f007351d16e85f0180cc1ff7a378fa95d314e795"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/optimizer/util/plancat.c#L61", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "0345445d3f206980111cea0a70b2a98c2520dc076cc3c6da703ee06f9f65b6c1"}, {"url": "https://github.com/postgres/postgres/blob/fba35c7c28a567839faba867db0808564c0a66db/src/backend/optimizer/util/plancat.c#L510", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "0345445d3f206980111cea0a70b2a98c2520dc076cc3c6da703ee06f9f65b6c1"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:510"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:504\u2013518", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "15": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/15/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_15_STABLE", "label": "15", "major": "15", "channel": "stable", "revision": "0351991b8e7c7b64382e2f30ce581a8f276590a6"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "039ecd5601d37c3eb1677ad0f0e8183a2743a9ca908311af61d1b20ac8bc795d"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/optimizer/util/plancat.c#L62", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "8a5d2834a8c8d64add1bdcbc2751f7b03ef7d9f09d097dc72c50f8b4d27dea1a"}, {"url": "https://github.com/postgres/postgres/blob/0351991b8e7c7b64382e2f30ce581a8f276590a6/src/backend/optimizer/util/plancat.c#L513", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "8a5d2834a8c8d64add1bdcbc2751f7b03ef7d9f09d097dc72c50f8b4d27dea1a"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:513"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:507\u2013521", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "16": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/16/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_16_STABLE", "label": "16", "major": "16", "channel": "stable", "revision": "dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "80eba56d8e5a0dbd66c647876b21902d51efd8812b52cb0942605a1ff46d8468"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/optimizer/util/plancat.c#L62", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "57c42a37254a6c83695b9b1547b964b952977cc77b48e76b51cca40f43e74ba3"}, {"url": "https://github.com/postgres/postgres/blob/dcc37b7099a9f3cf2c75167d8dc92e75f96bc1fa/src/backend/optimizer/util/plancat.c#L548", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "57c42a37254a6c83695b9b1547b964b952977cc77b48e76b51cca40f43e74ba3"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:548"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:542\u2013556", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "17": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/17/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_17_STABLE", "label": "17", "major": "17", "channel": "stable", "revision": "163288afd32a448244c8df75b3c33181aadd7f20"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "f0262457b7a67baf4839b07c71407767fb635f16001c03af9163bfa94b883f44"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/optimizer/util/plancat.c#L60", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "8ad7a4dda71d779d58346e10c0fefed144d1503b546d30e7b13d7f54883e45a9"}, {"url": "https://github.com/postgres/postgres/blob/163288afd32a448244c8df75b3c33181aadd7f20/src/backend/optimizer/util/plancat.c#L576", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "8ad7a4dda71d779d58346e10c0fefed144d1503b546d30e7b13d7f54883e45a9"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:576"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:570\u2013584", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "18": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/18/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "b5e344f3c4b57ff2f7c3f6827a4778bb781c94f4ff1cb3af516141bff8f2be89"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/optimizer/util/plancat.c#L61", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "b953af14cb2539fbb32e4d1e8eea30f3eaa1b6336091369c03531fb9dcd5a6ff"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/optimizer/util/plancat.c#L575", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "b953af14cb2539fbb32e4d1e8eea30f3eaa1b6336091369c03531fb9dcd5a6ff"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:575"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:569\u2013583", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}}, "content_hash": "e08e1ee8e7cc59ef978204e0b128c8a15c24cb44f4ecdd91cf81cdf202539417", "imported_at": "2026-09-27T09:57:58.873"}, "snapshot": {"facts": [{"label": "Interface type", "value": "get_relation_info_hook_type"}, {"label": "Header", "value": "src/include/optimizer/plancat.h"}, {"label": "Subsystem", "value": "Query planning"}, {"label": "Initial value", "value": "NULL (no hook installed)"}], "related": [{"url": "/docs/18/planner-optimizer.html", "label": "The Planner/Optimizer"}], "release": {"ref": "REL_18_STABLE", "label": "18", "major": "18", "channel": "stable", "revision": "753057e340da8f22e57c9a409ea7a235fd6a46bd"}, "sources": [{"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/include/optimizer/plancat.h#L21", "path": "src/include/optimizer/plancat.h", "label": "Interface declaration", "sha256": "b5e344f3c4b57ff2f7c3f6827a4778bb781c94f4ff1cb3af516141bff8f2be89"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/optimizer/util/plancat.c#L61", "path": "src/backend/optimizer/util/plancat.c", "label": "Core definition", "sha256": "b953af14cb2539fbb32e4d1e8eea30f3eaa1b6336091369c03531fb9dcd5a6ff"}, {"url": "https://github.com/postgres/postgres/blob/753057e340da8f22e57c9a409ea7a235fd6a46bd/src/backend/optimizer/util/plancat.c#L575", "path": "src/backend/optimizer/util/plancat.c", "label": "Call sites", "sha256": "b953af14cb2539fbb32e4d1e8eea30f3eaa1b6336091369c03531fb9dcd5a6ff"}], "sections": [{"title": "Core source comments", "paragraphs": ["Allow a plugin to editorialize on the info we obtained from the catalogs. Actions might include altering the assumed relation size, removing an index, or adding a hypothetical index to the indexlist."]}, {"title": "Call sites", "paragraphs": ["src/backend/optimizer/util/plancat.c:575"]}, {"code": "\t/*\n\t * Allow a plugin to editorialize on the info we obtained from the\n\t * catalogs.  Actions might include altering the assumed relation size,\n\t * removing an index, or adding a hypothetical index to the indexlist.\n\t */\n\tif (get_relation_info_hook)\n\t\t(*get_relation_info_hook) (root, relationObjectId, inhparent, rel);\n}\n\n/*\n * get_relation_foreign_keys -\n *\t  Retrieves foreign key information for a given relation.\n *\n * ForeignKeyOptInfos for relevant foreign keys are created and added to\n * root->fkey_list.  We do this now while we have the relcache entry open.", "title": "Core call context: src/backend/optimizer/util/plancat.c:569\u2013583", "paragraphs": []}], "signature": "typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;", "description": ["Hook for plugins to get control in get_relation_info()"]}, "comparison": {"left": "18", "right": "19", "status": "removed", "diff": "--- PostgreSQL 18\n+++ PostgreSQL 19\n@@ -1,22 +1 @@\n-{\n-  \"facts\": [\n-    {\n-      \"label\": \"Interface type\",\n-      \"value\": \"get_relation_info_hook_type\"\n-    },\n-    {\n-      \"label\": \"Header\",\n-      \"value\": \"src/include/optimizer/plancat.h\"\n-    },\n-    {\n-      \"label\": \"Subsystem\",\n-      \"value\": \"Query planning\"\n-    },\n-    {\n-      \"label\": \"Initial value\",\n-      \"value\": \"NULL (no hook installed)\"\n-    }\n-  ],\n-  \"signature\": \"typedef void (*get_relation_info_hook_type) (PlannerInfo *root, Oid relationObjectId, bool inhparent, RelOptInfo *rel);\\nextern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;\",\n-  \"tables\": null\n-}\n+Not recorded in this version"}}