forked from sqlancer/sqlancer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestTiDBQueryPlan.java
More file actions
49 lines (40 loc) · 1.91 KB
/
TestTiDBQueryPlan.java
File metadata and controls
49 lines (40 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package sqlancer.qpg.tidb;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
import org.junit.jupiter.api.Test;
import sqlancer.Main;
import sqlancer.MainOptions;
import sqlancer.SQLConnection;
import sqlancer.common.query.SQLQueryAdapter;
import sqlancer.tidb.TiDBOptions;
import sqlancer.tidb.TiDBProvider;
import sqlancer.tidb.TiDBProvider.TiDBGlobalState;
public class TestTiDBQueryPlan {
@Test
void testTiDBQueryPlan() throws Exception {
String tiDB = System.getenv("TIDB_AVAILABLE");
boolean tiDBIsAvailable = tiDB != null && tiDB.equalsIgnoreCase("true");
assumeTrue(tiDBIsAvailable);
String databaseName = "tidb";
TiDBProvider provider = new TiDBProvider();
TiDBGlobalState state = provider.getGlobalStateClass().getDeclaredConstructor().newInstance();
TiDBOptions TiDBOption = provider.getOptionClass().getDeclaredConstructor().newInstance();
state.setDbmsSpecificOptions(TiDBOption);
state.setDatabaseName(databaseName);
MainOptions options = new MainOptions();
state.setMainOptions(options);
Main.StateLogger logger = new Main.StateLogger(databaseName, provider, options);
state.setStateLogger(logger);
state.setState(provider.getStateToReproduce(databaseName));
SQLConnection con = provider.createDatabase(state);
state.setConnection(con);
SQLQueryAdapter q = new SQLQueryAdapter("CREATE TABLE t1(a INT, b INT);", true);
q.execute(state);
q = new SQLQueryAdapter("CREATE TABLE t2(c INT);", true);
q.execute(state);
String queryPlan = provider.getQueryPlan("SELECT * FROM t1 RIGHT JOIN t2 ON a<>0;", state);
assertEquals(
"HashJoin_7;TableReader_10(Build);Selection_9;TableFullScan_8;TableReader_12(Probe);TableFullScan_11;",
queryPlan);
}
}