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

Commit30168be

Browse files
committed
Remove plpgsql's special-case code paths for SET/RESET.
In the wake of84f5c29, it's no longer necessary for plpgsql tohandle SET/RESET specially. The point of that was just to avoidtaking a new transaction snapshot prematurely, which the regular codepath through _SPI_execute_plan() now does just fine (in fact better,since it now does the right thing for LOCK too). Hence, rip out afew lines of code, going back to the old way of treating SET/RESETas a generic SQL command. This essentially reverts all but thetest cases fromb981275.Discussion:https://postgr.es/m/15990-eee2ac466b11293d@postgresql.org
1 parent9e21537 commit30168be

File tree

6 files changed

+3
-111
lines changed

6 files changed

+3
-111
lines changed

‎src/pl/plpgsql/src/expected/plpgsql_transaction.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ END;
497497
$$;
498498
ERROR: SET TRANSACTION ISOLATION LEVEL must be called before any query
499499
CONTEXT: SQL statement "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"
500-
PL/pgSQL function inline_code_block line 3 atSET
500+
PL/pgSQL function inline_code_block line 3 atSQL statement
501501
DO LANGUAGE plpgsql $$
502502
BEGIN
503503
SAVEPOINT foo;

‎src/pl/plpgsql/src/pl_exec.c

Lines changed: 0 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,6 @@ static intexec_stmt_commit(PLpgSQL_execstate *estate,
317317
PLpgSQL_stmt_commit*stmt);
318318
staticintexec_stmt_rollback(PLpgSQL_execstate*estate,
319319
PLpgSQL_stmt_rollback*stmt);
320-
staticintexec_stmt_set(PLpgSQL_execstate*estate,
321-
PLpgSQL_stmt_set*stmt);
322320

323321
staticvoidplpgsql_estate_setup(PLpgSQL_execstate*estate,
324322
PLpgSQL_function*func,
@@ -2088,10 +2086,6 @@ exec_stmts(PLpgSQL_execstate *estate, List *stmts)
20882086
rc=exec_stmt_rollback(estate, (PLpgSQL_stmt_rollback*)stmt);
20892087
break;
20902088

2091-
casePLPGSQL_STMT_SET:
2092-
rc=exec_stmt_set(estate, (PLpgSQL_stmt_set*)stmt);
2093-
break;
2094-
20952089
default:
20962090
/* point err_stmt to parent, since this one seems corrupt */
20972091
estate->err_stmt=save_estmt;
@@ -4926,37 +4920,6 @@ exec_stmt_rollback(PLpgSQL_execstate *estate, PLpgSQL_stmt_rollback *stmt)
49264920
returnPLPGSQL_RC_OK;
49274921
}
49284922

