Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8064889

Browse files
committed
Miscellaneous cleanups of places that needed to account for new
pg_language entries.
1 parentab84308 commit8064889

File tree

4 files changed

+36
-53
lines changed

4 files changed

+36
-53
lines changed

‎src/backend/commands/remove.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.48 2000/05/18 16:09:38 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/remove.c,v 1.49 2000/05/28 20:34:50 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -367,7 +367,8 @@ RemoveFunction(char *functionName,/* function name to be removed */
367367
func_error("RemoveFunction",functionName,nargs,argList,NULL);
368368
}
369369

370-
if ((((Form_pg_proc)GETSTRUCT(tup))->prolang)==INTERNALlanguageId)
370+
if (((Form_pg_proc)GETSTRUCT(tup))->prolang==INTERNALlanguageId||
371+
((Form_pg_proc)GETSTRUCT(tup))->prolang==NEWINTERNALlanguageId)
371372
{
372373
heap_close(relation,RowExclusiveLock);
373374
elog(NOTICE,"Removing built-in function \"%s\"",functionName);

‎src/backend/commands/trigger.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1994, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.65 2000/05/2817:55:55 tgl Exp $
10+
* $Header: /cvsroot/pgsql/src/backend/commands/trigger.c,v 1.66 2000/05/2820:34:50 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -58,6 +58,7 @@ CreateTrigger(CreateTrigStmt *stmt)
5858
Relationidescs[Num_pg_trigger_indices];
5959
Relationridescs[Num_pg_class_indices];
6060
Oidfargtypes[FUNC_MAX_ARGS];
61+
Oidfunclang;
6162
intfound=0;
6263
inti;
6364
charconstrtrigname[NAMEDATALEN];
@@ -154,24 +155,26 @@ CreateTrigger(CreateTrigStmt *stmt)
154155
Int32GetDatum(0),
155156
PointerGetDatum(fargtypes),
156157
0);
157-
if (!HeapTupleIsValid(tuple)||
158-
((Form_pg_proc)GETSTRUCT(tuple))->pronargs!=0)
158+
if (!HeapTupleIsValid(tuple))
159159
elog(ERROR,"CreateTrigger: function %s() does not exist",
160160
stmt->funcname);
161161
if (((Form_pg_proc)GETSTRUCT(tuple))->prorettype!=0)
162162
elog(ERROR,"CreateTrigger: function %s() must return OPAQUE",
163163
stmt->funcname);
164-
if (((Form_pg_proc)GETSTRUCT(tuple))->prolang!=ClanguageId&&
165-
((Form_pg_proc)GETSTRUCT(tuple))->prolang!=INTERNALlanguageId)
164+
funclang= ((Form_pg_proc)GETSTRUCT(tuple))->prolang;
165+
if (funclang!=ClanguageId&&
166+
funclang!=NEWClanguageId&&
167+
funclang!=INTERNALlanguageId&&
168+
funclang!=NEWINTERNALlanguageId)
166169
{
167170
HeapTuplelangTup;
168171

169172
langTup=SearchSysCacheTuple(LANGOID,
170-
ObjectIdGetDatum(((Form_pg_proc)GETSTRUCT(tuple))->prolang),
173+
ObjectIdGetDatum(funclang),
171174
0,0,0);
172175
if (!HeapTupleIsValid(langTup))
173176
elog(ERROR,"CreateTrigger: cache lookup for PL %u failed",
174-
((Form_pg_proc)GETSTRUCT(tuple))->prolang);
177+
funclang);
175178
if (((Form_pg_language)GETSTRUCT(langTup))->lanispl== false)
176179
elog(ERROR,"CreateTrigger: only builtin, C and PL functions are supported");
177180
}

‎src/bin/pg_dump/pg_dump.c

