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