Skip to content

Commit a1a5a38

Browse files
committed
Convert many 'Not using ok' comments to '!ok'
1 parent 3ca9ead commit a1a5a38

34 files changed

+2373
-1558
lines changed

core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@
118118
import org.apache.calcite.sql.fun.SqlLibrary;
119119
import org.apache.calcite.sql.fun.SqlLibraryOperatorTableFactory;
120120
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
121+
import org.apache.calcite.sql.test.SqlTestFactory;
121122
import org.apache.calcite.sql.type.OperandTypes;
122123
import org.apache.calcite.sql.type.ReturnTypes;
123124
import org.apache.calcite.sql.type.SqlTypeName;
@@ -3834,6 +3835,37 @@ private HepProgram getTransitiveProgram() {
38343835
.check();
38353836
}
38363837

3838+
/** Tests that ProjectAggregateMergeRule does nothing with non-numeric literals
3839+
* and does not throw an exception. */
3840+
@Test void testProjectAggregateMergeNonNumericLiteral() {
3841+
// Requires a NULLABLE column to trigger
3842+
final SqlTestFactory.CatalogReaderFactory catalogReaderFactory = (typeFactory, caseSensitive) ->
3843+
new MockCatalogReader(typeFactory, caseSensitive) {
3844+
@Override public MockCatalogReader init() {
3845+
MockSchema schema = new MockSchema("SALES");
3846+
registerSchema(schema);
3847+
final boolean nullable = true;
3848+
final RelDataType timestampType =
3849+
typeFactory.createTypeWithNullability(
3850+
typeFactory.createSqlType(SqlTypeName.TIMESTAMP),
3851+
nullable);
3852+
String tableName = "NULLABLE";
3853+
MockTable table = MockTable
3854+
.create(this, schema, tableName, false, 100);
3855+
table.addColumn("HIREDATE", timestampType);
3856+
registerTable(table);
3857+
return this;
3858+
}
3859+
}.init();
3860+
final String sql = "select hiredate, coalesce(hiredate, {ts '1969-12-31 00:00:00'}) as c1\n"
3861+
+ "from sales.nullable\n"
3862+
+ "group by hiredate";
3863+
sql(sql)
3864+
.withCatalogReaderFactory(catalogReaderFactory)
3865+
.withRule(CoreRules.PROJECT_AGGREGATE_MERGE)
3866+
.checkUnchanged();
3867+
}
3868+
38373869
/**
38383870
* Test case for AggregateMergeRule, should merge 2 aggregates
38393871
* into a single aggregate.

core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4896,6 +4896,20 @@ LogicalProject(EMPNO=[$4])
48964896
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
48974897
LogicalTableScan(table=[[CATALOG, SALES, DEPT]])
48984898
LogicalTableScan(table=[[CATALOG, SALES, EMP_ADDRESS]])
4899+
]]>
4900+
</Resource>
4901+
</TestCase>
4902+
<TestCase name="testProjectAggregateMergeNonNumericLiteral">
4903+
<Resource name="sql">
4904+
<![CDATA[select hiredate, coalesce(hiredate, {ts '1969-12-31 00:00:00'}) as c1
4905+
from sales.nullable
4906+
group by hiredate]]>
4907+
</Resource>
4908+
<Resource name="planBefore">
4909+
<![CDATA[
4910+
LogicalProject(HIREDATE=[$0], C1=[CASE(IS NOT NULL($0), CAST($0):TIMESTAMP(0) NOT NULL, 1969-12-31 00:00:00)])
4911+
LogicalAggregate(group=[{0}])
4912+
LogicalTableScan(table=[[CATALOG, SALES, NULLABLE]])
48994913
]]>
49004914
</Resource>
49014915
</TestCase>

core/src/test/resources/sql/rule/aggregate-constants.iq

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@ LogicalProject(C=[$2])
4747
LogicalProject(DEPTNO=[$7], SAL=[$5])
4848
LogicalFilter(condition=[=($7, 10)])
4949
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
50-
!sub-plan "NONE"
50+
!sub-plan ""
5151
LogicalProject(C=[$2])
5252
LogicalProject(DEPTNO=[10], SAL=[$0], C=[$1])
5353
LogicalAggregate(group=[{0}], C=[COUNT()])
5454
LogicalProject(SAL=[$5])
5555
LogicalFilter(condition=[=($7, 10)])
5656
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
57-
!sub-plan "NONE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
57+
!sub-plan "AGGREGATE_ANY_PULL_UP_CONSTANTS"
5858

5959
# testAggregateConstantKeyRule2 ------------------------------------------------
6060
# AGGREGATE_ANY_PULL_UP_CONSTANTS should not fire when the only group key is a
@@ -77,13 +77,13 @@ LogicalProject(C=[$1])
7777
LogicalProject(DEPTNO=[$7])
7878
LogicalFilter(condition=[=($7, 10)])
7979
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
80-
!sub-plan "NONE"
80+
!sub-plan ""
8181
LogicalProject(C=[$1])
8282
LogicalAggregate(group=[{0}], C=[COUNT()])
8383
LogicalProject(DEPTNO=[$7])
8484
LogicalFilter(condition=[=($7, 10)])
8585
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
86-
!sub-plan "NONE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
86+
!sub-plan "AGGREGATE_ANY_PULL_UP_CONSTANTS"
8787

8888
# testAggregateConstantKeyRule3 ------------------------------------------------
8989
# AGGREGATE_ANY_PULL_UP_CONSTANTS removes the null key (mgr IS NULL) but keeps
@@ -108,15 +108,15 @@ LogicalProject(JOB=[$1])
108108
LogicalProject(MGR=[$3], JOB=[$2])
109109
LogicalFilter(condition=[AND(IS NULL($3), =($2, 'Clerk'))])
110110
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
111-
!sub-plan "NONE"
111+
!sub-plan ""
112112
LogicalProject(JOB=[$1])
113113
LogicalFilter(condition=[>($2, 3)])
114114
LogicalProject(MGR=[$0], JOB=['Clerk':VARCHAR(10)], $f2=[$1])
115115
LogicalAggregate(group=[{0}], agg#0=[COUNT()])
116116
LogicalProject(MGR=[$3])
117117
LogicalFilter(condition=[AND(IS NULL($3), =($2, 'Clerk'))])
118118
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
119-
!sub-plan "NONE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
119+
!sub-plan "AGGREGATE_ANY_PULL_UP_CONSTANTS"
120120

121121
# testAggregateDynamicFunction -------------------------------------------------
122122
# AGGREGATE_ANY_PULL_UP_CONSTANTS removes the null key (mgr IS NULL) but keeps
@@ -141,15 +141,15 @@ LogicalProject(HIREDATE=[$1])
141141
LogicalProject(MGR=[$3], HIREDATE=[$4])
142142
LogicalFilter(condition=[AND(IS NULL($3), =($4, CURRENT_TIMESTAMP))])
143143
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
144-
!sub-plan "NONE"
144+
!sub-plan ""
145145
LogicalProject(HIREDATE=[$1])
146146
LogicalFilter(condition=[>($2, 3)])
147147
LogicalProject(MGR=[$0], HIREDATE=[CURRENT_TIMESTAMP], $f2=[$1])
148148
LogicalAggregate(group=[{0}], agg#0=[COUNT()])
149149
LogicalProject(MGR=[$3])
150150
LogicalFilter(condition=[AND(IS NULL($3), =($4, CURRENT_TIMESTAMP))])
151151
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
152-
!sub-plan "NONE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
152+
!sub-plan "AGGREGATE_ANY_PULL_UP_CONSTANTS"
153153

154154
# testAggregateProjectPullUpConstants ------------------------------------------
155155
# AGGREGATE_ANY_PULL_UP_CONSTANTS removes the constant group key (empno = 10)
@@ -169,13 +169,13 @@ LogicalAggregate(group=[{0, 1, 2}], S=[SUM($2)])
169169
LogicalProject(JOB=[$2], EMPNO=[$0], SAL=[$5])
170170
LogicalFilter(condition=[=($0, 10)])
171171
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
172-
!sub-plan "NONE"
172+
!sub-plan ""
173173
LogicalProject(JOB=[$0], EMPNO=[10], SAL=[$1], S=[$2])
174174
LogicalAggregate(group=[{0, 1}], S=[SUM($1)])
175175
LogicalProject(JOB=[$2], SAL=[$5])
176176
LogicalFilter(condition=[=($0, 10)])
177177
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
178-
!sub-plan "NONE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
178+
!sub-plan "AGGREGATE_ANY_PULL_UP_CONSTANTS"
179179

180180
# testAggregateProjectPullUpConstants2 -----------------------------------------
181181
# After AGGREGATE_PROJECT_MERGE merges the inner project into the aggregate,
@@ -195,16 +195,16 @@ LogicalAggregate(group=[{0, 1}])
195195
LogicalProject(ENAME=[$1], SAL=[$5])
196196
LogicalFilter(condition=[=($1, 'John')])
197197
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
198-
!sub-plan "NONE"
198+
!sub-plan ""
199199
LogicalAggregate(group=[{1, 5}])
200200
LogicalFilter(condition=[=($1, 'John')])
201201
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
202-
!sub-plan "NONE, AGGREGATE_PROJECT_MERGE"
202+
!sub-plan "AGGREGATE_PROJECT_MERGE"
203203
LogicalProject(ENAME=['John':VARCHAR(20)], SAL=[$0])
204204
LogicalAggregate(group=[{5}])
205205
LogicalFilter(condition=[=($1, 'John')])
206206
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
207-
!sub-plan "NONE, AGGREGATE_PROJECT_MERGE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
207+
!sub-plan "AGGREGATE_PROJECT_MERGE, AGGREGATE_ANY_PULL_UP_CONSTANTS"
208208

209209
# testAggregateValuesRuleWithInRepeatingValues ---------------------------------
210210
# AGGREGATE_VALUES deduplicates Values tuples when a filter IN clause has
@@ -227,20 +227,20 @@ LogicalProject(DEPTNO=[$7], SAL=[$5])
227227
LogicalValues(tuples=[[{ 1 }, { 1 }, { 3 }, { 1 }, { 2 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { null }, { null }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }]])
228228
})])
229229
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
230-
!sub-plan "NONE"
230+
!sub-plan ""
231231
LogicalProject(DEPTNO=[$7], SAL=[$5])
232232
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
233233
LogicalJoin(condition=[=($7, $9)], joinType=[inner])
234234
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
235235
LogicalAggregate(group=[{0}])
236236
LogicalValues(tuples=[[{ 1 }, { 1 }, { 3 }, { 1 }, { 2 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { null }, { null }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }, { 1 }]])
237-
!sub-plan "NONE, FILTER_SUB_QUERY_TO_CORRELATE"
237+
!sub-plan "FILTER_SUB_QUERY_TO_CORRELATE"
238238
LogicalProject(DEPTNO=[$7], SAL=[$5])
239239
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4], SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
240240
LogicalJoin(condition=[=($7, $9)], joinType=[inner])
241241
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
242242
LogicalValues(tuples=[[{ 1 }, { 3 }, { 2 }, { null }]])
243-
!sub-plan "NONE, FILTER_SUB_QUERY_TO_CORRELATE, AGGREGATE_VALUES"
243+
!sub-plan "FILTER_SUB_QUERY_TO_CORRELATE, AGGREGATE_VALUES"
244244

245245
# testEmptyAggregateEmptyKeyWithAggregateValuesRule ----------------------------
246246
# AGGREGATE_VALUES replaces an empty-key Aggregate over empty Values with a
@@ -264,15 +264,15 @@ LogicalAggregate(group=[{}], EXPR$0=[COUNT()], EXPR$1=[SUM($0)])
264264
LogicalProject(EMPNO=[$0])
265265
LogicalFilter(condition=[false])
266266
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
267-
!sub-plan "NONE"
267+
!sub-plan ""
268268
LogicalAggregate(group=[{}], EXPR$0=[COUNT()], EXPR$1=[SUM($0)])
269269
LogicalProject(EMPNO=[$0])
270270
LogicalValues(tuples=[[]])
271-
!sub-plan "NONE, FILTER_REDUCE_EXPRESSIONS"
271+
!sub-plan "FILTER_REDUCE_EXPRESSIONS"
272272
LogicalAggregate(group=[{}], EXPR$0=[COUNT()], EXPR$1=[SUM($0)])
273273
LogicalProject(EMPNO=[$0])
274274
LogicalValues(tuples=[[]])
275-
!sub-plan "NONE, FILTER_REDUCE_EXPRESSIONS, AGGREGATE_VALUES"
275+
!sub-plan "FILTER_REDUCE_EXPRESSIONS, AGGREGATE_VALUES"
276276

277277
# testReduceInValuesNonOrdered -------------------------------------------------
278278
# AGGREGATE_VALUES does not fire when the IN list is small enough that the
@@ -292,14 +292,14 @@ WHERE deptno IN (1,1,3,1,2);
292292
LogicalProject(DEPTNO=[$7], SAL=[$5])
293293
LogicalFilter(condition=[OR(=($7, 1), =($7, 3), =($7, 2))])
294294
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
295-
!sub-plan "NONE"
295+
!sub-plan ""
296296
LogicalProject(DEPTNO=[$7], SAL=[$5])
297297
LogicalFilter(condition=[OR(=($7, 1), =($7, 3), =($7, 2))])
298298
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
299-
!sub-plan "NONE, FILTER_SUB_QUERY_TO_CORRELATE"
299+
!sub-plan "FILTER_SUB_QUERY_TO_CORRELATE"
300300
LogicalProject(DEPTNO=[$7], SAL=[$5])
301301
LogicalFilter(condition=[OR(=($7, 1), =($7, 3), =($7, 2))])
302302
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
303-
!sub-plan "NONE, FILTER_SUB_QUERY_TO_CORRELATE, AGGREGATE_VALUES"
303+
!sub-plan "FILTER_SUB_QUERY_TO_CORRELATE, AGGREGATE_VALUES"
304304

305305
# End aggregate-constants.iq

core/src/test/resources/sql/rule/aggregate-distinct-test.iq

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one or more
2+
# contributor license agreements. See the NOTICE file distributed with
3+
# this work for additional information regarding copyright ownership.
4+
# The ASF licenses this file to you under the Apache License, Version 2.0
5+
# (the "License"); you may not use this file except in compliance with
6+
# the License. You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
#
16+
# Tests the UNION_TO_VALUES rule (and related PROJECT_VALUES_MERGE rule).
17+
#
18+
# Ensure that tests occur in alphabetical order:
19+
# // lint: sort where '^[#] test'
20+
#
21+
122
!use scott
223
!set outputformat mysql
324

0 commit comments

Comments
 (0)