Lines changed: 21 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*
2323
*
2424
* IDENTIFICATION
25-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.147 2000/04/14 01:34:24 tgl Exp $
25+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.148 2000/05/28 20:34:52 tgl Exp $
2626
*
2727
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2828
*
@@ -2575,6 +2575,10 @@ dumpOneFunc(FILE *fout, FuncInfo *finfo, int i,
25752575
intj;
25762576
char*func_def;
25772577
charfunc_lang[NAMEDATALEN+1];
2578+
PGresult*res;
2579+
intnlangs;
2580+
inti_lanname;
2581+
charquery[256];
25782582

25792583
if (finfo[i].dumped)
25802584
return;
@@ -2583,54 +2587,29 @@ dumpOneFunc(FILE *fout, FuncInfo *finfo, int i,
25832587

25842588
becomeUser(fout,finfo[i].usename);
25852589

2586-
if (finfo[i].lang==INTERNALlanguageId)
2587-
{
2588-
func_def=finfo[i].prosrc;
2589-
strcpy(func_lang,"INTERNAL");
2590-
}
2591-
elseif (finfo[i].lang==ClanguageId)
2590+
sprintf(query,"SELECT lanname FROM pg_language WHERE oid = %u",
2591+
finfo[i].lang);
2592+
res=PQexec(g_conn,query);
2593+
if (!res||
2594+
PQresultStatus(res)!=PGRES_TUPLES_OK)
25922595
{
2593-
func_def=finfo[i].probin;
2594-
strcpy(func_lang,"C");
2596+
fprintf(stderr,"dumpOneFunc(): SELECT for procedural language failed. Explanation from backend: '%s'.\n",PQerrorMessage(g_conn));
2597+
exit_nicely(g_conn);
25952598
}
2596-
elseif (finfo[i].lang==SQLlanguageId)
2599+
nlangs=PQntuples(res);
2600+
2601+
if (nlangs!=1)
25972602
{
2598-
func_def=finfo[i].prosrc;
2599-
strcpy(func_lang,"SQL");
2603+
fprintf(stderr,"dumpOneFunc(): procedural language for function %s not found\n",finfo[i].proname);
2604+
exit_nicely(g_conn);
26002605
}
2601-
else
2602-
{
2603-
PGresult*res;
2604-
intnlangs;
2605-
inti_lanname;
2606-
charquery[256];
2607-
2608-
sprintf(query,"SELECT lanname FROM pg_language "
2609-
"WHERE oid = %u",
2610-
finfo[i].lang);
2611-
res=PQexec(g_conn,query);
2612-
if (!res||
2613-
PQresultStatus(res)!=PGRES_TUPLES_OK)
2614-
{
2615-
fprintf(stderr,"dumpOneFunc(): SELECT for procedural language failed. Explanation from backend: '%s'.\n",PQerrorMessage(g_conn));
2616-
exit_nicely(g_conn);
2617-
}
2618-
nlangs=PQntuples(res);
26192606

2620-
if (nlangs!=1)
2621-
{
2622-
fprintf(stderr,"dumpOneFunc(): procedural language for function %s not found\n",finfo[i].proname);
2623-
exit_nicely(g_conn);
2624-
}
2625-
2626-
i_lanname=PQfnumber(res,"lanname");
2627-
2628-
func_def=finfo[i].prosrc;
2629-
strcpy(func_lang,PQgetvalue(res,0,i_lanname));
2607+
i_lanname=PQfnumber(res,"lanname");
26302608

2631-
PQclear(res);
2609+
func_def=finfo[i].prosrc;
2610+
strcpy(func_lang,PQgetvalue(res,0,i_lanname));
26322611

2633-
}
2612+
PQclear(res);
26342613

26352614
if (dropSchema)
26362615
{

‎src/include/nodes/parsenodes.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
88
* Portions Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: parsenodes.h,v 1.104 2000/04/12 17:16:40 momjian Exp $
10+
* $Id: parsenodes.h,v 1.105 2000/05/28 20:34:49 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -248,7 +248,7 @@ typedef struct CreateTrigStmt
248248
boolbefore;/* BEFORE/AFTER */
249249
boolrow;/* ROW/STATEMENT */
250250
charactions[4];/* Insert, Update, Delete */
251-
char*lang;/*NULL (which means Clanguage) */
251+
char*lang;/*currently not used, always NULL */
252252
char*text;/* AS 'text' */
253253
List*attr;/* UPDATE OF a, b,... (NI) or NULL */
254254
char*when;/* WHEN 'a > 10 ...' (NI) or NULL */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp