|
|
|
|
@ -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) |
|
|
|
|
{ |
|
|
|
|
|