GROUP BY can only infer functional dependency from non-deferrable primary keys.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 5 Sep 2010 15:45:42 +0000 (15:45 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 5 Sep 2010 15:45:42 +0000 (15:45 +0000)
Peter's original patch had this right, but I dropped the check while revising
the code to search pg_constraint instead of pg_index.  Spotted by Dean Rasheed.

src/backend/catalog/pg_constraint.c

index 106b8df6e4c6563aa736ae24a47daea720605ee0..42d7d6caca08a167adf6d98b6ba04318047b9ac3 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/catalog/pg_constraint.c,v 1.55 2010/08/07 02:44:06 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/catalog/pg_constraint.c,v 1.56 2010/09/05 15:45:42 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -836,6 +836,9 @@ check_functional_grouping(Oid relid,
        /* Only PK constraints are of interest for now, see comment above */
        if (con->contype != CONSTRAINT_PRIMARY)
            continue;
+       /* Constraint must be non-deferrable */
+       if (con->condeferrable)
+           continue;
 
        /* Extract the conkey array, ie, attnums of PK's columns */
        adatum = heap_getattr(tuple, Anum_pg_constraint_conkey,