@@ -227,7 +227,7 @@ public void refresh(Group group, CascadesContext cascadesContext,
227227 for (GroupExpression groupExpression : group .getLogicalExpressions ()) {
228228 List <Set <BitSet >> childrenTableMap = new LinkedList <>();
229229 if (groupExpression .children ().isEmpty ()) {
230- BitSet leaf = constructLeaf (groupExpression , cascadesContext , forceRefresh );
230+ BitSet leaf = constructLeaf (groupExpression , cascadesContext , forceRefresh , tableIdMode );
231231 if (leaf .isEmpty ()) {
232232 break ;
233233 }
@@ -304,24 +304,41 @@ public void refresh(Group group, CascadesContext cascadesContext,
304304 }
305305
306306 private BitSet constructLeaf (GroupExpression groupExpression , CascadesContext cascadesContext ,
307- boolean forceRefresh ) {
307+ boolean forceRefresh , boolean tableIdMode ) {
308308 Plan plan = groupExpression .getPlan ();
309309 BitSet tableMap = new BitSet ();
310- if (plan instanceof LogicalCatalogRelation ) {
311- LogicalCatalogRelation logicalCatalogRelation = (LogicalCatalogRelation ) plan ;
312- TableIf table = logicalCatalogRelation .getTable ();
313- // If disable materialized view nest rewrite, and mv already rewritten successfully once, doesn't construct
314- // table id map for nest mv rewrite
315- if (!forceRefresh && cascadesContext .getStatementContext ()
316- .getMaterializationRewrittenSuccessSet ().contains (table .getFullQualifiers ())) {
317- return tableMap ;
310+ if (tableIdMode ) {
311+ if (plan instanceof LogicalCatalogRelation ) {
312+ LogicalCatalogRelation logicalCatalogRelation = (LogicalCatalogRelation ) plan ;
313+ TableIf table = logicalCatalogRelation .getTable ();
314+ // If disable materialized view nest rewrite, and mv already rewritten successfully once,
315+ // doesn't construct
316+ // table id map for nest mv rewrite
317+ if (!forceRefresh && cascadesContext .getStatementContext ()
318+ .getMaterializationRewrittenSuccessSet ().contains (table .getFullQualifiers ())) {
319+ return tableMap ;
320+ }
321+ tableMap .set (cascadesContext .getStatementContext ().getTableId (
322+ logicalCatalogRelation .getTable ()).asInt ());
323+ }
324+ } else {
325+ if (plan instanceof LogicalCatalogRelation ) {
326+ LogicalCatalogRelation logicalCatalogRelation = (LogicalCatalogRelation ) plan ;
327+ TableIf table = logicalCatalogRelation .getTable ();
328+ // If disable materialized view nest rewrite, and mv already rewritten successfully once,
329+ // doesn't construct
330+ // table id map for nest mv rewrite
331+ if (!forceRefresh && cascadesContext .getStatementContext ()
332+ .getMaterializationRewrittenSuccessSet ().contains (table .getFullQualifiers ())) {
333+ return tableMap ;
334+ }
335+ tableMap .set (logicalCatalogRelation .getRelationId ().asInt ());
336+ }
337+ // one row relation / CTE consumer
338+ if (plan instanceof LogicalCTEConsumer || plan instanceof LogicalEmptyRelation
339+ || plan instanceof LogicalOneRowRelation ) {
340+ tableMap .set (((LogicalRelation ) plan ).getRelationId ().asInt ());
318341 }
319- tableMap .set (logicalCatalogRelation .getRelationId ().asInt ());
320- }
321- // one row relation / CTE consumer
322- if (plan instanceof LogicalCTEConsumer || plan instanceof LogicalEmptyRelation
323- || plan instanceof LogicalOneRowRelation ) {
324- tableMap .set (((LogicalRelation ) plan ).getRelationId ().asInt ());
325342 }
326343 return tableMap ;
327344 }
0 commit comments