diff options
Diffstat (limited to 'src/bin/pg_dump/pg_dump.c')
-rw-r--r-- | src/bin/pg_dump/pg_dump.c | 63 |
1 files changed, 21 insertions, 42 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index b6b218bdc7d..12eed924525 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -22,7 +22,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.147 2000/04/14 01:34:24 tgl Exp $ + * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.148 2000/05/28 20:34:52 tgl Exp $ * * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb * @@ -2575,6 +2575,10 @@ dumpOneFunc(FILE *fout, FuncInfo *finfo, int i, int j; char *func_def; char func_lang[NAMEDATALEN + 1]; + PGresult *res; + int nlangs; + int i_lanname; + char query[256]; if (finfo[i].dumped) return; @@ -2583,54 +2587,29 @@ dumpOneFunc(FILE *fout, FuncInfo *finfo, int i, becomeUser(fout, finfo[i].usename); - if (finfo[i].lang == INTERNALlanguageId) - { - func_def = finfo[i].prosrc; - strcpy(func_lang, "INTERNAL"); - } - else if (finfo[i].lang == ClanguageId) + sprintf(query, "SELECT lanname FROM pg_language WHERE oid = %u", + finfo[i].lang); + res = PQexec(g_conn, query); + if (!res || + PQresultStatus(res) != PGRES_TUPLES_OK) { - func_def = finfo[i].probin; - strcpy(func_lang, "C"); + fprintf(stderr, "dumpOneFunc(): SELECT for procedural language failed. Explanation from backend: '%s'.\n", PQerrorMessage(g_conn)); + exit_nicely(g_conn); } - else if (finfo[i].lang == SQLlanguageId) + nlangs = PQntuples(res); + + if (nlangs != 1) { - func_def = finfo[i].prosrc; - strcpy(func_lang, "SQL"); + fprintf(stderr, "dumpOneFunc(): procedural language for function %s not found\n", finfo[i].proname); + exit_nicely(g_conn); } - else - { - PGresult *res; - int nlangs; - int i_lanname; - char query[256]; - - sprintf(query, "SELECT lanname FROM pg_language " - "WHERE oid = %u", - finfo[i].lang); - res = PQexec(g_conn, query); - if (!res || - PQresultStatus(res) != PGRES_TUPLES_OK) - { - fprintf(stderr, "dumpOneFunc(): SELECT for procedural language failed. Explanation from backend: '%s'.\n", PQerrorMessage(g_conn)); - exit_nicely(g_conn); - } - nlangs = PQntuples(res); - if (nlangs != 1) - { - fprintf(stderr, "dumpOneFunc(): procedural language for function %s not found\n", finfo[i].proname); - exit_nicely(g_conn); - } - - i_lanname = PQfnumber(res, "lanname"); - - func_def = finfo[i].prosrc; - strcpy(func_lang, PQgetvalue(res, 0, i_lanname)); + i_lanname = PQfnumber(res, "lanname"); - PQclear(res); + func_def = finfo[i].prosrc; + strcpy(func_lang, PQgetvalue(res, 0, i_lanname)); - } + PQclear(res); if (dropSchema) { |