@@ -2379,7 +2379,7 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
2379
2379
ProcessUtilityContext context , ParamListInfo params ,
2380
2380
DestReceiver * dest , char * completionTag )
2381
2381
{
2382
- bool skipCommand ;
2382
+ bool skipCommand = false ;
2383
2383
MTM_TRACE ("%d: Process utility statement %s\n" , MyProcPid , queryString );
2384
2384
switch (nodeTag (parsetree ))
2385
2385
{
@@ -2469,14 +2469,21 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
2469
2469
break ;
2470
2470
case T_DropStmt :
2471
2471
{
2472
- Oid relid ;
2473
- Relation rel ;
2474
2472
DropStmt * stmt = (DropStmt * ) parsetree ;
2475
2473
2476
- //relid = RelnameGetRelid(stmt->relation->relname);
2477
- //rel = heap_open(relid, ShareLock);
2478
- //skipCommand = rel->rd_rel->relpersistence == RELPERSISTENCE_TEMP;
2479
- //heap_close(rel, NoLock);
2474
+ if (stmt -> removeType == OBJECT_TABLE )
2475
+ {
2476
+ RangeVar * rv = makeRangeVarFromNameList (
2477
+ (List * ) lfirst (list_head (stmt -> objects )));
2478
+ Oid relid = RelnameGetRelid (rv -> relname );
2479
+
2480
+ if (OidIsValid (relid ))
2481
+ {
2482
+ Relation rel = heap_open (relid , ShareLock );
2483
+ skipCommand = rel -> rd_rel -> relpersistence == RELPERSISTENCE_TEMP ;
2484
+ heap_close (rel , ShareLock );
2485
+ }
2486
+ }
2480
2487
}
2481
2488
break ;
2482
2489
default :
0 commit comments