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

Commitf8db76e

Browse files
committed
Editorialize a bit on new ProcessUtility() API.
Choose a saner ordering of parameters (adding a new input param afterthe output params seemed a bit random), update the function's headercomment to match reality (cmon folks, is this really that hard?),get rid of useless and sloppily-defined distinction betweenPROCESS_UTILITY_SUBCOMMAND and PROCESS_UTILITY_GENERATED.
1 parent5525e6c commitf8db76e

File tree

10 files changed

+80
-68
lines changed

10 files changed

+80
-68
lines changed

‎contrib/pg_stat_statements/pg_stat_statements.c

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -239,10 +239,9 @@ static void pgss_ExecutorRun(QueryDesc *queryDesc,
239239
longcount);
240240
staticvoidpgss_ExecutorFinish(QueryDesc*queryDesc);
241241
staticvoidpgss_ExecutorEnd(QueryDesc*queryDesc);
242-
staticvoidpgss_ProcessUtility(Node*parsetree,
243-
constchar*queryString,ParamListInfoparams,
244-
DestReceiver*dest,char*completionTag,
245-
ProcessUtilityContextcontext);
242+
staticvoidpgss_ProcessUtility(Node*parsetree,constchar*queryString,
243+
ProcessUtilityContextcontext,ParamListInfoparams,
244+
DestReceiver*dest,char*completionTag);
246245
staticuint32pgss_hash_fn(constvoid*key,Sizekeysize);
247246
staticintpgss_match_fn(constvoid*key1,constvoid*key2,Sizekeysize);
248247
staticuint32pgss_hash_string(constchar*str);
@@ -786,8 +785,8 @@ pgss_ExecutorEnd(QueryDesc *queryDesc)
786785
*/
787786
staticvoid
788787
pgss_ProcessUtility(Node*parsetree,constchar*queryString,
789-
ParamListInfoparams,DestReceiver*dest,
790-
char*completionTag,ProcessUtilityContextcontext)
788+
ProcessUtilityContextcontext,ParamListInfoparams,
789+
DestReceiver*dest,char*completionTag)
791790
{
792791
/*
793792
* If it's an EXECUTE statement, we don't track it and don't increment the
@@ -819,11 +818,13 @@ pgss_ProcessUtility(Node *parsetree, const char *queryString,
819818
PG_TRY();
820819
{
821820
if (prev_ProcessUtility)
822-
prev_ProcessUtility(parsetree,queryString,params,
823-
dest,completionTag,context);
821+
prev_ProcessUtility(parsetree,queryString,
822+
context,params,
823+
dest,completionTag);
824824
else
825-
standard_ProcessUtility(parsetree,queryString,params,
826-
dest,completionTag,context);
825+
standard_ProcessUtility(parsetree,queryString,
826+
context,params,
827+
dest,completionTag);
827828
nested_level--;
828829
}
829830
PG_CATCH();
@@ -880,11 +881,13 @@ pgss_ProcessUtility(Node *parsetree, const char *queryString,
880881
else
881882
{
882883
if (prev_ProcessUtility)
883-
prev_ProcessUtility(parsetree,queryString,params,
884-
dest,completionTag,context);
884+
prev_ProcessUtility(parsetree,queryString,
885+
context,params,
886+
dest,completionTag);
885887
else
886-
standard_ProcessUtility(parsetree,queryString,params,
887-
dest,completionTag,context);
888+
standard_ProcessUtility(parsetree,queryString,
889+
context,params,
890+
dest,completionTag);
888891
}
889892
}
890893

‎contrib/sepgsql/hooks.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,10 +299,10 @@ sepgsql_exec_check_perms(List *rangeTabls, bool abort)
299299
staticvoid
300300
sepgsql_utility_command(Node*parsetree,
301301
constchar*queryString,
302+
ProcessUtilityContextcontext,
302303
ParamListInfoparams,
303304
DestReceiver*dest,
304-
char*completionTag,
305-
ProcessUtilityContextcontext)
305+
char*completionTag)
306306
{
307307
sepgsql_context_info_tsaved_context_info=sepgsql_context_info;
308308
ListCell*cell;
@@ -362,11 +362,13 @@ sepgsql_utility_command(Node *parsetree,
362362
}
363363

364364
if (next_ProcessUtility_hook)
365-
(*next_ProcessUtility_hook) (parsetree,queryString,params,
366-
dest,completionTag,context);
365+
(*next_ProcessUtility_hook) (parsetree,queryString,
366+
context,params,
367+
dest,completionTag);
367368
else
368-
standard_ProcessUtility(parsetree,queryString,params,
369-
dest,completionTag,context);
369+
standard_ProcessUtility(parsetree,queryString,
370+
context,params,
371+
dest,completionTag);
370372
}
371373
PG_CATCH();
372374
{

‎src/backend/commands/extension.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,10 +750,10 @@ execute_sql_string(const char *sql, const char *filename)
750750
{
751751
ProcessUtility(stmt,
752752
sql,
753+
PROCESS_UTILITY_QUERY,
753754
NULL,
754755
dest,
755-
NULL,
756-
PROCESS_UTILITY_QUERY);
756+
NULL);
757757
}
758758

759759
PopActiveSnapshot();

‎src/backend/commands/schemacmds.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,10 @@ CreateSchemaCommand(CreateSchemaStmt *stmt, const char *queryString)
151151
/* do this step */
152152
ProcessUtility(stmt,
153153
queryString,
154+
PROCESS_UTILITY_SUBCOMMAND,
154155
NULL,
155156
None_Receiver,
156-
NULL,
157-
PROCESS_UTILITY_SUBCOMMAND);
157+
NULL);
158158
/* make sure later steps can see the object created here */
159159
CommandCounterIncrement();
160160
}

