diff options
Diffstat (limited to 'src/backend/nodes')
-rw-r--r-- | src/backend/nodes/makefuncs.c | 10 | ||||
-rw-r--r-- | src/backend/nodes/nodeFuncs.c | 3 | ||||
-rw-r--r-- | src/backend/nodes/queryjumblefuncs.c | 5 |
3 files changed, 13 insertions, 5 deletions
diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index cad9f28ef5d..fe67baf1420 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -80,11 +80,13 @@ makeVar(int varno, var->varlevelsup = varlevelsup; /* - * Only a few callers need to make Var nodes with varnosyn/varattnosyn - * different from varno/varattno. We don't provide separate arguments for - * them, but just initialize them to the given varno/varattno. This - * reduces code clutter and chance of error for most callers. + * Only a few callers need to make Var nodes with non-null varnullingrels, + * or with varnosyn/varattnosyn different from varno/varattno. We don't + * provide separate arguments for them, but just initialize them to NULL + * and the given varno/varattno. This reduces code clutter and chance of + * error for most callers. */ + var->varnullingrels = NULL; var->varnosyn = (Index) varno; var->varattnosyn = varattno; diff --git a/src/backend/nodes/nodeFuncs.c b/src/backend/nodes/nodeFuncs.c index 8fc24c882b6..dc8415a693c 100644 --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -2641,6 +2641,7 @@ expression_tree_mutator_impl(Node *node, Var *newnode; FLATCOPY(newnode, var, Var); + /* Assume we need not copy the varnullingrels bitmapset */ return (Node *) newnode; } break; @@ -3234,7 +3235,7 @@ expression_tree_mutator_impl(Node *node, FLATCOPY(newnode, phv, PlaceHolderVar); MUTATE(newnode->phexpr, phv->phexpr, Expr *); - /* Assume we need not copy the relids bitmapset */ + /* Assume we need not copy the relids bitmapsets */ return (Node *) newnode; } break; diff --git a/src/backend/nodes/queryjumblefuncs.c b/src/backend/nodes/queryjumblefuncs.c index 16084842a36..8b101fc336c 100644 --- a/src/backend/nodes/queryjumblefuncs.c +++ b/src/backend/nodes/queryjumblefuncs.c @@ -383,6 +383,11 @@ JumbleExpr(JumbleState *jstate, Node *node) APP_JUMB(var->varno); APP_JUMB(var->varattno); APP_JUMB(var->varlevelsup); + + /* + * We can omit varnullingrels, because it's fully determined + * by varno/varlevelsup plus the Var's query location. + */ } break; case T_Const: |