@@ -422,11 +422,12 @@ public void clearStatisticFromDroppedTable() {
422422 tableIdHasDeleted .removeAll (tables );
423423
424424 ConnectContext statsConnectCtx = StatisticUtils .buildConnectContext ();
425- statsConnectCtx .setThreadLocalInfo ();
426- statsConnectCtx .setStatisticsConnection (true );
425+ try ( ConnectContext . ScopeGuard guard = statsConnectCtx .bindScope ()) {
426+ statsConnectCtx .setStatisticsConnection (true );
427427
428- dropBasicStatsMetaAndData (statsConnectCtx , tableIdHasDeleted );
429- dropHistogramStatsMetaAndData (statsConnectCtx , tableIdHasDeleted );
428+ dropBasicStatsMetaAndData (statsConnectCtx , tableIdHasDeleted );
429+ dropHistogramStatsMetaAndData (statsConnectCtx , tableIdHasDeleted );
430+ }
430431 }
431432 public void recordDropPartition (long partitionId ) {
432433 dropPartitionIds .add (partitionId );
@@ -596,17 +597,19 @@ private void clearStaleStatsWhenStarted() {
596597
597598 public void dropBasicStatsMetaAndData (ConnectContext statsConnectCtx , Set <Long > tableIdHasDeleted ) {
598599 StatisticExecutor statisticExecutor = new StatisticExecutor ();
599- for (Long tableId : tableIdHasDeleted ) {
600- BasicStatsMeta basicStatsMeta = basicStatsMetaMap .get (tableId );
601- if (basicStatsMeta == null ) {
602- continue ;
600+ try (ConnectContext .ScopeGuard guard = statsConnectCtx .bindScope ()) {
601+ for (Long tableId : tableIdHasDeleted ) {
602+ BasicStatsMeta basicStatsMeta = basicStatsMetaMap .get (tableId );
603+ if (basicStatsMeta == null ) {
604+ continue ;
605+ }
606+ // Both types of tables need to be deleted, because there may have been a switch of
607+ // collecting statistics types, leaving some discarded statistics data.
608+ statisticExecutor .dropTableStatistics (statsConnectCtx , tableId , StatsConstants .AnalyzeType .SAMPLE );
609+ statisticExecutor .dropTableStatistics (statsConnectCtx , tableId , StatsConstants .AnalyzeType .FULL );
610+ GlobalStateMgr .getCurrentState ().getEditLog ().logRemoveBasicStatsMeta (basicStatsMetaMap .get (tableId ));
611+ basicStatsMetaMap .remove (tableId );
603612 }
604- // Both types of tables need to be deleted, because there may have been a switch of
605- // collecting statistics types, leaving some discarded statistics data.
606- statisticExecutor .dropTableStatistics (statsConnectCtx , tableId , StatsConstants .AnalyzeType .SAMPLE );
607- statisticExecutor .dropTableStatistics (statsConnectCtx , tableId , StatsConstants .AnalyzeType .FULL );
608- GlobalStateMgr .getCurrentState ().getEditLog ().logRemoveBasicStatsMeta (basicStatsMetaMap .get (tableId ));
609- basicStatsMetaMap .remove (tableId );
610613 }
611614 }
612615
0 commit comments