‎src/backend/commands/trigger.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1014,7 +1014,8 @@ ConvertTriggerToFK(CreateTrigStmt *stmt, Oid funcoid)
10141014
/* ... and execute it */
10151015
ProcessUtility((Node*)atstmt,
10161016
"(generated ALTER TABLE ADD FOREIGN KEY command)",
1017-
NULL,None_Receiver,NULL,PROCESS_UTILITY_GENERATED);
1017+
PROCESS_UTILITY_SUBCOMMAND,NULL,
1018+
None_Receiver,NULL);
10181019

10191020
/* Remove the matched item from the list */
10201021
info_list=list_delete_ptr(info_list,info);

‎src/backend/executor/functions.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -831,10 +831,10 @@ postquel_getnext(execution_state *es, SQLFunctionCachePtr fcache)
831831
(Node*)es->qd->plannedstmt :
832832
es->qd->utilitystmt),
833833
fcache->src,
834+
PROCESS_UTILITY_QUERY,
834835
es->qd->params,
835836
es->qd->dest,
836-
NULL,
837-
PROCESS_UTILITY_QUERY);
837+
NULL);
838838
result= true;/* never stops early */
839839
}
840840
else

‎src/backend/executor/spi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,10 +2093,10 @@ _SPI_execute_plan(SPIPlanPtr plan, ParamListInfo paramLI,
20932093

20942094
ProcessUtility(stmt,
20952095
plansource->query_string,
2096+
PROCESS_UTILITY_QUERY,
20962097
paramLI,
20972098
dest,
2098-
completionTag,
2099-
PROCESS_UTILITY_QUERY);
2099+
completionTag);
21002100

21012101
/* Update "processed" if stmt returned tuples */
21022102
if (_SPI_current->tuptable)

‎src/backend/tcop/pquery.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,11 +1184,10 @@ PortalRunUtility(Portal portal, Node *utilityStmt, bool isTopLevel,
11841184

11851185
ProcessUtility(utilityStmt,
11861186
portal->sourceText,
1187+
isTopLevel ?PROCESS_UTILITY_TOPLEVEL :PROCESS_UTILITY_QUERY,
11871188
portal->portalParams,
11881189
dest,
1189-
completionTag,
1190-
isTopLevel ?
1191-
PROCESS_UTILITY_TOPLEVEL :PROCESS_UTILITY_QUERY);
1190+
completionTag);
11921191

11931192
/* Some utility statements may change context on us */
11941193
MemoryContextSwitchTo(PortalGetHeapMemory(portal));

‎src/backend/tcop/utility.c

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ ProcessUtility_hook_type ProcessUtility_hook = NULL;
7171
/* local function declarations */
7272
staticvoidProcessUtilitySlow(Node*parsetree,
7373
constchar*queryString,
74+
ProcessUtilityContextcontext,
7475
ParamListInfoparams,
7576
DestReceiver*dest,
76-
char*completionTag,
77-
ProcessUtilityContextcontext);
77+
char*completionTag);
7878
staticvoidExecDropStmt(DropStmt*stmt,boolisTopLevel);
7979

8080

@@ -314,8 +314,9 @@ CheckRestrictedOperation(const char *cmdname)
314314
*
315315
*parsetree: the parse tree for the utility statement
316316
*queryString: original source text of command
317+
*context: identifies source of statement (toplevel client command,
318+
*non-toplevel client command, subcommand of a larger utility command)
317319
*params: parameters to use during execution
318-
*isTopLevel: true if executing a "top level" (interactively issued) command
319320
*dest: where to send results
320321
*completionTag: points to a buffer of size COMPLETION_TAG_BUFSIZE
321322
*in which to store a command completion status string.
@@ -331,10 +332,10 @@ CheckRestrictedOperation(const char *cmdname)
331332
void
332333
ProcessUtility(Node*parsetree,
333334
constchar*queryString,
335+
ProcessUtilityContextcontext,
334336
ParamListInfoparams,
335337
DestReceiver*dest,
336-
char*completionTag,
337-
ProcessUtilityContextcontext)
338+
char*completionTag)
338339
{
339340
Assert(queryString!=NULL);/* required as of 8.4 */
340341

@@ -344,11 +345,13 @@ ProcessUtility(Node *parsetree,
344345
* call standard_ProcessUtility().
345346
*/
346347
if (ProcessUtility_hook)
347-
(*ProcessUtility_hook) (parsetree,queryString,params,
348-
dest,completionTag,context);
348+
(*ProcessUtility_hook) (parsetree,queryString,
349+
context,params,
350+
dest,completionTag);
349351
else
350-
standard_ProcessUtility(parsetree,queryString,params,
351-
dest,completionTag,context);
352+
standard_ProcessUtility(parsetree,queryString,
353+
context,params,
354+
dest,completionTag);
352355
}
353356

354357
/*
@@ -365,10 +368,10 @@ ProcessUtility(Node *parsetree,
365368
void
366369
standard_ProcessUtility(Node*parsetree,
367370
constchar*queryString,
371+
ProcessUtilityContextcontext,
368372
ParamListInfoparams,
369373
DestReceiver*dest,
370-
char*completionTag,
371-
ProcessUtilityContextcontext)
374+
char*completionTag)
372375
{
373376
boolisTopLevel= (context==PROCESS_UTILITY_TOPLEVEL);
374377

@@ -817,8 +820,9 @@ standard_ProcessUtility(Node *parsetree,
817820
DropStmt*stmt= (DropStmt*)parsetree;
818821

819822
if (EventTriggerSupportsObjectType(stmt->removeType))
820-
ProcessUtilitySlow(parsetree,queryString,params,
821-
dest,completionTag,context);
823+
ProcessUtilitySlow(parsetree,queryString,
824+
context,params,
825+
dest,completionTag);
822826
else
823827
ExecDropStmt(stmt,isTopLevel);
824828
}
@@ -829,8 +833,9 @@ standard_ProcessUtility(Node *parsetree,
829833
RenameStmt*stmt= (RenameStmt*)parsetree;
830834

831835
if (EventTriggerSupportsObjectType(stmt->renameType))
832-
ProcessUtilitySlow(parsetree,queryString,params,
833-
dest,completionTag,context);
836+
ProcessUtilitySlow(parsetree,queryString,
837+
context,params,
838+
dest,completionTag);
834839
else
835840
ExecRenameStmt(stmt);
836841
}
@@ -841,8 +846,9 @@ standard_ProcessUtility(Node *parsetree,
841846
AlterObjectSchemaStmt*stmt= (AlterObjectSchemaStmt*)parsetree;
842847

843848
if (EventTriggerSupportsObjectType(stmt->objectType))
844-
ProcessUtilitySlow(parsetree,queryString,params,
845-
dest,completionTag,context);
849+
ProcessUtilitySlow(parsetree,queryString,
850+
context,params,
851+
dest,completionTag);
846852
else
847853
ExecAlterObjectSchemaStmt(stmt);
848854
}
@@ -853,17 +859,19 @@ standard_ProcessUtility(Node *parsetree,
853859
AlterOwnerStmt*stmt= (AlterOwnerStmt*)parsetree;
854860

855861
if (EventTriggerSupportsObjectType(stmt->objectType))
856-
ProcessUtilitySlow(parsetree,queryString,params,
857-
dest,completionTag,context);
862+
ProcessUtilitySlow(parsetree,queryString,
863+
context,params,
864+
dest,completionTag);
858865
else
859866
ExecAlterOwnerStmt(stmt);
860867
}
861868
break;
862869

863870
default:
864871
/* All other statement types have event trigger support */
865-
ProcessUtilitySlow(parsetree,queryString,params,
866-
dest,completionTag,context);
872+
ProcessUtilitySlow(parsetree,queryString,
873+
context,params,
874+
dest,completionTag);
867875
break;
868876
}
869877
}
@@ -876,10 +884,10 @@ standard_ProcessUtility(Node *parsetree,
876884
staticvoid
877885
ProcessUtilitySlow(Node*parsetree,
878886
constchar*queryString,
887+
ProcessUtilityContextcontext,
879888
ParamListInfoparams,
880889
DestReceiver*dest,
881-
char*completionTag,
882-
ProcessUtilityContextcontext)
890+
char*completionTag)
883891
{
884892
boolisTopLevel= (context==PROCESS_UTILITY_TOPLEVEL);
885893
boolisCompleteQuery= (context <=PROCESS_UTILITY_QUERY);
@@ -966,10 +974,10 @@ ProcessUtilitySlow(Node *parsetree,
966974
/* Recurse for anything else */
967975
ProcessUtility(stmt,
968976
queryString,
977+
PROCESS_UTILITY_SUBCOMMAND,
969978
params,
970979
None_Receiver,
971-
NULL,
972-
PROCESS_UTILITY_GENERATED);
980+
NULL);
973981
}
974982

