This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new cb69349873 [regression] add bitmap filter p1 regression case (#21591)
cb69349873 is described below
commit cb6934987339fceee5d6037dfb30f9581b8e109e
Author: zhangy5 <[email protected]>
AuthorDate: Tue Jul 11 14:27:03 2023 +0800
[regression] add bitmap filter p1 regression case (#21591)
---
.../data/query_p1/test_bitmap_filter_p1.out | 241 ++++++++++++++++
.../suites/query_p1/test_bitmap_filter_p1.groovy | 307 +++++++++++++++++++++
2 files changed, 548 insertions(+)
diff --git a/regression-test/data/query_p1/test_bitmap_filter_p1.out
b/regression-test/data/query_p1/test_bitmap_filter_p1.out
new file mode 100644
index 0000000000..b2b690f888
--- /dev/null
+++ b/regression-test/data/query_p1/test_bitmap_filter_p1.out
@@ -0,0 +1,241 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !sql1 --
+1001
+
+-- !sql2 --
+101
+100
+100
+100
+100
+100
+100
+100
+100
+100
+
+-- !sql3 --
+900
+
+-- !sql4 --
+
+-- !sql5 --
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+
+-- !sql6 --
+400
+
+-- !sql7 --
+1001
+
+-- !sql8 --
+766
+
+-- !sql9 --
+334
+
+-- !sql10 --
+1001
+
+-- !sql11 --
+9
+
+-- !sql12 --
+1 2
+
+-- !sql13 --
+1001
+
+-- !sql14 --
+1001
+
+-- !sql15 --
+1001
+
+-- !sql16 --
+1001
+
+-- !sql17 --
+
+-- !sql18 --
+
+-- !sql19 --
+
+-- !sql20 --
+
+-- !sql21 --
+-9
+-8
+-7
+-6
+-5
+-4
+-3
+-2
+-1
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+
+-- !sql22 --
+0 10 10 10
+
+-- !sql23 --
+
+-- !sql25 --
+
+-- !sql26 --
+1001
+
+-- !sql27 --
+9
+
+-- !sql28 --
+1011
+
+-- !sql29 --
+0
+
+-- !sql30 --
+5 20
+6 20
+7 20
+8 20
+
+-- !sql31 --
+
+-- !sql32 --
+\N \N \N \N 0
+-9 -9 -9 -9 0
+-8 -8 -8 -8 0
+-7 -7 -7 -7 0
+-6 -6 -6 -6 0
+
+-- !sql33 --
+0 0 0 0 0
+0 0 0 200 0
+0 0 0 400 0
+0 0 0 600 0
+0 0 0 800 0
+
+-- !sql34 --
+
+-- !sql35 --
+-9 \N
+-8 \N
+-7 \N
+-6 \N
+-5 \N
+-4 \N
+-3 \N
+-2 \N
+-1 \N
+
+-- !sql36 --
+-1
+-2
+-3
+-4
+-5
+-6
+-7
+-8
+-9
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+
+-- !sql37 --
+6
+7
+8
+9
+
+-- !sql38 --
+6
+7
+8
+
+-- !sql39 --
+1
+2
+3
+4
+5
+6
+7
+8
+9
+
+-- !sql40 --
+4
+
+-- !sql41 --
+7 100
+6 100
+
+-- !sql42 --
+501
+
+-- !sql43 --
+10
+
+-- !sql44 --
+no
+no
+no
+no
+no
+
+-- !sql45 --
+0 10201
+1 10000
+2 10000
+3 10000
+4 10000
+5 10000
+6 10000
+7 10000
+8 10000
+9 10000
+
+-- !sql46 --
+100201
+
+-- !sql47 --
+-9
+-8
+-7
+-6
+-5
+-4
+-3
+-2
+-1
+
+-- !sql48 --
+2002
+
diff --git a/regression-test/suites/query_p1/test_bitmap_filter_p1.groovy
b/regression-test/suites/query_p1/test_bitmap_filter_p1.groovy
new file mode 100644
index 0000000000..da7b048ad8
--- /dev/null
+++ b/regression-test/suites/query_p1/test_bitmap_filter_p1.groovy
@@ -0,0 +1,307 @@
+// 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_filter", "query_p1,p1") {
+ // create table & insert init data
+ if ( isSqlValueEqualToTarget("show tables like 'bm_dup_data'", "", 1000,
1) == true ||
+ isSqlValueEqualToTarget("select count(*) from bm_dup_data",
"1011", 1000, 1) == false) {
+ sql """drop table if exists bm_dup_data"""
+ sql """drop table if exists test_k1_bitmap"""
+ sql """drop table if exists test_k1_k2_k3_bitmap"""
+ sql """
+ CREATE TABLE IF NOT EXISTS `bm_dup_data` (
+ `k1` int(11) NULL,
+ `k2` int(11) NULL,
+ `k3` int(11) NULL,
+ `k4` bigint(20) NULL
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`k1`, `k2`, `k3`)
+ COMMENT 'OLAP'
+ DISTRIBUTED BY HASH(`k1`) BUCKETS 10
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql "insert into bm_dup_data select null, null, null, null"
+ sql "begin"
+ for (int i = -9; i <= 1000; i++) {
+ sql "insert into bm_dup_data values ( ${(i % 10).toString()}, ${(i
% 100).toString()}, " +
+ "${(i % 200).toString()}, ${i.toString()} )"
+ }
+ sql "commit"
+ sql "sync"
+ assertTrue(isSqlValueEqualToTarget("select count(*) from bm_dup_data",
"1011", 1000, 3))
+
+ sql """
+ CREATE TABLE IF NOT EXISTS `test_k1_bitmap` (
+ `k1` int(11) NULL,
+ `bm_k4` bitmap BITMAP_UNION NULL
+ ) ENGINE=OLAP
+ AGGREGATE KEY(`k1`)
+ COMMENT 'OLAP'
+ PARTITION BY RANGE(`k1`)
+ (PARTITION p1 VALUES [("-2147483648"), ("-64")),
+ PARTITION p2 VALUES [("-64"), ("0")),
+ PARTITION p3 VALUES [("0"), ("64")),
+ PARTITION p4 VALUES [("64"), (MAXVALUE)))
+ DISTRIBUTED BY HASH(`k1`) BUCKETS 10
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql 'insert into test_k1_bitmap select k1, to_bitmap(k4) from
bm_dup_data'
+ assertTrue(isSqlValueEqualToTarget("select count(*) from
test_k1_bitmap", "20", 1000, 3))
+
+ sql """
+ CREATE TABLE IF NOT EXISTS `test_k1_k2_k3_bitmap` (
+ `k1` int(11) NULL,
+ `k2` int(11) NULL,
+ `k3` int(11) NULL,
+ `bm_k1_k2_k3` bitmap BITMAP_UNION NULL
+ ) ENGINE=OLAP
+ AGGREGATE KEY(`k1`, `k2`, `k3`)
+ COMMENT 'OLAP'
+ DISTRIBUTED BY HASH(`k1`) BUCKETS 10
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1"
+ );
+ """
+ sql "insert into test_k1_k2_k3_bitmap select k1, k2, k3, to_bitmap(k1)
from bm_dup_data"
+ sql 'insert into test_k1_k2_k3_bitmap select k1, k2, k3, to_bitmap(k2)
from bm_dup_data'
+ sql 'insert into test_k1_k2_k3_bitmap select k1, k2, k3, to_bitmap(k3)
from bm_dup_data'
+ assertTrue(isSqlValueEqualToTarget("select count(*) from
test_k1_k2_k3_bitmap", "210", 1000, 3))
+ }
+
+ sql 'set runtime_filter_type="IN_OR_BLOOM_FILTER, BITMAP_FILTER"'
+ sql 'set query_timeout=600'
+
+ // uncorrelated subquery
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap) and k4 = 250 order by k1',
+ 'select k1 from bm_dup_data where k4 = 250'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap) and k4 = -1 order by k1',
+ 'select k1 from bm_dup_data where 1=0 order by k1'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where 500 in (select bm_k4 from
test_k1_bitmap) order by k1',
+ 'select k1 from bm_dup_data where 500 in (select k4 from
bm_dup_data) order by k1'
+ )
+ check_sql_equal(
+ 'select count(k1) from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap order by k1)',
+ 'select count(k1) from bm_dup_data where k4 in (select k4 from
bm_dup_data where k4 >= 0)'
+ )
+ check_sql_equal(
+ 'select * from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap order by k1 limit 15) order by k1, k2, k3, k4',
+ 'select * from bm_dup_data where k1 between 0 and 4 order by k1,
k2, k3, k4'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 in (select
bitmap_union(bm_k4) from test_k1_bitmap) order by k1',
+ 'select k1 from bm_dup_data where k4 >= 0 order by k1'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 in (select
bitmap_union(bm_k4) from test_k1_bitmap where k1 > 0) order by k1',
+ 'select k1 from bm_dup_data where k1 > 0 order by k1'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 not in (select bm_k4 from
test_k1_bitmap) and k4 != -5 order by k1',
+ 'select k1 from bm_dup_data where k4 < 0 and k4 != -5 order by k1'
+ )
+ // todo: maybe bitmap bug, expect return all, real is empty.
+ // check_sql_equal(
+ // 'select k1 from test_k1_bitmap where -5 not in (select
bm_k1_k2_k3 from test_k1_k2_k3_bitmap) order by k1',
+ // 'select k1 from test_k1_bitmap order by k1'
+ // )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 not in (select bm_k4 from
test_k1_bitmap order by k1) order by k1',
+ 'select k1 from bm_dup_data where k4 < 0 order by k1'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 not in (select bm_k4 from
test_k1_bitmap order by k1 desc limit 10) order by k1;',
+ 'select k1 from bm_dup_data where k4 < 0 order by k1'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 not in (select
bitmap_union(bm_k4) from test_k1_bitmap) order by k1',
+ 'select k1 from bm_dup_data where k4 < 0 order by k1'
+ )
+ check_sql_equal(
+ 'select k1 from bm_dup_data where k4 not in (select
bitmap_union(bm_k4) from test_k1_bitmap where k1 > 5) order by k1',
+ 'select k1 from bm_dup_data where k1 < =5 order by k1'
+ )
+ qt_sql1 'select count(*) from bm_dup_data a where k4 in (select bm_k4 from
test_k1_bitmap b)'
+ qt_sql2 'select count(*) from bm_dup_data a where k4 in (select bm_k4 from
test_k1_bitmap b ) group by k1 order by k1'
+ qt_sql3 'select count(*) from bm_dup_data a where k4 in (select bm_k4 from
test_k1_bitmap b where k1 > 0) and ' +
+ 'k4 in (select bm_k4 from test_k1_bitmap b where k1 < 10)'
+ qt_sql4 'select k1 from test_k1_bitmap a where k1 in (select bm_k1_k2_k3
from test_k1_k2_k3_bitmap b ' +
+ 'where bitmap_count(bm_k1_k2_k3) > 5) order by k1'
+ // todo: query timeout
+ // qt_sql5 'select count(k1) from bm_dup_data a where k4 in (select bm_k4
from test_k1_bitmap b where bitmap_count(bm_k4) = 100) group by k4 order by 1
desc limit 10'
+
+ // correlated subquery
+ test {
+ sql 'select k1 from bm_dup_data a where k4 in (select bm_k4 from
test_k1_bitmap b where a.k1 = b.k1 order by k1)'
+ exception "In bitmap does not support correlated subquery"
+ }
+ // and / or
+ qt_sql6 'select count(k1) from bm_dup_data a where k4 in (select bm_k4
from test_k1_bitmap b ' +
+ 'where bitmap_count(bm_k4) >= 100) and k1 in (1, 2, 3, 4)'
+ qt_sql7 'select count(k1) from bm_dup_data a where k4 in (select bm_k4
from test_k1_bitmap b ' +
+ 'where bitmap_count(bm_k4) >= 100) and k1 is not null'
+ qt_sql8 'select count(k1) from bm_dup_data a where k4 in (select bm_k4
from test_k1_bitmap b ' +
+ 'where bitmap_count(bm_k4) >= 100) and k4 > 234'
+ qt_sql9 'select count(k1) from bm_dup_data a where k4 in (select bm_k4
from test_k1_bitmap b ' +
+ 'where bitmap_count(bm_k4) >= 100) and k4 between 456 and 789'
+ qt_sql10 'select count(*) from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap) and ' +
+ 'k4 not in (select bm_k4 from test_k1_bitmap where
bitmap_count(bm_k4) = 0)'
+ qt_sql11 'select count(*) from bm_dup_data where k4 not in (select bm_k4
from test_k1_bitmap b) and ' +
+ 'k4 not in (select bm_k4 from test_k1_bitmap b where
bitmap_count(bm_k4) = 0)'
+ check_sql_equal(
+ 'select * from bm_dup_data where k1 in (select bm_k1_k2_k3 from
test_k1_k2_k3_bitmap) and ' +
+ 'k2 in (select bm_k1_k2_k3 from test_k1_k2_k3_bitmap) ' +
+ 'and k3 in (select bm_k1_k2_k3 from test_k1_k2_k3_bitmap)
order by k1, k2, k3, k4',
+ 'select * from bm_dup_data where k1 >= 0 order by k1, k2, k3, k4'
+ )
+ // datatype
+ check_sql_equal(
+ 'select k1, k2 from test_k1_k2_k3_bitmap where k2 in (select
bitmap_union(to_bitmap(k2)) from bm_dup_data) ' +
+ 'order by k1, k2',
+ 'select k1, k2 from test_k1_k2_k3_bitmap where k2 >= 0 order by
k1, k2'
+ )
+ qt_sql12 'select k1, k2 from (select 1 k1, 2 k2) tmp where k1 in (select
bm_k1_k2_k3 from test_k1_k2_k3_bitmap)'
+ qt_sql13 'select count(*) from bm_dup_data where k1 in (select bm_k4 from
test_k1_bitmap)'
+ qt_sql14 'select count(*) from bm_dup_data where k2 in (select bm_k4 from
test_k1_bitmap)'
+ qt_sql15 'select count(*) from bm_dup_data where k3 in (select bm_k4 from
test_k1_bitmap)'
+ qt_sql16 'select count(*) from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap)'
+ qt_sql17 'select k1, k2 from bm_dup_data where k1 in (select bm_k4 from
test_k1_bitmap) and k1 is null'
+ // empty table:bm_empty_tb
+ sql 'create table if not exists bm_empty_tb like test_k1_bitmap'
+ qt_sql18 'select * from bm_empty_tb where k1 in (select bm_k4 from
test_k1_bitmap)'
+ qt_sql19 'select * from bm_empty_tb where k1 not in (select bm_k4 from
test_k1_bitmap)'
+ qt_sql20 'select k1 from test_k1_bitmap where k1 in (select bm_k4 from
bm_empty_tb)'
+ qt_sql21 'select k1 from test_k1_bitmap where k1 not in (select bm_k4 from
bm_empty_tb) order by k1'
+ sql 'drop table if exists bm_empty_tb'
+ // 常数
+ qt_sql22 'select * from bm_dup_data where k4 in (select to_bitmap(10) from
test_k1_bitmap)'
+ qt_sql23 'select * from bm_dup_data where k1 in (select bitmap_empty())'
+ // subquery return empty / 1 row/ multi rows
+ check_sql_equal(
+ 'select k4 from bm_dup_data where k1 in (select bm_k4 from
test_k1_bitmap where k1 > 5) order by k4',
+ 'select k4 from bm_dup_data where k1 > 5'
+ )
+ check_sql_equal(
+ 'select * from bm_dup_data where k4 in (select bm_k1_k2_k3 from
test_k1_k2_k3_bitmap where k1 = 6)',
+ 'select * from bm_dup_data where k1 = 6 and k4 < 200'
+ )
+ qt_sql25 'select * from bm_dup_data where k4 in (select bm_k4 from
test_k1_bitmap where k1 = 200)'
+ qt_sql26 'select count(*) from bm_dup_data where k2 in (select
bitmap_union(bm_k4) from test_k1_bitmap)'
+ check_sql_equal(
+ 'select * from bm_dup_data where k1 not in (select bm_k4 from
test_k1_bitmap where k1 > 5) order by k1, k2, k3, k4',
+ 'select * from bm_dup_data where k1 <= 5 order by k1, k2, k3, k4'
+ )
+ check_sql_equal(
+ 'select * from bm_dup_data where k4 not in (select bm_k1_k2_k3
from test_k1_k2_k3_bitmap where k1 = 6) ' +
+ 'order by k1, k2, k3, k4',
+ 'select * from bm_dup_data where not (k1 = 6 and k4 < 200) order
by k1, k2, k3, k4'
+ )
+ check_sql_equal(
+ 'select k1 from test_k1_bitmap where k1 not in (select bm_k1_k2_k3
from test_k1_k2_k3_bitmap where k1 = 200)',
+ 'select k1 from test_k1_bitmap where k1 is not null'
+ )
+ qt_sql27 'select count(*) from bm_dup_data where k4 not in (select
bitmap_union(bm_k4) from test_k1_bitmap)'
+ qt_sql28 'select count(*) from bm_dup_data where exists (select bm_k4 from
test_k1_bitmap)'
+ qt_sql29 'select count(*) from bm_dup_data where exists (select bm_k4 from
test_k1_bitmap where k1 = 200)'
+ // todo: expect fail
+ // test {
+ // sql 'select count(*) from bm_dup_data where not exists (select bm_k4
from test_k1_bitmap)'
+ // exception 'Unsupported uncorrelated NOT EXISTS subquery'
+ // }
+
+ // function & expression
+ check_sql_equal(
+ 'select * from bm_dup_data a where k4 in (select
bitmap_or(bm_k1_k2_k3, to_bitmap(k1)) ' +
+ 'from test_k1_k2_k3_bitmap b where k1 > 5)',
+ 'select * from bm_dup_data a where k1 > 5 and k4 < 200'
+ )
+ check_sql_equal(
+ 'select * from bm_dup_data a where k4 + 1 in (select
bitmap_or(bm_k1_k2_k3, to_bitmap(k1)) ' +
+ 'from test_k1_k2_k3_bitmap b where k1 > 5)',
+ 'select * from bm_dup_data a where k1 between 5 and 8 and k4 < 200'
+ )
+ qt_sql30 'select k1, count(*) from bm_dup_data a where k4 + 1 in ' +
+ '(select bitmap_or(bm_k1_k2_k3, to_bitmap(k1)) from
test_k1_k2_k3_bitmap b where k1 > 5) ' +
+ 'group by k1 order by k1'
+ qt_sql31 'select k1, count(*) from bm_dup_data a where k4 + 1 in ' +
+ '(select bitmap_or(bm_k1_k2_k3, to_bitmap(k1)) from
test_k1_k2_k3_bitmap b where k1 > 5) ' +
+ 'group by k1 having count(*) != 20'
+ check_sql_equal(
+ 'select * from bm_dup_data where k3 in (select
bitmap_and(to_bitmap(k2), bm_k1_k2_k3) from test_k1_k2_k3_bitmap) ' +
+ 'order by k1, k2, k3, k4',
+ 'select * from bm_dup_data where k3 < 100 and k3 >= 0 order by k1,
k2, k3, k4'
+ )
+
+ // join
+ qt_sql32 'select * from bm_dup_data a join (select k3 from
test_k1_k2_k3_bitmap ' +
+ 'where k2 in (select bm_k4 from test_k1_bitmap)) b order by b.k3,
a.k1, a.k4 limit 5'
+ qt_sql33 'select * from bm_dup_data a join (select k3 from
test_k1_k2_k3_bitmap ' +
+ 'where k2 in (select bm_k4 from test_k1_bitmap)) b on b.k3=a.k3
order by b.k3, a.k1, a.k4 limit 5'
+ qt_sql34 'select * from (select k3 from bm_dup_data where k4 not in
(select bm_k4 from test_k1_bitmap)) a ' +
+ 'join (select k3 from test_k1_k2_k3_bitmap where k2 in (select
bm_k4 from test_k1_bitmap)) b on b.k3=a.k3'
+ qt_sql35 'select * from (select k3 from bm_dup_data where k4 not in
(select bm_k4 from test_k1_bitmap)) a ' +
+ 'left join (select k3 from test_k1_k2_k3_bitmap where k2 in
(select bm_k4 from test_k1_bitmap)) b on b.k3=a.k3 order by a.k3, b.k3'
+ // union/except/intersect
+ order_qt_sql36 'select k1 from bm_dup_data a ' +
+ 'where k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 10) union ' +
+ 'select k1 from bm_dup_data a ' +
+ 'where not k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 10)'
+ order_qt_sql37 'select k1 from bm_dup_data a ' +
+ 'where k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 5) except ' +
+ 'select k1 from bm_dup_data a ' +
+ 'where not k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 0) order by k1'
+ order_qt_sql38 'select k1 from bm_dup_data a ' +
+ 'where k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 5) intersect ' +
+ 'select k1 from bm_dup_data a ' +
+ 'where not k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 8)'
+ // group by/having/order by/limit
+ qt_sql39 'select distinct k1 from bm_dup_data a ' +
+ 'where k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 0) order by k1 limit 10'
+ qt_sql40 'select count(distinct k1) from bm_dup_data a ' +
+ 'where k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 5)'
+ qt_sql41 'select k1, count(*) from bm_dup_data a ' +
+ 'where k1 in (select bitmap_or(bm_k4, to_bitmap(k1)) from
test_k1_bitmap b where k1 > 5) ' +
+ 'group by k1 having count(*) > 20 order by k1 desc limit 10 offset
2'
+ qt_sql42 'select count(*) from bm_dup_data a where k4 in (select
bitmap_union(bm_k4) from test_k1_bitmap b ' +
+ 'group by k1 order by k1 limit 15)'
+ // subquery
+ qt_sql43 'select count(*) from (select k1, count(*) from bm_dup_data ' +
+ 'where k4 in (select bitmap_union(bm_k4) from test_k1_bitmap)
group by k1) tmp'
+ qt_sql44 'select case (select max(k1) from bm_dup_data ' +
+ 'where k4 in (select bitmap_union(bm_k4) from test_k1_bitmap))
when 1.5 then k1 else "no" end a ' +
+ 'from test_k1_bitmap b order by a limit 5'
+ // view
+ sql 'drop view if exists bmv'
+ sql 'CREATE VIEW `bmv` AS SELECT k1 FROM bm_dup_data WHERE k4 IN ((SELECT
bm_k4 FROM test_k1_bitmap))'
+ qt_sql45 'select a.k1, count(*) from bm_dup_data a join bmv b on a.k1=b.k1
group by a.k1 order by a.k1'
+ qt_sql46 'select count(*) from bm_dup_data a join bmv b on a.k1=b.k1'
+ sql 'drop view if exists bmv'
+ // with cte
+ qt_sql47 'with w as (select k1 from bm_dup_data where k4 not in (select
bm_k4 from test_k1_bitmap)) ' +
+ 'select * from w order by k1'
+ qt_sql48 'with w1 as (select k1 from bm_dup_data where k4 in (select bm_k4
from test_k1_bitmap)), ' +
+ 'w2 as (select k2 from bm_dup_data where k1 in (select bm_k1_k2_k3
from test_k1_k2_k3_bitmap)) ' +
+ 'select count(*) from (select * from w1 union all select * from w2
order by 1) tmp'
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]