4929-
/*
4930-
* exec_stmt_set
4931-
*
4932-
* Execute SET/RESET statement.
4933-
*
4934-
* We just parse and execute the statement normally, but we have to do it
4935-
* without setting a snapshot, for things like SET TRANSACTION.
4936-
* XXX spi.c now handles this correctly, so we no longer need a special case.
4937-
*/
4938-
staticint
4939-
exec_stmt_set(PLpgSQL_execstate*estate,PLpgSQL_stmt_set*stmt)
4940-
{
4941-
PLpgSQL_expr*expr=stmt->expr;
4942-
SPIExecuteOptionsoptions;
4943-
intrc;
4944-
4945-
if (expr->plan==NULL)
4946-
exec_prepare_plan(estate,expr,0);
4947-
4948-
memset(&options,0,sizeof(options));
4949-
options.read_only=estate->readonly_func;
4950-
4951-
rc=SPI_execute_plan_extended(expr->plan,&options);
4952-
4953-
if (rc!=SPI_OK_UTILITY)
4954-
elog(ERROR,"SPI_execute_plan_extended failed executing query \"%s\": %s",
4955-
expr->query,SPI_result_code_string(rc));
4956-
4957-
returnPLPGSQL_RC_OK;
4958-
}
4959-
49604923
/* ----------
49614924
* exec_assign_exprPut an expression's result into a variable.
49624925
* ----------

‎src/pl/plpgsql/src/pl_funcs.c

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,6 @@ plpgsql_stmt_typename(PLpgSQL_stmt *stmt)
288288
return"COMMIT";
289289
casePLPGSQL_STMT_ROLLBACK:
290290
return"ROLLBACK";
291-
casePLPGSQL_STMT_SET:
292-
return"SET";
293291
}
294292

295293
return"unknown";
@@ -370,7 +368,6 @@ static void free_perform(PLpgSQL_stmt_perform *stmt);
370368
staticvoidfree_call(PLpgSQL_stmt_call*stmt);
371369
staticvoidfree_commit(PLpgSQL_stmt_commit*stmt);
372370
staticvoidfree_rollback(PLpgSQL_stmt_rollback*stmt);
373-
staticvoidfree_set(PLpgSQL_stmt_set*stmt);
374371
staticvoidfree_expr(PLpgSQL_expr*expr);
375372

376373

@@ -460,9 +457,6 @@ free_stmt(PLpgSQL_stmt *stmt)
460457
casePLPGSQL_STMT_ROLLBACK:
461458
free_rollback((PLpgSQL_stmt_rollback*)stmt);
462459
break;
463-
casePLPGSQL_STMT_SET:
464-
free_set((PLpgSQL_stmt_set*)stmt);
465-
break;
466460
default:
467461
elog(ERROR,"unrecognized cmd_type: %d",stmt->cmd_type);
468462
break;
@@ -626,12 +620,6 @@ free_rollback(PLpgSQL_stmt_rollback *stmt)
626620
{
627621
}
628622

629-
staticvoid
630-
free_set(PLpgSQL_stmt_set*stmt)
631-
{
632-
free_expr(stmt->expr);
633-
}
634-
635623
staticvoid
636624
free_exit(PLpgSQL_stmt_exit*stmt)
637625
{
@@ -825,7 +813,6 @@ static void dump_perform(PLpgSQL_stmt_perform *stmt);
825813
staticvoiddump_call(PLpgSQL_stmt_call*stmt);
826814
staticvoiddump_commit(PLpgSQL_stmt_commit*stmt);
827815
staticvoiddump_rollback(PLpgSQL_stmt_rollback*stmt);
828-
staticvoiddump_set(PLpgSQL_stmt_set*stmt);
829816
staticvoiddump_expr(PLpgSQL_expr*expr);
830817

831818

@@ -925,9 +912,6 @@ dump_stmt(PLpgSQL_stmt *stmt)
925912
casePLPGSQL_STMT_ROLLBACK:
926913
dump_rollback((PLpgSQL_stmt_rollback*)stmt);
927914
break;
928-
casePLPGSQL_STMT_SET:
929-
dump_set((PLpgSQL_stmt_set*)stmt);
930-
break;
931915
default:
932916
elog(ERROR,"unrecognized cmd_type: %d",stmt->cmd_type);
933917
break;
@@ -1329,13 +1313,6 @@ dump_rollback(PLpgSQL_stmt_rollback *stmt)
13291313
printf("ROLLBACK\n");
13301314
}
13311315

1332-
staticvoid
1333-
dump_set(PLpgSQL_stmt_set*stmt)
1334-
{
1335-
dump_ind();
1336-
printf("%s\n",stmt->expr->query);
1337-
}
1338-
13391316
staticvoid
13401317
dump_exit(PLpgSQL_stmt_exit*stmt)
13411318
{

‎src/pl/plpgsql/src/pl_gram.y

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ staticvoidcheck_raise_parameters(PLpgSQL_stmt_raise *stmt);
197197
%type<stmt>stmt_returnstmt_raisestmt_assertstmt_execsql
198198
%type<stmt>stmt_dynexecutestmt_forstmt_performstmt_callstmt_getdiag
199199
%type<stmt>stmt_openstmt_fetchstmt_movestmt_closestmt_null
200-
%type<stmt>stmt_commitstmt_rollbackstmt_set
200+
%type<stmt>stmt_commitstmt_rollback
201201
%type<stmt>stmt_casestmt_foreach_a
202202

203203
%type<list>proc_exceptions
@@ -328,7 +328,6 @@ staticvoidcheck_raise_parameters(PLpgSQL_stmt_raise *stmt);
328328
%token<keyword>K_QUERY
329329
%token<keyword>K_RAISE
330330
%token<keyword>K_RELATIVE
331-
%token<keyword>K_RESET
332331
%token<keyword>K_RETURN
333332
%token<keyword>K_RETURNED_SQLSTATE
334333
%token<keyword>K_REVERSE
@@ -338,7 +337,6 @@ staticvoidcheck_raise_parameters(PLpgSQL_stmt_raise *stmt);
338337
%token<keyword>K_SCHEMA
339338
%token<keyword>K_SCHEMA_NAME
340339
%token<keyword>K_SCROLL
341-
%token<keyword>K_SET
342340
%token<keyword>K_SLICE
343341
%token<keyword>K_SQLSTATE
344342
%token<keyword>K_STACKED
@@ -899,8 +897,6 @@ proc_stmt: pl_block ';'
899897
{ $$ = $1; }
900898
| stmt_rollback
901899
{ $$ = $1; }
902-
| stmt_set
903-
{ $$ = $1; }
904900
;
905901

906902
stmt_perform: K_PERFORM
@@ -2273,34 +2269,6 @@ opt_transaction_chain:
22732269
|/* EMPTY*/{ $$ =false; }
22742270
;
22752271

