You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2019/10/23 22:32:39 UTC
[calcite] 04/04: Cosmetic
This is an automated email from the ASF dual-hosted git repository.
jhyde pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 1745f752561be04ae34d1fa08593c2d3ba4470e8
Author: Julian Hyde <jh...@apache.org>
AuthorDate: Wed Oct 23 10:43:56 2019 -0700
Cosmetic
Improve fix for [CALCITE-3259]; the previous fix generated spurious
newlines in XML reference files such as SqlToRelConverterTest.xml.
Add newlines into some SQL queries added recently in
SqlToRelConverterTest.
Re-generate SqlToRelConverterTest, putting tests into quasi-alphabetical
order, to prevent merge conflicts, and re-generate "sql" resources
without whitespace at end of lines.
---
.../apache/calcite/sql2rel/InitializerContext.java | 2 +-
.../java/org/apache/calcite/util/XmlOutput.java | 4 +-
.../apache/calcite/test/SqlToRelConverterTest.java | 96 ++++----
.../org/apache/calcite/test/catalog/Fixture.java | 1 +
.../apache/calcite/test/SqlToRelConverterTest.xml | 243 ++++++++++++---------
5 files changed, 189 insertions(+), 157 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/sql2rel/InitializerContext.java b/core/src/main/java/org/apache/calcite/sql2rel/InitializerContext.java
index a93fbf4..9c0414e 100644
--- a/core/src/main/java/org/apache/calcite/sql2rel/InitializerContext.java
+++ b/core/src/main/java/org/apache/calcite/sql2rel/InitializerContext.java
@@ -40,7 +40,7 @@ public interface InitializerContext {
* );
* </pre>
*
- * You can use the string format expression "my_udf(a)" and "a + 1"
+ * <p>You can use the string format expression "my_udf(a)" and "a + 1"
* as the initializer expression of column b and c.
*
* <p>Calcite doesn't really need this now because the DDL nodes
diff --git a/core/src/main/java/org/apache/calcite/util/XmlOutput.java b/core/src/main/java/org/apache/calcite/util/XmlOutput.java
index ad59d68..148c3e4 100644
--- a/core/src/main/java/org/apache/calcite/util/XmlOutput.java
+++ b/core/src/main/java/org/apache/calcite/util/XmlOutput.java
@@ -372,11 +372,11 @@ public class XmlOutput {
out.print(data);
out.println("]]>");
} else if (!specials) {
- out.print(data);
+ out.println(data);
} else {
stringEncodeXML(data, out);
+ out.println();
}
- out.println();
out.flush();
tagsWritten++;
}
diff --git a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
index cd3421a..9a0945d 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
@@ -2790,100 +2790,102 @@ public class SqlToRelConverterTest extends SqlToRelTestBase {
}
/**
- * Test case for <a href="https://issues.apache.org/jira/browse/CALCITE-2962">[CALCITE-2962]
- * RelStructuredTypeFlattener generates wrong types for nested column when flattenProjection</a>.
+ * Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-2962">[CALCITE-2962]
+ * RelStructuredTypeFlattener generates wrong types for nested column when
+ * flattenProjection</a>.
*/
@Test public void testSelectNestedColumnType() {
- final String sql =
- "select\n"
- + " char_length(coord.\"unit\") as unit_length\n"
- + "from\n"
- + " (\n"
- + " select\n"
- + " fname,\n"
- + " coord\n"
- + " from\n"
- + " customer.contact_peek\n"
- + " where\n"
- + " coord.x > 1\n"
- + " and coord.y > 1\n"
- + " ) as view\n"
- + "where\n"
- + " fname = 'john'";
+ final String sql = "select\n"
+ + " char_length(coord.\"unit\") as unit_length\n"
+ + "from\n"
+ + " (\n"
+ + " select\n"
+ + " fname,\n"
+ + " coord\n"
+ + " from\n"
+ + " customer.contact_peek\n"
+ + " where\n"
+ + " coord.x > 1\n"
+ + " and coord.y > 1\n"
+ + " ) as view\n"
+ + "where\n"
+ + " fname = 'john'";
sql(sql).ok();
}
@Test public void testNestedStructFieldAccess() {
- final String sql =
- "select dn.skill['others'] from sales.dept_nested dn";
+ final String sql = "select dn.skill['others']\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
@Test public void testNestedStructPrimitiveFieldAccess() {
- final String sql =
- "select dn.skill['others']['a'] from sales.dept_nested dn";
+ final String sql = "select dn.skill['others']['a']\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
@Test public void testFunctionWithStructInput() {
- final String sql =
- "select json_type(skill) from sales.dept_nested";
+ final String sql = "select json_type(skill)\n"
+ + "from sales.dept_nested";
sql(sql).ok();
}
@Test public void testAggregateFunctionForStructInput() {
- final String sql = "select "
- + "collect(skill) as collect_skill, count(skill) as count_skill, count(*) as count_star, "
- + "approx_count_distinct(skill) as approx_count_distinct_skill, "
- + "max(skill) as max_skill, min(skill) as min_skill, "
- + "any_value(skill) as any_value_skill "
+ final String sql = "select collect(skill) as collect_skill,\n"
+ + " count(skill) as count_skill, count(*) as count_star,\n"
+ + " approx_count_distinct(skill) as approx_count_distinct_skill,\n"
+ + " max(skill) as max_skill, min(skill) as min_skill,\n"
+ + " any_value(skill) as any_value_skill\n"
+ "from sales.dept_nested";
sql(sql).ok();
}
@Test public void testAggregateFunctionForStructInputByName() {
- final String sql = "select "
- + "collect(skill) as collect_skill, count(skill) as count_skill, count(*) as count_star, "
- + "approx_count_distinct(skill) as approx_count_distinct_skill, "
- + "max(skill) as max_skill, min(skill) as min_skill, "
- + "any_value(skill) as any_value_skill "
+ final String sql = "select collect(skill) as collect_skill,\n"
+ + " count(skill) as count_skill, count(*) as count_star,\n"
+ + " approx_count_distinct(skill) as approx_count_distinct_skill,\n"
+ + " max(skill) as max_skill, min(skill) as min_skill,\n"
+ + " any_value(skill) as any_value_skill\n"
+ "from sales.dept_nested group by name";
sql(sql).ok();
}
@Test public void testNestedPrimitiveFieldAccess() {
- final String sql =
- "select dn.skill['desc'] from sales.dept_nested dn";
+ final String sql = "select dn.skill['desc']\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
@Test public void testArrayElementNestedPrimitive() {
- final String sql =
- "select dn.employees[0]['empno'] from sales.dept_nested dn";
+ final String sql = "select dn.employees[0]['empno']\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
@Test public void testArrayElementDoublyNestedPrimitive() {
- final String sql =
- "select dn.employees[0]['detail']['skills'][0]['type'] from sales.dept_nested dn";
+ final String sql = "select dn.employees[0]['detail']['skills'][0]['type']\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
@Test public void testArrayElementDoublyNestedStruct() {
- final String sql =
- "select dn.employees[0]['detail']['skills'][0] from sales.dept_nested dn";
+ final String sql = "select dn.employees[0]['detail']['skills'][0]\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
@Test public void testArrayElementThreeTimesNestedStruct() {
- final String sql =
- "select dn.employees[0]['detail']['skills'][0]['others'] from sales.dept_nested dn";
+ final String sql = ""
+ + "select dn.employees[0]['detail']['skills'][0]['others']\n"
+ + "from sales.dept_nested dn";
sql(sql).ok();
}
-
/**
- * Test case for <a href="https://issues.apache.org/jira/browse/CALCITE-3003">[CALCITE-3003]
+ * Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-3003">[CALCITE-3003]
* AssertionError when GROUP BY nested field</a>.
*/
@Test public void testGroupByNestedColumn() {
@@ -3556,7 +3558,7 @@ public class SqlToRelConverterTest extends SqlToRelTestBase {
@Test public void testProjectAggregatesIgnoreNullsAndNot() {
final String sql = "select lead(sal, 4) IGNORE NULLS, lead(sal, 4) over (w)\n"
- + " from emp window w as (order by empno)";
+ + "from emp window w as (order by empno)";
sql(sql).ok();
}
diff --git a/core/src/test/java/org/apache/calcite/test/catalog/Fixture.java b/core/src/test/java/org/apache/calcite/test/catalog/Fixture.java
index db39b06..33013bf 100644
--- a/core/src/test/java/org/apache/calcite/test/catalog/Fixture.java
+++ b/core/src/test/java/org/apache/calcite/test/catalog/Fixture.java
@@ -163,4 +163,5 @@ abstract class AbstractFixture {
this.typeFactory = typeFactory;
}
}
+
// End Fixture.java
diff --git a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
index bdde39f..34ad975 100644
--- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
@@ -16,6 +16,42 @@ See the License for the specific language governing permissions and
limitations under the License.
-->
<Root>
+ <TestCase name="testAggregateFunctionForStructInput">
+ <Resource name="sql">
+ <![CDATA[select collect(skill) as collect_skill,
+ count(skill) as count_skill, count(*) as count_star,
+ approx_count_distinct(skill) as approx_count_distinct_skill,
+ max(skill) as max_skill, min(skill) as min_skill,
+ any_value(skill) as any_value_skill
+from sales.dept_nested]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(COLLECT_SKILL=[$0], COUNT_SKILL=[$1], COUNT_STAR=[$1], APPROX_COUNT_DISTINCT_SKILL=[$2], MAX_SKILL=[ROW($3.TYPE, $3.DESC, ROW($3.OTHERS.A, $3.OTHERS.B))], MIN_SKILL=[ROW($4.TYPE, $4.DESC, ROW($4.OTHERS.A, $4.OTHERS.B))], ANY_VALUE_SKILL=[ROW($5.TYPE, $5.DESC, ROW($5.OTHERS.A, $5.OTHERS.B))])
+ LogicalAggregate(group=[{}], COLLECT_SKILL=[COLLECT($0)], COUNT_SKILL=[COUNT()], APPROX_COUNT_DISTINCT_SKILL=[COUNT(DISTINCT $0)], MAX_SKILL=[MAX($0)], MIN_SKILL=[MIN($0)], ANY_VALUE_SKILL=[ANY_VALUE($0)])
+ LogicalProject(SKILL=[ROW($2.TYPE, $2.DESC, ROW($2.OTHERS.A, $2.OTHERS.B))])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testAggregateFunctionForStructInputByName">
+ <Resource name="sql">
+ <![CDATA[select collect(skill) as collect_skill,
+ count(skill) as count_skill, count(*) as count_star,
+ approx_count_distinct(skill) as approx_count_distinct_skill,
+ max(skill) as max_skill, min(skill) as min_skill,
+ any_value(skill) as any_value_skill
+from sales.dept_nested group by name]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(COLLECT_SKILL=[$1], COUNT_SKILL=[$2], COUNT_STAR=[$2], APPROX_COUNT_DISTINCT_SKILL=[$3], MAX_SKILL=[ROW($4.TYPE, $4.DESC, ROW($4.OTHERS.A, $4.OTHERS.B))], MIN_SKILL=[ROW($5.TYPE, $5.DESC, ROW($5.OTHERS.A, $5.OTHERS.B))], ANY_VALUE_SKILL=[ROW($6.TYPE, $6.DESC, ROW($6.OTHERS.A, $6.OTHERS.B))])
+ LogicalAggregate(group=[{0}], COLLECT_SKILL=[COLLECT($1)], COUNT_SKILL=[COUNT()], APPROX_COUNT_DISTINCT_SKILL=[COUNT(DISTINCT $1)], MAX_SKILL=[MAX($1)], MIN_SKILL=[MIN($1)], ANY_VALUE_SKILL=[ANY_VALUE($1)])
+ LogicalProject(NAME=[$1], SKILL=[ROW($2.TYPE, $2.DESC, ROW($2.OTHERS.A, $2.OTHERS.B))])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
<TestCase name="testCase">
<Resource name="plan">
<![CDATA[
@@ -213,6 +249,54 @@ from emp
group by deptno]]>
</Resource>
</TestCase>
+ <TestCase name="testArrayElementDoublyNestedPrimitive">
+ <Resource name="sql">
+ <![CDATA[select dn.employees[0]['detail']['skills'][0]['type']
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[ITEM(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0), 'type')])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testArrayElementDoublyNestedStruct">
+ <Resource name="sql">
+ <![CDATA[select dn.employees[0]['detail']['skills'][0]
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[ROW(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).TYPE, ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).DESC, ROW(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.A, ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.B))])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testArrayElementNestedPrimitive">
+ <Resource name="sql">
+ <![CDATA[select dn.employees[0]['empno']
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[ITEM(ITEM($3, 0), 'empno')])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testArrayElementThreeTimesNestedStruct">
+ <Resource name="sql">
+ <![CDATA[select dn.employees[0]['detail']['skills'][0]['others']
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[ROW(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.A, ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.B)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
<TestCase name="testCollectionTableWithLateral">
<Resource name="sql">
<![CDATA[select * from dept, lateral table(ramp(dept.deptno))]]>
@@ -882,62 +966,6 @@ LogicalProject(ZIP=[$3])
<![CDATA[select empa.home_address.zip from sales.emp_address empa where empa.home_address.city = 'abc']]>
</Resource>
</TestCase>
- <TestCase name="testNestedStructFieldAccess">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[ROW($2.OTHERS.A, $2.OTHERS.B)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testNestedStructPrimitiveFieldAccess">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[$2.OTHERS.A])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testNestedPrimitiveFieldAccess">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[$2.DESC])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testArrayElementNestedPrimitive">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[ITEM(ITEM($3, 0), 'empno')])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testArrayElementDoublyNestedPrimitive">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[ITEM(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0), 'type')])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testArrayElementDoublyNestedStruct">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[ROW(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).TYPE, ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).DESC, ROW(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.A, ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.B))])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testArrayElementThreeTimesNestedStruct">
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[ROW(ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.A, ITEM(ITEM(ITEM(ITEM($3, 0), 'detail'), 'skills'), 0).OTHERS.B)])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
<TestCase name="testSelectNestedColumnType">
<Resource name="plan">
<![CDATA[
@@ -1221,6 +1249,18 @@ LogicalProject(NAME=[$0])
]]>
</Resource>
</TestCase>
+ <TestCase name="testFunctionWithStructInput">
+ <Resource name="sql">
+ <![CDATA[select json_type(skill)
+from sales.dept_nested]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[JSON_TYPE(ROW($2.TYPE, $2.DESC, ROW($2.OTHERS.A, $2.OTHERS.B)))])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
<TestCase name="testOrder">
<Resource name="sql">
<![CDATA[select empno from emp order by empno, empno desc]]>
@@ -3432,6 +3472,42 @@ LogicalAggregate(group=[{0}], EXPR$1=[SUM($1) FILTER $2], EXPR$2=[COUNT()])
]]>
</Resource>
</TestCase>
+ <TestCase name="testNestedPrimitiveFieldAccess">
+ <Resource name="sql">
+ <![CDATA[select dn.skill['desc']
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[$2.DESC])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testNestedStructFieldAccess">
+ <Resource name="sql">
+ <![CDATA[select dn.skill['others']
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[ROW($2.OTHERS.A, $2.OTHERS.B)])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
+ <TestCase name="testNestedStructPrimitiveFieldAccess">
+ <Resource name="sql">
+ <![CDATA[select dn.skill['others']['a']
+from sales.dept_nested dn]]>
+ </Resource>
+ <Resource name="plan">
+ <![CDATA[
+LogicalProject(EXPR$0=[$2.OTHERS.A])
+ LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
+]]>
+ </Resource>
+ </TestCase>
<TestCase name="testSimplifyExistsAggregateSubQuery">
<Resource name="sql">
<![CDATA[SELECT e1.empno
@@ -4747,7 +4823,7 @@ LogicalTableModify(table=[[CATALOG, SALES, EMP]], operation=[UPDATE], updateColu
<TestCase name="testUpdateSubQueryWithNotIn">
<Resource name="sql">
<![CDATA[update emp
-set empno = 1 where empno not in(
+set empno = 1 where empno not in (
select empno from emp where empno=2)]]>
</Resource>
<Resource name="plan">
@@ -4768,8 +4844,8 @@ LogicalTableModify(table=[[CATALOG, SALES, EMP]], operation=[UPDATE], updateColu
<TestCase name="testUpdateSubQueryWithIn1">
<Resource name="sql">
<![CDATA[update emp
-set empno = 1 where empno in (
- select empno from emp where empno=2)]]>
+set empno = 1 where emp.empno in (
+ select emp.empno from emp where emp.empno=2)]]>
</Resource>
<Resource name="plan">
<![CDATA[
@@ -6248,7 +6324,7 @@ LogicalProject(C=[$0], N=[$1])
<TestCase name="testProjectApproximateAndExactAggregates">
<Resource name="sql">
<![CDATA[SELECT empno, count(distinct ename),
-approx_count_distinct(ename) "
+approx_count_distinct(ename)
FROM emp
GROUP BY empno]]>
</Resource>
@@ -6272,51 +6348,4 @@ LogicalProject(EXPR$0=[IGNORE NULLS(LEAD($5, 4))], EXPR$1=[LEAD($5, 4) OVER (ORD
]]>
</Resource>
</TestCase>
- <TestCase name="testFunctionWithStructInput">
- <Resource name="sql">
- <![CDATA[select json_type(skill) from sales.dept_nested]]>
- </Resource>
- <Resource name="plan">
- <![CDATA[
-LogicalProject(EXPR$0=[JSON_TYPE(ROW($2.TYPE, $2.DESC, ROW($2.OTHERS.A, $2.OTHERS.B)))])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testAggregateFunctionForStructInput">
- <Resource name="sql">
- <![CDATA[select
- collect(skill) as collect_skill, count(skill) as count_skill, count(*) as count_star,
- approx_count_distinct(skill) as approx_count_distinct_skill,
- max(skill) as max_skill, min(skill) as min_skill,
- any_value(skill) as any_value_skill
- from sales.dept_nested]]>
- </Resource>
- <Resource name="plan">
- <![CDATA[
-LogicalProject(COLLECT_SKILL=[$0], COUNT_SKILL=[$1], COUNT_STAR=[$1], APPROX_COUNT_DISTINCT_SKILL=[$2], MAX_SKILL=[ROW($3.TYPE, $3.DESC, ROW($3.OTHERS.A, $3.OTHERS.B))], MIN_SKILL=[ROW($4.TYPE, $4.DESC, ROW($4.OTHERS.A, $4.OTHERS.B))], ANY_VALUE_SKILL=[ROW($5.TYPE, $5.DESC, ROW($5.OTHERS.A, $5.OTHERS.B))])
- LogicalAggregate(group=[{}], COLLECT_SKILL=[COLLECT($0)], COUNT_SKILL=[COUNT()], APPROX_COUNT_DISTINCT_SKILL=[COUNT(DISTINCT $0)], MAX_SKILL=[MAX($0)], MIN_SKILL=[MIN($0)], ANY_VALUE_SKILL=[ANY_VALUE($0)])
- LogicalProject(SKILL=[ROW($2.TYPE, $2.DESC, ROW($2.OTHERS.A, $2.OTHERS.B))])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
- <TestCase name="testAggregateFunctionForStructInputByName">
- <Resource name="sql">
- <![CDATA[select
- collect(skill) as collect_skill, count(skill) as count_skill, count(*) as count_star,
- approx_count_distinct(skill) as approx_count_distinct_skill,
- max(skill) as max_skill, min(skill) as min_skill,
- any_value(skill) as any_value_skill
- from sales.dept_nested group by name]]>
- </Resource>
- <Resource name="plan">
- <![CDATA[
-LogicalProject(COLLECT_SKILL=[$1], COUNT_SKILL=[$2], COUNT_STAR=[$2], APPROX_COUNT_DISTINCT_SKILL=[$3], MAX_SKILL=[ROW($4.TYPE, $4.DESC, ROW($4.OTHERS.A, $4.OTHERS.B))], MIN_SKILL=[ROW($5.TYPE, $5.DESC, ROW($5.OTHERS.A, $5.OTHERS.B))], ANY_VALUE_SKILL=[ROW($6.TYPE, $6.DESC, ROW($6.OTHERS.A, $6.OTHERS.B))])
- LogicalAggregate(group=[{0}], COLLECT_SKILL=[COLLECT($1)], COUNT_SKILL=[COUNT()], APPROX_COUNT_DISTINCT_SKILL=[COUNT(DISTINCT $1)], MAX_SKILL=[MAX($1)], MIN_SKILL=[MIN($1)], ANY_VALUE_SKILL=[ANY_VALUE($1)])
- LogicalProject(NAME=[$1], SKILL=[ROW($2.TYPE, $2.DESC, ROW($2.OTHERS.A, $2.OTHERS.B))])
- LogicalTableScan(table=[[CATALOG, SALES, DEPT_NESTED]])
-]]>
- </Resource>
- </TestCase>
</Root>