OSDN Git Service

Fix some string building in getObjectDescription.
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 5 Jun 2008 15:04:39 +0000 (15:04 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 5 Jun 2008 15:04:39 +0000 (15:04 +0000)
src/backend/catalog/dependency.c

index 0cbefc5..24423d2 100644 (file)
@@ -8,7 +8,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.72 2008/05/12 00:00:46 alvherre Exp $
+ *       $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.73 2008/06/05 15:04:39 alvherre Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2005,6 +2005,7 @@ getObjectDescription(const ObjectAddress *object)
                                SysScanDesc amscan;
                                HeapTuple       tup;
                                Form_pg_amop amopForm;
+                               StringInfoData opfam;
 
                                amopDesc = heap_open(AccessMethodOperatorRelationId,
                                                                         AccessShareLock);
@@ -2025,10 +2026,18 @@ getObjectDescription(const ObjectAddress *object)
 
                                amopForm = (Form_pg_amop) GETSTRUCT(tup);
 
-                               appendStringInfo(&buffer, _("operator %d %s of "),
+                               initStringInfo(&opfam);
+                               getOpFamilyDescription(&opfam, amopForm->amopfamily);
+                               /*
+                                * translator: %d is the operator strategy (a number), the
+                                * first %s is the textual form of the operator, and the second
+                                * %s is the description of the operator family.
+                                */
+                               appendStringInfo(&buffer, _("operator %d %s of %s"),
                                                                 amopForm->amopstrategy,
-                                                                format_operator(amopForm->amopopr));
-                               getOpFamilyDescription(&buffer, amopForm->amopfamily);
+                                                                format_operator(amopForm->amopopr),
+                                                                opfam.data);
+                               pfree(opfam.data);
 
                                systable_endscan(amscan);
                                heap_close(amopDesc, AccessShareLock);
@@ -2042,6 +2051,7 @@ getObjectDescription(const ObjectAddress *object)
                                SysScanDesc amscan;
                                HeapTuple       tup;
                                Form_pg_amproc amprocForm;
+                               StringInfoData opfam;
 
                                amprocDesc = heap_open(AccessMethodProcedureRelationId,
                                                                           AccessShareLock);
@@ -2062,10 +2072,18 @@ getObjectDescription(const ObjectAddress *object)
 
                                amprocForm = (Form_pg_amproc) GETSTRUCT(tup);
 
-                               appendStringInfo(&buffer, _("function %d %s of "),
+                               initStringInfo(&opfam);
+                               getOpFamilyDescription(&opfam, amprocForm->amprocfamily);
+                               /*
+                                * translator: %d is the function number, the first %s is the
+                                * textual form of the function with arguments, and the second
+                                * %s is the description of the operator family.
+                                */
+                               appendStringInfo(&buffer, _("function %d %s of %s"),
                                                                 amprocForm->amprocnum,
-                                                                format_procedure(amprocForm->amproc));
-                               getOpFamilyDescription(&buffer, amprocForm->amprocfamily);
+                                                                format_procedure(amprocForm->amproc),
+                                                                opfam.data);
+                               pfree(opfam.data);
 
                                systable_endscan(amscan);
                                heap_close(amprocDesc, AccessShareLock);