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
Showing
- doc/src/sgml/queries.sgml 14 additions, 5 deletionsdoc/src/sgml/queries.sgml
- doc/src/sgml/ref/select.sgml 19 additions, 4 deletionsdoc/src/sgml/ref/select.sgml
- src/backend/catalog/dependency.c 13 additions, 4 deletionssrc/backend/catalog/dependency.c
- src/backend/catalog/pg_constraint.c 110 additions, 1 deletionsrc/backend/catalog/pg_constraint.c
- src/backend/nodes/copyfuncs.c 2 additions, 1 deletionsrc/backend/nodes/copyfuncs.c
- src/backend/nodes/equalfuncs.c 2 additions, 1 deletionsrc/backend/nodes/equalfuncs.c
- src/backend/nodes/outfuncs.c 2 additions, 1 deletionsrc/backend/nodes/outfuncs.c
- src/backend/nodes/readfuncs.c 2 additions, 1 deletionsrc/backend/nodes/readfuncs.c
- src/backend/parser/parse_agg.c 53 additions, 10 deletionssrc/backend/parser/parse_agg.c
- src/include/catalog/catversion.h 2 additions, 2 deletionssrc/include/catalog/catversion.h
- src/include/catalog/pg_constraint.h 6 additions, 1 deletionsrc/include/catalog/pg_constraint.h
- src/include/nodes/parsenodes.h 4 additions, 1 deletionsrc/include/nodes/parsenodes.h
- src/test/regress/expected/functional_deps.out 241 additions, 0 deletionssrc/test/regress/expected/functional_deps.out
- src/test/regress/parallel_schedule 2 additions, 2 deletionssrc/test/regress/parallel_schedule
- src/test/regress/serial_schedule 2 additions, 1 deletionsrc/test/regress/serial_schedule
- src/test/regress/sql/functional_deps.sql 210 additions, 0 deletionssrc/test/regress/sql/functional_deps.sql
Loading
Please register or sign in to comment