pgsql: Implement comparison of generic records (composite types), and

From: tgl(at)postgresql(dot)org (Tom Lane)
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Implement comparison of generic records (composite types), and
Date: 2008-10-13 16:25:20
Message-ID: 20081013162520.BD9EA7545A4@cvs.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Log Message:
-----------
Implement comparison of generic records (composite types), and invent a
pseudo-type record[] to represent arrays of possibly-anonymous composite
types. Since composite datums carry their own type identification, no
extra knowledge is needed at the array level.

The main reason for doing this right now is that it is necessary to support
the general case of detection of cycles in recursive queries: if you need to
compare more than one column to detect a cycle, you need to compare a ROW()
to an array built from ROW()s, at least if you want to do it as the spec
suggests. Add some documentation and regression tests concerning the cycle
detection issue.

Modified Files:
--------------
pgsql/doc/src/sgml:
func.sgml (r1.448 -> r1.449)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/func.sgml?r1=1.448&r2=1.449)
queries.sgml (r1.47 -> r1.48)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/queries.sgml?r1=1.47&r2=1.48)
pgsql/src/backend/commands:
indexcmds.c (r1.179 -> r1.180)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/indexcmds.c?r1=1.179&r2=1.180)
pgsql/src/backend/parser:
parse_coerce.c (r2.168 -> r2.169)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/parser/parse_coerce.c?r1=2.168&r2=2.169)
pgsql/src/backend/utils/adt:
rowtypes.c (r1.21 -> r1.22)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/adt/rowtypes.c?r1=1.21&r2=1.22)
pgsql/src/include/catalog:
catversion.h (r1.496 -> r1.497)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h?r1=1.496&r2=1.497)
pg_amop.h (r1.87 -> r1.88)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_amop.h?r1=1.87&r2=1.88)
pg_amproc.h (r1.73 -> r1.74)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_amproc.h?r1=1.73&r2=1.74)
pg_opclass.h (r1.83 -> r1.84)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_opclass.h?r1=1.83&r2=1.84)
pg_operator.h (r1.163 -> r1.164)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_operator.h?r1=1.163&r2=1.164)
pg_opfamily.h (r1.9 -> r1.10)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_opfamily.h?r1=1.9&r2=1.10)
pg_proc.h (r1.518 -> r1.519)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_proc.h?r1=1.518&r2=1.519)
pg_type.h (r1.200 -> r1.201)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_type.h?r1=1.200&r2=1.201)
pgsql/src/include/utils:
builtins.h (r1.323 -> r1.324)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/builtins.h?r1=1.323&r2=1.324)
pgsql/src/test/regress/expected:
rowtypes.out (r1.12 -> r1.13)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/rowtypes.out?r1=1.12&r2=1.13)
with.out (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/expected/with.out?r1=1.5&r2=1.6)
pgsql/src/test/regress/sql:
rowtypes.sql (r1.8 -> r1.9)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/rowtypes.sql?r1=1.8&r2=1.9)
with.sql (r1.5 -> r1.6)
(http://anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/test/regress/sql/with.sql?r1=1.5&r2=1.6)

Browse pgsql-committers by date

  From Date Subject
Next Message Alvaro Herrera 2008-10-13 22:07:33 Re: pgsql: Add missing header.
Previous Message Tom Lane 2008-10-13 12:59:57 pgsql: Update oidjoins test to match CVS HEAD.