Hi, > >> CREATE INDEX test_desc_idx1 > >> ON test_desc > >> USING btree > >> (f1, f2 desc) > >> > >> CREATE INDEX test_desc_idx2 > >> ON test_desc > >> USING btree > >> (f1 desc, f2); > > postgres=# select pg_get_indexdef('test_desc_idx1'::regclass, 2, true); > pg_get_indexdef > ----------------- > f2 DESC > (1 row) > > postgres=# select pg_get_indexdef('test_desc_idx2'::regclass, 2, true); > pg_get_indexdef > ----------------- > DESCf2 > (1 row) > > Looks like pg_get_indexdef is unwell :-(
yes, it was unwell in the area where the amcanorder was being processed. The attached patch should fix this. Regards, Nikhils -- EnterpriseDB http://www.enterprisedb.com
Index: src/backend/utils/adt/ruleutils.c =================================================================== RCS file: /repositories/postgreshome/cvs/pgsql/src/backend/utils/adt/ruleutils.c,v retrieving revision 1.266 diff -c -r1.266 ruleutils.c *** src/backend/utils/adt/ruleutils.c 1 Dec 2007 23:44:44 -0000 1.266 --- src/backend/utils/adt/ruleutils.c 19 Dec 2007 11:11:17 -0000 *************** *** 779,793 **** /* if it supports sort ordering, report DESC and NULLS opts */ if (opt & INDOPTION_DESC) { ! appendStringInfo(&buf, " DESC"); ! /* NULLS FIRST is the default in this case */ ! if (!(opt & INDOPTION_NULLS_FIRST)) ! appendStringInfo(&buf, " NULLS LAST"); } else { ! if (opt & INDOPTION_NULLS_FIRST) ! appendStringInfo(&buf, " NULLS FIRST"); } } } --- 779,799 ---- /* if it supports sort ordering, report DESC and NULLS opts */ if (opt & INDOPTION_DESC) { ! if (!colno || colno == keyno + 1) ! { ! appendStringInfo(&buf, " DESC"); ! /* NULLS FIRST is the default in this case */ ! if (!(opt & INDOPTION_NULLS_FIRST)) ! appendStringInfo(&buf, " NULLS LAST"); ! } } else { ! if (!colno || colno == keyno + 1) ! { ! if (opt & INDOPTION_NULLS_FIRST) ! appendStringInfo(&buf, " NULLS FIRST"); ! } } } }
---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster