← Back to Overview

src/backend/tcop/utility.c

Coverage: 16/22 lines (72.7%)
Total Lines
22
modified
Covered
16
72.7%
Uncovered
6
27.3%
키보드 네비게이션
ClassifyUtilityCommandAsReadOnly() lines 130-400
Modified Lines Coverage: 0/0 lines (0.0%)
LineHitsSourceCommit
130 - ClassifyUtilityCommandAsReadOnly(Node *parsetree) -
131 - { -
132 - switch (nodeTag(parsetree)) -
133 - { -
134 - case T_AlterCollationStmt: -
135 - case T_AlterDatabaseRefreshCollStmt: -
136 - case T_AlterDatabaseSetStmt: -
137 - case T_AlterDatabaseStmt: -
138 - case T_AlterDefaultPrivilegesStmt: -
139 - case T_AlterDomainStmt: -
140 - case T_AlterEnumStmt: -
141 - case T_AlterEventTrigStmt: -
142 - case T_AlterExtensionContentsStmt: -
143 - case T_AlterExtensionStmt: -
144 - case T_AlterFdwStmt: -
145 - case T_AlterForeignServerStmt: -
146 - case T_AlterFunctionStmt: -
147 - case T_AlterObjectDependsStmt: -
148 - case T_AlterObjectSchemaStmt: -
149 - case T_AlterOpFamilyStmt: -
150 - case T_AlterOperatorStmt: -
151 - case T_AlterOwnerStmt: -
152 - case T_AlterPolicyStmt: -
153 - case T_AlterPropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
154 - case T_AlterPublicationStmt: -
155 - case T_AlterRoleSetStmt: -
156 - case T_AlterRoleStmt: -
157 - case T_AlterSeqStmt: -
158 - case T_AlterStatsStmt: -
159 - case T_AlterSubscriptionStmt: -
160 - case T_AlterTSConfigurationStmt: -
161 - case T_AlterTSDictionaryStmt: -
162 - case T_AlterTableMoveAllStmt: -
163 - case T_AlterTableSpaceOptionsStmt: -
164 - case T_AlterTableStmt: -
165 - case T_AlterTypeStmt: -
166 - case T_AlterUserMappingStmt: -
167 - case T_CommentStmt: -
168 - case T_CompositeTypeStmt: -
169 - case T_CreateAmStmt: -
170 - case T_CreateCastStmt: -
171 - case T_CreateConversionStmt: -
172 - case T_CreateDomainStmt: -
173 - case T_CreateEnumStmt: -
174 - case T_CreateEventTrigStmt: -
175 - case T_CreateExtensionStmt: -
176 - case T_CreateFdwStmt: -
177 - case T_CreateForeignServerStmt: -
178 - case T_CreateForeignTableStmt: -
179 - case T_CreateFunctionStmt: -
180 - case T_CreateOpClassStmt: -
181 - case T_CreateOpFamilyStmt: -
182 - case T_CreatePLangStmt: -
183 - case T_CreatePolicyStmt: -
184 - case T_CreatePropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
185 - case T_CreatePublicationStmt: -
186 - case T_CreateRangeStmt: -
187 - case T_CreateRoleStmt: -
188 - case T_CreateSchemaStmt: -
189 - case T_CreateSeqStmt: -
190 - case T_CreateStatsStmt: -
191 - case T_CreateStmt: -
192 - case T_CreateSubscriptionStmt: -
193 - case T_CreateTableAsStmt: -
194 - case T_CreateTableSpaceStmt: -
195 - case T_CreateTransformStmt: -
196 - case T_CreateTrigStmt: -
197 - case T_CreateUserMappingStmt: -
198 - case T_CreatedbStmt: -
199 - case T_DefineStmt: -
200 - case T_DropOwnedStmt: -
201 - case T_DropRoleStmt: -
202 - case T_DropStmt: -
203 - case T_DropSubscriptionStmt: -
204 - case T_DropTableSpaceStmt: -
205 - case T_DropUserMappingStmt: -
206 - case T_DropdbStmt: -
207 - case T_GrantRoleStmt: -
208 - case T_GrantStmt: -
209 - case T_ImportForeignSchemaStmt: -
210 - case T_IndexStmt: -
211 - case T_ReassignOwnedStmt: -
212 - case T_RefreshMatViewStmt: -
213 - case T_RenameStmt: -
214 - case T_RuleStmt: -
215 - case T_SecLabelStmt: -
216 - case T_TruncateStmt: -
217 - case T_ViewStmt: -
218 - { -
219 - /* DDL is not read-only, and neither is TRUNCATE. */ -
220 - return COMMAND_IS_NOT_READ_ONLY; -
221 - } -
222 - -
223 - case T_AlterSystemStmt: -
224 - { -
225 - /* -
226 - * Surprisingly, ALTER SYSTEM meets all our definitions of -
227 - * read-only: it changes nothing that affects the output of -
228 - * pg_dump, it doesn't write WAL or imperil the application of -
229 - * future WAL, and it doesn't depend on any state that needs -
230 - * to be synchronized with parallel workers. -
231 - * -
232 - * So, despite the fact that it writes to a file, it's read -
233 - * only! -
234 - */ -
235 - return COMMAND_IS_STRICTLY_READ_ONLY; -
236 - } -
237 - -
238 - case T_CallStmt: -
239 - case T_DoStmt: -
240 - { -
241 - /* -
242 - * Commands inside the DO block or the called procedure might -
243 - * not be read only, but they'll be checked separately when we -
244 - * try to execute them. Here we only need to worry about the -
245 - * DO or CALL command itself. -
246 - */ -
247 - return COMMAND_IS_STRICTLY_READ_ONLY; -
248 - } -
249 - -
250 - case T_CheckPointStmt: -
251 - { -
252 - /* -
253 - * You might think that this should not be permitted in -
254 - * recovery, but we interpret a CHECKPOINT command during -
255 - * recovery as a request for a restartpoint instead. We allow -
256 - * this since it can be a useful way of reducing switchover -
257 - * time when using various forms of replication. -
258 - */ -
259 - return COMMAND_IS_STRICTLY_READ_ONLY; -
260 - } -
261 - -
262 - case T_ClosePortalStmt: -
263 - case T_ConstraintsSetStmt: -
264 - case T_DeallocateStmt: -
265 - case T_DeclareCursorStmt: -
266 - case T_DiscardStmt: -
267 - case T_ExecuteStmt: -
268 - case T_FetchStmt: -
269 - case T_LoadStmt: -
270 - case T_PrepareStmt: -
271 - case T_UnlistenStmt: -
272 - case T_VariableSetStmt: -
273 - case T_WaitStmt: -
274 - { -
275 - /* -
276 - * These modify only backend-local state, so they're OK to run -
277 - * in a read-only transaction or on a standby. However, they -
278 - * are disallowed in parallel mode, because they either rely -
279 - * upon or modify backend-local state that might not be -
280 - * synchronized among cooperating backends. -
281 - */ -
282 - return COMMAND_OK_IN_RECOVERY | COMMAND_OK_IN_READ_ONLY_TXN; -
283 - } -
284 - -
285 - case T_ClusterStmt: -
286 - case T_ReindexStmt: -
287 - case T_VacuumStmt: -
288 - { -
289 - /* -
290 - * These commands write WAL, so they're not strictly -
291 - * read-only, and running them in parallel workers isn't -
292 - * supported. -
293 - * -
294 - * However, they don't change the database state in a way that -
295 - * would affect pg_dump output, so it's fine to run them in a -
296 - * read-only transaction. (CLUSTER might change the order of -
297 - * rows on disk, which could affect the ordering of pg_dump -
298 - * output, but that's not semantically significant.) -
299 - */ -
300 - return COMMAND_OK_IN_READ_ONLY_TXN; -
301 - } -
302 - -
303 - case T_CopyStmt: -
304 - { -
305 - CopyStmt *stmt = (CopyStmt *) parsetree; -
306 - -
307 - /* -
308 - * You might think that COPY FROM is not at all read only, but -
309 - * it's OK to copy into a temporary table, because that -
310 - * wouldn't change the output of pg_dump. If the target table -
311 - * turns out to be non-temporary, DoCopy itself will call -
312 - * PreventCommandIfReadOnly. -
313 - */ -
314 - if (stmt->is_from) -
315 - return COMMAND_OK_IN_READ_ONLY_TXN; -
316 - else -
317 - return COMMAND_IS_STRICTLY_READ_ONLY; -
318 - } -
319 - -
320 - case T_ExplainStmt: -
321 - case T_VariableShowStmt: -
322 - { -
323 - /* -
324 - * These commands don't modify any data and are safe to run in -
325 - * a parallel worker. -
326 - */ -
327 - return COMMAND_IS_STRICTLY_READ_ONLY; -
328 - } -
329 - -
330 - case T_ListenStmt: -
331 - case T_NotifyStmt: -
332 - { -
333 - /* -
334 - * NOTIFY requires an XID assignment, so it can't be permitted -
335 - * on a standby. Perhaps LISTEN could, since without NOTIFY it -
336 - * would be OK to just do nothing, at least until promotion, -
337 - * but we currently prohibit it lest the user get the wrong -
338 - * idea. -
339 - * -
340 - * (We do allow T_UnlistenStmt on a standby, though, because -
341 - * it's a no-op.) -
342 - */ -
343 - return COMMAND_OK_IN_READ_ONLY_TXN; -
344 - } -
345 - -
346 - case T_LockStmt: -
347 - { -
348 - LockStmt *stmt = (LockStmt *) parsetree; -
349 - -
350 - /* -
351 - * Only weaker locker modes are allowed during recovery. The -
352 - * restrictions here must match those in -
353 - * LockAcquireExtended(). -
354 - */ -
355 - if (stmt->mode > RowExclusiveLock) -
356 - return COMMAND_OK_IN_READ_ONLY_TXN; -
357 - else -
358 - return COMMAND_IS_STRICTLY_READ_ONLY; -
359 - } -
360 - -
361 - case T_TransactionStmt: -
362 - { -
363 - TransactionStmt *stmt = (TransactionStmt *) parsetree; -
364 - -
365 - /* -
366 - * PREPARE, COMMIT PREPARED, and ROLLBACK PREPARED all write -
367 - * WAL, so they're not read-only in the strict sense; but the -
368 - * first and third do not change pg_dump output, so they're OK -
369 - * in a read-only transactions. -
370 - * -
371 - * We also consider COMMIT PREPARED to be OK in a read-only -
372 - * transaction environment, by way of exception. -
373 - */ -
374 - switch (stmt->kind) -
375 - { -
376 - case TRANS_STMT_BEGIN: -
377 - case TRANS_STMT_START: -
378 - case TRANS_STMT_COMMIT: -
379 - case TRANS_STMT_ROLLBACK: -
380 - case TRANS_STMT_SAVEPOINT: -
381 - case TRANS_STMT_RELEASE: -
382 - case TRANS_STMT_ROLLBACK_TO: -
383 - return COMMAND_IS_STRICTLY_READ_ONLY; -
384 - -
385 - case TRANS_STMT_PREPARE: -
386 - case TRANS_STMT_COMMIT_PREPARED: -
387 - case TRANS_STMT_ROLLBACK_PREPARED: -
388 - return COMMAND_OK_IN_READ_ONLY_TXN; -
389 - } -
390 - elog(ERROR, "unrecognized TransactionStmtKind: %d", -
391 - (int) stmt->kind); -
392 - return 0; /* silence stupider compilers */ -
393 - } -
394 - -
395 - default: -
396 - elog(ERROR, "unrecognized node type: %d", -
397 - (int) nodeTag(parsetree)); -
398 - return 0; /* silence stupider compilers */ -
399 - } -
400 - } -
ProcessUtilitySlow() lines 1093-1952
Modified Lines Coverage: 4/4 lines (100.0%)
LineHitsSourceCommit
1093 - ProcessUtilitySlow(ParseState *pstate, -
1094 - PlannedStmt *pstmt, -
1095 - const char *queryString, -
1096 - ProcessUtilityContext context, -
1097 - ParamListInfo params, -
1098 - QueryEnvironment *queryEnv, -
1099 - DestReceiver *dest, -
1100 - QueryCompletion *qc) -
1101 - { -
1102 - Node *parsetree = pstmt->utilityStmt; -
1103 - bool isTopLevel = (context == PROCESS_UTILITY_TOPLEVEL); -
1104 - bool isCompleteQuery = (context != PROCESS_UTILITY_SUBCOMMAND); -
1105 - bool needCleanup; -
1106 - bool commandCollected = false; -
1107 - ObjectAddress address; -
1108 - ObjectAddress secondaryObject = InvalidObjectAddress; -
1109 - -
1110 - /* All event trigger calls are done only when isCompleteQuery is true */ -
1111 - needCleanup = isCompleteQuery && EventTriggerBeginCompleteQuery(); -
1112 - -
1113 - /* PG_TRY block is to ensure we call EventTriggerEndCompleteQuery */ -
1114 - PG_TRY(); -
1115 - { -
1116 - if (isCompleteQuery) -
1117 - EventTriggerDDLCommandStart(parsetree); -
1118 - -
1119 - switch (nodeTag(parsetree)) -
1120 - { -
1121 - /* -
1122 - * relation and attribute manipulation -
1123 - */ -
1124 - case T_CreateSchemaStmt: -
1125 - CreateSchemaCommand((CreateSchemaStmt *) parsetree, -
1126 - queryString, -
1127 - pstmt->stmt_location, -
1128 - pstmt->stmt_len); -
1129 - -
1130 - /* -
1131 - * EventTriggerCollectSimpleCommand called by -
1132 - * CreateSchemaCommand -
1133 - */ -
1134 - commandCollected = true; -
1135 - break; -
1136 - -
1137 - case T_CreateStmt: -
1138 - case T_CreateForeignTableStmt: -
1139 - { -
1140 - List *stmts; -
1141 - RangeVar *table_rv = NULL; -
1142 - -
1143 - /* Run parse analysis ... */ -
1144 - stmts = transformCreateStmt((CreateStmt *) parsetree, -
1145 - queryString); -
1146 - -
1147 - /* -
1148 - * ... and do it. We can't use foreach() because we may -
1149 - * modify the list midway through, so pick off the -
1150 - * elements one at a time, the hard way. -
1151 - */ -
1152 - while (stmts != NIL) -
1153 - { -
1154 - Node *stmt = (Node *) linitial(stmts); -
1155 - -
1156 - stmts = list_delete_first(stmts); -
1157 - -
1158 - if (IsA(stmt, CreateStmt)) -
1159 - { -
1160 - CreateStmt *cstmt = (CreateStmt *) stmt; -
1161 - Datum toast_options; -
1162 - const char *const validnsps[] = HEAP_RELOPT_NAMESPACES; -
1163 - -
1164 - /* Remember transformed RangeVar for LIKE */ -
1165 - table_rv = cstmt->relation; -
1166 - -
1167 - /* Create the table itself */ -
1168 - address = DefineRelation(cstmt, -
1169 - RELKIND_RELATION, -
1170 - InvalidOid, NULL, -
1171 - queryString); -
1172 - EventTriggerCollectSimpleCommand(address, -
1173 - secondaryObject, -
1174 - stmt); -
1175 - -
1176 - /* -
1177 - * Let NewRelationCreateToastTable decide if this -
1178 - * one needs a secondary relation too. -
1179 - */ -
1180 - CommandCounterIncrement(); -
1181 - -
1182 - /* -
1183 - * parse and validate reloptions for the toast -
1184 - * table -
1185 - */ -
1186 - toast_options = transformRelOptions((Datum) 0, -
1187 - cstmt->options, -
1188 - "toast", -
1189 - validnsps, -
1190 - true, -
1191 - false); -
1192 - (void) heap_reloptions(RELKIND_TOASTVALUE, -
1193 - toast_options, -
1194 - true); -
1195 - -
1196 - NewRelationCreateToastTable(address.objectId, -
1197 - toast_options); -
1198 - } -
1199 - else if (IsA(stmt, CreateForeignTableStmt)) -
1200 - { -
1201 - CreateForeignTableStmt *cstmt = (CreateForeignTableStmt *) stmt; -
1202 - -
1203 - /* Remember transformed RangeVar for LIKE */ -
1204 - table_rv = cstmt->base.relation; -
1205 - -
1206 - /* Create the table itself */ -
1207 - address = DefineRelation(&cstmt->base, -
1208 - RELKIND_FOREIGN_TABLE, -
1209 - InvalidOid, NULL, -
1210 - queryString); -
1211 - CreateForeignTable(cstmt, -
1212 - address.objectId); -
1213 - EventTriggerCollectSimpleCommand(address, -
1214 - secondaryObject, -
1215 - stmt); -
1216 - } -
1217 - else if (IsA(stmt, TableLikeClause)) -
1218 - { -
1219 - /* -
1220 - * Do delayed processing of LIKE options. This -
1221 - * will result in additional sub-statements for us -
1222 - * to process. Those should get done before any -
1223 - * remaining actions, so prepend them to "stmts". -
1224 - */ -
1225 - TableLikeClause *like = (TableLikeClause *) stmt; -
1226 - List *morestmts; -
1227 - -
1228 - Assert(table_rv != NULL); -
1229 - -
1230 - morestmts = expandTableLikeClause(table_rv, like); -
1231 - stmts = list_concat(morestmts, stmts); -
1232 - } -
1233 - else -
1234 - { -
1235 - /* -
1236 - * Recurse for anything else. Note the recursive -
1237 - * call will stash the objects so created into our -
1238 - * event trigger context. -
1239 - */ -
1240 - PlannedStmt *wrapper; -
1241 - -
1242 - wrapper = makeNode(PlannedStmt); -
1243 - wrapper->commandType = CMD_UTILITY; -
1244 - wrapper->canSetTag = false; -
1245 - wrapper->utilityStmt = stmt; -
1246 - wrapper->stmt_location = pstmt->stmt_location; -
1247 - wrapper->stmt_len = pstmt->stmt_len; -
1248 - wrapper->planOrigin = PLAN_STMT_INTERNAL; -
1249 - -
1250 - ProcessUtility(wrapper, -
1251 - queryString, -
1252 - false, -
1253 - PROCESS_UTILITY_SUBCOMMAND, -
1254 - params, -
1255 - NULL, -
1256 - None_Receiver, -
1257 - NULL); -
1258 - } -
1259 - -
1260 - /* Need CCI between commands */ -
1261 - if (stmts != NIL) -
1262 - CommandCounterIncrement(); -
1263 - } -
1264 - -
1265 - /* -
1266 - * The multiple commands generated here are stashed -
1267 - * individually, so disable collection below. -
1268 - */ -
1269 - commandCollected = true; -
1270 - } -
1271 - break; -
1272 - -
1273 - case T_AlterTableStmt: -
1274 - { -
1275 - AlterTableStmt *atstmt = (AlterTableStmt *) parsetree; -
1276 - Oid relid; -
1277 - LOCKMODE lockmode; -
1278 - ListCell *cell; -
1279 - -
1280 - /* -
1281 - * Disallow ALTER TABLE .. DETACH CONCURRENTLY in a -
1282 - * transaction block or function. (Perhaps it could be -
1283 - * allowed in a procedure, but don't hold your breath.) -
1284 - */ -
1285 - foreach(cell, atstmt->cmds) -
1286 - { -
1287 - AlterTableCmd *cmd = (AlterTableCmd *) lfirst(cell); -
1288 - -
1289 - /* Disallow DETACH CONCURRENTLY in a transaction block */ -
1290 - if (cmd->subtype == AT_DetachPartition) -
1291 - { -
1292 - if (((PartitionCmd *) cmd->def)->concurrent) -
1293 - PreventInTransactionBlock(isTopLevel, -
1294 - "ALTER TABLE ... DETACH CONCURRENTLY"); -
1295 - } -
1296 - } -
1297 - -
1298 - /* -
1299 - * Figure out lock mode, and acquire lock. This also does -
1300 - * basic permissions checks, so that we won't wait for a -
1301 - * lock on (for example) a relation on which we have no -
1302 - * permissions. -
1303 - */ -
1304 - lockmode = AlterTableGetLockLevel(atstmt->cmds); -
1305 - relid = AlterTableLookupRelation(atstmt, lockmode); -
1306 - -
1307 - if (OidIsValid(relid)) -
1308 - { -
1309 - AlterTableUtilityContext atcontext; -
1310 - -
1311 - /* Set up info needed for recursive callbacks ... */ -
1312 - atcontext.pstmt = pstmt; -
1313 - atcontext.queryString = queryString; -
1314 - atcontext.relid = relid; -
1315 - atcontext.params = params; -
1316 - atcontext.queryEnv = queryEnv; -
1317 - -
1318 - /* ... ensure we have an event trigger context ... */ -
1319 - EventTriggerAlterTableStart(parsetree); -
1320 - EventTriggerAlterTableRelid(relid); -
1321 - -
1322 - /* ... and do it */ -
1323 - AlterTable(atstmt, lockmode, &atcontext); -
1324 - -
1325 - /* done */ -
1326 - EventTriggerAlterTableEnd(); -
1327 - } -
1328 - else -
1329 - ereport(NOTICE, -
1330 - (errmsg("relation \"%s\" does not exist, skipping", -
1331 - atstmt->relation->relname))); -
1332 - } -
1333 - -
1334 - /* ALTER TABLE stashes commands internally */ -
1335 - commandCollected = true; -
1336 - break; -
1337 - -
1338 - case T_AlterDomainStmt: -
1339 - { -
1340 - AlterDomainStmt *stmt = (AlterDomainStmt *) parsetree; -
1341 - -
1342 - /* -
1343 - * Some or all of these functions are recursive to cover -
1344 - * inherited things, so permission checks are done there. -
1345 - */ -
1346 - switch (stmt->subtype) -
1347 - { -
1348 - case AD_AlterDefault: -
1349 - -
1350 - /* -
1351 - * Recursively alter column default for table and, -
1352 - * if requested, for descendants -
1353 - */ -
1354 - address = -
1355 - AlterDomainDefault(stmt->typeName, -
1356 - stmt->def); -
1357 - break; -
1358 - case AD_DropNotNull: -
1359 - address = -
1360 - AlterDomainNotNull(stmt->typeName, -
1361 - false); -
1362 - break; -
1363 - case AD_SetNotNull: -
1364 - address = -
1365 - AlterDomainNotNull(stmt->typeName, -
1366 - true); -
1367 - break; -
1368 - case AD_AddConstraint: -
1369 - address = -
1370 - AlterDomainAddConstraint(stmt->typeName, -
1371 - stmt->def, -
1372 - &secondaryObject); -
1373 - break; -
1374 - case AD_DropConstraint: -
1375 - address = -
1376 - AlterDomainDropConstraint(stmt->typeName, -
1377 - stmt->name, -
1378 - stmt->behavior, -
1379 - stmt->missing_ok); -
1380 - break; -
1381 - case AD_ValidateConstraint: -
1382 - address = -
1383 - AlterDomainValidateConstraint(stmt->typeName, -
1384 - stmt->name); -
1385 - break; -
1386 - default: /* oops */ -
1387 - elog(ERROR, "unrecognized alter domain type: %d", -
1388 - (int) stmt->subtype); -
1389 - break; -
1390 - } -
1391 - } -
1392 - break; -
1393 - -
1394 - /* -
1395 - * ************* object creation / destruction ************** -
1396 - */ -
1397 - case T_DefineStmt: -
1398 - { -
1399 - DefineStmt *stmt = (DefineStmt *) parsetree; -
1400 - -
1401 - switch (stmt->kind) -
1402 - { -
1403 - case OBJECT_AGGREGATE: -
1404 - address = -
1405 - DefineAggregate(pstate, stmt->defnames, stmt->args, -
1406 - stmt->oldstyle, -
1407 - stmt->definition, -
1408 - stmt->replace); -
1409 - break; -
1410 - case OBJECT_OPERATOR: -
1411 - Assert(stmt->args == NIL); -
1412 - address = DefineOperator(stmt->defnames, -
1413 - stmt->definition); -
1414 - break; -
1415 - case OBJECT_TYPE: -
1416 - Assert(stmt->args == NIL); -
1417 - address = DefineType(pstate, -
1418 - stmt->defnames, -
1419 - stmt->definition); -
1420 - break; -
1421 - case OBJECT_TSPARSER: -
1422 - Assert(stmt->args == NIL); -
1423 - address = DefineTSParser(stmt->defnames, -
1424 - stmt->definition); -
1425 - break; -
1426 - case OBJECT_TSDICTIONARY: -
1427 - Assert(stmt->args == NIL); -
1428 - address = DefineTSDictionary(stmt->defnames, -
1429 - stmt->definition); -
1430 - break; -
1431 - case OBJECT_TSTEMPLATE: -
1432 - Assert(stmt->args == NIL); -
1433 - address = DefineTSTemplate(stmt->defnames, -
1434 - stmt->definition); -
1435 - break; -
1436 - case OBJECT_TSCONFIGURATION: -
1437 - Assert(stmt->args == NIL); -
1438 - address = DefineTSConfiguration(stmt->defnames, -
1439 - stmt->definition, -
1440 - &secondaryObject); -
1441 - break; -
1442 - case OBJECT_COLLATION: -
1443 - Assert(stmt->args == NIL); -
1444 - address = DefineCollation(pstate, -
1445 - stmt->defnames, -
1446 - stmt->definition, -
1447 - stmt->if_not_exists); -
1448 - break; -
1449 - default: -
1450 - elog(ERROR, "unrecognized define stmt type: %d", -
1451 - (int) stmt->kind); -
1452 - break; -
1453 - } -
1454 - } -
1455 - break; -
1456 - -
1457 - case T_IndexStmt: /* CREATE INDEX */ -
1458 - { -
1459 - IndexStmt *stmt = (IndexStmt *) parsetree; -
1460 - Oid relid; -
1461 - LOCKMODE lockmode; -
1462 - int nparts = -1; -
1463 - bool is_alter_table; -
1464 - -
1465 - if (stmt->concurrent) -
1466 - PreventInTransactionBlock(isTopLevel, -
1467 - "CREATE INDEX CONCURRENTLY"); -
1468 - -
1469 - /* -
1470 - * Look up the relation OID just once, right here at the -
1471 - * beginning, so that we don't end up repeating the name -
1472 - * lookup later and latching onto a different relation -
1473 - * partway through. To avoid lock upgrade hazards, it's -
1474 - * important that we take the strongest lock that will -
1475 - * eventually be needed here, so the lockmode calculation -
1476 - * needs to match what DefineIndex() does. -
1477 - */ -
1478 - lockmode = stmt->concurrent ? ShareUpdateExclusiveLock -
1479 - : ShareLock; -
1480 - relid = -
1481 - RangeVarGetRelidExtended(stmt->relation, lockmode, -
1482 - 0, -
1483 - RangeVarCallbackOwnsRelation, -
1484 - NULL); -
1485 - -
1486 - /* -
1487 - * CREATE INDEX on partitioned tables (but not regular -
1488 - * inherited tables) recurses to partitions, so we must -
1489 - * acquire locks early to avoid deadlocks. -
1490 - * -
1491 - * We also take the opportunity to verify that all -
1492 - * partitions are something we can put an index on, to -
1493 - * avoid building some indexes only to fail later. While -
1494 - * at it, also count the partitions, so that DefineIndex -
1495 - * needn't do a duplicative find_all_inheritors search. -
1496 - */ -
1497 - if (stmt->relation->inh && -
1498 - get_rel_relkind(relid) == RELKIND_PARTITIONED_TABLE) -
1499 - { -
1500 - ListCell *lc; -
1501 - List *inheritors = NIL; -
1502 - -
1503 - inheritors = find_all_inheritors(relid, lockmode, NULL); -
1504 - foreach(lc, inheritors) -
1505 - { -
1506 - Oid partrelid = lfirst_oid(lc); -
1507 - char relkind = get_rel_relkind(partrelid); -
1508 - -
1509 - if (relkind != RELKIND_RELATION && -
1510 - relkind != RELKIND_MATVIEW && -
1511 - relkind != RELKIND_PARTITIONED_TABLE && -
1512 - relkind != RELKIND_FOREIGN_TABLE) -
1513 - elog(ERROR, "unexpected relkind \"%c\" on partition \"%s\"", -
1514 - relkind, stmt->relation->relname); -
1515 - -
1516 - if (relkind == RELKIND_FOREIGN_TABLE && -
1517 - (stmt->unique || stmt->primary)) -
1518 - ereport(ERROR, -
1519 - (errcode(ERRCODE_WRONG_OBJECT_TYPE), -
1520 - errmsg("cannot create unique index on partitioned table \"%s\"", -
1521 - stmt->relation->relname), -
1522 - errdetail("Table \"%s\" contains partitions that are foreign tables.", -
1523 - stmt->relation->relname))); -
1524 - } -
1525 - /* count direct and indirect children, but not rel */ -
1526 - nparts = list_length(inheritors) - 1; -
1527 - list_free(inheritors); -
1528 - } -
1529 - -
1530 - /* -
1531 - * If the IndexStmt is already transformed, it must have -
1532 - * come from generateClonedIndexStmt, which in current -
1533 - * usage means it came from expandTableLikeClause rather -
1534 - * than from original parse analysis. And that means we -
1535 - * must treat it like ALTER TABLE ADD INDEX, not CREATE. -
1536 - * (This is a bit grotty, but currently it doesn't seem -
1537 - * worth adding a separate bool field for the purpose.) -
1538 - */ -
1539 - is_alter_table = stmt->transformed; -
1540 - -
1541 - /* Run parse analysis ... */ -
1542 - stmt = transformIndexStmt(relid, stmt, queryString); -
1543 - -
1544 - /* ... and do it */ -
1545 - EventTriggerAlterTableStart(parsetree); -
1546 - address = -
1547 - DefineIndex(relid, /* OID of heap relation */ -
1548 - stmt, -
1549 - InvalidOid, /* no predefined OID */ -
1550 - InvalidOid, /* no parent index */ -
1551 - InvalidOid, /* no parent constraint */ -
1552 - nparts, /* # of partitions, or -1 */ -
1553 - is_alter_table, -
1554 - true, /* check_rights */ -
1555 - true, /* check_not_in_use */ -
1556 - false, /* skip_build */ -
1557 - false); /* quiet */ -
1558 - -
1559 - /* -
1560 - * Add the CREATE INDEX node itself to stash right away; -
1561 - * if there were any commands stashed in the ALTER TABLE -
1562 - * code, we need them to appear after this one. -
1563 - */ -
1564 - EventTriggerCollectSimpleCommand(address, secondaryObject, -
1565 - parsetree); -
1566 - commandCollected = true; -
1567 - EventTriggerAlterTableEnd(); -
1568 - } -
1569 - break; -
1570 - -
1571 - case T_ReindexStmt: -
1572 - ExecReindex(pstate, (ReindexStmt *) parsetree, isTopLevel); -
1573 - -
1574 - /* EventTriggerCollectSimpleCommand is called directly */ -
1575 - commandCollected = true; -
1576 - break; -
1577 - -
1578 - case T_CreateExtensionStmt: -
1579 - address = CreateExtension(pstate, (CreateExtensionStmt *) parsetree); -
1580 - break; -
1581 - -
1582 - case T_AlterExtensionStmt: -
1583 - address = ExecAlterExtensionStmt(pstate, (AlterExtensionStmt *) parsetree); -
1584 - break; -
1585 - -
1586 - case T_AlterExtensionContentsStmt: -
1587 - address = ExecAlterExtensionContentsStmt((AlterExtensionContentsStmt *) parsetree, -
1588 - &secondaryObject); -
1589 - break; -
1590 - -
1591 - case T_CreateFdwStmt: -
1592 - address = CreateForeignDataWrapper(pstate, (CreateFdwStmt *) parsetree); -
1593 - break; -
1594 - -
1595 - case T_AlterFdwStmt: -
1596 - address = AlterForeignDataWrapper(pstate, (AlterFdwStmt *) parsetree); -
1597 - break; -
1598 - -
1599 - case T_CreateForeignServerStmt: -
1600 - address = CreateForeignServer((CreateForeignServerStmt *) parsetree); -
1601 - break; -
1602 - -
1603 - case T_AlterForeignServerStmt: -
1604 - address = AlterForeignServer((AlterForeignServerStmt *) parsetree); -
1605 - break; -
1606 - -
1607 - case T_CreateUserMappingStmt: -
1608 - address = CreateUserMapping((CreateUserMappingStmt *) parsetree); -
1609 - break; -
1610 - -
1611 - case T_AlterUserMappingStmt: -
1612 - address = AlterUserMapping((AlterUserMappingStmt *) parsetree); -
1613 - break; -
1614 - -
1615 - case T_DropUserMappingStmt: -
1616 - RemoveUserMapping((DropUserMappingStmt *) parsetree); -
1617 - /* no commands stashed for DROP */ -
1618 - commandCollected = true; -
1619 - break; -
1620 - -
1621 - case T_ImportForeignSchemaStmt: -
1622 - ImportForeignSchema((ImportForeignSchemaStmt *) parsetree); -
1623 - /* commands are stashed inside ImportForeignSchema */ -
1624 - commandCollected = true; -
1625 - break; -
1626 - -
1627 - case T_CompositeTypeStmt: /* CREATE TYPE (composite) */ -
1628 - { -
1629 - CompositeTypeStmt *stmt = (CompositeTypeStmt *) parsetree; -
1630 - -
1631 - address = DefineCompositeType(stmt->typevar, -
1632 - stmt->coldeflist); -
1633 - } -
1634 - break; -
1635 - -
1636 - case T_CreateEnumStmt: /* CREATE TYPE AS ENUM */ -
1637 - address = DefineEnum((CreateEnumStmt *) parsetree); -
1638 - break; -
1639 - -
1640 - case T_CreateRangeStmt: /* CREATE TYPE AS RANGE */ -
1641 - address = DefineRange(pstate, (CreateRangeStmt *) parsetree); -
1642 - break; -
1643 - -
1644 - case T_AlterEnumStmt: /* ALTER TYPE (enum) */ -
1645 - address = AlterEnum((AlterEnumStmt *) parsetree); -
1646 - break; -
1647 - -
1648 - case T_ViewStmt: /* CREATE VIEW */ -
1649 - EventTriggerAlterTableStart(parsetree); -
1650 - address = DefineView((ViewStmt *) parsetree, queryString, -
1651 - pstmt->stmt_location, pstmt->stmt_len); -
1652 - EventTriggerCollectSimpleCommand(address, secondaryObject, -
1653 - parsetree); -
1654 - /* stashed internally */ -
1655 - commandCollected = true; -
1656 - EventTriggerAlterTableEnd(); -
1657 - break; -
1658 - -
1659 - case T_CreateFunctionStmt: /* CREATE FUNCTION */ -
1660 - address = CreateFunction(pstate, (CreateFunctionStmt *) parsetree); -
1661 - break; -
1662 - -
1663 - case T_AlterFunctionStmt: /* ALTER FUNCTION */ -
1664 - address = AlterFunction(pstate, (AlterFunctionStmt *) parsetree); -
1665 - break; -
1666 - -
1667 - case T_RuleStmt: /* CREATE RULE */ -
1668 - address = DefineRule((RuleStmt *) parsetree, queryString); -
1669 - break; -
1670 - -
1671 - case T_CreateSeqStmt: -
1672 - address = DefineSequence(pstate, (CreateSeqStmt *) parsetree); -
1673 - break; -
1674 - -
1675 - case T_AlterSeqStmt: -
1676 - address = AlterSequence(pstate, (AlterSeqStmt *) parsetree); -
1677 - break; -
1678 - -
1679 - case T_CreateTableAsStmt: -
1680 - address = ExecCreateTableAs(pstate, (CreateTableAsStmt *) parsetree, -
1681 - params, queryEnv, qc); -
1682 - break; -
1683 - -
1684 - case T_RefreshMatViewStmt: -
1685 - -
1686 - /* -
1687 - * REFRESH CONCURRENTLY executes some DDL commands internally. -
1688 - * Inhibit DDL command collection here to avoid those commands -
1689 - * from showing up in the deparsed command queue. The refresh -
1690 - * command itself is queued, which is enough. -
1691 - */ -
1692 - EventTriggerInhibitCommandCollection(); -
1693 - PG_TRY(2); -
1694 - { -
1695 - address = ExecRefreshMatView((RefreshMatViewStmt *) parsetree, -
1696 - queryString, qc); -
1697 - } -
1698 - PG_FINALLY(2); -
1699 - { -
1700 - EventTriggerUndoInhibitCommandCollection(); -
1701 - } -
1702 - PG_END_TRY(2); -
1703 - break; -
1704 - -
1705 - case T_CreateTrigStmt: -
1706 - address = CreateTrigger((CreateTrigStmt *) parsetree, -
1707 - queryString, InvalidOid, InvalidOid, -
1708 - InvalidOid, InvalidOid, InvalidOid, -
1709 - InvalidOid, NULL, false, false); -
1710 - break; -
1711 - -
1712 - case T_CreatePLangStmt: -
1713 - address = CreateProceduralLanguage((CreatePLangStmt *) parsetree); -
1714 - break; -
1715 - -
1716 - case T_CreateDomainStmt: -
1717 - address = DefineDomain(pstate, (CreateDomainStmt *) parsetree); -
1718 - break; -
1719 - -
1720 - case T_CreateConversionStmt: -
1721 - address = CreateConversionCommand((CreateConversionStmt *) parsetree); -
1722 - break; -
1723 - -
1724 - case T_CreateCastStmt: -
1725 - address = CreateCast((CreateCastStmt *) parsetree); -
1726 - break; -
1727 - -
1728 - case T_CreateOpClassStmt: -
1729 - DefineOpClass((CreateOpClassStmt *) parsetree); -
1730 - /* command is stashed in DefineOpClass */ -
1731 - commandCollected = true; -
1732 - break; -
1733 - -
1734 - case T_CreateOpFamilyStmt: -
1735 - address = DefineOpFamily((CreateOpFamilyStmt *) parsetree); -
1736 - -
1737 - /* -
1738 - * DefineOpFamily calls EventTriggerCollectSimpleCommand -
1739 - * directly. -
1740 - */ -
1741 - commandCollected = true; -
1742 - break; -
1743 - -
1744 138 case T_CreatePropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1745 138 address = CreatePropGraph(pstate, (CreatePropGraphStmt *) parsetree); 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1746 - break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1747 - 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1748 84 case T_AlterPropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1749 84 address = AlterPropGraph(pstate, (AlterPropGraphStmt *) parsetree); 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1750 - break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1751 - 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
1752 - case T_CreateTransformStmt: -
1753 - address = CreateTransform((CreateTransformStmt *) parsetree); -
1754 - break; -
1755 - -
1756 - case T_AlterOpFamilyStmt: -
1757 - AlterOpFamily((AlterOpFamilyStmt *) parsetree); -
1758 - /* commands are stashed in AlterOpFamily */ -
1759 - commandCollected = true; -
1760 - break; -
1761 - -
1762 - case T_AlterTSDictionaryStmt: -
1763 - address = AlterTSDictionary((AlterTSDictionaryStmt *) parsetree); -
1764 - break; -
1765 - -
1766 - case T_AlterTSConfigurationStmt: -
1767 - AlterTSConfiguration((AlterTSConfigurationStmt *) parsetree); -
1768 - -
1769 - /* -
1770 - * Commands are stashed in MakeConfigurationMapping and -
1771 - * DropConfigurationMapping, which are called from -
1772 - * AlterTSConfiguration -
1773 - */ -
1774 - commandCollected = true; -
1775 - break; -
1776 - -
1777 - case T_AlterTableMoveAllStmt: -
1778 - AlterTableMoveAll((AlterTableMoveAllStmt *) parsetree); -
1779 - /* commands are stashed in AlterTableMoveAll */ -
1780 - commandCollected = true; -
1781 - break; -
1782 - -
1783 - case T_DropStmt: -
1784 - ExecDropStmt((DropStmt *) parsetree, isTopLevel); -
1785 - /* no commands stashed for DROP */ -
1786 - commandCollected = true; -
1787 - break; -
1788 - -
1789 - case T_RenameStmt: -
1790 - address = ExecRenameStmt((RenameStmt *) parsetree); -
1791 - break; -
1792 - -
1793 - case T_AlterObjectDependsStmt: -
1794 - address = -
1795 - ExecAlterObjectDependsStmt((AlterObjectDependsStmt *) parsetree, -
1796 - &secondaryObject); -
1797 - break; -
1798 - -
1799 - case T_AlterObjectSchemaStmt: -
1800 - address = -
1801 - ExecAlterObjectSchemaStmt((AlterObjectSchemaStmt *) parsetree, -
1802 - &secondaryObject); -
1803 - break; -
1804 - -
1805 - case T_AlterOwnerStmt: -
1806 - address = ExecAlterOwnerStmt((AlterOwnerStmt *) parsetree); -
1807 - break; -
1808 - -
1809 - case T_AlterOperatorStmt: -
1810 - address = AlterOperator((AlterOperatorStmt *) parsetree); -
1811 - break; -
1812 - -
1813 - case T_AlterTypeStmt: -
1814 - address = AlterType((AlterTypeStmt *) parsetree); -
1815 - break; -
1816 - -
1817 - case T_CommentStmt: -
1818 - address = CommentObject((CommentStmt *) parsetree); -
1819 - break; -
1820 - -
1821 - case T_GrantStmt: -
1822 - ExecuteGrantStmt((GrantStmt *) parsetree); -
1823 - /* commands are stashed in ExecGrantStmt_oids */ -
1824 - commandCollected = true; -
1825 - break; -
1826 - -
1827 - case T_DropOwnedStmt: -
1828 - DropOwnedObjects((DropOwnedStmt *) parsetree); -
1829 - /* no commands stashed for DROP */ -
1830 - commandCollected = true; -
1831 - break; -
1832 - -
1833 - case T_AlterDefaultPrivilegesStmt: -
1834 - ExecAlterDefaultPrivilegesStmt(pstate, (AlterDefaultPrivilegesStmt *) parsetree); -
1835 - EventTriggerCollectAlterDefPrivs((AlterDefaultPrivilegesStmt *) parsetree); -
1836 - commandCollected = true; -
1837 - break; -
1838 - -
1839 - case T_CreatePolicyStmt: /* CREATE POLICY */ -
1840 - address = CreatePolicy((CreatePolicyStmt *) parsetree); -
1841 - break; -
1842 - -
1843 - case T_AlterPolicyStmt: /* ALTER POLICY */ -
1844 - address = AlterPolicy((AlterPolicyStmt *) parsetree); -
1845 - break; -
1846 - -
1847 - case T_SecLabelStmt: -
1848 - address = ExecSecLabelStmt((SecLabelStmt *) parsetree); -
1849 - break; -
1850 - -
1851 - case T_CreateAmStmt: -
1852 - address = CreateAccessMethod((CreateAmStmt *) parsetree); -
1853 - break; -
1854 - -
1855 - case T_CreatePublicationStmt: -
1856 - address = CreatePublication(pstate, (CreatePublicationStmt *) parsetree); -
1857 - break; -
1858 - -
1859 - case T_AlterPublicationStmt: -
1860 - AlterPublication(pstate, (AlterPublicationStmt *) parsetree); -
1861 - -
1862 - /* -
1863 - * AlterPublication calls EventTriggerCollectSimpleCommand -
1864 - * directly -
1865 - */ -
1866 - commandCollected = true; -
1867 - break; -
1868 - -
1869 - case T_CreateSubscriptionStmt: -
1870 - address = CreateSubscription(pstate, -
1871 - (CreateSubscriptionStmt *) parsetree, -
1872 - isTopLevel); -
1873 - break; -
1874 - -
1875 - case T_AlterSubscriptionStmt: -
1876 - address = AlterSubscription(pstate, -
1877 - (AlterSubscriptionStmt *) parsetree, -
1878 - isTopLevel); -
1879 - break; -
1880 - -
1881 - case T_DropSubscriptionStmt: -
1882 - DropSubscription((DropSubscriptionStmt *) parsetree, isTopLevel); -
1883 - /* no commands stashed for DROP */ -
1884 - commandCollected = true; -
1885 - break; -
1886 - -
1887 - case T_CreateStatsStmt: -
1888 - { -
1889 - Oid relid; -
1890 - CreateStatsStmt *stmt = (CreateStatsStmt *) parsetree; -
1891 - RangeVar *rel = (RangeVar *) linitial(stmt->relations); -
1892 - -
1893 - if (!IsA(rel, RangeVar)) -
1894 - ereport(ERROR, -
1895 - (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), -
1896 - errmsg("CREATE STATISTICS only supports relation names in the FROM clause"))); -
1897 - -
1898 - /* -
1899 - * CREATE STATISTICS will influence future execution plans -
1900 - * but does not interfere with currently executing plans. -
1901 - * So it should be enough to take ShareUpdateExclusiveLock -
1902 - * on relation, conflicting with ANALYZE and other DDL -
1903 - * that sets statistical information, but not with normal -
1904 - * queries. -
1905 - * -
1906 - * XXX RangeVarCallbackOwnsRelation not needed here, to -
1907 - * keep the same behavior as before. -
1908 - */ -
1909 - relid = RangeVarGetRelid(rel, ShareUpdateExclusiveLock, false); -
1910 - -
1911 - /* Run parse analysis ... */ -
1912 - stmt = transformStatsStmt(relid, stmt, queryString); -
1913 - -
1914 - address = CreateStatistics(stmt, true); -
1915 - } -
1916 - break; -
1917 - -
1918 - case T_AlterStatsStmt: -
1919 - address = AlterStatistics((AlterStatsStmt *) parsetree); -
1920 - break; -
1921 - -
1922 - case T_AlterCollationStmt: -
1923 - address = AlterCollation((AlterCollationStmt *) parsetree); -
1924 - break; -
1925 - -
1926 - default: -
1927 - elog(ERROR, "unrecognized node type: %d", -
1928 - (int) nodeTag(parsetree)); -
1929 - break; -
1930 - } -
1931 - -
1932 - /* -
1933 - * Remember the object so that ddl_command_end event triggers have -
1934 - * access to it. -
1935 - */ -
1936 - if (!commandCollected) -
1937 - EventTriggerCollectSimpleCommand(address, secondaryObject, -
1938 - parsetree); -
1939 - -
1940 - if (isCompleteQuery) -
1941 - { -
1942 - EventTriggerSQLDrop(parsetree); -
1943 - EventTriggerDDLCommandEnd(parsetree); -
1944 - } -
1945 - } -
1946 - PG_FINALLY(); -
1947 - { -
1948 - if (needCleanup) -
1949 - EventTriggerEndCompleteQuery(); -
1950 - } -
1951 - PG_END_TRY(); -
1952 - } -
ExecDropStmt() lines 2006-2028
Modified Lines Coverage: 0/0 lines (0.0%)
LineHitsSourceCommit
2006 - ExecDropStmt(DropStmt *stmt, bool isTopLevel) -
2007 - { -
2008 - switch (stmt->removeType) -
2009 - { -
2010 - case OBJECT_INDEX: -
2011 - if (stmt->concurrent) -
2012 - PreventInTransactionBlock(isTopLevel, -
2013 - "DROP INDEX CONCURRENTLY"); -
2014 - /* fall through */ -
2015 - -
2016 - case OBJECT_TABLE: -
2017 - case OBJECT_SEQUENCE: -
2018 - case OBJECT_VIEW: -
2019 - case OBJECT_MATVIEW: -
2020 - case OBJECT_FOREIGN_TABLE: -
2021 - case OBJECT_PROPGRAPH: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2022 - RemoveRelations(stmt); -
2023 - break; -
2024 - default: -
2025 - RemoveObjects(stmt); -
2026 - break; -
2027 - } -
2028 - } -
AlterObjectTypeCommandTag() lines 2234-2371
Modified Lines Coverage: 3/3 lines (100.0%)
LineHitsSourceCommit
2234 - AlterObjectTypeCommandTag(ObjectType objtype) -
2235 - { -
2236 - CommandTag tag; -
2237 - -
2238 - switch (objtype) -
2239 - { -
2240 - case OBJECT_AGGREGATE: -
2241 - tag = CMDTAG_ALTER_AGGREGATE; -
2242 - break; -
2243 - case OBJECT_ATTRIBUTE: -
2244 - tag = CMDTAG_ALTER_TYPE; -
2245 - break; -
2246 - case OBJECT_CAST: -
2247 - tag = CMDTAG_ALTER_CAST; -
2248 - break; -
2249 - case OBJECT_COLLATION: -
2250 - tag = CMDTAG_ALTER_COLLATION; -
2251 - break; -
2252 - case OBJECT_COLUMN: -
2253 - tag = CMDTAG_ALTER_TABLE; -
2254 - break; -
2255 - case OBJECT_CONVERSION: -
2256 - tag = CMDTAG_ALTER_CONVERSION; -
2257 - break; -
2258 - case OBJECT_DATABASE: -
2259 - tag = CMDTAG_ALTER_DATABASE; -
2260 - break; -
2261 - case OBJECT_DOMAIN: -
2262 - case OBJECT_DOMCONSTRAINT: -
2263 - tag = CMDTAG_ALTER_DOMAIN; -
2264 - break; -
2265 - case OBJECT_EXTENSION: -
2266 - tag = CMDTAG_ALTER_EXTENSION; -
2267 - break; -
2268 - case OBJECT_FDW: -
2269 - tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER; -
2270 - break; -
2271 - case OBJECT_FOREIGN_SERVER: -
2272 - tag = CMDTAG_ALTER_SERVER; -
2273 - break; -
2274 - case OBJECT_FOREIGN_TABLE: -
2275 - tag = CMDTAG_ALTER_FOREIGN_TABLE; -
2276 - break; -
2277 - case OBJECT_FUNCTION: -
2278 - tag = CMDTAG_ALTER_FUNCTION; -
2279 - break; -
2280 - case OBJECT_INDEX: -
2281 - tag = CMDTAG_ALTER_INDEX; -
2282 - break; -
2283 - case OBJECT_LANGUAGE: -
2284 - tag = CMDTAG_ALTER_LANGUAGE; -
2285 - break; -
2286 - case OBJECT_LARGEOBJECT: -
2287 - tag = CMDTAG_ALTER_LARGE_OBJECT; -
2288 - break; -
2289 - case OBJECT_OPCLASS: -
2290 - tag = CMDTAG_ALTER_OPERATOR_CLASS; -
2291 - break; -
2292 - case OBJECT_OPERATOR: -
2293 - tag = CMDTAG_ALTER_OPERATOR; -
2294 - break; -
2295 - case OBJECT_OPFAMILY: -
2296 - tag = CMDTAG_ALTER_OPERATOR_FAMILY; -
2297 - break; -
2298 - case OBJECT_POLICY: -
2299 - tag = CMDTAG_ALTER_POLICY; -
2300 - break; -
2301 - case OBJECT_PROCEDURE: -
2302 - tag = CMDTAG_ALTER_PROCEDURE; -
2303 - break; -
2304 52 case OBJECT_PROPGRAPH: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2305 52 tag = CMDTAG_ALTER_PROPERTY_GRAPH; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2306 52 break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2307 - case OBJECT_ROLE: -
2308 - tag = CMDTAG_ALTER_ROLE; -
2309 - break; -
2310 - case OBJECT_ROUTINE: -
2311 - tag = CMDTAG_ALTER_ROUTINE; -
2312 - break; -
2313 - case OBJECT_RULE: -
2314 - tag = CMDTAG_ALTER_RULE; -
2315 - break; -
2316 - case OBJECT_SCHEMA: -
2317 - tag = CMDTAG_ALTER_SCHEMA; -
2318 - break; -
2319 - case OBJECT_SEQUENCE: -
2320 - tag = CMDTAG_ALTER_SEQUENCE; -
2321 - break; -
2322 - case OBJECT_TABLE: -
2323 - case OBJECT_TABCONSTRAINT: -
2324 - tag = CMDTAG_ALTER_TABLE; -
2325 - break; -
2326 - case OBJECT_TABLESPACE: -
2327 - tag = CMDTAG_ALTER_TABLESPACE; -
2328 - break; -
2329 - case OBJECT_TRIGGER: -
2330 - tag = CMDTAG_ALTER_TRIGGER; -
2331 - break; -
2332 - case OBJECT_EVENT_TRIGGER: -
2333 - tag = CMDTAG_ALTER_EVENT_TRIGGER; -
2334 - break; -
2335 - case OBJECT_TSCONFIGURATION: -
2336 - tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION; -
2337 - break; -
2338 - case OBJECT_TSDICTIONARY: -
2339 - tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY; -
2340 - break; -
2341 - case OBJECT_TSPARSER: -
2342 - tag = CMDTAG_ALTER_TEXT_SEARCH_PARSER; -
2343 - break; -
2344 - case OBJECT_TSTEMPLATE: -
2345 - tag = CMDTAG_ALTER_TEXT_SEARCH_TEMPLATE; -
2346 - break; -
2347 - case OBJECT_TYPE: -
2348 - tag = CMDTAG_ALTER_TYPE; -
2349 - break; -
2350 - case OBJECT_VIEW: -
2351 - tag = CMDTAG_ALTER_VIEW; -
2352 - break; -
2353 - case OBJECT_MATVIEW: -
2354 - tag = CMDTAG_ALTER_MATERIALIZED_VIEW; -
2355 - break; -
2356 - case OBJECT_PUBLICATION: -
2357 - tag = CMDTAG_ALTER_PUBLICATION; -
2358 - break; -
2359 - case OBJECT_SUBSCRIPTION: -
2360 - tag = CMDTAG_ALTER_SUBSCRIPTION; -
2361 - break; -
2362 - case OBJECT_STATISTIC_EXT: -
2363 - tag = CMDTAG_ALTER_STATISTICS; -
2364 - break; -
2365 - default: -
2366 - tag = CMDTAG_UNKNOWN; -
2367 - break; -
2368 - } -
2369 - -
2370 - return tag; -
2371 - } -
CreateCommandTag() lines 2383-3272
Modified Lines Coverage: 9/9 lines (100.0%)
LineHitsSourceCommit
2383 - CreateCommandTag(Node *parsetree) -
2384 - { -
2385 - CommandTag tag; -
2386 - -
2387 - switch (nodeTag(parsetree)) -
2388 - { -
2389 - /* recurse if we're given a RawStmt */ -
2390 - case T_RawStmt: -
2391 - tag = CreateCommandTag(((RawStmt *) parsetree)->stmt); -
2392 - break; -
2393 - -
2394 - /* raw plannable queries */ -
2395 - case T_InsertStmt: -
2396 - tag = CMDTAG_INSERT; -
2397 - break; -
2398 - -
2399 - case T_DeleteStmt: -
2400 - tag = CMDTAG_DELETE; -
2401 - break; -
2402 - -
2403 - case T_UpdateStmt: -
2404 - tag = CMDTAG_UPDATE; -
2405 - break; -
2406 - -
2407 - case T_MergeStmt: -
2408 - tag = CMDTAG_MERGE; -
2409 - break; -
2410 - -
2411 - case T_SelectStmt: -
2412 - tag = CMDTAG_SELECT; -
2413 - break; -
2414 - -
2415 - case T_PLAssignStmt: -
2416 - tag = CMDTAG_SELECT; -
2417 - break; -
2418 - -
2419 - /* utility statements --- same whether raw or cooked */ -
2420 - case T_TransactionStmt: -
2421 - { -
2422 - TransactionStmt *stmt = (TransactionStmt *) parsetree; -
2423 - -
2424 - switch (stmt->kind) -
2425 - { -
2426 - case TRANS_STMT_BEGIN: -
2427 - tag = CMDTAG_BEGIN; -
2428 - break; -
2429 - -
2430 - case TRANS_STMT_START: -
2431 - tag = CMDTAG_START_TRANSACTION; -
2432 - break; -
2433 - -
2434 - case TRANS_STMT_COMMIT: -
2435 - tag = CMDTAG_COMMIT; -
2436 - break; -
2437 - -
2438 - case TRANS_STMT_ROLLBACK: -
2439 - case TRANS_STMT_ROLLBACK_TO: -
2440 - tag = CMDTAG_ROLLBACK; -
2441 - break; -
2442 - -
2443 - case TRANS_STMT_SAVEPOINT: -
2444 - tag = CMDTAG_SAVEPOINT; -
2445 - break; -
2446 - -
2447 - case TRANS_STMT_RELEASE: -
2448 - tag = CMDTAG_RELEASE; -
2449 - break; -
2450 - -
2451 - case TRANS_STMT_PREPARE: -
2452 - tag = CMDTAG_PREPARE_TRANSACTION; -
2453 - break; -
2454 - -
2455 - case TRANS_STMT_COMMIT_PREPARED: -
2456 - tag = CMDTAG_COMMIT_PREPARED; -
2457 - break; -
2458 - -
2459 - case TRANS_STMT_ROLLBACK_PREPARED: -
2460 - tag = CMDTAG_ROLLBACK_PREPARED; -
2461 - break; -
2462 - -
2463 - default: -
2464 - tag = CMDTAG_UNKNOWN; -
2465 - break; -
2466 - } -
2467 - } -
2468 - break; -
2469 - -
2470 - case T_DeclareCursorStmt: -
2471 - tag = CMDTAG_DECLARE_CURSOR; -
2472 - break; -
2473 - -
2474 - case T_ClosePortalStmt: -
2475 - { -
2476 - ClosePortalStmt *stmt = (ClosePortalStmt *) parsetree; -
2477 - -
2478 - if (stmt->portalname == NULL) -
2479 - tag = CMDTAG_CLOSE_CURSOR_ALL; -
2480 - else -
2481 - tag = CMDTAG_CLOSE_CURSOR; -
2482 - } -
2483 - break; -
2484 - -
2485 - case T_FetchStmt: -
2486 - { -
2487 - FetchStmt *stmt = (FetchStmt *) parsetree; -
2488 - -
2489 - tag = (stmt->ismove) ? CMDTAG_MOVE : CMDTAG_FETCH; -
2490 - } -
2491 - break; -
2492 - -
2493 - case T_CreateDomainStmt: -
2494 - tag = CMDTAG_CREATE_DOMAIN; -
2495 - break; -
2496 - -
2497 - case T_CreateSchemaStmt: -
2498 - tag = CMDTAG_CREATE_SCHEMA; -
2499 - break; -
2500 - -
2501 - case T_CreateStmt: -
2502 - tag = CMDTAG_CREATE_TABLE; -
2503 - break; -
2504 - -
2505 - case T_CreateTableSpaceStmt: -
2506 - tag = CMDTAG_CREATE_TABLESPACE; -
2507 - break; -
2508 - -
2509 - case T_DropTableSpaceStmt: -
2510 - tag = CMDTAG_DROP_TABLESPACE; -
2511 - break; -
2512 - -
2513 - case T_AlterTableSpaceOptionsStmt: -
2514 - tag = CMDTAG_ALTER_TABLESPACE; -
2515 - break; -
2516 - -
2517 - case T_CreateExtensionStmt: -
2518 - tag = CMDTAG_CREATE_EXTENSION; -
2519 - break; -
2520 - -
2521 - case T_AlterExtensionStmt: -
2522 - tag = CMDTAG_ALTER_EXTENSION; -
2523 - break; -
2524 - -
2525 - case T_AlterExtensionContentsStmt: -
2526 - tag = CMDTAG_ALTER_EXTENSION; -
2527 - break; -
2528 - -
2529 - case T_CreateFdwStmt: -
2530 - tag = CMDTAG_CREATE_FOREIGN_DATA_WRAPPER; -
2531 - break; -
2532 - -
2533 - case T_AlterFdwStmt: -
2534 - tag = CMDTAG_ALTER_FOREIGN_DATA_WRAPPER; -
2535 - break; -
2536 - -
2537 - case T_CreateForeignServerStmt: -
2538 - tag = CMDTAG_CREATE_SERVER; -
2539 - break; -
2540 - -
2541 - case T_AlterForeignServerStmt: -
2542 - tag = CMDTAG_ALTER_SERVER; -
2543 - break; -
2544 - -
2545 - case T_CreateUserMappingStmt: -
2546 - tag = CMDTAG_CREATE_USER_MAPPING; -
2547 - break; -
2548 - -
2549 - case T_AlterUserMappingStmt: -
2550 - tag = CMDTAG_ALTER_USER_MAPPING; -
2551 - break; -
2552 - -
2553 - case T_DropUserMappingStmt: -
2554 - tag = CMDTAG_DROP_USER_MAPPING; -
2555 - break; -
2556 - -
2557 - case T_CreateForeignTableStmt: -
2558 - tag = CMDTAG_CREATE_FOREIGN_TABLE; -
2559 - break; -
2560 - -
2561 - case T_ImportForeignSchemaStmt: -
2562 - tag = CMDTAG_IMPORT_FOREIGN_SCHEMA; -
2563 - break; -
2564 - -
2565 - case T_DropStmt: -
2566 - switch (((DropStmt *) parsetree)->removeType) -
2567 - { -
2568 - case OBJECT_TABLE: -
2569 - tag = CMDTAG_DROP_TABLE; -
2570 - break; -
2571 - case OBJECT_SEQUENCE: -
2572 - tag = CMDTAG_DROP_SEQUENCE; -
2573 - break; -
2574 - case OBJECT_VIEW: -
2575 - tag = CMDTAG_DROP_VIEW; -
2576 - break; -
2577 - case OBJECT_MATVIEW: -
2578 - tag = CMDTAG_DROP_MATERIALIZED_VIEW; -
2579 - break; -
2580 - case OBJECT_INDEX: -
2581 - tag = CMDTAG_DROP_INDEX; -
2582 - break; -
2583 24 case OBJECT_PROPGRAPH: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2584 24 tag = CMDTAG_DROP_PROPERTY_GRAPH; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2585 24 break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2586 - case OBJECT_TYPE: -
2587 - tag = CMDTAG_DROP_TYPE; -
2588 - break; -
2589 - case OBJECT_DOMAIN: -
2590 - tag = CMDTAG_DROP_DOMAIN; -
2591 - break; -
2592 - case OBJECT_COLLATION: -
2593 - tag = CMDTAG_DROP_COLLATION; -
2594 - break; -
2595 - case OBJECT_CONVERSION: -
2596 - tag = CMDTAG_DROP_CONVERSION; -
2597 - break; -
2598 - case OBJECT_SCHEMA: -
2599 - tag = CMDTAG_DROP_SCHEMA; -
2600 - break; -
2601 - case OBJECT_TSPARSER: -
2602 - tag = CMDTAG_DROP_TEXT_SEARCH_PARSER; -
2603 - break; -
2604 - case OBJECT_TSDICTIONARY: -
2605 - tag = CMDTAG_DROP_TEXT_SEARCH_DICTIONARY; -
2606 - break; -
2607 - case OBJECT_TSTEMPLATE: -
2608 - tag = CMDTAG_DROP_TEXT_SEARCH_TEMPLATE; -
2609 - break; -
2610 - case OBJECT_TSCONFIGURATION: -
2611 - tag = CMDTAG_DROP_TEXT_SEARCH_CONFIGURATION; -
2612 - break; -
2613 - case OBJECT_FOREIGN_TABLE: -
2614 - tag = CMDTAG_DROP_FOREIGN_TABLE; -
2615 - break; -
2616 - case OBJECT_EXTENSION: -
2617 - tag = CMDTAG_DROP_EXTENSION; -
2618 - break; -
2619 - case OBJECT_FUNCTION: -
2620 - tag = CMDTAG_DROP_FUNCTION; -
2621 - break; -
2622 - case OBJECT_PROCEDURE: -
2623 - tag = CMDTAG_DROP_PROCEDURE; -
2624 - break; -
2625 - case OBJECT_ROUTINE: -
2626 - tag = CMDTAG_DROP_ROUTINE; -
2627 - break; -
2628 - case OBJECT_AGGREGATE: -
2629 - tag = CMDTAG_DROP_AGGREGATE; -
2630 - break; -
2631 - case OBJECT_OPERATOR: -
2632 - tag = CMDTAG_DROP_OPERATOR; -
2633 - break; -
2634 - case OBJECT_LANGUAGE: -
2635 - tag = CMDTAG_DROP_LANGUAGE; -
2636 - break; -
2637 - case OBJECT_CAST: -
2638 - tag = CMDTAG_DROP_CAST; -
2639 - break; -
2640 - case OBJECT_TRIGGER: -
2641 - tag = CMDTAG_DROP_TRIGGER; -
2642 - break; -
2643 - case OBJECT_EVENT_TRIGGER: -
2644 - tag = CMDTAG_DROP_EVENT_TRIGGER; -
2645 - break; -
2646 - case OBJECT_RULE: -
2647 - tag = CMDTAG_DROP_RULE; -
2648 - break; -
2649 - case OBJECT_FDW: -
2650 - tag = CMDTAG_DROP_FOREIGN_DATA_WRAPPER; -
2651 - break; -
2652 - case OBJECT_FOREIGN_SERVER: -
2653 - tag = CMDTAG_DROP_SERVER; -
2654 - break; -
2655 - case OBJECT_OPCLASS: -
2656 - tag = CMDTAG_DROP_OPERATOR_CLASS; -
2657 - break; -
2658 - case OBJECT_OPFAMILY: -
2659 - tag = CMDTAG_DROP_OPERATOR_FAMILY; -
2660 - break; -
2661 - case OBJECT_POLICY: -
2662 - tag = CMDTAG_DROP_POLICY; -
2663 - break; -
2664 - case OBJECT_TRANSFORM: -
2665 - tag = CMDTAG_DROP_TRANSFORM; -
2666 - break; -
2667 - case OBJECT_ACCESS_METHOD: -
2668 - tag = CMDTAG_DROP_ACCESS_METHOD; -
2669 - break; -
2670 - case OBJECT_PUBLICATION: -
2671 - tag = CMDTAG_DROP_PUBLICATION; -
2672 - break; -
2673 - case OBJECT_STATISTIC_EXT: -
2674 - tag = CMDTAG_DROP_STATISTICS; -
2675 - break; -
2676 - default: -
2677 - tag = CMDTAG_UNKNOWN; -
2678 - } -
2679 - break; -
2680 - -
2681 - case T_TruncateStmt: -
2682 - tag = CMDTAG_TRUNCATE_TABLE; -
2683 - break; -
2684 - -
2685 - case T_CommentStmt: -
2686 - tag = CMDTAG_COMMENT; -
2687 - break; -
2688 - -
2689 - case T_SecLabelStmt: -
2690 - tag = CMDTAG_SECURITY_LABEL; -
2691 - break; -
2692 - -
2693 - case T_CopyStmt: -
2694 - tag = CMDTAG_COPY; -
2695 - break; -
2696 - -
2697 - case T_RenameStmt: -
2698 - -
2699 - /* -
2700 - * When the column is renamed, the command tag is created from its -
2701 - * relation type -
2702 - */ -
2703 - tag = AlterObjectTypeCommandTag(((RenameStmt *) parsetree)->renameType == OBJECT_COLUMN ? -
2704 - ((RenameStmt *) parsetree)->relationType : -
2705 - ((RenameStmt *) parsetree)->renameType); -
2706 - break; -
2707 - -
2708 - case T_AlterObjectDependsStmt: -
2709 - tag = AlterObjectTypeCommandTag(((AlterObjectDependsStmt *) parsetree)->objectType); -
2710 - break; -
2711 - -
2712 - case T_AlterObjectSchemaStmt: -
2713 - tag = AlterObjectTypeCommandTag(((AlterObjectSchemaStmt *) parsetree)->objectType); -
2714 - break; -
2715 - -
2716 - case T_AlterOwnerStmt: -
2717 - tag = AlterObjectTypeCommandTag(((AlterOwnerStmt *) parsetree)->objectType); -
2718 - break; -
2719 - -
2720 - case T_AlterTableMoveAllStmt: -
2721 - tag = AlterObjectTypeCommandTag(((AlterTableMoveAllStmt *) parsetree)->objtype); -
2722 - break; -
2723 - -
2724 - case T_AlterTableStmt: -
2725 - tag = AlterObjectTypeCommandTag(((AlterTableStmt *) parsetree)->objtype); -
2726 - break; -
2727 - -
2728 - case T_AlterDomainStmt: -
2729 - tag = CMDTAG_ALTER_DOMAIN; -
2730 - break; -
2731 - -
2732 - case T_AlterFunctionStmt: -
2733 - switch (((AlterFunctionStmt *) parsetree)->objtype) -
2734 - { -
2735 - case OBJECT_FUNCTION: -
2736 - tag = CMDTAG_ALTER_FUNCTION; -
2737 - break; -
2738 - case OBJECT_PROCEDURE: -
2739 - tag = CMDTAG_ALTER_PROCEDURE; -
2740 - break; -
2741 - case OBJECT_ROUTINE: -
2742 - tag = CMDTAG_ALTER_ROUTINE; -
2743 - break; -
2744 - default: -
2745 - tag = CMDTAG_UNKNOWN; -
2746 - } -
2747 - break; -
2748 - -
2749 - case T_GrantStmt: -
2750 - { -
2751 - GrantStmt *stmt = (GrantStmt *) parsetree; -
2752 - -
2753 - tag = (stmt->is_grant) ? CMDTAG_GRANT : CMDTAG_REVOKE; -
2754 - } -
2755 - break; -
2756 - -
2757 - case T_GrantRoleStmt: -
2758 - { -
2759 - GrantRoleStmt *stmt = (GrantRoleStmt *) parsetree; -
2760 - -
2761 - tag = (stmt->is_grant) ? CMDTAG_GRANT_ROLE : CMDTAG_REVOKE_ROLE; -
2762 - } -
2763 - break; -
2764 - -
2765 - case T_AlterDefaultPrivilegesStmt: -
2766 - tag = CMDTAG_ALTER_DEFAULT_PRIVILEGES; -
2767 - break; -
2768 - -
2769 - case T_DefineStmt: -
2770 - switch (((DefineStmt *) parsetree)->kind) -
2771 - { -
2772 - case OBJECT_AGGREGATE: -
2773 - tag = CMDTAG_CREATE_AGGREGATE; -
2774 - break; -
2775 - case OBJECT_OPERATOR: -
2776 - tag = CMDTAG_CREATE_OPERATOR; -
2777 - break; -
2778 - case OBJECT_TYPE: -
2779 - tag = CMDTAG_CREATE_TYPE; -
2780 - break; -
2781 - case OBJECT_TSPARSER: -
2782 - tag = CMDTAG_CREATE_TEXT_SEARCH_PARSER; -
2783 - break; -
2784 - case OBJECT_TSDICTIONARY: -
2785 - tag = CMDTAG_CREATE_TEXT_SEARCH_DICTIONARY; -
2786 - break; -
2787 - case OBJECT_TSTEMPLATE: -
2788 - tag = CMDTAG_CREATE_TEXT_SEARCH_TEMPLATE; -
2789 - break; -
2790 - case OBJECT_TSCONFIGURATION: -
2791 - tag = CMDTAG_CREATE_TEXT_SEARCH_CONFIGURATION; -
2792 - break; -
2793 - case OBJECT_COLLATION: -
2794 - tag = CMDTAG_CREATE_COLLATION; -
2795 - break; -
2796 - case OBJECT_ACCESS_METHOD: -
2797 - tag = CMDTAG_CREATE_ACCESS_METHOD; -
2798 - break; -
2799 - default: -
2800 - tag = CMDTAG_UNKNOWN; -
2801 - } -
2802 - break; -
2803 - -
2804 - case T_CompositeTypeStmt: -
2805 - tag = CMDTAG_CREATE_TYPE; -
2806 - break; -
2807 - -
2808 - case T_CreateEnumStmt: -
2809 - tag = CMDTAG_CREATE_TYPE; -
2810 - break; -
2811 - -
2812 - case T_CreateRangeStmt: -
2813 - tag = CMDTAG_CREATE_TYPE; -
2814 - break; -
2815 - -
2816 - case T_AlterEnumStmt: -
2817 - tag = CMDTAG_ALTER_TYPE; -
2818 - break; -
2819 - -
2820 - case T_ViewStmt: -
2821 - tag = CMDTAG_CREATE_VIEW; -
2822 - break; -
2823 - -
2824 - case T_CreateFunctionStmt: -
2825 - if (((CreateFunctionStmt *) parsetree)->is_procedure) -
2826 - tag = CMDTAG_CREATE_PROCEDURE; -
2827 - else -
2828 - tag = CMDTAG_CREATE_FUNCTION; -
2829 - break; -
2830 - -
2831 - case T_IndexStmt: -
2832 - tag = CMDTAG_CREATE_INDEX; -
2833 - break; -
2834 - -
2835 - case T_RuleStmt: -
2836 - tag = CMDTAG_CREATE_RULE; -
2837 - break; -
2838 - -
2839 - case T_CreateSeqStmt: -
2840 - tag = CMDTAG_CREATE_SEQUENCE; -
2841 - break; -
2842 - -
2843 - case T_AlterSeqStmt: -
2844 - tag = CMDTAG_ALTER_SEQUENCE; -
2845 - break; -
2846 - -
2847 - case T_DoStmt: -
2848 - tag = CMDTAG_DO; -
2849 - break; -
2850 - -
2851 - case T_CreatedbStmt: -
2852 - tag = CMDTAG_CREATE_DATABASE; -
2853 - break; -
2854 - -
2855 - case T_AlterDatabaseStmt: -
2856 - case T_AlterDatabaseRefreshCollStmt: -
2857 - case T_AlterDatabaseSetStmt: -
2858 - tag = CMDTAG_ALTER_DATABASE; -
2859 - break; -
2860 - -
2861 - case T_DropdbStmt: -
2862 - tag = CMDTAG_DROP_DATABASE; -
2863 - break; -
2864 - -
2865 - case T_NotifyStmt: -
2866 - tag = CMDTAG_NOTIFY; -
2867 - break; -
2868 - -
2869 - case T_ListenStmt: -
2870 - tag = CMDTAG_LISTEN; -
2871 - break; -
2872 - -
2873 - case T_UnlistenStmt: -
2874 - tag = CMDTAG_UNLISTEN; -
2875 - break; -
2876 - -
2877 - case T_LoadStmt: -
2878 - tag = CMDTAG_LOAD; -
2879 - break; -
2880 - -
2881 - case T_CallStmt: -
2882 - tag = CMDTAG_CALL; -
2883 - break; -
2884 - -
2885 - case T_ClusterStmt: -
2886 - tag = CMDTAG_CLUSTER; -
2887 - break; -
2888 - -
2889 - case T_VacuumStmt: -
2890 - if (((VacuumStmt *) parsetree)->is_vacuumcmd) -
2891 - tag = CMDTAG_VACUUM; -
2892 - else -
2893 - tag = CMDTAG_ANALYZE; -
2894 - break; -
2895 - -
2896 - case T_ExplainStmt: -
2897 - tag = CMDTAG_EXPLAIN; -
2898 - break; -
2899 - -
2900 - case T_CreateTableAsStmt: -
2901 - switch (((CreateTableAsStmt *) parsetree)->objtype) -
2902 - { -
2903 - case OBJECT_TABLE: -
2904 - if (((CreateTableAsStmt *) parsetree)->is_select_into) -
2905 - tag = CMDTAG_SELECT_INTO; -
2906 - else -
2907 - tag = CMDTAG_CREATE_TABLE_AS; -
2908 - break; -
2909 - case OBJECT_MATVIEW: -
2910 - tag = CMDTAG_CREATE_MATERIALIZED_VIEW; -
2911 - break; -
2912 - default: -
2913 - tag = CMDTAG_UNKNOWN; -
2914 - } -
2915 - break; -
2916 - -
2917 - case T_RefreshMatViewStmt: -
2918 - tag = CMDTAG_REFRESH_MATERIALIZED_VIEW; -
2919 - break; -
2920 - -
2921 - case T_AlterSystemStmt: -
2922 - tag = CMDTAG_ALTER_SYSTEM; -
2923 - break; -
2924 - -
2925 - case T_VariableSetStmt: -
2926 - switch (((VariableSetStmt *) parsetree)->kind) -
2927 - { -
2928 - case VAR_SET_VALUE: -
2929 - case VAR_SET_CURRENT: -
2930 - case VAR_SET_DEFAULT: -
2931 - case VAR_SET_MULTI: -
2932 - tag = CMDTAG_SET; -
2933 - break; -
2934 - case VAR_RESET: -
2935 - case VAR_RESET_ALL: -
2936 - tag = CMDTAG_RESET; -
2937 - break; -
2938 - default: -
2939 - tag = CMDTAG_UNKNOWN; -
2940 - } -
2941 - break; -
2942 - -
2943 - case T_VariableShowStmt: -
2944 - tag = CMDTAG_SHOW; -
2945 - break; -
2946 - -
2947 - case T_DiscardStmt: -
2948 - switch (((DiscardStmt *) parsetree)->target) -
2949 - { -
2950 - case DISCARD_ALL: -
2951 - tag = CMDTAG_DISCARD_ALL; -
2952 - break; -
2953 - case DISCARD_PLANS: -
2954 - tag = CMDTAG_DISCARD_PLANS; -
2955 - break; -
2956 - case DISCARD_TEMP: -
2957 - tag = CMDTAG_DISCARD_TEMP; -
2958 - break; -
2959 - case DISCARD_SEQUENCES: -
2960 - tag = CMDTAG_DISCARD_SEQUENCES; -
2961 - break; -
2962 - default: -
2963 - tag = CMDTAG_UNKNOWN; -
2964 - } -
2965 - break; -
2966 - -
2967 138 case T_CreatePropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2968 138 tag = CMDTAG_CREATE_PROPERTY_GRAPH; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2969 138 break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2970 - 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2971 84 case T_AlterPropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2972 84 tag = CMDTAG_ALTER_PROPERTY_GRAPH; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2973 84 break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2974 - 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
2975 - case T_CreateTransformStmt: -
2976 - tag = CMDTAG_CREATE_TRANSFORM; -
2977 - break; -
2978 - -
2979 - case T_CreateTrigStmt: -
2980 - tag = CMDTAG_CREATE_TRIGGER; -
2981 - break; -
2982 - -
2983 - case T_CreateEventTrigStmt: -
2984 - tag = CMDTAG_CREATE_EVENT_TRIGGER; -
2985 - break; -
2986 - -
2987 - case T_AlterEventTrigStmt: -
2988 - tag = CMDTAG_ALTER_EVENT_TRIGGER; -
2989 - break; -
2990 - -
2991 - case T_CreatePLangStmt: -
2992 - tag = CMDTAG_CREATE_LANGUAGE; -
2993 - break; -
2994 - -
2995 - case T_CreateRoleStmt: -
2996 - tag = CMDTAG_CREATE_ROLE; -
2997 - break; -
2998 - -
2999 - case T_AlterRoleStmt: -
3000 - tag = CMDTAG_ALTER_ROLE; -
3001 - break; -
3002 - -
3003 - case T_AlterRoleSetStmt: -
3004 - tag = CMDTAG_ALTER_ROLE; -
3005 - break; -
3006 - -
3007 - case T_DropRoleStmt: -
3008 - tag = CMDTAG_DROP_ROLE; -
3009 - break; -
3010 - -
3011 - case T_DropOwnedStmt: -
3012 - tag = CMDTAG_DROP_OWNED; -
3013 - break; -
3014 - -
3015 - case T_ReassignOwnedStmt: -
3016 - tag = CMDTAG_REASSIGN_OWNED; -
3017 - break; -
3018 - -
3019 - case T_LockStmt: -
3020 - tag = CMDTAG_LOCK_TABLE; -
3021 - break; -
3022 - -
3023 - case T_ConstraintsSetStmt: -
3024 - tag = CMDTAG_SET_CONSTRAINTS; -
3025 - break; -
3026 - -
3027 - case T_CheckPointStmt: -
3028 - tag = CMDTAG_CHECKPOINT; -
3029 - break; -
3030 - -
3031 - case T_ReindexStmt: -
3032 - tag = CMDTAG_REINDEX; -
3033 - break; -
3034 - -
3035 - case T_CreateConversionStmt: -
3036 - tag = CMDTAG_CREATE_CONVERSION; -
3037 - break; -
3038 - -
3039 - case T_CreateCastStmt: -
3040 - tag = CMDTAG_CREATE_CAST; -
3041 - break; -
3042 - -
3043 - case T_CreateOpClassStmt: -
3044 - tag = CMDTAG_CREATE_OPERATOR_CLASS; -
3045 - break; -
3046 - -
3047 - case T_CreateOpFamilyStmt: -
3048 - tag = CMDTAG_CREATE_OPERATOR_FAMILY; -
3049 - break; -
3050 - -
3051 - case T_AlterOpFamilyStmt: -
3052 - tag = CMDTAG_ALTER_OPERATOR_FAMILY; -
3053 - break; -
3054 - -
3055 - case T_AlterOperatorStmt: -
3056 - tag = CMDTAG_ALTER_OPERATOR; -
3057 - break; -
3058 - -
3059 - case T_AlterTypeStmt: -
3060 - tag = CMDTAG_ALTER_TYPE; -
3061 - break; -
3062 - -
3063 - case T_AlterTSDictionaryStmt: -
3064 - tag = CMDTAG_ALTER_TEXT_SEARCH_DICTIONARY; -
3065 - break; -
3066 - -
3067 - case T_AlterTSConfigurationStmt: -
3068 - tag = CMDTAG_ALTER_TEXT_SEARCH_CONFIGURATION; -
3069 - break; -
3070 - -
3071 - case T_CreatePolicyStmt: -
3072 - tag = CMDTAG_CREATE_POLICY; -
3073 - break; -
3074 - -
3075 - case T_AlterPolicyStmt: -
3076 - tag = CMDTAG_ALTER_POLICY; -
3077 - break; -
3078 - -
3079 - case T_CreateAmStmt: -
3080 - tag = CMDTAG_CREATE_ACCESS_METHOD; -
3081 - break; -
3082 - -
3083 - case T_CreatePublicationStmt: -
3084 - tag = CMDTAG_CREATE_PUBLICATION; -
3085 - break; -
3086 - -
3087 - case T_AlterPublicationStmt: -
3088 - tag = CMDTAG_ALTER_PUBLICATION; -
3089 - break; -
3090 - -
3091 - case T_CreateSubscriptionStmt: -
3092 - tag = CMDTAG_CREATE_SUBSCRIPTION; -
3093 - break; -
3094 - -
3095 - case T_AlterSubscriptionStmt: -
3096 - tag = CMDTAG_ALTER_SUBSCRIPTION; -
3097 - break; -
3098 - -
3099 - case T_DropSubscriptionStmt: -
3100 - tag = CMDTAG_DROP_SUBSCRIPTION; -
3101 - break; -
3102 - -
3103 - case T_AlterCollationStmt: -
3104 - tag = CMDTAG_ALTER_COLLATION; -
3105 - break; -
3106 - -
3107 - case T_PrepareStmt: -
3108 - tag = CMDTAG_PREPARE; -
3109 - break; -
3110 - -
3111 - case T_ExecuteStmt: -
3112 - tag = CMDTAG_EXECUTE; -
3113 - break; -
3114 - -
3115 - case T_CreateStatsStmt: -
3116 - tag = CMDTAG_CREATE_STATISTICS; -
3117 - break; -
3118 - -
3119 - case T_AlterStatsStmt: -
3120 - tag = CMDTAG_ALTER_STATISTICS; -
3121 - break; -
3122 - -
3123 - case T_DeallocateStmt: -
3124 - { -
3125 - DeallocateStmt *stmt = (DeallocateStmt *) parsetree; -
3126 - -
3127 - if (stmt->name == NULL) -
3128 - tag = CMDTAG_DEALLOCATE_ALL; -
3129 - else -
3130 - tag = CMDTAG_DEALLOCATE; -
3131 - } -
3132 - break; -
3133 - -
3134 - case T_WaitStmt: -
3135 - tag = CMDTAG_WAIT; -
3136 - break; -
3137 - -
3138 - /* already-planned queries */ -
3139 - case T_PlannedStmt: -
3140 - { -
3141 - PlannedStmt *stmt = (PlannedStmt *) parsetree; -
3142 - -
3143 - switch (stmt->commandType) -
3144 - { -
3145 - case CMD_SELECT: -
3146 - -
3147 - /* -
3148 - * We take a little extra care here so that the result -
3149 - * will be useful for complaints about read-only -
3150 - * statements -
3151 - */ -
3152 - if (stmt->rowMarks != NIL) -
3153 - { -
3154 - /* not 100% but probably close enough */ -
3155 - switch (((PlanRowMark *) linitial(stmt->rowMarks))->strength) -
3156 - { -
3157 - case LCS_FORKEYSHARE: -
3158 - tag = CMDTAG_SELECT_FOR_KEY_SHARE; -
3159 - break; -
3160 - case LCS_FORSHARE: -
3161 - tag = CMDTAG_SELECT_FOR_SHARE; -
3162 - break; -
3163 - case LCS_FORNOKEYUPDATE: -
3164 - tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE; -
3165 - break; -
3166 - case LCS_FORUPDATE: -
3167 - tag = CMDTAG_SELECT_FOR_UPDATE; -
3168 - break; -
3169 - default: -
3170 - tag = CMDTAG_SELECT; -
3171 - break; -
3172 - } -
3173 - } -
3174 - else -
3175 - tag = CMDTAG_SELECT; -
3176 - break; -
3177 - case CMD_UPDATE: -
3178 - tag = CMDTAG_UPDATE; -
3179 - break; -
3180 - case CMD_INSERT: -
3181 - tag = CMDTAG_INSERT; -
3182 - break; -
3183 - case CMD_DELETE: -
3184 - tag = CMDTAG_DELETE; -
3185 - break; -
3186 - case CMD_MERGE: -
3187 - tag = CMDTAG_MERGE; -
3188 - break; -
3189 - case CMD_UTILITY: -
3190 - tag = CreateCommandTag(stmt->utilityStmt); -
3191 - break; -
3192 - default: -
3193 - elog(WARNING, "unrecognized commandType: %d", -
3194 - (int) stmt->commandType); -
3195 - tag = CMDTAG_UNKNOWN; -
3196 - break; -
3197 - } -
3198 - } -
3199 - break; -
3200 - -
3201 - /* parsed-and-rewritten-but-not-planned queries */ -
3202 - case T_Query: -
3203 - { -
3204 - Query *stmt = (Query *) parsetree; -
3205 - -
3206 - switch (stmt->commandType) -
3207 - { -
3208 - case CMD_SELECT: -
3209 - -
3210 - /* -
3211 - * We take a little extra care here so that the result -
3212 - * will be useful for complaints about read-only -
3213 - * statements -
3214 - */ -
3215 - if (stmt->rowMarks != NIL) -
3216 - { -
3217 - /* not 100% but probably close enough */ -
3218 - switch (((RowMarkClause *) linitial(stmt->rowMarks))->strength) -
3219 - { -
3220 - case LCS_FORKEYSHARE: -
3221 - tag = CMDTAG_SELECT_FOR_KEY_SHARE; -
3222 - break; -
3223 - case LCS_FORSHARE: -
3224 - tag = CMDTAG_SELECT_FOR_SHARE; -
3225 - break; -
3226 - case LCS_FORNOKEYUPDATE: -
3227 - tag = CMDTAG_SELECT_FOR_NO_KEY_UPDATE; -
3228 - break; -
3229 - case LCS_FORUPDATE: -
3230 - tag = CMDTAG_SELECT_FOR_UPDATE; -
3231 - break; -
3232 - default: -
3233 - tag = CMDTAG_UNKNOWN; -
3234 - break; -
3235 - } -
3236 - } -
3237 - else -
3238 - tag = CMDTAG_SELECT; -
3239 - break; -
3240 - case CMD_UPDATE: -
3241 - tag = CMDTAG_UPDATE; -
3242 - break; -
3243 - case CMD_INSERT: -
3244 - tag = CMDTAG_INSERT; -
3245 - break; -
3246 - case CMD_DELETE: -
3247 - tag = CMDTAG_DELETE; -
3248 - break; -
3249 - case CMD_MERGE: -
3250 - tag = CMDTAG_MERGE; -
3251 - break; -
3252 - case CMD_UTILITY: -
3253 - tag = CreateCommandTag(stmt->utilityStmt); -
3254 - break; -
3255 - default: -
3256 - elog(WARNING, "unrecognized commandType: %d", -
3257 - (int) stmt->commandType); -
3258 - tag = CMDTAG_UNKNOWN; -
3259 - break; -
3260 - } -
3261 - } -
3262 - break; -
3263 - -
3264 - default: -
3265 - elog(WARNING, "unrecognized node type: %d", -
3266 - (int) nodeTag(parsetree)); -
3267 - tag = CMDTAG_UNKNOWN; -
3268 - break; -
3269 - } -
3270 - -
3271 - return tag; -
3272 - } -
GetCommandLogLevel() lines 3285-3818
Modified Lines Coverage: 0/6 lines (0.0%)
LineHitsSourceCommit
3285 - GetCommandLogLevel(Node *parsetree) -
3286 - { -
3287 - LogStmtLevel lev; -
3288 - -
3289 - switch (nodeTag(parsetree)) -
3290 - { -
3291 - /* recurse if we're given a RawStmt */ -
3292 - case T_RawStmt: -
3293 - lev = GetCommandLogLevel(((RawStmt *) parsetree)->stmt); -
3294 - break; -
3295 - -
3296 - /* raw plannable queries */ -
3297 - case T_InsertStmt: -
3298 - case T_DeleteStmt: -
3299 - case T_UpdateStmt: -
3300 - case T_MergeStmt: -
3301 - lev = LOGSTMT_MOD; -
3302 - break; -
3303 - -
3304 - case T_SelectStmt: -
3305 - if (((SelectStmt *) parsetree)->intoClause) -
3306 - lev = LOGSTMT_DDL; /* SELECT INTO */ -
3307 - else -
3308 - lev = LOGSTMT_ALL; -
3309 - break; -
3310 - -
3311 - case T_PLAssignStmt: -
3312 - lev = LOGSTMT_ALL; -
3313 - break; -
3314 - -
3315 - /* utility statements --- same whether raw or cooked */ -
3316 - case T_TransactionStmt: -
3317 - lev = LOGSTMT_ALL; -
3318 - break; -
3319 - -
3320 - case T_DeclareCursorStmt: -
3321 - lev = LOGSTMT_ALL; -
3322 - break; -
3323 - -
3324 - case T_ClosePortalStmt: -
3325 - lev = LOGSTMT_ALL; -
3326 - break; -
3327 - -
3328 - case T_FetchStmt: -
3329 - lev = LOGSTMT_ALL; -
3330 - break; -
3331 - -
3332 - case T_CreateSchemaStmt: -
3333 - lev = LOGSTMT_DDL; -
3334 - break; -
3335 - -
3336 - case T_CreateStmt: -
3337 - case T_CreateForeignTableStmt: -
3338 - lev = LOGSTMT_DDL; -
3339 - break; -
3340 - -
3341 - case T_CreateTableSpaceStmt: -
3342 - case T_DropTableSpaceStmt: -
3343 - case T_AlterTableSpaceOptionsStmt: -
3344 - lev = LOGSTMT_DDL; -
3345 - break; -
3346 - -
3347 - case T_CreateExtensionStmt: -
3348 - case T_AlterExtensionStmt: -
3349 - case T_AlterExtensionContentsStmt: -
3350 - lev = LOGSTMT_DDL; -
3351 - break; -
3352 - -
3353 - case T_CreateFdwStmt: -
3354 - case T_AlterFdwStmt: -
3355 - case T_CreateForeignServerStmt: -
3356 - case T_AlterForeignServerStmt: -
3357 - case T_CreateUserMappingStmt: -
3358 - case T_AlterUserMappingStmt: -
3359 - case T_DropUserMappingStmt: -
3360 - case T_ImportForeignSchemaStmt: -
3361 - lev = LOGSTMT_DDL; -
3362 - break; -
3363 - -
3364 - case T_DropStmt: -
3365 - lev = LOGSTMT_DDL; -
3366 - break; -
3367 - -
3368 - case T_TruncateStmt: -
3369 - lev = LOGSTMT_MOD; -
3370 - break; -
3371 - -
3372 - case T_CommentStmt: -
3373 - lev = LOGSTMT_DDL; -
3374 - break; -
3375 - -
3376 - case T_SecLabelStmt: -
3377 - lev = LOGSTMT_DDL; -
3378 - break; -
3379 - -
3380 - case T_CopyStmt: -
3381 - if (((CopyStmt *) parsetree)->is_from) -
3382 - lev = LOGSTMT_MOD; -
3383 - else -
3384 - lev = LOGSTMT_ALL; -
3385 - break; -
3386 - -
3387 - case T_PrepareStmt: -
3388 - { -
3389 - PrepareStmt *stmt = (PrepareStmt *) parsetree; -
3390 - -
3391 - /* Look through a PREPARE to the contained stmt */ -
3392 - lev = GetCommandLogLevel(stmt->query); -
3393 - } -
3394 - break; -
3395 - -
3396 - case T_ExecuteStmt: -
3397 - { -
3398 - ExecuteStmt *stmt = (ExecuteStmt *) parsetree; -
3399 - PreparedStatement *ps; -
3400 - -
3401 - /* Look through an EXECUTE to the referenced stmt */ -
3402 - ps = FetchPreparedStatement(stmt->name, false); -
3403 - if (ps && ps->plansource->raw_parse_tree) -
3404 - lev = GetCommandLogLevel(ps->plansource->raw_parse_tree->stmt); -
3405 - else -
3406 - lev = LOGSTMT_ALL; -
3407 - } -
3408 - break; -
3409 - -
3410 - case T_DeallocateStmt: -
3411 - lev = LOGSTMT_ALL; -
3412 - break; -
3413 - -
3414 - case T_RenameStmt: -
3415 - lev = LOGSTMT_DDL; -
3416 - break; -
3417 - -
3418 - case T_AlterObjectDependsStmt: -
3419 - lev = LOGSTMT_DDL; -
3420 - break; -
3421 - -
3422 - case T_AlterObjectSchemaStmt: -
3423 - lev = LOGSTMT_DDL; -
3424 - break; -
3425 - -
3426 - case T_AlterOwnerStmt: -
3427 - lev = LOGSTMT_DDL; -
3428 - break; -
3429 - -
3430 - case T_AlterOperatorStmt: -
3431 - lev = LOGSTMT_DDL; -
3432 - break; -
3433 - -
3434 - case T_AlterTypeStmt: -
3435 - lev = LOGSTMT_DDL; -
3436 - break; -
3437 - -
3438 - case T_AlterTableMoveAllStmt: -
3439 - case T_AlterTableStmt: -
3440 - lev = LOGSTMT_DDL; -
3441 - break; -
3442 - -
3443 - case T_AlterDomainStmt: -
3444 - lev = LOGSTMT_DDL; -
3445 - break; -
3446 - -
3447 - case T_GrantStmt: -
3448 - lev = LOGSTMT_DDL; -
3449 - break; -
3450 - -
3451 - case T_GrantRoleStmt: -
3452 - lev = LOGSTMT_DDL; -
3453 - break; -
3454 - -
3455 - case T_AlterDefaultPrivilegesStmt: -
3456 - lev = LOGSTMT_DDL; -
3457 - break; -
3458 - -
3459 - case T_DefineStmt: -
3460 - lev = LOGSTMT_DDL; -
3461 - break; -
3462 - -
3463 - case T_CompositeTypeStmt: -
3464 - lev = LOGSTMT_DDL; -
3465 - break; -
3466 - -
3467 - case T_CreateEnumStmt: -
3468 - lev = LOGSTMT_DDL; -
3469 - break; -
3470 - -
3471 - case T_CreateRangeStmt: -
3472 - lev = LOGSTMT_DDL; -
3473 - break; -
3474 - -
3475 - case T_AlterEnumStmt: -
3476 - lev = LOGSTMT_DDL; -
3477 - break; -
3478 - -
3479 - case T_ViewStmt: -
3480 - lev = LOGSTMT_DDL; -
3481 - break; -
3482 - -
3483 - case T_CreateFunctionStmt: -
3484 - lev = LOGSTMT_DDL; -
3485 - break; -
3486 - -
3487 - case T_AlterFunctionStmt: -
3488 - lev = LOGSTMT_DDL; -
3489 - break; -
3490 - -
3491 - case T_IndexStmt: -
3492 - lev = LOGSTMT_DDL; -
3493 - break; -
3494 - -
3495 - case T_RuleStmt: -
3496 - lev = LOGSTMT_DDL; -
3497 - break; -
3498 - -
3499 - case T_CreateSeqStmt: -
3500 - lev = LOGSTMT_DDL; -
3501 - break; -
3502 - -
3503 - case T_AlterSeqStmt: -
3504 - lev = LOGSTMT_DDL; -
3505 - break; -
3506 - -
3507 - case T_DoStmt: -
3508 - lev = LOGSTMT_ALL; -
3509 - break; -
3510 - -
3511 - case T_CreatedbStmt: -
3512 - lev = LOGSTMT_DDL; -
3513 - break; -
3514 - -
3515 - case T_AlterDatabaseStmt: -
3516 - case T_AlterDatabaseRefreshCollStmt: -
3517 - case T_AlterDatabaseSetStmt: -
3518 - lev = LOGSTMT_DDL; -
3519 - break; -
3520 - -
3521 - case T_DropdbStmt: -
3522 - lev = LOGSTMT_DDL; -
3523 - break; -
3524 - -
3525 - case T_NotifyStmt: -
3526 - lev = LOGSTMT_ALL; -
3527 - break; -
3528 - -
3529 - case T_ListenStmt: -
3530 - lev = LOGSTMT_ALL; -
3531 - break; -
3532 - -
3533 - case T_UnlistenStmt: -
3534 - lev = LOGSTMT_ALL; -
3535 - break; -
3536 - -
3537 - case T_LoadStmt: -
3538 - lev = LOGSTMT_ALL; -
3539 - break; -
3540 - -
3541 - case T_CallStmt: -
3542 - lev = LOGSTMT_ALL; -
3543 - break; -
3544 - -
3545 - case T_ClusterStmt: -
3546 - lev = LOGSTMT_DDL; -
3547 - break; -
3548 - -
3549 - case T_VacuumStmt: -
3550 - lev = LOGSTMT_ALL; -
3551 - break; -
3552 - -
3553 - case T_ExplainStmt: -
3554 - { -
3555 - ExplainStmt *stmt = (ExplainStmt *) parsetree; -
3556 - bool analyze = false; -
3557 - ListCell *lc; -
3558 - -
3559 - /* Look through an EXPLAIN ANALYZE to the contained stmt */ -
3560 - foreach(lc, stmt->options) -
3561 - { -
3562 - DefElem *opt = (DefElem *) lfirst(lc); -
3563 - -
3564 - if (strcmp(opt->defname, "analyze") == 0) -
3565 - analyze = defGetBoolean(opt); -
3566 - /* don't "break", as explain.c will use the last value */ -
3567 - } -
3568 - if (analyze) -
3569 - return GetCommandLogLevel(stmt->query); -
3570 - -
3571 - /* Plain EXPLAIN isn't so interesting */ -
3572 - lev = LOGSTMT_ALL; -
3573 - } -
3574 - break; -
3575 - -
3576 - case T_CreateTableAsStmt: -
3577 - lev = LOGSTMT_DDL; -
3578 - break; -
3579 - -
3580 - case T_RefreshMatViewStmt: -
3581 - lev = LOGSTMT_DDL; -
3582 - break; -
3583 - -
3584 - case T_AlterSystemStmt: -
3585 - lev = LOGSTMT_DDL; -
3586 - break; -
3587 - -
3588 - case T_VariableSetStmt: -
3589 - lev = LOGSTMT_ALL; -
3590 - break; -
3591 - -
3592 - case T_VariableShowStmt: -
3593 - lev = LOGSTMT_ALL; -
3594 - break; -
3595 - -
3596 - case T_DiscardStmt: -
3597 - lev = LOGSTMT_ALL; -
3598 - break; -
3599 - -
3600 - case T_CreateTrigStmt: -
3601 - lev = LOGSTMT_DDL; -
3602 - break; -
3603 - -
3604 - case T_CreateEventTrigStmt: -
3605 - lev = LOGSTMT_DDL; -
3606 - break; -
3607 - -
3608 - case T_AlterEventTrigStmt: -
3609 - lev = LOGSTMT_DDL; -
3610 - break; -
3611 - -
3612 - case T_CreatePLangStmt: -
3613 - lev = LOGSTMT_DDL; -
3614 - break; -
3615 - -
3616 - case T_CreateDomainStmt: -
3617 - lev = LOGSTMT_DDL; -
3618 - break; -
3619 - -
3620 - case T_CreateRoleStmt: -
3621 - lev = LOGSTMT_DDL; -
3622 - break; -
3623 - -
3624 - case T_AlterRoleStmt: -
3625 - lev = LOGSTMT_DDL; -
3626 - break; -
3627 - -
3628 - case T_AlterRoleSetStmt: -
3629 - lev = LOGSTMT_DDL; -
3630 - break; -
3631 - -
3632 - case T_DropRoleStmt: -
3633 - lev = LOGSTMT_DDL; -
3634 - break; -
3635 - -
3636 - case T_DropOwnedStmt: -
3637 - lev = LOGSTMT_DDL; -
3638 - break; -
3639 - -
3640 - case T_ReassignOwnedStmt: -
3641 - lev = LOGSTMT_DDL; -
3642 - break; -
3643 - -
3644 - case T_LockStmt: -
3645 - lev = LOGSTMT_ALL; -
3646 - break; -
3647 - -
3648 - case T_ConstraintsSetStmt: -
3649 - lev = LOGSTMT_ALL; -
3650 - break; -
3651 - -
3652 - case T_CheckPointStmt: -
3653 - lev = LOGSTMT_ALL; -
3654 - break; -
3655 - -
3656 - case T_ReindexStmt: -
3657 - lev = LOGSTMT_ALL; /* should this be DDL? */ -
3658 - break; -
3659 - -
3660 - case T_CreateConversionStmt: -
3661 - lev = LOGSTMT_DDL; -
3662 - break; -
3663 - -
3664 - case T_CreateCastStmt: -
3665 - lev = LOGSTMT_DDL; -
3666 - break; -
3667 - -
3668 - case T_CreateOpClassStmt: -
3669 - lev = LOGSTMT_DDL; -
3670 - break; -
3671 - -
3672 - case T_CreateOpFamilyStmt: -
3673 - lev = LOGSTMT_DDL; -
3674 - break; -
3675 - -
3676 0 case T_CreatePropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3677 0 lev = LOGSTMT_DDL; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3678 0 break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3679 - 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3680 0 case T_AlterPropGraphStmt: 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3681 0 lev = LOGSTMT_DDL; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3682 0 break; 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3683 - 86c14eaWIP: SQL Property Graph Queries (SQL/PGQ)
3684 - case T_CreateTransformStmt: -
3685 - lev = LOGSTMT_DDL; -
3686 - break; -
3687 - -
3688 - case T_AlterOpFamilyStmt: -
3689 - lev = LOGSTMT_DDL; -
3690 - break; -
3691 - -
3692 - case T_CreatePolicyStmt: -
3693 - lev = LOGSTMT_DDL; -
3694 - break; -
3695 - -
3696 - case T_AlterPolicyStmt: -
3697 - lev = LOGSTMT_DDL; -
3698 - break; -
3699 - -
3700 - case T_AlterTSDictionaryStmt: -
3701 - lev = LOGSTMT_DDL; -
3702 - break; -
3703 - -
3704 - case T_AlterTSConfigurationStmt: -
3705 - lev = LOGSTMT_DDL; -
3706 - break; -
3707 - -
3708 - case T_CreateAmStmt: -
3709 - lev = LOGSTMT_DDL; -
3710 - break; -
3711 - -
3712 - case T_CreatePublicationStmt: -
3713 - lev = LOGSTMT_DDL; -
3714 - break; -
3715 - -
3716 - case T_AlterPublicationStmt: -
3717 - lev = LOGSTMT_DDL; -
3718 - break; -
3719 - -
3720 - case T_CreateSubscriptionStmt: -
3721 - lev = LOGSTMT_DDL; -
3722 - break; -
3723 - -
3724 - case T_AlterSubscriptionStmt: -
3725 - lev = LOGSTMT_DDL; -
3726 - break; -
3727 - -
3728 - case T_DropSubscriptionStmt: -
3729 - lev = LOGSTMT_DDL; -
3730 - break; -
3731 - -
3732 - case T_CreateStatsStmt: -
3733 - lev = LOGSTMT_DDL; -
3734 - break; -
3735 - -
3736 - case T_AlterStatsStmt: -
3737 - lev = LOGSTMT_DDL; -
3738 - break; -
3739 - -
3740 - case T_AlterCollationStmt: -
3741 - lev = LOGSTMT_DDL; -
3742 - break; -
3743 - -
3744 - case T_WaitStmt: -
3745 - lev = LOGSTMT_ALL; -
3746 - break; -
3747 - -
3748 - /* already-planned queries */ -
3749 - case T_PlannedStmt: -
3750 - { -
3751 - PlannedStmt *stmt = (PlannedStmt *) parsetree; -
3752 - -
3753 - switch (stmt->commandType) -
3754 - { -
3755 - case CMD_SELECT: -
3756 - lev = LOGSTMT_ALL; -
3757 - break; -
3758 - -
3759 - case CMD_UPDATE: -
3760 - case CMD_INSERT: -
3761 - case CMD_DELETE: -
3762 - case CMD_MERGE: -
3763 - lev = LOGSTMT_MOD; -
3764 - break; -
3765 - -
3766 - case CMD_UTILITY: -
3767 - lev = GetCommandLogLevel(stmt->utilityStmt); -
3768 - break; -
3769 - -
3770 - default: -
3771 - elog(WARNING, "unrecognized commandType: %d", -
3772 - (int) stmt->commandType); -
3773 - lev = LOGSTMT_ALL; -
3774 - break; -
3775 - } -
3776 - } -
3777 - break; -
3778 - -
3779 - /* parsed-and-rewritten-but-not-planned queries */ -
3780 - case T_Query: -
3781 - { -
3782 - Query *stmt = (Query *) parsetree; -
3783 - -
3784 - switch (stmt->commandType) -
3785 - { -
3786 - case CMD_SELECT: -
3787 - lev = LOGSTMT_ALL; -
3788 - break; -
3789 - -
3790 - case CMD_UPDATE: -
3791 - case CMD_INSERT: -
3792 - case CMD_DELETE: -
3793 - case CMD_MERGE: -
3794 - lev = LOGSTMT_MOD; -
3795 - break; -
3796 - -
3797 - case CMD_UTILITY: -
3798 - lev = GetCommandLogLevel(stmt->utilityStmt); -
3799 - break; -
3800 - -
3801 - default: -
3802 - elog(WARNING, "unrecognized commandType: %d", -
3803 - (int) stmt->commandType); -
3804 - lev = LOGSTMT_ALL; -
3805 - break; -
3806 - } -
3807 - } -
3808 - break; -
3809 - -
3810 - default: -
3811 - elog(WARNING, "unrecognized node type: %d", -
3812 - (int) nodeTag(parsetree)); -
3813 - lev = LOGSTMT_ALL; -
3814 - break; -
3815 - } -
3816 - -
3817 - return lev; -
3818 - } -