You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/06/16 11:14:56 UTC
[incubator-doris] branch master updated: [test] Add window cast bitmap digital_masking function regression test. (#9924)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push:
new 41b693e1df [test] Add window cast bitmap digital_masking function regression test. (#9924)
41b693e1df is described below
commit 41b693e1dfdac0a3b88e29538b024094c13e038f
Author: smallhibiscus <84...@qq.com>
AuthorDate: Thu Jun 16 19:14:51 2022 +0800
[test] Add window cast bitmap digital_masking function regression test. (#9924)
---
.../sql-functions/bitmap-functions/to_bitmap.md | 2 +-
.../sql-functions/bitmap-functions/to_bitmap.md | 2 +-
.../bitmap_functions/test_bitmap_function.out | 211 +++++++++++++++++++++
.../cast_function/test_cast_function.out | 7 +
.../digital-masking/test_digital_masking.out | 4 +
.../window_functions/test_window_function.out | 117 ++++++++++++
.../bitmap_functions/test_bitmap_function.groovy | 147 ++++++++++++++
.../cast_function/test_cast_function.groovy | 25 +++
.../digital-masking/test_digital_masking.groovy | 24 +++
.../window_functions/test_window_function.groovy | 158 +++++++++++++++
10 files changed, 695 insertions(+), 2 deletions(-)
diff --git a/docs/en/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md b/docs/en/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md
index ea0e8bbdee..62571390c9 100644
--- a/docs/en/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md
+++ b/docs/en/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md
@@ -52,7 +52,7 @@ MySQL> select bitmap_to_string(to_bitmap(-1));
+---------------------------------+
| bitmap_to_string(to_bitmap(-1)) |
+---------------------------------+
-| NULL |
+| |
+---------------------------------+
```
diff --git a/docs/zh-CN/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md b/docs/zh-CN/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md
index a7f06c8d85..1fa3ec151b 100644
--- a/docs/zh-CN/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md
+++ b/docs/zh-CN/docs/sql-manual/sql-functions/bitmap-functions/to_bitmap.md
@@ -52,7 +52,7 @@ MySQL> select bitmap_to_string(to_bitmap(-1));
+---------------------------------+
| bitmap_to_string(to_bitmap(-1)) |
+---------------------------------+
-| NULL |
+| |
+---------------------------------+
```
diff --git a/regression-test/data/query/sql_functions/bitmap_functions/test_bitmap_function.out b/regression-test/data/query/sql_functions/bitmap_functions/test_bitmap_function.out
new file mode 100644
index 0000000000..7826056e57
--- /dev/null
+++ b/regression-test/data/query/sql_functions/bitmap_functions/test_bitmap_function.out
@@ -0,0 +1,211 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !sql --
+0
+
+-- !sql --
+1
+
+-- !sql --
+1
+
+-- !sql --
+1,2
+
+-- !sql --
+
+
+-- !sql --
+\N
+
+-- !sql --
+false
+
+-- !sql --
+true
+
+-- !sql --
+0
+
+-- !sql --
+
+
+-- !sql --
+0,1,2
+
+-- !sql --
+\N
+
+-- !sql --
+false
+
+-- !sql --
+true
+
+-- !sql --
+true
+
+-- !sql --
+false
+
+-- !sql --
+1
+
+-- !sql --
+1
+
+-- !sql --
+0
+
+-- !sql --
+2
+
+-- !sql --
+1
+
+-- !sql --
+1,2
+
+-- !sql --
+\N
+
+-- !sql --
+0,1,2,10
+
+-- !sql --
+1,2,3,4,5,10
+
+-- !sql --
+0
+
+-- !sql --
+3
+
+-- !sql --
+1
+
+-- !sql --
+2
+
+-- !sql --
+0
+
+-- !sql --
+\N
+
+-- !sql --
+3
+
+-- !sql --
+3
+
+-- !sql --
+5
+
+-- !sql --
+6
+
+-- !sql --
+\N
+
+-- !sql --
+2
+
+-- !sql --
+1,4
+
+-- !sql --
+1,3,5
+
+-- !sql --
+1,3,5
+
+-- !sql --
+\N
+
+-- !sql --
+4
+
+-- !sql --
+0
+
+-- !sql --
+6
+
+-- !sql --
+3
+
+-- !sql --
+3
+
+-- !sql --
+\N
+
+-- !sql --
+0
+
+-- !sql --
+5
+
+-- !sql --
+2
+
+-- !sql --
+2
+
+-- !sql --
+1,2,3,4,5
+
+-- !sql --
+2
+
+-- !sql --
+1,2,3
+
+-- !sql --
+4,5
+
+-- !sql --
+0,1,2
+
+-- !sql --
+2,3
+
+-- !sql --
+2,3,5
+
+-- !sql --
+\N
+
+-- !sql --
+
+
+-- !sql --
+1
+
+-- !sql --
+1,2
+
+-- !sql --
+1 \N
+2 \N
+
+-- !sql --
+1 3
+2 2
+
+-- !sql --
+1 3
+2 2
+
+-- !sql --
+1
+
+-- !sql --
+
+
+-- !sql --
+\N
+
+-- !sql --
+9999999999
+
diff --git a/regression-test/data/query/sql_functions/cast_function/test_cast_function.out b/regression-test/data/query/sql_functions/cast_function/test_cast_function.out
new file mode 100644
index 0000000000..6584f8cc9c
--- /dev/null
+++ b/regression-test/data/query/sql_functions/cast_function/test_cast_function.out
@@ -0,0 +1,7 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !sql --
+1
+
+-- !sql --
+11
+
diff --git a/regression-test/data/query/sql_functions/digital-masking/test_digital_masking.out b/regression-test/data/query/sql_functions/digital-masking/test_digital_masking.out
new file mode 100644
index 0000000000..f0720ba245
--- /dev/null
+++ b/regression-test/data/query/sql_functions/digital-masking/test_digital_masking.out
@@ -0,0 +1,4 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !sql --
+138****5678
+
diff --git a/regression-test/data/query/sql_functions/window_functions/test_window_function.out b/regression-test/data/query/sql_functions/window_functions/test_window_function.out
new file mode 100644
index 0000000000..57d5dd3e86
--- /dev/null
+++ b/regression-test/data/query/sql_functions/window_functions/test_window_function.out
@@ -0,0 +1,117 @@
+-- This file is automatically generated. You should know what you did if you want to edit this
+-- !sql --
+JDR 2014-10-02T00:00 12.86 12.875
+JDR 2014-10-03T00:00 12.89 12.896666667
+JDR 2014-10-04T00:00 12.94 12.793333333
+JDR 2014-10-05T00:00 12.55 13.173333333
+JDR 2014-10-06T00:00 14.03 13.776666667
+JDR 2014-10-07T00:00 14.75 14.253333333
+JDR 2014-10-08T00:00 13.98 14.365
+
+-- !sql --
+JDR 2014-10-02T00:00 12.86 higher
+JDR 2014-10-03T00:00 12.89 higher
+JDR 2014-10-04T00:00 12.94 flat or lower
+JDR 2014-10-05T00:00 12.55 higher
+JDR 2014-10-06T00:00 14.03 higher
+JDR 2014-10-07T00:00 14.75 flat or lower
+JDR 2014-10-08T00:00 13.98 flat or lower
+
+-- !sql --
+JDR 2014-10-02T00:00 12.86 0
+JDR 2014-10-03T00:00 12.89 12.86
+JDR 2014-10-04T00:00 12.94 12.89
+JDR 2014-10-05T00:00 12.55 12.94
+JDR 2014-10-06T00:00 14.03 12.55
+JDR 2014-10-07T00:00 14.75 14.03
+JDR 2014-10-08T00:00 13.98 14.75
+
+-- !sql --
+2 even 6
+4 even 12
+6 even 18
+8 even 24
+10 even 18
+1 odd 4
+3 odd 9
+5 odd 15
+7 odd 21
+9 odd 16
+
+-- !sql --
+2 even 3.0
+4 even 4.0
+6 even 6.0
+8 even 8.0
+10 even 9.0
+1 odd 2.0
+3 odd 3.0
+5 odd 5.0
+7 odd 7.0
+9 odd 8.0
+
+-- !sql --
+2 even 1
+4 even 2
+6 even 3
+8 even 4
+10 even 5
+1 odd 1
+3 odd 2
+5 odd 3
+7 odd 4
+9 odd 5
+
+-- !sql --
+
+-- !sql --
+
+-- !sql --
+1 1 1
+1 2 2
+1 2 2
+2 1 1
+2 2 2
+2 3 3
+3 1 1
+3 1 1
+3 2 3
+
+-- !sql --
+1 1 1
+1 2 2
+1 2 2
+2 1 1
+2 2 2
+2 3 3
+3 1 1
+3 1 1
+3 2 2
+
+-- !sql --
+1 1 1
+1 2 2
+1 2 3
+2 1 1
+2 2 2
+2 3 3
+3 1 1
+3 1 2
+3 2 3
+
+-- !sql --
+Germany Boris Guten tag
+Germany Michael Guten tag
+Sweden Bjorn Hej
+Sweden Mats Hej
+USA John Hi
+USA Pete Hi
+
+-- !sql --
+Germany Boris Guten tag
+Germany Michael Guten morgen
+Sweden Bjorn Hej
+Sweden Mats Tja
+USA John Hi
+USA Pete Hello
+
diff --git a/regression-test/suites/query/sql_functions/bitmap_functions/test_bitmap_function.groovy b/regression-test/suites/query/sql_functions/bitmap_functions/test_bitmap_function.groovy
new file mode 100644
index 0000000000..a2b5549a62
--- /dev/null
+++ b/regression-test/suites/query/sql_functions/bitmap_functions/test_bitmap_function.groovy
@@ -0,0 +1,147 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_bitmap_function", "query") {
+
+ sql """ SET enable_vectorized_engine = TRUE; """
+
+ // BITMAP_AND
+ qt_sql """ select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(2))) cnt """
+ qt_sql """ select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(1))) cnt """
+ qt_sql """ select bitmap_to_string(bitmap_and(to_bitmap(1), to_bitmap(1))) """
+ qt_sql """ select bitmap_to_string(bitmap_and(bitmap_from_string('1,2,3'), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'))) """
+ qt_sql """ select bitmap_to_string(bitmap_and(bitmap_from_string('1,2,3'), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'),bitmap_empty())) """
+ qt_sql """ select bitmap_to_string(bitmap_and(bitmap_from_string('1,2,3'), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'),NULL)) """
+
+ // BITMAP_CONTAINS
+ qt_sql """ select bitmap_contains(to_bitmap(1),2) cnt """
+ qt_sql """ select bitmap_contains(to_bitmap(1),1) cnt """
+
+ // BITMAP_EMPTY
+ qt_sql """ select bitmap_count(bitmap_empty()) """
+
+ // BITMAP_FROM_STRING
+ qt_sql """ select bitmap_to_string(bitmap_empty()) """
+ qt_sql """ select bitmap_to_string(bitmap_from_string("0, 1, 2")) """
+ qt_sql """ select bitmap_from_string("-1, 0, 1, 2") """
+
+ // BITMAP_HAS_ANY
+ qt_sql """ select bitmap_has_any(to_bitmap(1),to_bitmap(2)) cnt """
+ qt_sql """ select bitmap_has_any(to_bitmap(1),to_bitmap(1)) cnt """
+
+ // BITMAP_HAS_ALL
+ qt_sql """ select bitmap_has_all(bitmap_from_string("0, 1, 2"), bitmap_from_string("1, 2")) cnt """
+ qt_sql """ select bitmap_has_all(bitmap_empty(), bitmap_from_string("1, 2")) cnt """
+
+ // BITMAP_HASH
+ qt_sql """ select bitmap_count(bitmap_hash('hello')) """
+ qt_sql """ select bitmap_count(bitmap_hash('')) """
+ qt_sql """ select bitmap_count(bitmap_hash(null)) """
+
+ // BITMAP_OR
+ qt_sql """ select bitmap_count(bitmap_or(to_bitmap(1), to_bitmap(2))) cnt """
+ qt_sql """ select bitmap_count(bitmap_or(to_bitmap(1), to_bitmap(1))) cnt """
+ qt_sql """ select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2))) """
+ qt_sql """ select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2), to_bitmap(10), to_bitmap(0), NULL)) """
+ qt_sql """ select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2), to_bitmap(10), to_bitmap(0), bitmap_empty())) """
+ qt_sql """ select bitmap_to_string(bitmap_or(to_bitmap(10), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'))) """
+
+ // bitmap_and_count
+ qt_sql """ select bitmap_and_count(bitmap_from_string('1,2,3'),bitmap_empty()) """
+ qt_sql """ select bitmap_and_count(bitmap_from_string('1,2,3'),bitmap_from_string('1,2,3')) """
+ qt_sql """ select bitmap_and_count(bitmap_from_string('1,2,3'),bitmap_from_string('3,4,5')) """
+ qt_sql """ select bitmap_and_count(bitmap_from_string('1,2,3'), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5')) """
+ qt_sql """ select bitmap_and_count(bitmap_from_string('1,2,3'), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'),bitmap_empty()) """
+ qt_sql """ select bitmap_and_count(bitmap_from_string('1,2,3'), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'), NULL) """
+
+ // bitmap_or_count
+ qt_sql """ select bitmap_or_count(bitmap_from_string('1,2,3'),bitmap_empty()) """
+ qt_sql """ select bitmap_or_count(bitmap_from_string('1,2,3'),bitmap_from_string('1,2,3'))"""
+ qt_sql """ select bitmap_or_count(bitmap_from_string('1,2,3'),bitmap_from_string('3,4,5')) """
+ qt_sql """ select bitmap_or_count(bitmap_from_string('1,2,3'), bitmap_from_string('3,4,5'), to_bitmap(100), bitmap_empty()) """
+ qt_sql """ select bitmap_or_count(bitmap_from_string('1,2,3'), bitmap_from_string('3,4,5'), to_bitmap(100), NULL) """
+
+ // BITMAP_XOR
+ qt_sql """ select bitmap_count(bitmap_xor(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'))) cnt """
+ qt_sql """ select bitmap_to_string(bitmap_xor(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'))) """
+ qt_sql """ select bitmap_to_string(bitmap_xor(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'),bitmap_from_string('3,4,5'))) """
+ qt_sql """ select bitmap_to_string(bitmap_xor(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'),bitmap_from_string('3,4,5'),bitmap_empty())) """
+ qt_sql """ select bitmap_to_string(bitmap_xor(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'),bitmap_from_string('3,4,5'),NULL)) """
+
+ // BITMAP_XOR_COUNT
+ qt_sql """ select bitmap_xor_count(bitmap_from_string('1,2,3'),bitmap_from_string('3,4,5')) """
+ qt_sql """ select bitmap_xor_count(bitmap_from_string('1,2,3'),bitmap_from_string('1,2,3')) """
+ qt_sql """ select bitmap_xor_count(bitmap_from_string('1,2,3'),bitmap_from_string('4,5,6')) """
+ qt_sql """ select (bitmap_xor_count(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'),bitmap_from_string('3,4,5'))) """
+ qt_sql """ select (bitmap_xor_count(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'),bitmap_from_string('3,4,5'),bitmap_empty())) """
+ qt_sql """ select (bitmap_xor_count(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'),bitmap_from_string('3,4,5'),NULL)) """
+
+ // BITMAP_NOT
+ qt_sql """ select bitmap_count(bitmap_not(bitmap_from_string('2,3'),bitmap_from_string('1,2,3,4'))) cnt """
+ qt_sql """ select bitmap_to_string(bitmap_not(bitmap_from_string('2,3,5'),bitmap_from_string('1,2,3,4'))) """
+
+ // BITMAP_AND_NOT
+ qt_sql """ select bitmap_count(bitmap_and_not(bitmap_from_string('1,2,3'),bitmap_from_string('3,4,5'))) cnt """
+
+ // BITMAP_AND_NOT_COUNT
+ qt_sql """ select bitmap_and_not_count(bitmap_from_string('1,2,3'),bitmap_from_string('3,4,5')) cnt """
+
+ // BITMAP_SUBSET_IN_RANGE
+ qt_sql """ select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,2,3,4,5'), 0, 9)) value """
+ qt_sql """ select bitmap_to_string(bitmap_subset_in_range(bitmap_from_string('1,2,3,4,5'), 2, 3)) value """
+
+ // BITMAP_SUBSET_LIMIT
+ qt_sql """ select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('1,2,3,4,5'), 0, 3)) value """
+ qt_sql """ select bitmap_to_string(bitmap_subset_limit(bitmap_from_string('1,2,3,4,5'), 4, 3)) value """
+
+ // SUB_BITMAP
+ qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1,0,1,2,3,1,5'), 0, 3)) value """
+ qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1,0,1,2,3,1,5'), -3, 2)) value """
+ qt_sql """ select bitmap_to_string(sub_bitmap(bitmap_from_string('1,0,1,2,3,1,5'), 2, 100)) value """
+
+ // BITMAP_TO_STRING
+ qt_sql """ select bitmap_to_string(null) """
+ qt_sql """ select bitmap_to_string(bitmap_empty()) """
+ qt_sql """ select bitmap_to_string(to_bitmap(1)) """
+ qt_sql """ select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2))) """
+
+ // BITMAP_UNION
+ def bitmapUnionTable = "test_bitmap_union"
+ sql """ DROP TABLE IF EXISTS ${bitmapUnionTable} """
+ sql """ create table ${bitmapUnionTable} (page_id int,user_id bitmap bitmap_union) aggregate key (page_id) distributed by hash (page_id) PROPERTIES("replication_num" = "1") """
+
+ sql """ insert into ${bitmapUnionTable} values(1, to_bitmap(1)); """
+ sql """ insert into ${bitmapUnionTable} values(1, to_bitmap(2)); """
+ sql """ insert into ${bitmapUnionTable} values(1, to_bitmap(3)); """
+ sql """ insert into ${bitmapUnionTable} values(2, to_bitmap(1)); """
+ sql """ insert into ${bitmapUnionTable} values(2, to_bitmap(2)); """
+
+ qt_sql """ select page_id, bitmap_union(user_id) from ${bitmapUnionTable} group by page_id """
+ qt_sql """ select page_id, bitmap_count(bitmap_union(user_id)) from ${bitmapUnionTable} group by page_id """
+ qt_sql """ select page_id, count(distinct user_id) from ${bitmapUnionTable} group by page_id """
+
+ sql """ drop table ${bitmapUnionTable} """
+
+ // TO_BITMAP
+ qt_sql """ select bitmap_count(to_bitmap(10)) """
+ qt_sql """ select bitmap_to_string(to_bitmap(-1)) """
+
+ // BITMAP_MAX
+ qt_sql """ select bitmap_max(bitmap_from_string('')) value; """
+ qt_sql """ select bitmap_max(bitmap_from_string('1,9999999999')) value """
+
+}
diff --git a/regression-test/suites/query/sql_functions/cast_function/test_cast_function.groovy b/regression-test/suites/query/sql_functions/cast_function/test_cast_function.groovy
new file mode 100644
index 0000000000..cc62493b95
--- /dev/null
+++ b/regression-test/suites/query/sql_functions/cast_function/test_cast_function.groovy
@@ -0,0 +1,25 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_cast_function", "query") {
+ sql """ SET enable_vectorized_engine = TRUE; """
+
+ qt_sql """ select cast (1 as BIGINT) """
+ qt_sql """ select cast(cast ("11.2" as double) as bigint) """
+
+}
+
diff --git a/regression-test/suites/query/sql_functions/digital-masking/test_digital_masking.groovy b/regression-test/suites/query/sql_functions/digital-masking/test_digital_masking.groovy
new file mode 100644
index 0000000000..0d102a3ac4
--- /dev/null
+++ b/regression-test/suites/query/sql_functions/digital-masking/test_digital_masking.groovy
@@ -0,0 +1,24 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_digital_masking", "query") {
+ sql """ SET enable_vectorized_engine = TRUE; """
+
+ qt_sql """ select digital_masking(13812345678) """
+
+}
+
diff --git a/regression-test/suites/query/sql_functions/window_functions/test_window_function.groovy b/regression-test/suites/query/sql_functions/window_functions/test_window_function.groovy
new file mode 100644
index 0000000000..69e4a4726c
--- /dev/null
+++ b/regression-test/suites/query/sql_functions/window_functions/test_window_function.groovy
@@ -0,0 +1,158 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+suite("test_window_function", "query") {
+ sql """ SET enable_vectorized_engine = TRUE; """
+
+ def windowFunctionTable1 = "test_window_function1"
+ sql """ DROP TABLE IF EXISTS ${windowFunctionTable1} """
+ sql """ create table ${windowFunctionTable1} (stock_symbol varchar(64), closing_price decimal(8,2), closing_date datetime) duplicate key (stock_symbol) distributed by hash (stock_symbol) PROPERTIES("replication_num" = "1") """
+
+ sql """ INSERT INTO ${windowFunctionTable1} VALUES ('JDR',12.86,'2014-10-02 00:00:00'),('JDR',12.89,'2014-10-03 00:00:00'),('JDR',12.94,'2014-10-04 00:00:00'),('JDR',12.55,'2014-10-05 00:00:00'),('JDR',14.03,'2014-10-06 00:00:00'),('JDR',14.75,'2014-10-07 00:00:00'),('JDR',13.98,'2014-10-08 00:00:00') """
+
+ qt_sql """
+ SELECT
+ stock_symbol,
+ closing_date,
+ closing_price,
+ avg( closing_price ) over ( PARTITION BY stock_symbol ORDER BY closing_date rows BETWEEN 1 preceding AND 1 following ) AS moving_average
+ FROM
+ ${windowFunctionTable1}
+ """
+ // LEAD
+ qt_sql """
+ SELECT
+ stock_symbol,
+ closing_date,
+ closing_price,
+ CASE ( lead( closing_price, 1, 0 ) over ( PARTITION BY stock_symbol ORDER BY closing_date )- closing_price ) > 0
+ WHEN TRUE THEN "higher"
+ WHEN FALSE THEN "flat or lower" END AS "trending"
+ FROM
+ ${windowFunctionTable1}
+ ORDER BY
+ closing_date;
+ """
+ // LAG
+ qt_sql """
+ SELECT
+ stock_symbol,
+ closing_date,
+ closing_price,
+ lag( closing_price, 1, 0 ) over ( PARTITION BY stock_symbol ORDER BY closing_date ) AS "yesterday closing"
+ FROM
+ ${windowFunctionTable1}
+ ORDER BY
+ closing_date;
+ """
+ sql """ drop table ${windowFunctionTable1} """
+
+
+ def windowFunctionTable2 = "test_window_function2"
+ sql """ DROP TABLE IF EXISTS ${windowFunctionTable2} """
+ sql """ create table ${windowFunctionTable2} (x int, property varchar(64)) duplicate key (x) distributed by hash (x) PROPERTIES("replication_num" = "1") """
+ sql """ insert into ${windowFunctionTable2} values (2,'even'),(4,'even'),(6,'even'),(8,'even'),(10,'even'),(1,'odd'),(3,'odd'),(5,'odd'),(7,'odd'),(9,'odd'); """
+
+ // SUM
+ qt_sql """
+ SELECT
+ x,
+ property,
+ sum( x ) over ( PARTITION BY property ORDER BY x rows BETWEEN 1 preceding AND 1 following ) AS 'moving total'
+ FROM
+ ${windowFunctionTable2}
+ WHERE
+ property IN ( 'odd', 'even' );
+ """
+ // AVG
+ qt_sql """
+ SELECT
+ x,
+ property,
+ avg( x ) over ( PARTITION BY property ORDER BY x rows BETWEEN 1 preceding AND 1 following ) AS 'moving average'
+ FROM
+ ${windowFunctionTable2}
+ WHERE
+ property IN ( 'odd', 'even' );
+ """
+ // COUNT
+ qt_sql """
+ SELECT
+ x,
+ property,
+ count( x ) over ( PARTITION BY property ORDER BY x rows BETWEEN unbounded preceding AND current ROW ) AS 'cumulative total'
+ FROM
+ ${windowFunctionTable2}
+ WHERE
+ property IN ( 'odd', 'even' );
+ """
+ sql """ truncate table ${windowFunctionTable2} """
+ sql """ insert into ${windowFunctionTable2} values (2,'even'),(4,'even'),(6,'even'),(8,'even'),(10,'even'),(1,'odd'),(3,'odd'),(5,'odd'),(7,'odd'),(9,'odd'); """
+
+ // MIN
+ qt_sql """
+ SELECT
+ x,
+ property,
+ min( x ) over ( ORDER BY property, x DESC rows BETWEEN unbounded preceding AND 1 following ) AS 'local minimum'
+ FROM
+ ${windowFunctionTable2}
+ WHERE
+ property IN ( 'prime', 'square' );
+ """
+ // MAX
+ qt_sql """
+ SELECT
+ x,
+ property,
+ max( x ) over ( ORDER BY property, x rows BETWEEN unbounded preceding AND 1 following ) AS 'local maximum'
+ FROM
+ ${windowFunctionTable2}
+ WHERE
+ property IN ( 'prime', 'square' );
+ """
+ sql """ drop table ${windowFunctionTable2} """
+
+
+ def windowFunctionTable3 = "test_window_function3"
+ sql """ DROP TABLE IF EXISTS ${windowFunctionTable3} """
+ sql """ create table ${windowFunctionTable3} (x int, y int) duplicate key (x) distributed by hash (x) PROPERTIES("replication_num" = "1") """
+ sql """ insert into ${windowFunctionTable3} values (1,1),(1,2),(1,2),(2,1),(2,2),(2,3),(3,1),(3,1),(3,2); """
+
+ // RANK
+ qt_sql """ select x, y, rank() over(partition by x order by y) as rank from ${windowFunctionTable3} ; """
+ // DENSE_RANK
+ qt_sql """ select x, y, dense_rank() over(partition by x order by y) as rank from ${windowFunctionTable3} ; """
+ // ROW_NUMBER
+ qt_sql """ select x, y, row_number() over(partition by x order by y) as rank from ${windowFunctionTable3} ; """
+
+ sql """ drop table ${windowFunctionTable3} """
+
+
+ def windowFunctionTable4 = "test_window_function4"
+ sql """ DROP TABLE IF EXISTS ${windowFunctionTable4} """
+ sql """ create table ${windowFunctionTable4} (name varchar(64),country varchar(64),greeting varchar(64)) duplicate key (name) distributed by hash (name) PROPERTIES("replication_num" = "1") """
+ sql """ insert into ${windowFunctionTable4} VALUES ('Pete','USA','Hello'),('John','USA','Hi'),('Boris','Germany','Guten tag'),('Michael','Germany','Guten morgen'),('Bjorn','Sweden','Hej'),('Mats','Sweden','Tja')"""
+
+ // first_value
+ qt_sql """ select country, name,first_value(greeting) over (partition by country order by name, greeting) as greeting from ${windowFunctionTable4}; """
+ // last_value
+ qt_sql """ select country, name,last_value(greeting) over (partition by country order by name, greeting) as greeting from ${windowFunctionTable4} ; """
+
+ sql """ drop table ${windowFunctionTable4} """
+}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org