2276-
stmt_set: K_SET
2277-
{
2278-
PLpgSQL_stmt_set *new;
2279-
2280-
new =palloc0(sizeof(PLpgSQL_stmt_set));
2281-
new->cmd_type = PLPGSQL_STMT_SET;
2282-
new->lineno =plpgsql_location_to_lineno(@1);
2283-
new->stmtid = ++plpgsql_curr_compile->nstatements;
2284-
plpgsql_push_back_token(K_SET);
2285-
new->expr =read_sql_stmt();
2286-
2287-
$$ = (PLpgSQL_stmt *)new;
2288-
}
2289-
| K_RESET
2290-
{
2291-
PLpgSQL_stmt_set *new;
2292-
2293-
new =palloc0(sizeof(PLpgSQL_stmt_set));
2294-
new->cmd_type = PLPGSQL_STMT_SET;
2295-
new->lineno =plpgsql_location_to_lineno(@1);
2296-
new->stmtid = ++plpgsql_curr_compile->nstatements;
2297-
plpgsql_push_back_token(K_RESET);
2298-
new->expr =read_sql_stmt();
2299-
2300-
$$ = (PLpgSQL_stmt *)new;
2301-
}
2302-
;
2303-
23042272

23052273
cursor_variable: T_DATUM
23062274
{
@@ -2588,7 +2556,6 @@ unreserved_keyword:
25882556
| K_QUERY
25892557
| K_RAISE
25902558
| K_RELATIVE
2591-
| K_RESET
25922559
| K_RETURN
25932560
| K_RETURNED_SQLSTATE
25942561
| K_REVERSE
@@ -2598,7 +2565,6 @@ unreserved_keyword:
25982565
| K_SCHEMA
25992566
| K_SCHEMA_NAME
26002567
| K_SCROLL
2601-
| K_SET
26022568
| K_SLICE
26032569
| K_SQLSTATE
26042570
| K_STACKED

‎src/pl/plpgsql/src/pl_unreserved_kwlist.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ PG_KEYWORD("prior", K_PRIOR)
8989
PG_KEYWORD("query",K_QUERY)
9090
PG_KEYWORD("raise",K_RAISE)
9191
PG_KEYWORD("relative",K_RELATIVE)
92-
PG_KEYWORD("reset",K_RESET)
9392
PG_KEYWORD("return",K_RETURN)
9493
PG_KEYWORD("returned_sqlstate",K_RETURNED_SQLSTATE)
9594
PG_KEYWORD("reverse",K_REVERSE)
@@ -99,7 +98,6 @@ PG_KEYWORD("rowtype", K_ROWTYPE)
9998
PG_KEYWORD("schema",K_SCHEMA)
10099
PG_KEYWORD("schema_name",K_SCHEMA_NAME)
101100
PG_KEYWORD("scroll",K_SCROLL)
102-
PG_KEYWORD("set",K_SET)
103101
PG_KEYWORD("slice",K_SLICE)
104102
PG_KEYWORD("sqlstate",K_SQLSTATE)
105103
PG_KEYWORD("stacked",K_STACKED)

‎src/pl/plpgsql/src/plpgsql.h

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ typedef enum PLpgSQL_stmt_type
127127
PLPGSQL_STMT_PERFORM,
128128
PLPGSQL_STMT_CALL,
129129
PLPGSQL_STMT_COMMIT,
130-
PLPGSQL_STMT_ROLLBACK,
131-
PLPGSQL_STMT_SET
130+
PLPGSQL_STMT_ROLLBACK
132131
}PLpgSQL_stmt_type;
133132

134133
/*
@@ -566,17 +565,6 @@ typedef struct PLpgSQL_stmt_rollback
566565
boolchain;
567566
}PLpgSQL_stmt_rollback;
568567

569-
/*
570-
* SET statement
571-
*/
572-
typedefstructPLpgSQL_stmt_set
573-
{
574-
PLpgSQL_stmt_typecmd_type;
575-
intlineno;
576-
unsignedintstmtid;
577-
PLpgSQL_expr*expr;
578-
}PLpgSQL_stmt_set;
579-
580568
/*
581569
* GET DIAGNOSTICS item
582570
*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp