Skip to content

Commit fd2f6c3

Browse files
committed
add ExplainIT
Signed-off-by: Kai Huang <[email protected]>
1 parent c64c86a commit fd2f6c3

File tree

4 files changed

+111
-85
lines changed

4 files changed

+111
-85
lines changed

integ-test/src/test/java/org/opensearch/sql/calcite/CalciteNoPushdownIT.java

Lines changed: 83 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.junit.runner.RunWith;
1111
import org.junit.runners.Suite;
1212
import org.opensearch.sql.calcite.remote.*;
13-
import org.opensearch.sql.calcite.tpch.CalcitePPLTpchIT;
1413
import org.opensearch.sql.ppl.PPLIntegTestCase;
1514

1615
/**
@@ -19,90 +18,89 @@
1918
* <p>Individual tests in this suite will be executed independently with pushdown enabled.
2019
*/
2120
@RunWith(Suite.class)
22-
@Suite.SuiteClasses({
23-
CalciteExplainIT.class,
24-
CalciteArrayFunctionIT.class,
25-
CalciteBinCommandIT.class,
26-
CalciteConvertTZFunctionIT.class,
27-
CalciteCsvFormatIT.class,
28-
CalciteDataTypeIT.class,
29-
CalciteDateTimeComparisonIT.class,
30-
CalciteDateTimeFunctionIT.class,
31-
CalciteDateTimeImplementationIT.class,
32-
CalciteDedupCommandIT.class,
33-
CalciteDescribeCommandIT.class,
34-
CalciteExpandCommandIT.class,
35-
CalciteFieldsCommandIT.class,
36-
CalciteFillNullCommandIT.class,
37-
CalciteFlattenCommandIT.class,
38-
CalciteFlattenDocValueIT.class,
39-
CalciteGeoIpFunctionsIT.class,
40-
CalciteGeoPointFormatsIT.class,
41-
CalciteHeadCommandIT.class,
42-
CalciteInformationSchemaCommandIT.class,
43-
CalciteIPComparisonIT.class,
44-
CalciteIPFunctionsIT.class,
45-
CalciteJsonFunctionsIT.class,
46-
CalciteLegacyAPICompatibilityIT.class,
47-
CalciteLikeQueryIT.class,
48-
CalciteMathematicalFunctionIT.class,
49-
CalciteMultisearchCommandIT.class,
50-
CalciteMultiValueStatsIT.class,
51-
CalciteNewAddedCommandsIT.class,
52-
CalciteNowLikeFunctionIT.class,
53-
CalciteObjectFieldOperateIT.class,
54-
CalciteOperatorIT.class,
55-
CalciteParseCommandIT.class,
56-
CalcitePPLAggregationIT.class,
57-
CalcitePPLAppendcolIT.class,
58-
CalcitePPLAppendCommandIT.class,
59-
CalcitePPLBasicIT.class,
60-
CalcitePPLBuiltinDatetimeFunctionInvalidIT.class,
61-
CalcitePPLBuiltinFunctionIT.class,
62-
CalcitePPLBuiltinFunctionsNullIT.class,
63-
CalcitePPLCaseFunctionIT.class,
64-
CalcitePPLCastFunctionIT.class,
65-
CalcitePPLConditionBuiltinFunctionIT.class,
66-
CalcitePPLCryptographicFunctionIT.class,
67-
CalcitePPLDedupIT.class,
68-
CalcitePPLEventstatsIT.class,
69-
CalcitePPLExistsSubqueryIT.class,
70-
CalcitePPLExplainIT.class,
71-
CalcitePPLFillnullIT.class,
72-
CalcitePPLGrokIT.class,
73-
CalcitePPLInSubqueryIT.class,
74-
CalcitePPLIPFunctionIT.class,
75-
CalcitePPLJoinIT.class,
76-
CalcitePPLJsonBuiltinFunctionIT.class,
77-
CalcitePPLLookupIT.class,
78-
CalcitePPLParseIT.class,
79-
CalcitePPLPatternsIT.class,
80-
CalcitePPLPluginIT.class,
81-
CalcitePPLRenameIT.class,
82-
CalcitePPLScalarSubqueryIT.class,
83-
CalcitePPLSortIT.class,
84-
CalcitePPLStringBuiltinFunctionIT.class,
85-
CalcitePPLTrendlineIT.class,
86-
CalcitePrometheusDataSourceCommandsIT.class,
87-
CalciteQueryAnalysisIT.class,
88-
CalciteRareCommandIT.class,
89-
CalciteRegexCommandIT.class,
90-
CalciteRexCommandIT.class,
91-
CalciteRenameCommandIT.class,
92-
CalciteReplaceCommandIT.class,
93-
CalciteResourceMonitorIT.class,
94-
CalciteSearchCommandIT.class,
95-
CalciteSettingsIT.class,
96-
CalciteShowDataSourcesCommandIT.class,
97-
CalciteSortCommandIT.class,
98-
CalciteStatsCommandIT.class,
99-
CalciteSystemFunctionIT.class,
100-
CalciteTextFunctionIT.class,
101-
CalciteTopCommandIT.class,
102-
CalciteTrendlineCommandIT.class,
103-
CalciteVisualizationFormatIT.class,
104-
CalciteWhereCommandIT.class,
105-
CalcitePPLTpchIT.class
21+
@Suite.SuiteClasses({CalciteExplainIT.class
22+
// CalciteArrayFunctionIT.class,
23+
// CalciteBinCommandIT.class,
24+
// CalciteConvertTZFunctionIT.class,
25+
// CalciteCsvFormatIT.class,
26+
// CalciteDataTypeIT.class,
27+
// CalciteDateTimeComparisonIT.class,
28+
// CalciteDateTimeFunctionIT.class,
29+
// CalciteDateTimeImplementationIT.class,
30+
// CalciteDedupCommandIT.class,
31+
// CalciteDescribeCommandIT.class,
32+
// CalciteExpandCommandIT.class,
33+
// CalciteFieldsCommandIT.class,
34+
// CalciteFillNullCommandIT.class,
35+
// CalciteFlattenCommandIT.class,
36+
// CalciteFlattenDocValueIT.class,
37+
// CalciteGeoIpFunctionsIT.class,
38+
// CalciteGeoPointFormatsIT.class,
39+
// CalciteHeadCommandIT.class,
40+
// CalciteInformationSchemaCommandIT.class,
41+
// CalciteIPComparisonIT.class,
42+
// CalciteIPFunctionsIT.class,
43+
// CalciteJsonFunctionsIT.class,
44+
// CalciteLegacyAPICompatibilityIT.class,
45+
// CalciteLikeQueryIT.class,
46+
// CalciteMathematicalFunctionIT.class,
47+
// CalciteMultisearchCommandIT.class,
48+
// CalciteMultiValueStatsIT.class,
49+
// CalciteNewAddedCommandsIT.class,
50+
// CalciteNowLikeFunctionIT.class,
51+
// CalciteObjectFieldOperateIT.class,
52+
// CalciteOperatorIT.class,
53+
// CalciteParseCommandIT.class,
54+
// CalcitePPLAggregationIT.class,
55+
// CalcitePPLAppendcolIT.class,
56+
// CalcitePPLAppendCommandIT.class,
57+
// CalcitePPLBasicIT.class,
58+
// CalcitePPLBuiltinDatetimeFunctionInvalidIT.class,
59+
// CalcitePPLBuiltinFunctionIT.class,
60+
// CalcitePPLBuiltinFunctionsNullIT.class,
61+
// CalcitePPLCaseFunctionIT.class,
62+
// CalcitePPLCastFunctionIT.class,
63+
// CalcitePPLConditionBuiltinFunctionIT.class,
64+
// CalcitePPLCryptographicFunctionIT.class,
65+
// CalcitePPLDedupIT.class,
66+
// CalcitePPLEventstatsIT.class,
67+
// CalcitePPLExistsSubqueryIT.class,
68+
// CalcitePPLExplainIT.class,
69+
// CalcitePPLFillnullIT.class,
70+
// CalcitePPLGrokIT.class,
71+
// CalcitePPLInSubqueryIT.class,
72+
// CalcitePPLIPFunctionIT.class,
73+
// CalcitePPLJoinIT.class,
74+
// CalcitePPLJsonBuiltinFunctionIT.class,
75+
// CalcitePPLLookupIT.class,
76+
// CalcitePPLParseIT.class,
77+
// CalcitePPLPatternsIT.class,
78+
// CalcitePPLPluginIT.class,
79+
// CalcitePPLRenameIT.class,
80+
// CalcitePPLScalarSubqueryIT.class,
81+
// CalcitePPLSortIT.class,
82+
// CalcitePPLStringBuiltinFunctionIT.class,
83+
// CalcitePPLTrendlineIT.class,
84+
// CalcitePrometheusDataSourceCommandsIT.class,
85+
// CalciteQueryAnalysisIT.class,
86+
// CalciteRareCommandIT.class,
87+
// CalciteRegexCommandIT.class,
88+
// CalciteRexCommandIT.class,
89+
// CalciteRenameCommandIT.class,
90+
// CalciteReplaceCommandIT.class,
91+
// CalciteResourceMonitorIT.class,
92+
// CalciteSearchCommandIT.class,
93+
// CalciteSettingsIT.class,
94+
// CalciteShowDataSourcesCommandIT.class,
95+
// CalciteSortCommandIT.class,
96+
// CalciteStatsCommandIT.class,
97+
// CalciteSystemFunctionIT.class,
98+
// CalciteTextFunctionIT.class,
99+
// CalciteTopCommandIT.class,
100+
// CalciteTrendlineCommandIT.class,
101+
// CalciteVisualizationFormatIT.class,
102+
// CalciteWhereCommandIT.class,
103+
// CalcitePPLTpchIT.class
106104
})
107105
public class CalciteNoPushdownIT {
108106
private static boolean wasPushdownEnabled;

integ-test/src/test/java/org/opensearch/sql/calcite/remote/CalciteExplainIT.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,6 +1266,17 @@ public void testReplaceCommandExplain() throws IOException {
12661266
TEST_INDEX_ACCOUNT)));
12671267
}
12681268

1269+
@Test
1270+
public void testReplaceCommandWildcardExplain() throws IOException {
1271+
String expected = loadExpectedPlan("explain_replace_wildcard.yaml");
1272+
assertYamlEqualsIgnoreId(
1273+
expected,
1274+
explainQueryYaml(
1275+
String.format(
1276+
"source=%s | replace '*L' WITH 'STATE_IL' IN state | fields state",
1277+
TEST_INDEX_ACCOUNT)));
1278+
}
1279+
12691280
// Test cases for verifying the fix of https://github.com/opensearch-project/sql/issues/4571
12701281
@Test
12711282
public void testPushDownMinOrMaxAggOnDerivedField() throws IOException {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
calcite:
2+
logical: |
3+
LogicalSystemLimit(fetch=[10000], type=[QUERY_SIZE_LIMIT])
4+
LogicalProject(state=[REGEXP_REPLACE($7, '^\Q\E(.*?)\QL\E$':VARCHAR, 'STATE_IL':VARCHAR)])
5+
CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])
6+
physical: |
7+
EnumerableCalc(expr#0=[{inputs}], expr#1=['^\Q\E(.*?)\QL\E$':VARCHAR], expr#2=['STATE_IL':VARCHAR], expr#3=[REGEXP_REPLACE($t0, $t1, $t2)], $f0=[$t3])
8+
CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]], PushDownContext=[[PROJECT->[state], LIMIT->10000], OpenSearchRequestBuilder(sourceBuilder={"from":0,"size":10000,"timeout":"1m","_source":{"includes":["state"],"excludes":[]}}, requestedTotalSize=10000, pageSize=null, startFrom=0)])
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
calcite:
2+
logical: |
3+
LogicalSystemLimit(fetch=[10000], type=[QUERY_SIZE_LIMIT])
4+
LogicalProject(state=[REGEXP_REPLACE($7, '^\Q\E(.*?)\QL\E$':VARCHAR, 'STATE_IL':VARCHAR)])
5+
CalciteLogicalIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])
6+
physical: |
7+
EnumerableLimit(fetch=[10000])
8+
EnumerableCalc(expr#0..16=[{inputs}], expr#17=['^\Q\E(.*?)\QL\E$':VARCHAR], expr#18=['STATE_IL':VARCHAR], expr#19=[REGEXP_REPLACE($t7, $t17, $t18)], state=[$t19])
9+
CalciteEnumerableIndexScan(table=[[OpenSearch, opensearch-sql_test_index_account]])

0 commit comments

Comments
 (0)