@@ -2365,7 +2365,7 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
2365
2365
ProcessUtilityContext context , ParamListInfo params ,
2366
2366
DestReceiver * dest , char * completionTag )
2367
2367
{
2368
- bool skipCommand ;
2368
+ bool skipCommand = false ;
2369
2369
MTM_TRACE ("%d: Process utility statement %s\n" , MyProcPid , queryString );
2370
2370
switch (nodeTag (parsetree ))
2371
2371
{
@@ -2458,14 +2458,21 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
2458
2458
break ;
2459
2459
case T_DropStmt :
2460
2460
{
2461
- Oid relid ;
2462
- Relation rel ;
2463
2461
DropStmt * stmt = (DropStmt * ) parsetree ;
2464
2462
2465
- //relid = RelnameGetRelid(stmt->relation->relname);
2466
- //rel = heap_open(relid, ShareLock);
2467
- //skipCommand = rel->rd_rel->relpersistence == RELPERSISTENCE_TEMP;
2468
- //heap_close(rel, NoLock);
2463
+ if (stmt -> removeType == OBJECT_TABLE )
2464
+ {
2465
+ RangeVar * rv = makeRangeVarFromNameList (
2466
+ (List * ) lfirst (list_head (stmt -> objects )));
2467
+ Oid relid = RelnameGetRelid (rv -> relname );
2468
+
2469
+ if (OidIsValid (relid ))
2470
+ {
2471
+ Relation rel = heap_open (relid , ShareLock );
2472
+ skipCommand = rel -> rd_rel -> relpersistence == RELPERSISTENCE_TEMP ;
2473
+ heap_close (rel , ShareLock );
2474
+ }
2475
+ }
2469
2476
}
2470
2477
break ;
2471
2478
default :
0 commit comments