OSDN Git Service

Recognize functional dependency on primary keys. This allows a table's
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 7 Aug 2010 02:44:09 +0000 (02:44 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 7 Aug 2010 02:44:09 +0000 (02:44 +0000)
commite49ae8d3bc588294d07ce1a1272b31718cfca5ef
treee423c1f46141fc3ca5fd5746bce39cf74faf56b4
parentce6ce1a09dada095c07334d11eb56c5168ed801a
Recognize functional dependency on primary keys.  This allows a table's
other columns to be referenced without listing them in GROUP BY, so long as
the primary key column(s) are listed in GROUP BY.

Eventually we should also allow functional dependency on a UNIQUE constraint
when the columns are marked NOT NULL, but that has to wait until NOT NULL
constraints are represented in pg_constraint, because we need to have
pg_constraint OIDs for all the conditions needed to ensure functional
dependency.

Peter Eisentraut, reviewed by Alex Hunsaker and Tom Lane
16 files changed:
doc/src/sgml/queries.sgml
doc/src/sgml/ref/select.sgml
src/backend/catalog/dependency.c
src/backend/catalog/pg_constraint.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/backend/parser/parse_agg.c
src/include/catalog/catversion.h
src/include/catalog/pg_constraint.h
src/include/nodes/parsenodes.h
src/test/regress/expected/functional_deps.out [new file with mode: 0644]
src/test/regress/parallel_schedule
src/test/regress/serial_schedule
src/test/regress/sql/functional_deps.sql [new file with mode: 0644]