When given a nonzero column number, pg_get_indexdef() is only supposed to

print the index key variable or expression for that column.  It was mistakenly
printing ASC/DESC/NULLS FIRST/NULLS LAST decoration too --- and not only for
the target column, but all columns.  Someday we should have an option to
extract that info (and the opclass decoration as well) for a single index
column ... but today is not that day.  Per bug #3829 and subsequent
discussion.
This commit is contained in:
Tom Lane 2007-12-20 00:23:19 +00:00
parent 1b1f7e977b
commit ef6bac3323

View File

@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.266 2007/12/01 23:44:44 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.267 2007/12/20 00:23:19 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -769,25 +769,28 @@ pg_get_indexdef_worker(Oid indexrelid, int colno, bool showTblSpc,
keycoltype = exprType(indexkey);
}
/* Add the operator class name */
/* Provide decoration only in the colno=0 case */
if (!colno)
{
/* Add the operator class name, if not default */
get_opclass_name(indclass->values[keyno], keycoltype, &buf);
/* Add options if relevant */
if (amrec->amcanorder)
{
/* if it supports sort ordering, report DESC and NULLS opts */
if (opt & INDOPTION_DESC)
/* Add options if relevant */
if (amrec->amcanorder)
{
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");
/* 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");
}
}
}
}