pgsql: Rethink the dependencies recorded for FieldSelect/FieldStore nod

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Rethink the dependencies recorded for FieldSelect/FieldStore nod
Date: 2017-10-27 16:19:25
Message-ID: E1e87Lx-00037l-I1@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Rethink the dependencies recorded for FieldSelect/FieldStore nodes.

On closer investigation, commits f3ea3e3e8 et al were a few bricks
shy of a load. What we need is not so much to lock down the result
type of a FieldSelect, as to lock down the existence of the column
it's trying to extract. Otherwise, we can break it by dropping that
column. The dependency on the result type is then held indirectly
through the column, and doesn't need to be recorded explicitly.

Out of paranoia, I left in the code to record a dependency on the
result type, but it's used only if we can't identify the pg_class OID
for the column. That shouldn't ever happen right now, AFAICS, but
it seems possible that in future the input node could be marked as
being of type RECORD rather than some specific composite type.

Likewise for FieldStore.

Like the previous patch, back-patch to all supported branches.

Discussion: https://postgr.es/m/22571.1509064146@sss.pgh.pa.us

Branch
------
REL9_3_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/be203c36a6e8c6b94230e884f6390a57b7e2387a

Modified Files
--------------
src/backend/catalog/dependency.c | 36 +++++++++++++++++++++++++------
src/test/regress/expected/alter_table.out | 17 +++++++++++++++
src/test/regress/sql/alter_table.sql | 8 +++++++
3 files changed, 55 insertions(+), 6 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2017-10-27 20:32:14 pgsql: Allow parallel query for prepared statements with generic plans.
Previous Message Robert Haas 2017-10-27 15:35:40 pgsql: Revert "Move new structure member to the end."