postgresql/src
Alvaro Herrera cb3a7c2b95 ALTER TABLE: skip FK validation when it's safe to do so
We already skip rewriting the table in these cases, but we still force a
whole table scan to validate the data.  This can be skipped, and thus
we can make the whole ALTER TABLE operation just do some catalog touches
instead of scanning the table, when these two conditions hold:

(a) Old and new pg_constraint.conpfeqop match exactly.  This is actually
stronger than needed; we could loosen things by way of operator
families, but it'd require a lot more effort.

(b) The functions, if any, implementing a cast from the foreign type to
the primary opcintype are the same.  For this purpose, we can consider a
binary coercion equivalent to an exact type match.  When the opcintype
is polymorphic, require that the old and new foreign types match
exactly.  (Since ri_triggers.c does use the executor, the stronger check
for polymorphic types is no mere future-proofing.  However, no core type
exercises its necessity.)

Author: Noah Misch

Committer's note: catalog version bumped due to change of the Constraint
node.  I can't actually find any way to have such a node in a stored
rule, but given that we have "out" support for them, better be safe.
2012-02-27 19:10:24 -03:00
..
backend ALTER TABLE: skip FK validation when it's safe to do so 2012-02-27 19:10:24 -03:00
bin Add some enumeration commas, for consistency 2012-02-24 11:04:45 +02:00
include ALTER TABLE: skip FK validation when it's safe to do so 2012-02-27 19:10:24 -03:00
interfaces Remove arbitrary limitation on length of common name in SSL certificates. 2012-02-23 15:48:04 -05:00
makefiles Add pg_upgrade test suite 2011-11-27 22:42:32 +02:00
pl Fix I/O-conversion-related memory leaks in plpgsql. 2012-02-11 18:06:24 -05:00
port Speed up in-memory tuplesorting. 2012-02-15 12:13:32 -05:00
template Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
test Add some enumeration commas, for consistency 2012-02-24 11:04:45 +02:00
timezone Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
tools Call check_keywords.pl in maintainer-check 2012-02-27 13:53:12 +02:00
tutorial Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
bcc32.mak Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00
DEVELOPERS Replace a couple of references to files that no longer exist in the source 2009-05-04 08:08:47 +00:00
Makefile Fix some oversights in distprep and maintainer-clean targets. 2011-03-10 00:04:05 -05:00
Makefile.global.in ecpg: Improve test building 2012-02-02 20:33:29 +02:00
Makefile.shlib Use single quotes in preference to double quotes for protecting pathnames. 2011-06-15 21:45:23 -04:00
nls-global.mk Sort compendium lists for msgmerge 2011-12-27 20:22:51 +02:00
win32.mak Remove useless whitespace at end of lines 2010-11-23 22:34:55 +02:00