Always schema-qualify the name of a function referenced in CREATE CAST.
authorTom Lane <[email protected]>
Tue, 2 Mar 2004 21:15:15 +0000 (21:15 +0000)
committerTom Lane <[email protected]>
Tue, 2 Mar 2004 21:15:15 +0000 (21:15 +0000)
The former coding failed if the cast function was not in the pg_catalog
schema.  How'd this escape detection?

src/bin/pg_dump/pg_dump.c

index a6a4d1e0a9761842456f3f8b38bf00c9f6684a7b..626b81af9a7b5420fb7e65125934d6d300fae009 100644 (file)
@@ -22,7 +22,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.305.2.9 2003/10/28 21:05:39 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.305.2.10 2004/03/02 21:15:15 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -3917,8 +3917,16 @@ dumpCasts(Archive *fout,
        if (strcmp(castfunc, "0") == 0)
            appendPQExpBuffer(defqry, "WITHOUT FUNCTION");
        else
-           appendPQExpBuffer(defqry, "WITH FUNCTION %s",
-                         format_function_signature(&finfo[fidx], true));
+       {
+           /*
+            * Always qualify the function name, in case it is not in
+            * pg_catalog schema (format_function_signature won't qualify it).
+            */
+           appendPQExpBuffer(defqry, "WITH FUNCTION %s.",
+                             fmtId(finfo[fidx].pronamespace->nspname));
+           appendPQExpBuffer(defqry, "%s",
+                             format_function_signature(&finfo[fidx], true));
+       }
 
        if (strcmp(castcontext, "a") == 0)
            appendPQExpBuffer(defqry, " AS ASSIGNMENT");