[COMMITTERS] pgsql: Fix some oversights in expression dependency recording. - Mailing list pgsql-committers

From Tom Lane
Subject [COMMITTERS] pgsql: Fix some oversights in expression dependency recording.
Date
Msg-id E1e6gzw-0003KI-Bq@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Fix some oversights in expression dependency recording.

find_expr_references() neglected to record a dependency on the result type
of a FieldSelect node, allowing a DROP TYPE to break a view or rule that
contains such an expression.  I think we'd omitted this case intentionally,
reasoning that there would always be a related dependency ensuring that the
DROP would cascade to the view.  But at least with nested field selection
expressions, that's not true, as shown in bug #14867 from Mansur Galiev.
Add the dependency, and for good measure a dependency on the node's exposed
collation.

Likewise add a dependency on the result type of a FieldStore.  I think here
the reasoning was that it'd only appear within an assignment to a field,
and the dependency on the field's column would be enough ... but having
seen this example, I think that's wrong for nested-composites cases.

Looking at nearby code, I notice we're not recording a dependency on the
exposed collation of CoerceViaIO, which seems inconsistent with our choices
for related node types.  Maybe that's OK but I'm feeling suspicious of this
code today, so let's add that; it certainly can't hurt.

This patch does not do anything to protect already-existing views, only
views created after it's installed.  But seeing that the issue has been
there a very long time and nobody noticed till now, that's probably good
enough.

Back-patch to all supported branches.

Discussion: https://postgr.es/m/20171023150118.1477.19174@wrigleys.postgresql.org

Branch
------
REL_10_STABLE

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

Modified Files
--------------
src/backend/catalog/dependency.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)


--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: [COMMITTERS] pgsql: Adjust psql \d query to avoid use of @> operator.
Next
From: Tom Lane
Date:
Subject: [COMMITTERS] pgsql: Sync our copy of the timezone library with IANA releasetzcode20