@@ -2230,9 +2230,10 @@ static void MtmBroadcastUtilityStmt(char const* sql, bool ignoreError)
2230
2230
}
2231
2231
if (!MtmRunUtilityStmt (conns [i ],sql ,& utility_errmsg )&& !ignoreError )
2232
2232
{
2233
- // errorMsg = "Failed to run command at node %d";
2234
- // XXX: add check for our node
2235
- errorMsg = utility_errmsg ;
2233
+ if (i + 1 == MtmNodeId )
2234
+ errorMsg = utility_errmsg ;
2235
+ else
2236
+ errorMsg = "Failed to run command at node %d" ;
2236
2237
2237
2238
failedNode = i ;
2238
2239
break ;
@@ -2433,6 +2434,27 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
2433
2434
skipCommand = stmt -> relation -> relpersistence == RELPERSISTENCE_TEMP ;
2434
2435
}
2435
2436
break ;
2437
+ case T_IndexStmt :
2438
+ {
2439
+ Oid relid ;
2440
+ LOCKMODE lockmode ;
2441
+ Relation rel ;
2442
+
2443
+ IndexStmt * stmt = (IndexStmt * )parsetree ;
2444
+ lockmode = stmt -> concurrent ?ShareUpdateExclusiveLock
2445
+ :ShareLock ;
2446
+ relid = RangeVarGetRelidExtended (stmt -> relation ,lockmode ,
2447
+ false, false,
2448
+ NULL ,// ???
2449
+ NULL );
2450
+
2451
+ rel = heap_open (relid ,lockmode );
2452
+
2453
+ skipCommand = rel -> rd_rel -> relpersistence == RELPERSISTENCE_TEMP ;
2454
+
2455
+ heap_close (rel ,NoLock );
2456
+ }
2457
+ break ;
2436
2458
default :
2437
2459
skipCommand = false;
2438
2460
break ;