975983
/* Need CCI between commands */
@@ -1017,10 +1025,10 @@ ProcessUtilitySlow(Node *parsetree,
10171025
/* Recurse for anything else */
10181026
ProcessUtility(stmt,
10191027
queryString,
1028+
PROCESS_UTILITY_SUBCOMMAND,
10201029
params,
10211030
None_Receiver,
1022-
NULL,
1023-
PROCESS_UTILITY_GENERATED);
1031+
NULL);
10241032
}
10251033

10261034
/* Need CCI between commands */

‎src/include/tcop/utility.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,22 @@ typedef enum
2020
{
2121
PROCESS_UTILITY_TOPLEVEL,/* toplevel interactive command */
2222
PROCESS_UTILITY_QUERY,/* a complete query, but not toplevel */
23-
PROCESS_UTILITY_SUBCOMMAND,/* a piece of a query */
24-
PROCESS_UTILITY_GENERATED/* internally generated node query node */
23+
PROCESS_UTILITY_SUBCOMMAND/* a portion of a query */
2524
}ProcessUtilityContext;
2625

2726
/* Hook for plugins to get control in ProcessUtility() */
2827
typedefvoid (*ProcessUtility_hook_type) (Node*parsetree,
29-
constchar*queryString,ParamListInfoparams,
30-
DestReceiver*dest,char*completionTag,
31-
ProcessUtilityContextcontext);
28+
constchar*queryString,ProcessUtilityContextcontext,
29+
ParamListInfoparams,
30+
DestReceiver*dest,char*completionTag);
3231
externPGDLLIMPORTProcessUtility_hook_typeProcessUtility_hook;
3332

3433
externvoidProcessUtility(Node*parsetree,constchar*queryString,
35-
ParamListInfoparams,DestReceiver*dest,char*completionTag,
36-
ProcessUtilityContextcontext);
34+
ProcessUtilityContextcontext,ParamListInfoparams,
35+
DestReceiver*dest,char*completionTag);
3736
externvoidstandard_ProcessUtility(Node*parsetree,constchar*queryString,
38-
ParamListInfoparams,DestReceiver*dest,
39-
char*completionTag,ProcessUtilityContextcontext);
37+
ProcessUtilityContextcontext,ParamListInfoparams,
38+
DestReceiver*dest,char*completionTag);
4039

4140
externboolUtilityReturnsTuples(Node*parsetree);
4241

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp