• Tom Lane's avatar
    Implement UPDATE tab SET (col1,col2,...) = (SELECT ...), ... · 8f889b10
    Tom Lane authored
    This SQL-standard feature allows a sub-SELECT yielding multiple columns
    (but only one row) to be used to compute the new values of several columns
    to be updated.  While the same results can be had with an independent
    sub-SELECT per column, such a workaround can require a great deal of
    duplicated computation.
    
    The standard actually says that the source for a multi-column assignment
    could be any row-valued expression.  The implementation used here is
    tightly tied to our existing sub-SELECT support and can't handle other
    cases; the Bison grammar would have some issues with them too.  However,
    I don't feel too bad about this since other cases can be converted into
    sub-SELECTs.  For instance, "SET (a,b,c) = row_valued_function(x)" could
    be written "SET (a,b,c) = (SELECT * FROM row_valued_function(x))".
    8f889b10
tlist.h 1.74 KB