diff options
Diffstat (limited to 'src/backend/parser')
-rw-r--r-- | src/backend/parser/analyze.c | 2 | ||||
-rw-r--r-- | src/backend/parser/parse_agg.c | 2 | ||||
-rw-r--r-- | src/backend/parser/parse_expr.c | 2 | ||||
-rw-r--r-- | src/backend/parser/parse_func.c | 7 |
4 files changed, 11 insertions, 2 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index 8278e742f8d..a02a77a03a5 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -790,7 +790,7 @@ transformInsertStmt(ParseState *pstate, InsertStmt *stmt) */ exprList = transformExpressionList(pstate, (List *) linitial(valuesLists), - EXPR_KIND_VALUES, + EXPR_KIND_VALUES_SINGLE, true); /* Prepare row for assignment to target table */ diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c index d9777099aa6..7be7fe96892 100644 --- a/src/backend/parser/parse_agg.c +++ b/src/backend/parser/parse_agg.c @@ -447,6 +447,7 @@ check_agglevels_and_constraints(ParseState *pstate, Node *expr) errkind = true; break; case EXPR_KIND_VALUES: + case EXPR_KIND_VALUES_SINGLE: errkind = true; break; case EXPR_KIND_CHECK_CONSTRAINT: @@ -840,6 +841,7 @@ transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc, errkind = true; break; case EXPR_KIND_VALUES: + case EXPR_KIND_VALUES_SINGLE: errkind = true; break; case EXPR_KIND_CHECK_CONSTRAINT: diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index 73521b93fca..add3be65660 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -1797,6 +1797,7 @@ transformSubLink(ParseState *pstate, SubLink *sublink) case EXPR_KIND_OFFSET: case EXPR_KIND_RETURNING: case EXPR_KIND_VALUES: + case EXPR_KIND_VALUES_SINGLE: /* okay */ break; case EXPR_KIND_CHECK_CONSTRAINT: @@ -3410,6 +3411,7 @@ ParseExprKindName(ParseExprKind exprKind) case EXPR_KIND_RETURNING: return "RETURNING"; case EXPR_KIND_VALUES: + case EXPR_KIND_VALUES_SINGLE: return "VALUES"; case EXPR_KIND_CHECK_CONSTRAINT: case EXPR_KIND_DOMAIN_CHECK: diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c index 12979602e59..a52261f2e92 100644 --- a/src/backend/parser/parse_func.c +++ b/src/backend/parser/parse_func.c @@ -2141,7 +2141,12 @@ check_srf_call_placement(ParseState *pstate, int location) errkind = true; break; case EXPR_KIND_VALUES: - /* okay */ + /* SRFs are presently not supported by nodeValuesscan.c */ + errkind = true; + break; + case EXPR_KIND_VALUES_SINGLE: + /* okay, since we process this like a SELECT tlist */ + pstate->p_hasTargetSRFs = true; break; case EXPR_KIND_CHECK_CONSTRAINT: case EXPR_KIND_DOMAIN_CHECK: |