Attached patch puts the "metadata" about a function, especially the
language name, at the top of the CREATE FUNCTION statement, above the
possibly long, multi-line function definition.
--
Greg Sabino Mullane
Index: pg_dump.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v
retrieving revision 1.492
diff -c -r1.492 pg_dump.c
*** pg_dump.c 16 May 2008 23:36:05 -0000 1.492
--- pg_dump.c 12 Jun 2008 13:07:28 -0000
***************
*** 6775,6784 ****
rettypename = getFormattedTypeName(finfo->prorettype, zeroAsOpaque);
appendPQExpBuffer(q, "CREATE FUNCTION %s ", funcsig);
! appendPQExpBuffer(q, "RETURNS %s%s\n %s\n LANGUAGE %s",
(proretset[0] == 't') ? "SETOF " : "",
rettypename,
- asPart->data,
fmtId(lanname));
free(rettypename);
--- 6775,6783 ----
rettypename = getFormattedTypeName(finfo->prorettype, zeroAsOpaque);
appendPQExpBuffer(q, "CREATE FUNCTION %s ", funcsig);
! appendPQExpBuffer(q, "RETURNS %s%s\n LANGUAGE %s\n",
(proretset[0] == 't') ? "SETOF " : "",
rettypename,
fmtId(lanname));
free(rettypename);
***************
*** 6786,6794 ****
if (provolatile[0] != PROVOLATILE_VOLATILE)
{
if (provolatile[0] == PROVOLATILE_IMMUTABLE)
! appendPQExpBuffer(q, " IMMUTABLE");
else if (provolatile[0] == PROVOLATILE_STABLE)
! appendPQExpBuffer(q, " STABLE");
else if (provolatile[0] != PROVOLATILE_VOLATILE)
{
write_msg(NULL, "unrecognized provolatile value for function \"%s\"\n",
--- 6785,6793 ----
if (provolatile[0] != PROVOLATILE_VOLATILE)
{
if (provolatile[0] == PROVOLATILE_IMMUTABLE)
! appendPQExpBuffer(q, " IMMUTABLE\n");
else if (provolatile[0] == PROVOLATILE_STABLE)
! appendPQExpBuffer(q, " STABLE\n");
else if (provolatile[0] != PROVOLATILE_VOLATILE)
{
write_msg(NULL, "unrecognized provolatile value for function \"%s\"\n",
***************
*** 6798,6807 ****
}
if (proisstrict[0] == 't')
! appendPQExpBuffer(q, " STRICT");
if (prosecdef[0] == 't')
! appendPQExpBuffer(q, " SECURITY DEFINER");
/*
* COST and ROWS are emitted only if present and not default, so as not to
--- 6797,6806 ----
}
if (proisstrict[0] == 't')
! appendPQExpBuffer(q, " STRICT\n");
if (prosecdef[0] == 't')
! appendPQExpBuffer(q, " SECURITY DEFINER\n");
/*
* COST and ROWS are emitted only if present and not default, so as not to
***************
*** 6814,6831 ****
{
/* default cost is 1 */
if (strcmp(procost, "1") != 0)
! appendPQExpBuffer(q, " COST %s", procost);
}
else
{
/* default cost is 100 */
if (strcmp(procost, "100") != 0)
! appendPQExpBuffer(q, " COST %s", procost);
}
}
if (proretset[0] == 't' &&
strcmp(prorows, "0") != 0 && strcmp(prorows, "1000") != 0)
! appendPQExpBuffer(q, " ROWS %s", prorows);
for (i = 0; i < nconfigitems; i++)
{
--- 6813,6830 ----
{
/* default cost is 1 */
if (strcmp(procost, "1") != 0)
! appendPQExpBuffer(q, " COST %s\n", procost);
}
else
{
/* default cost is 100 */
if (strcmp(procost, "100") != 0)
! appendPQExpBuffer(q, " COST %s\n", procost);
}
}
if (proretset[0] == 't' &&
strcmp(prorows, "0") != 0 && strcmp(prorows, "1000") != 0)
! appendPQExpBuffer(q, " ROWS %s\n", prorows);
for (i = 0; i < nconfigitems; i++)
{
***************
*** 6837,6843 ****
if (pos == NULL)
continue;
*pos++ = '\0';
! appendPQExpBuffer(q, "\n SET %s TO ", fmtId(configitem));
/*
* Some GUC variable names are 'LIST' type and hence must not be
--- 6836,6842 ----
if (pos == NULL)
continue;
*pos++ = '\0';
! appendPQExpBuffer(q, " SET %s TO ", fmtId(configitem));
/*
* Some GUC variable names are 'LIST' type and hence must not be
***************
*** 6848,6856 ****
appendPQExpBuffer(q, "%s", pos);
else
appendStringLiteralAH(q, pos, fout);
}
! appendPQExpBuffer(q, ";\n");
ArchiveEntry(fout, finfo->dobj.catId, finfo->dobj.dumpId,
funcsig_tag,
--- 6847,6857 ----
appendPQExpBuffer(q, "%s", pos);
else
appendStringLiteralAH(q, pos, fout);
+
+ appendPQExpBuffer(q, "\n");
}
! appendPQExpBuffer(q, " %s;\n", asPart->data);
ArchiveEntry(fout, finfo->dobj.catId, finfo->dobj.dumpId,
funcsig_tag,
--
Sent via pgsql-patches mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-patches