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:
parent
1b1f7e977b
commit
ef6bac3323
@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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);
|
keycoltype = exprType(indexkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the operator class name */
|
/* Provide decoration only in the colno=0 case */
|
||||||
if (!colno)
|
if (!colno)
|
||||||
|
{
|
||||||
|
/* Add the operator class name, if not default */
|
||||||
get_opclass_name(indclass->values[keyno], keycoltype, &buf);
|
get_opclass_name(indclass->values[keyno], keycoltype, &buf);
|
||||||
|
|
||||||
/* Add options if relevant */
|
/* Add options if relevant */
|
||||||
if (amrec->amcanorder)
|
if (amrec->amcanorder)
|
||||||
{
|
|
||||||
/* if it supports sort ordering, report DESC and NULLS opts */
|
|
||||||
if (opt & INDOPTION_DESC)
|
|
||||||
{
|
{
|
||||||
appendStringInfo(&buf, " DESC");
|
/* if it supports sort ordering, report DESC and NULLS opts */
|
||||||
/* NULLS FIRST is the default in this case */
|
if (opt & INDOPTION_DESC)
|
||||||
if (!(opt & INDOPTION_NULLS_FIRST))
|
{
|
||||||
appendStringInfo(&buf, " NULLS LAST");
|
appendStringInfo(&buf, " DESC");
|
||||||
}
|
/* NULLS FIRST is the default in this case */
|
||||||
else
|
if (!(opt & INDOPTION_NULLS_FIRST))
|
||||||
{
|
appendStringInfo(&buf, " NULLS LAST");
|
||||||
if (opt & INDOPTION_NULLS_FIRST)
|
}
|
||||||
appendStringInfo(&buf, " NULLS FIRST");
|
else
|
||||||
|
{
|
||||||
|
if (opt & INDOPTION_NULLS_FIRST)
|
||||||
|
appendStringInfo(&buf, " NULLS FIRST");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user