This is an automated email from the ASF dual-hosted git repository.
caolu pushed a commit to branch kylin5
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/kylin5 by this push:
new ac82fff263 KYLIN-6047 Support Row operator conversion
ac82fff263 is described below
commit ac82fff263808e666567f3b8800da2f4b36b09a3
Author: Guoliang Sun <[email protected]>
AuthorDate: Fri Nov 8 14:20:30 2024 +0800
KYLIN-6047 Support Row operator conversion
---
.../apache/kylin/auto/NAutoBuildAndQueryTest.java | 12 +++++
.../test/resources/query/sql_in_row/query01.sql | 60 ++++++++++++++++++++++
.../test/resources/query/sql_in_row/query02.sql | 56 ++++++++++++++++++++
.../sql_in_row/result-DEFAULT/query01.sql.json | 30 +++++++++++
.../sql_in_row/result-DEFAULT/query01.sql.schema | 1 +
.../sql_in_row/result-DEFAULT/query02.sql.json | 30 +++++++++++
.../sql_in_row/result-DEFAULT/query02.sql.schema | 1 +
.../kylin/query/runtime/ExpressionConverter.scala | 30 +++++++++--
.../sql/execution/SparkQueryMetricUtilsSuite.scala | 1 +
9 files changed, 217 insertions(+), 4 deletions(-)
diff --git
a/src/kylin-it/src/test/java/org/apache/kylin/auto/NAutoBuildAndQueryTest.java
b/src/kylin-it/src/test/java/org/apache/kylin/auto/NAutoBuildAndQueryTest.java
index c716b10cde..67750287d0 100644
---
a/src/kylin-it/src/test/java/org/apache/kylin/auto/NAutoBuildAndQueryTest.java
+++
b/src/kylin-it/src/test/java/org/apache/kylin/auto/NAutoBuildAndQueryTest.java
@@ -507,4 +507,16 @@ public class NAutoBuildAndQueryTest extends
SuggestTestBase {
new TestScenario(CompareLevel.SAME,
"query/sql_agg_left_join").execute();
}
+ @Test
+ public void testInRowOperator() throws Exception {
+ // run gluten, after KE-44563 is fixed
+ ExecAndCompExt.currentTestGlutenDisabledSqls.set(Sets.newHashSet(
+ "src/test/resources/query/sql_in_row/query01.sql",
+ "src/test/resources/query/sql_in_row/query02.sql"));
+
+ new TestScenario(CompareLevel.SAME, "query/sql_in_row").execute();
+
+ ExecAndCompExt.currentTestGlutenDisabledSqls.remove();
+ }
+
}
diff --git a/src/kylin-it/src/test/resources/query/sql_in_row/query01.sql
b/src/kylin-it/src/test/resources/query/sql_in_row/query01.sql
new file mode 100644
index 0000000000..362df8620e
--- /dev/null
+++ b/src/kylin-it/src/test/resources/query/sql_in_row/query01.sql
@@ -0,0 +1,60 @@
+--
+-- Copyright (C) 2020 Kyligence Inc. All rights reserved.
+--
+-- http://kyligence.io
+--
+-- This software is the confidential and proprietary information of
+-- Kyligence Inc. ("Confidential Information"). You shall not disclose
+-- such Confidential Information and shall use it only in accordance
+-- with the terms of the license agreement you entered into with
+-- Kyligence Inc.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+-- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--
+
+-- Other tests see following
+-- ExactlyMatchTest.testInClause
+-- AutoTpchTest.testTpch
+-- query/sql_in
+select *
+from test_kylin_fact
+where (lstg_format_name, test_count_distinct_bitmap)
+ in (
+ ('FP-GTC', 'TEST1'),
+ ('FP-GTC', 'TEST2'),
+ ('FP-GTC', 'TEST3'),
+ ('FP-GTC', 'TEST4'),
+ ('FP-GTC', 'TEST5'),
+ ('FP-GTC', 'TEST421'),
+ ('FP-GTC', 'TEST703'),
+ ('FP-GTC', 'TEST303'),
+ ('FP-GTC', 'TEST755'),
+ ('FP-GTC', 'TEST851'),
+ ('FP-GTC', 'TEST204'),
+ ('FP-GTC', 'TEST29'),
+ ('FP-GTC', 'TEST658'),
+ ('FP-GTC', 'TEST405'),
+ ('FP-GTC', 'TEST16'),
+ ('FP-GTC', 'TEST17'),
+ ('FP-GTC', 'TEST18'),
+ ('FP-GTC', 'TEST19'),
+ ('FP-GTC', 'TEST20'),
+ ('FP-GTC', 'TEST520'),
+ ('FP-GTC', 'TEST521'),
+ ('FP-GTC', 'TEST522'),
+ ('Auction', 'TEST134'),
+ ('Auction', 'TEST415'),
+ ('Auction', 'TEST876')
+ )
+ or lstg_format_name in ('ABIN')
+order by trans_id limit 30;
diff --git a/src/kylin-it/src/test/resources/query/sql_in_row/query02.sql
b/src/kylin-it/src/test/resources/query/sql_in_row/query02.sql
new file mode 100644
index 0000000000..4bb4f39f9a
--- /dev/null
+++ b/src/kylin-it/src/test/resources/query/sql_in_row/query02.sql
@@ -0,0 +1,56 @@
+--
+-- Copyright (C) 2020 Kyligence Inc. All rights reserved.
+--
+-- http://kyligence.io
+--
+-- This software is the confidential and proprietary information of
+-- Kyligence Inc. ("Confidential Information"). You shall not disclose
+-- such Confidential Information and shall use it only in accordance
+-- with the terms of the license agreement you entered into with
+-- Kyligence Inc.
+--
+-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+-- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+-- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+-- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+--
+
+select *
+from test_kylin_fact
+where (lstg_format_name, test_count_distinct_bitmap)
+ not in (
+ ('FP-GTC', 'TEST1'),
+ ('FP-GTC', 'TEST2'),
+ ('FP-GTC', 'TEST3'),
+ ('FP-GTC', 'TEST4'),
+ ('FP-GTC', 'TEST5'),
+ ('FP-GTC', 'TEST421'),
+ ('FP-GTC', 'TEST703'),
+ ('FP-GTC', 'TEST303'),
+ ('FP-GTC', 'TEST755'),
+ ('FP-GTC', 'TEST851'),
+ ('FP-GTC', 'TEST204'),
+ ('FP-GTC', 'TEST29'),
+ ('FP-GTC', 'TEST658'),
+ ('FP-GTC', 'TEST405'),
+ ('FP-GTC', 'TEST16'),
+ ('FP-GTC', 'TEST17'),
+ ('FP-GTC', 'TEST18'),
+ ('FP-GTC', 'TEST19'),
+ ('FP-GTC', 'TEST20'),
+ ('FP-GTC', 'TEST520'),
+ ('FP-GTC', 'TEST521'),
+ ('FP-GTC', 'TEST522'),
+ ('Auction', 'TEST134'),
+ ('Auction', 'TEST415'),
+ ('Auction', 'TEST876')
+ )
+ or lstg_format_name in ('ABIN')
+order by trans_id limit 30;
diff --git
a/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query01.sql.json
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query01.sql.json
new file mode 100644
index 0000000000..e31c18236d
--- /dev/null
+++
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query01.sql.json
@@ -0,0 +1,30 @@
+{"TRANS_ID":0,"ORDER_ID":4709,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":95672,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":16,"SELLER_ID":10000233,"PRICE":290.4800,"ITEM_COUNT":486,"TEST_COUNT_DISTINCT_BITMAP":"TEST421","IS_EFFECTUAL":true}
+{"TRANS_ID":3,"ORDER_ID":3928,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":20485,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":5,"SELLER_ID":10000291,"PRICE":371.4700,"ITEM_COUNT":752,"TEST_COUNT_DISTINCT_BITMAP":"TEST916","IS_EFFECTUAL":true}
+{"TRANS_ID":5,"ORDER_ID":2073,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":62179,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":15,"SELLER_ID":10000336,"PRICE":439.0500,"ITEM_COUNT":861,"TEST_COUNT_DISTINCT_BITMAP":"TEST303","IS_EFFECTUAL":true}
+{"TRANS_ID":6,"ORDER_ID":735,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"FP-GTC","LEAF_CATEG_ID":158798,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":-99,"SELLER_ID":10000780,"PRICE":315.6300,"ITEM_COUNT":692,"TEST_COUNT_DISTINCT_BITMAP":"TEST755","IS_EFFECTUAL":true}
+{"TRANS_ID":8,"ORDER_ID":861,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":11554,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":13,"SELLER_ID":10000838,"PRICE":570.5100,"ITEM_COUNT":970,"TEST_COUNT_DISTINCT_BITMAP":"TEST204","IS_EFFECTUAL":false}
+{"TRANS_ID":11,"ORDER_ID":4362,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":175750,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":12,"SELLER_ID":10000096,"PRICE":218.1400,"ITEM_COUNT":668,"TEST_COUNT_DISTINCT_BITMAP":"TEST129","IS_EFFECTUAL":false}
+{"TRANS_ID":12,"ORDER_ID":2273,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"FP-GTC","LEAF_CATEG_ID":62179,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":11,"SELLER_ID":10000891,"PRICE":547.0600,"ITEM_COUNT":107,"TEST_COUNT_DISTINCT_BITMAP":"TEST405","IS_EFFECTUAL":true}
+{"TRANS_ID":13,"ORDER_ID":3591,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":95672,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":5,"SELLER_ID":10000454,"PRICE":304.8800,"ITEM_COUNT":434,"TEST_COUNT_DISTINCT_BITMAP":"TEST747","IS_EFFECTUAL":true}
+{"TRANS_ID":14,"ORDER_ID":4134,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":1357,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":5,"SELLER_ID":10000990,"PRICE":99.7900,"ITEM_COUNT":69,"TEST_COUNT_DISTINCT_BITMAP":"TEST394","IS_EFFECTUAL":false}
+{"TRANS_ID":16,"ORDER_ID":3451,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":40059,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":13,"SELLER_ID":10000206,"PRICE":133.9200,"ITEM_COUNT":165,"TEST_COUNT_DISTINCT_BITMAP":"TEST86","IS_EFFECTUAL":true}
+{"TRANS_ID":18,"ORDER_ID":128,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":20485,"LSTG_SITE_ID":101,"SLR_SEGMENT_CD":16,"SELLER_ID":10000970,"PRICE":-74.9000,"ITEM_COUNT":989,"TEST_COUNT_DISTINCT_BITMAP":"TEST202","IS_EFFECTUAL":true}
+{"TRANS_ID":19,"ORDER_ID":825,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":24541,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":14,"SELLER_ID":10000048,"PRICE":779.0200,"ITEM_COUNT":516,"TEST_COUNT_DISTINCT_BITMAP":"TEST684","IS_EFFECTUAL":false}
+{"TRANS_ID":26,"ORDER_ID":4406,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":9426,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":13,"SELLER_ID":10000535,"PRICE":706.1500,"ITEM_COUNT":487,"TEST_COUNT_DISTINCT_BITMAP":"TEST134","IS_EFFECTUAL":false}
+{"TRANS_ID":27,"ORDER_ID":3792,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":75665,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":12,"SELLER_ID":10000042,"PRICE":886.1400,"ITEM_COUNT":428,"TEST_COUNT_DISTINCT_BITMAP":"TEST202","IS_EFFECTUAL":true}
+{"TRANS_ID":28,"ORDER_ID":3111,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":20865,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":11,"SELLER_ID":10000045,"PRICE":758.8300,"ITEM_COUNT":326,"TEST_COUNT_DISTINCT_BITMAP":"TEST415","IS_EFFECTUAL":false}
+{"TRANS_ID":32,"ORDER_ID":2910,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":95173,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":-99,"SELLER_ID":10000171,"PRICE":863.6200,"ITEM_COUNT":290,"TEST_COUNT_DISTINCT_BITMAP":"TEST399","IS_EFFECTUAL":false}
+{"TRANS_ID":33,"ORDER_ID":1356,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":145970,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":13,"SELLER_ID":10000935,"PRICE":104.0300,"ITEM_COUNT":771,"TEST_COUNT_DISTINCT_BITMAP":"TEST991","IS_EFFECTUAL":true}
+{"TRANS_ID":34,"ORDER_ID":4419,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"FP-GTC","LEAF_CATEG_ID":32996,"LSTG_SITE_ID":15,"SLR_SEGMENT_CD":16,"SELLER_ID":10000559,"PRICE":744.0700,"ITEM_COUNT":324,"TEST_COUNT_DISTINCT_BITMAP":"TEST521","IS_EFFECTUAL":true}
+{"TRANS_ID":36,"ORDER_ID":1772,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":31519,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":16,"SELLER_ID":10000121,"PRICE":754.5400,"ITEM_COUNT":666,"TEST_COUNT_DISTINCT_BITMAP":"TEST937","IS_EFFECTUAL":false}
+{"TRANS_ID":48,"ORDER_ID":3993,"CAL_DT":"2012-01-05","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":43972,"LSTG_SITE_ID":100,"SLR_SEGMENT_CD":15,"SELLER_ID":10000049,"PRICE":66.4200,"ITEM_COUNT":268,"TEST_COUNT_DISTINCT_BITMAP":"TEST675","IS_EFFECTUAL":false}
+{"TRANS_ID":58,"ORDER_ID":3667,"CAL_DT":"2012-01-06","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":1161,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":5,"SELLER_ID":10000474,"PRICE":-80.2100,"ITEM_COUNT":310,"TEST_COUNT_DISTINCT_BITMAP":"TEST424","IS_EFFECTUAL":true}
+{"TRANS_ID":62,"ORDER_ID":456,"CAL_DT":"2012-01-06","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":26249,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":-99,"SELLER_ID":10000804,"PRICE":735.3200,"ITEM_COUNT":141,"TEST_COUNT_DISTINCT_BITMAP":"TEST420","IS_EFFECTUAL":true}
+{"TRANS_ID":67,"ORDER_ID":1765,"CAL_DT":"2012-01-06","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":170083,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":12,"SELLER_ID":10000784,"PRICE":518.6000,"ITEM_COUNT":639,"TEST_COUNT_DISTINCT_BITMAP":"TEST363","IS_EFFECTUAL":true}
+{"TRANS_ID":69,"ORDER_ID":1302,"CAL_DT":"2012-01-06","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":25147,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":11,"SELLER_ID":10000903,"PRICE":397.8000,"ITEM_COUNT":87,"TEST_COUNT_DISTINCT_BITMAP":"TEST703","IS_EFFECTUAL":true}
+{"TRANS_ID":74,"ORDER_ID":2072,"CAL_DT":"2012-01-07","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":53064,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":11,"SELLER_ID":10000683,"PRICE":-18.2200,"ITEM_COUNT":26,"TEST_COUNT_DISTINCT_BITMAP":"TEST134","IS_EFFECTUAL":true}
+{"TRANS_ID":77,"ORDER_ID":4813,"CAL_DT":"2012-01-07","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":88750,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":14,"SELLER_ID":10000574,"PRICE":997.4700,"ITEM_COUNT":362,"TEST_COUNT_DISTINCT_BITMAP":"TEST643","IS_EFFECTUAL":false}
+{"TRANS_ID":91,"ORDER_ID":731,"CAL_DT":"2012-01-08","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":66767,"LSTG_SITE_ID":15,"SLR_SEGMENT_CD":12,"SELLER_ID":10000470,"PRICE":469.7500,"ITEM_COUNT":306,"TEST_COUNT_DISTINCT_BITMAP":"TEST528","IS_EFFECTUAL":false}
+{"TRANS_ID":100,"ORDER_ID":4570,"CAL_DT":"2012-01-08","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":759,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":15,"SELLER_ID":10000504,"PRICE":439.5600,"ITEM_COUNT":90,"TEST_COUNT_DISTINCT_BITMAP":"TEST347","IS_EFFECTUAL":true}
+{"TRANS_ID":104,"ORDER_ID":3336,"CAL_DT":"2012-01-09","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":80135,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":13,"SELLER_ID":10000305,"PRICE":806.7800,"ITEM_COUNT":113,"TEST_COUNT_DISTINCT_BITMAP":"TEST499","IS_EFFECTUAL":true}
+{"TRANS_ID":108,"ORDER_ID":473,"CAL_DT":"2012-01-09","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":38238,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":12,"SELLER_ID":10000499,"PRICE":856.1800,"ITEM_COUNT":517,"TEST_COUNT_DISTINCT_BITMAP":"TEST260","IS_EFFECTUAL":true}
diff --git
a/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query01.sql.schema
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query01.sql.schema
new file mode 100644
index 0000000000..64de148fbe
--- /dev/null
+++
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query01.sql.schema
@@ -0,0 +1 @@
+TRANS_ID BIGINT,ORDER_ID BIGINT,CAL_DT DATE,LSTG_FORMAT_NAME
STRING,LEAF_CATEG_ID BIGINT,LSTG_SITE_ID INT,SLR_SEGMENT_CD SMALLINT,SELLER_ID
INT,PRICE DECIMAL(19,4),ITEM_COUNT INT,TEST_COUNT_DISTINCT_BITMAP
STRING,IS_EFFECTUAL BOOLEAN
\ No newline at end of file
diff --git
a/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query02.sql.json
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query02.sql.json
new file mode 100644
index 0000000000..c8753a60ce
--- /dev/null
+++
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query02.sql.json
@@ -0,0 +1,30 @@
+{"TRANS_ID":0,"ORDER_ID":4709,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":95672,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":16,"SELLER_ID":10000233,"PRICE":290.4800,"ITEM_COUNT":486,"TEST_COUNT_DISTINCT_BITMAP":"TEST421","IS_EFFECTUAL":true}
+{"TRANS_ID":1,"ORDER_ID":3252,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":35570,"LSTG_SITE_ID":100,"SLR_SEGMENT_CD":15,"SELLER_ID":10000568,"PRICE":444.4200,"ITEM_COUNT":376,"TEST_COUNT_DISTINCT_BITMAP":"TEST703","IS_EFFECTUAL":true}
+{"TRANS_ID":2,"ORDER_ID":356,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":140746,"LSTG_SITE_ID":100,"SLR_SEGMENT_CD":13,"SELLER_ID":10000127,"PRICE":269.8700,"ITEM_COUNT":670,"TEST_COUNT_DISTINCT_BITMAP":"TEST884","IS_EFFECTUAL":true}
+{"TRANS_ID":3,"ORDER_ID":3928,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":20485,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":5,"SELLER_ID":10000291,"PRICE":371.4700,"ITEM_COUNT":752,"TEST_COUNT_DISTINCT_BITMAP":"TEST916","IS_EFFECTUAL":true}
+{"TRANS_ID":4,"ORDER_ID":2662,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":1349,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":14,"SELLER_ID":10000029,"PRICE":47.4900,"ITEM_COUNT":452,"TEST_COUNT_DISTINCT_BITMAP":"TEST252","IS_EFFECTUAL":true}
+{"TRANS_ID":5,"ORDER_ID":2073,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":62179,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":15,"SELLER_ID":10000336,"PRICE":439.0500,"ITEM_COUNT":861,"TEST_COUNT_DISTINCT_BITMAP":"TEST303","IS_EFFECTUAL":true}
+{"TRANS_ID":7,"ORDER_ID":4366,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"FP-non
GTC","LEAF_CATEG_ID":95173,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":16,"SELLER_ID":10000392,"PRICE":623.4500,"ITEM_COUNT":293,"TEST_COUNT_DISTINCT_BITMAP":"TEST851","IS_EFFECTUAL":false}
+{"TRANS_ID":8,"ORDER_ID":861,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":11554,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":13,"SELLER_ID":10000838,"PRICE":570.5100,"ITEM_COUNT":970,"TEST_COUNT_DISTINCT_BITMAP":"TEST204","IS_EFFECTUAL":false}
+{"TRANS_ID":9,"ORDER_ID":1224,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"FP-non
GTC","LEAF_CATEG_ID":148324,"LSTG_SITE_ID":15,"SLR_SEGMENT_CD":16,"SELLER_ID":10000141,"PRICE":141.2800,"ITEM_COUNT":831,"TEST_COUNT_DISTINCT_BITMAP":"TEST29","IS_EFFECTUAL":true}
+{"TRANS_ID":10,"ORDER_ID":333,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":963,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":16,"SELLER_ID":10000405,"PRICE":388.5400,"ITEM_COUNT":656,"TEST_COUNT_DISTINCT_BITMAP":"TEST658","IS_EFFECTUAL":false}
+{"TRANS_ID":11,"ORDER_ID":4362,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":175750,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":12,"SELLER_ID":10000096,"PRICE":218.1400,"ITEM_COUNT":668,"TEST_COUNT_DISTINCT_BITMAP":"TEST129","IS_EFFECTUAL":false}
+{"TRANS_ID":13,"ORDER_ID":3591,"CAL_DT":"2012-01-01","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":95672,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":5,"SELLER_ID":10000454,"PRICE":304.8800,"ITEM_COUNT":434,"TEST_COUNT_DISTINCT_BITMAP":"TEST747","IS_EFFECTUAL":true}
+{"TRANS_ID":14,"ORDER_ID":4134,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":1357,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":5,"SELLER_ID":10000990,"PRICE":99.7900,"ITEM_COUNT":69,"TEST_COUNT_DISTINCT_BITMAP":"TEST394","IS_EFFECTUAL":false}
+{"TRANS_ID":15,"ORDER_ID":4842,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"FP-GTC","LEAF_CATEG_ID":10058,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":12,"SELLER_ID":10000628,"PRICE":63.5400,"ITEM_COUNT":554,"TEST_COUNT_DISTINCT_BITMAP":"TEST244","IS_EFFECTUAL":true}
+{"TRANS_ID":16,"ORDER_ID":3451,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":40059,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":13,"SELLER_ID":10000206,"PRICE":133.9200,"ITEM_COUNT":165,"TEST_COUNT_DISTINCT_BITMAP":"TEST86","IS_EFFECTUAL":true}
+{"TRANS_ID":17,"ORDER_ID":4988,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":103178,"LSTG_SITE_ID":15,"SLR_SEGMENT_CD":-99,"SELLER_ID":10000686,"PRICE":448.1200,"ITEM_COUNT":381,"TEST_COUNT_DISTINCT_BITMAP":"TEST520","IS_EFFECTUAL":false}
+{"TRANS_ID":18,"ORDER_ID":128,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":20485,"LSTG_SITE_ID":101,"SLR_SEGMENT_CD":16,"SELLER_ID":10000970,"PRICE":-74.9000,"ITEM_COUNT":989,"TEST_COUNT_DISTINCT_BITMAP":"TEST202","IS_EFFECTUAL":true}
+{"TRANS_ID":19,"ORDER_ID":825,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":24541,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":14,"SELLER_ID":10000048,"PRICE":779.0200,"ITEM_COUNT":516,"TEST_COUNT_DISTINCT_BITMAP":"TEST684","IS_EFFECTUAL":false}
+{"TRANS_ID":20,"ORDER_ID":1829,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":95672,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":-99,"SELLER_ID":10000520,"PRICE":729.5600,"ITEM_COUNT":339,"TEST_COUNT_DISTINCT_BITMAP":"TEST835","IS_EFFECTUAL":false}
+{"TRANS_ID":21,"ORDER_ID":963,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"FP-non
GTC","LEAF_CATEG_ID":16509,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":12,"SELLER_ID":10000719,"PRICE":819.1900,"ITEM_COUNT":953,"TEST_COUNT_DISTINCT_BITMAP":"TEST252","IS_EFFECTUAL":true}
+{"TRANS_ID":22,"ORDER_ID":2616,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"FP-GTC","LEAF_CATEG_ID":75665,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":15,"SELLER_ID":10000085,"PRICE":782.6000,"ITEM_COUNT":430,"TEST_COUNT_DISTINCT_BITMAP":"TEST745","IS_EFFECTUAL":false}
+{"TRANS_ID":23,"ORDER_ID":4086,"CAL_DT":"2012-01-02","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":63889,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":5,"SELLER_ID":10000795,"PRICE":-68.5400,"ITEM_COUNT":270,"TEST_COUNT_DISTINCT_BITMAP":"TEST488","IS_EFFECTUAL":false}
+{"TRANS_ID":24,"ORDER_ID":841,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"Others","LEAF_CATEG_ID":174053,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":16,"SELLER_ID":10000364,"PRICE":78.3400,"ITEM_COUNT":133,"TEST_COUNT_DISTINCT_BITMAP":"TEST586","IS_EFFECTUAL":true}
+{"TRANS_ID":25,"ORDER_ID":405,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"Others","LEAF_CATEG_ID":155226,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":13,"SELLER_ID":10000019,"PRICE":340.5900,"ITEM_COUNT":866,"TEST_COUNT_DISTINCT_BITMAP":"TEST585","IS_EFFECTUAL":true}
+{"TRANS_ID":26,"ORDER_ID":4406,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":9426,"LSTG_SITE_ID":3,"SLR_SEGMENT_CD":13,"SELLER_ID":10000535,"PRICE":706.1500,"ITEM_COUNT":487,"TEST_COUNT_DISTINCT_BITMAP":"TEST134","IS_EFFECTUAL":false}
+{"TRANS_ID":27,"ORDER_ID":3792,"CAL_DT":"2012-01-03","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":75665,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":12,"SELLER_ID":10000042,"PRICE":886.1400,"ITEM_COUNT":428,"TEST_COUNT_DISTINCT_BITMAP":"TEST202","IS_EFFECTUAL":true}
+{"TRANS_ID":29,"ORDER_ID":4246,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"FP-GTC","LEAF_CATEG_ID":95173,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":11,"SELLER_ID":10000088,"PRICE":875.9400,"ITEM_COUNT":895,"TEST_COUNT_DISTINCT_BITMAP":"TEST876","IS_EFFECTUAL":true}
+{"TRANS_ID":30,"ORDER_ID":3966,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"Auction","LEAF_CATEG_ID":24760,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":14,"SELLER_ID":10000745,"PRICE":670.7600,"ITEM_COUNT":672,"TEST_COUNT_DISTINCT_BITMAP":"TEST268","IS_EFFECTUAL":false}
+{"TRANS_ID":31,"ORDER_ID":4224,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"Others","LEAF_CATEG_ID":20485,"LSTG_SITE_ID":101,"SLR_SEGMENT_CD":13,"SELLER_ID":10000864,"PRICE":388.6300,"ITEM_COUNT":720,"TEST_COUNT_DISTINCT_BITMAP":"TEST976","IS_EFFECTUAL":false}
+{"TRANS_ID":32,"ORDER_ID":2910,"CAL_DT":"2012-01-04","LSTG_FORMAT_NAME":"ABIN","LEAF_CATEG_ID":95173,"LSTG_SITE_ID":0,"SLR_SEGMENT_CD":-99,"SELLER_ID":10000171,"PRICE":863.6200,"ITEM_COUNT":290,"TEST_COUNT_DISTINCT_BITMAP":"TEST399","IS_EFFECTUAL":false}
diff --git
a/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query02.sql.schema
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query02.sql.schema
new file mode 100644
index 0000000000..64de148fbe
--- /dev/null
+++
b/src/kylin-it/src/test/resources/query/sql_in_row/result-DEFAULT/query02.sql.schema
@@ -0,0 +1 @@
+TRANS_ID BIGINT,ORDER_ID BIGINT,CAL_DT DATE,LSTG_FORMAT_NAME
STRING,LEAF_CATEG_ID BIGINT,LSTG_SITE_ID INT,SLR_SEGMENT_CD SMALLINT,SELLER_ID
INT,PRICE DECIMAL(19,4),ITEM_COUNT INT,TEST_COUNT_DISTINCT_BITMAP
STRING,IS_EFFECTUAL BOOLEAN
\ No newline at end of file
diff --git
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
index 6b4e86fbc7..e4d9b0dab1 100644
---
a/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
+++
b/src/spark-project/sparder/src/main/scala/org/apache/kylin/query/runtime/ExpressionConverter.scala
@@ -26,6 +26,7 @@ import org.apache.kylin.common.KylinConfig
import org.apache.kylin.query.util.UnsupportedSparkFunctionException
import org.apache.spark.sql.Column
import org.apache.spark.sql.KapFunctions._
+import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute
import org.apache.spark.sql.catalyst.expressions._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.util.SparderTypeUtil
@@ -135,11 +136,28 @@ object ExpressionConverter {
case MINUS_PREFIX =>
assert(children.size == 1)
negate(k_lit(children.head))
- case IN => val values = children.drop(1).map(c => k_lit(c).expr)
- in(k_lit(children.head).expr, values)
+ case IN =>
+ val (columns, values) = children.map(c => k_lit(c).expr).partition {
+ case _: AttributeReference | _: UnresolvedAttribute => true
+ case _ => false
+ }
+ if (columns.size > 1) {
+ in(CreateStruct(columns), values)
+ } else {
+ val values = children.drop(1).map(c => k_lit(c).expr)
+ in(k_lit(children.head).expr, values)
+ }
case NOT_IN =>
- val values = children.drop(1).map(c => k_lit(c).expr)
- not(in(k_lit(children.head).expr, values))
+ val (columns, values) = children.map(c => k_lit(c).expr).partition {
+ case _: AttributeReference | _: UnresolvedAttribute => true
+ case _ => false
+ }
+ if (columns.size > 1) {
+ not(in(CreateStruct(columns), values))
+ } else {
+ val values = children.drop(1).map(c => k_lit(c).expr)
+ not(in(k_lit(children.head).expr, values))
+ }
case DIVIDE =>
assert(children.size == 2)
k_lit(children.head).divide(k_lit(children.last))
@@ -292,6 +310,10 @@ object ExpressionConverter {
}
case ARRAY_VALUE_CONSTRUCTOR =>
array(children.map(child => k_lit(child)): _*)
+ case ROW =>
+ call_udf("named_struct", children.zipWithIndex.flatMap { case (child,
i) =>
+ Seq(lit(s"col${i + 1}"), k_lit(child))
+ }: _*)
case IS_NOT_DISTINCT_FROM =>
k_lit(children.head).eqNullSafe(k_lit(children.apply(1)))
// TDVT SQL626 - null compare with true/false is special
diff --git
a/src/spark-project/sparder/src/test/scala/org/apache/spark/sql/execution/SparkQueryMetricUtilsSuite.scala
b/src/spark-project/sparder/src/test/scala/org/apache/spark/sql/execution/SparkQueryMetricUtilsSuite.scala
index 7fcdd4f1f6..86a7ad5c03 100644
---
a/src/spark-project/sparder/src/test/scala/org/apache/spark/sql/execution/SparkQueryMetricUtilsSuite.scala
+++
b/src/spark-project/sparder/src/test/scala/org/apache/spark/sql/execution/SparkQueryMetricUtilsSuite.scala
@@ -278,6 +278,7 @@ class SparkQueryMetricUtilsSuite extends QueryTest with
SharedSparkSession {
dataWritingCommandExec.metrics("readBytes").+=(5691)
dataWritingCommandExec.metrics("outputBytes").+=(5691)
when(dataWritingCommandExec.child).thenReturn(leafExecNode)
+ when(dataWritingCommandExec.children).thenReturn(IndexedSeq(leafExecNode))
val collectScanMetrics3 =
QueryMetricUtils.collectScanMetrics(dataWritingCommandExec)
assert(1000 == collectScanMetrics3._1.get(0))
assert(56698 == collectScanMetrics3._2.get(0))