mirror of
https://github.com/postgres/postgres.git
synced 2025-09-02 04:21:28 +03:00
Support assignment to subfields of composite columns in UPDATE and INSERT.
As a side effect, cause subscripts in INSERT targetlists to do something more or less sensible; previously we evaluated such subscripts and then effectively ignored them. Another side effect is that UPDATE-ing an element or slice of an array value that is NULL now produces a non-null result, namely an array containing just the assigned-to positions.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* procedural language
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.106 2004/06/06 00:41:28 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.107 2004/06/09 19:08:19 tgl Exp $
|
||||
*
|
||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||
*
|
||||
@@ -3852,6 +3852,18 @@ exec_simple_check_node(Node *node)
|
||||
case T_FieldSelect:
|
||||
return exec_simple_check_node((Node *) ((FieldSelect *) node)->arg);
|
||||
|
||||
case T_FieldStore:
|
||||
{
|
||||
FieldStore *expr = (FieldStore *) node;
|
||||
|
||||
if (!exec_simple_check_node((Node *) expr->arg))
|
||||
return FALSE;
|
||||
if (!exec_simple_check_node((Node *) expr->newvals))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case T_RelabelType:
|
||||
return exec_simple_check_node((Node *) ((RelabelType *) node)->arg);
|
||||
|
||||
|
Reference in New Issue
Block a user