]> granicus.if.org Git - postgresql/commitdiff
When given a nonzero column number, pg_get_indexdef() is only supposed to
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 20 Dec 2007 00:23:19 +0000 (00:23 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 20 Dec 2007 00:23:19 +0000 (00:23 +0000)
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.

src/backend/utils/adt/ruleutils.c

index 8e4d5c90cd3e76f5bc3f306dc01d249033fc9316..da6ae839820f11d5c08bf3dbd4adf551f31a55dc 100644 (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)
-                       {
-                               appendStringInfo(&buf, " DESC");
-                               /* NULLS FIRST is the default in this case */
-                               if (!(opt & INDOPTION_NULLS_FIRST))
-                                       appendStringInfo(&buf, " NULLS LAST");
-                       }
-                       else
+                       /* Add options if relevant */
+                       if (amrec->amcanorder)
                        {
-                               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");
+                               }
                        }
                }
        }