[fix](Nereids) should do read lock on table being insert when analyze (#25619)
This commit is contained in:
@ -17,14 +17,15 @@
|
||||
|
||||
package org.apache.doris.nereids.util;
|
||||
|
||||
import org.apache.doris.catalog.Table;
|
||||
import org.apache.doris.common.jmockit.Deencapsulation;
|
||||
import org.apache.doris.catalog.TableIf;
|
||||
import org.apache.doris.nereids.CascadesContext;
|
||||
import org.apache.doris.nereids.NereidsPlanner;
|
||||
import org.apache.doris.nereids.StatementContext;
|
||||
import org.apache.doris.nereids.datasets.ssb.SSBTestBase;
|
||||
import org.apache.doris.nereids.parser.NereidsParser;
|
||||
import org.apache.doris.nereids.properties.PhysicalProperties;
|
||||
import org.apache.doris.nereids.trees.plans.commands.InsertIntoTableCommand;
|
||||
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -47,10 +48,10 @@ public class ReadLockTest extends SSBTestBase {
|
||||
PhysicalProperties.ANY
|
||||
);
|
||||
CascadesContext cascadesContext = planner.getCascadesContext();
|
||||
List<Table> f = (List<Table>) Deencapsulation.getField(cascadesContext, "tables");
|
||||
Assertions.assertEquals(1, f.size());
|
||||
Assertions.assertEquals("supplier", f.stream().map(Table::getName).findFirst().get());
|
||||
|
||||
List<TableIf> f = cascadesContext.getTables();
|
||||
Assertions.assertEquals(1, f.size());
|
||||
Assertions.assertEquals("supplier", f.stream().map(TableIf::getName).findFirst().get());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -69,9 +70,9 @@ public class ReadLockTest extends SSBTestBase {
|
||||
PhysicalProperties.ANY
|
||||
);
|
||||
CascadesContext cascadesContext = planner.getCascadesContext();
|
||||
List<Table> f = (List<Table>) Deencapsulation.getField(cascadesContext, "tables");
|
||||
List<TableIf> f = cascadesContext.getTables();
|
||||
Assertions.assertEquals(1, f.size());
|
||||
Assertions.assertEquals("supplier", f.stream().map(Table::getName).findFirst().get());
|
||||
Assertions.assertEquals("supplier", f.stream().map(TableIf::getName).findFirst().get());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -84,10 +85,9 @@ public class ReadLockTest extends SSBTestBase {
|
||||
PhysicalProperties.ANY
|
||||
);
|
||||
CascadesContext cascadesContext = planner.getCascadesContext();
|
||||
List<Table> f = (List<Table>) Deencapsulation.getField(cascadesContext, "tables");
|
||||
|
||||
List<TableIf> f = cascadesContext.getTables();
|
||||
Assertions.assertEquals(1, f.size());
|
||||
Assertions.assertEquals("supplier", f.stream().map(Table::getName).findFirst().get());
|
||||
Assertions.assertEquals("supplier", f.stream().map(TableIf::getName).findFirst().get());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -100,11 +100,28 @@ public class ReadLockTest extends SSBTestBase {
|
||||
PhysicalProperties.ANY
|
||||
);
|
||||
CascadesContext cascadesContext = planner.getCascadesContext();
|
||||
List<Table> f = (List<Table>) Deencapsulation.getField(cascadesContext, "tables");
|
||||
List<TableIf> f = cascadesContext.getTables();
|
||||
Assertions.assertEquals(2, f.size());
|
||||
Set<String> tableNames = f.stream().map(Table::getName).collect(Collectors.toSet());
|
||||
Set<String> tableNames = f.stream().map(TableIf::getName).collect(Collectors.toSet());
|
||||
Assertions.assertTrue(tableNames.contains("supplier"));
|
||||
Assertions.assertTrue(tableNames.contains("lineorder"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInserInto() {
|
||||
String sql = "INSERT INTO supplier(s_suppkey) SELECT lo_orderkey FROM lineorder";
|
||||
StatementContext statementContext = MemoTestUtils.createStatementContext(connectContext, sql);
|
||||
InsertIntoTableCommand insertIntoTableCommand = (InsertIntoTableCommand) parser.parseSingle(sql);
|
||||
NereidsPlanner planner = new NereidsPlanner(statementContext);
|
||||
planner.plan(
|
||||
(LogicalPlan) insertIntoTableCommand.getExplainPlan(connectContext),
|
||||
PhysicalProperties.ANY
|
||||
);
|
||||
CascadesContext cascadesContext = planner.getCascadesContext();
|
||||
List<TableIf> f = cascadesContext.getTables();
|
||||
Assertions.assertEquals(2, f.size());
|
||||
Set<String> tableNames = f.stream().map(TableIf::getName).collect(Collectors.toSet());
|
||||
Assertions.assertTrue(tableNames.contains("supplier"));
|
||||
Assertions.assertTrue(tableNames.contains("lineorder"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user