further_eval_const_expressions_processing_on_partial_indexes.patch
application/octet-stream
Filename: further_eval_const_expressions_processing_on_partial_indexes.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: unified
| File | + | − |
|---|---|---|
| src/backend/optimizer/util/plancat.c | 10 | 0 |
diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c
index c6a58afc5e5..a80506a5879 100644
--- a/src/backend/optimizer/util/plancat.c
+++ b/src/backend/optimizer/util/plancat.c
@@ -435,6 +435,16 @@ get_relation_info(PlannerInfo *root, Oid relationObjectId, bool inhparent,
if (info->indpred && varno != 1)
ChangeVarNodes((Node *) info->indpred, 1, varno, 0);
+ info->indpred = (List *) eval_const_expressions(root, (Node *) info->indpred);
+ if (list_length(info->indpred) == 1 &&
+ IsA(linitial(info->indpred), Const))
+ {
+ Const *expr = (Const *) linitial(info->indpred);
+
+ if (!expr->constisnull && DatumGetBool(expr->constvalue))
+ info->indpred = NIL;
+ }
+
/* Build targetlist using the completed indexprs data */
info->indextlist = build_index_tlist(root, info, relation);