This is an automated email from the ASF dual-hosted git repository.
jianliangqi 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 0800fdc626f [fix](inverted index)support merge null_bitmap during
index compaction (#30326)
0800fdc626f is described below
commit 0800fdc626fd978d8f993798e1343c77fa8fbc17
Author: qiye <[email protected]>
AuthorDate: Thu Jan 25 12:01:50 2024 +0800
[fix](inverted index)support merge null_bitmap during index compaction
(#30326)
`null_bitmap` file is not considered in index compaction process. This will
lead wrong query result when doc is contain `NULL` values.
---
be/src/clucene | 2 +-
.../test_index_compaction_null.out | 1345 ++++++++++++++++++++
.../test_index_compaction_null.groovy | 305 +++++
3 files changed, 1651 insertions(+), 1 deletion(-)
diff --git a/be/src/clucene b/be/src/clucene
index 1c76e25b55a..f4829cc50f3 160000
--- a/be/src/clucene
+++ b/be/src/clucene
@@ -1 +1 @@
-Subproject commit 1c76e25b55a27823917624c1cb0406c34f77e72d
+Subproject commit f4829cc50f32723366026c401fdb0111f15ee537
diff --git
a/regression-test/data/inverted_index_p0/index_compaction/test_index_compaction_null.out
b/regression-test/data/inverted_index_p0/index_compaction/test_index_compaction_null.out
new file mode 100644
index 00000000000..1a46243d0f5
--- /dev/null
+++
b/regression-test/data/inverted_index_p0/index_compaction/test_index_compaction_null.out
@@ -0,0 +1,1345 @@
+-- This file is automatically generated. You should know what you did if you
want to edit this
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
+-- !select_0 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_1 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+
+-- !select_is_null_2 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_3 --
+
+-- !select_is_null_4 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_is_null_5 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+
+-- !select_is_null_6 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_11 --
+6 shanghai hehe \N haha \N
+
+-- !select_compare_12 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_13 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_compare_14 --
+6 shanghai hehe \N haha \N
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_21 --
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_22 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+8 tengxun2 qie \N lj 800
+
+-- !select_compare_23 --
+1 \N addr qie3 yy lj 100
+2 \N hehe \N lala 200
+3 beijing addr xuanwu wugui \N 300
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_compare_24 --
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_in_1 --
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+6 shanghai hehe \N haha \N
+
+-- !select_in_2 --
+7 tengxun qie addr gg lj \N
+8 tengxun2 qie \N lj 800
+
+-- !select_in_3 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+
+-- !select_in_4 --
+2 \N hehe \N lala 200
+5 beijing addr chaoyang wangjing donghuqu 500
+8 tengxun2 qie \N lj 800
+
+-- !select_match_1 --
+1 \N addr qie3 yy lj 100
+3 beijing addr xuanwu wugui \N 300
+4 beijing addr fengtai fengtai1 fengtai2 \N
+5 beijing addr chaoyang wangjing donghuqu 500
+
+-- !select_match_2 --
+4 beijing addr fengtai fengtai1 fengtai2 \N
+
diff --git
a/regression-test/suites/inverted_index_p0/index_compaction/test_index_compaction_null.groovy
b/regression-test/suites/inverted_index_p0/index_compaction/test_index_compaction_null.groovy
new file mode 100644
index 00000000000..0afe12909da
--- /dev/null
+++
b/regression-test/suites/inverted_index_p0/index_compaction/test_index_compaction_null.groovy
@@ -0,0 +1,305 @@
+// 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.
+
+import org.codehaus.groovy.runtime.IOGroovyMethods
+
+suite("test_index_compaction_null", "p0") {
+ def tableName = "test_index_compaction_null_dups"
+ def backendId_to_backendIP = [:]
+ def backendId_to_backendHttpPort = [:]
+ getBackendIpHttpPort(backendId_to_backendIP, backendId_to_backendHttpPort);
+
+ boolean disableAutoCompaction = false
+
+ def set_be_config = { key, value ->
+ for (String backend_id: backendId_to_backendIP.keySet()) {
+ def (code, out, err) =
update_be_config(backendId_to_backendIP.get(backend_id),
backendId_to_backendHttpPort.get(backend_id), key, value)
+ logger.info("update config: code=" + code + ", out=" + out + ",
err=" + err)
+ }
+ }
+
+ def trigger_full_compaction_on_tablets = { String[][] tablets ->
+ for (String[] tablet : tablets) {
+ String tablet_id = tablet[0]
+ String backend_id = tablet[2]
+ int times = 1
+
+ String compactionStatus;
+ do{
+ def (code, out, err) =
be_run_full_compaction(backendId_to_backendIP.get(backend_id),
backendId_to_backendHttpPort.get(backend_id), tablet_id)
+ logger.info("Run compaction: code=" + code + ", out=" + out +
", err=" + err)
+ ++times
+ sleep(2000)
+ compactionStatus = parseJson(out.trim()).status.toLowerCase();
+ } while (compactionStatus!="success" && times<=10 &&
compactionStatus!="e-6010")
+
+
+ if (compactionStatus == "fail") {
+ assertEquals(disableAutoCompaction, false)
+ logger.info("Compaction was done automatically!")
+ }
+ if (disableAutoCompaction && compactionStatus!="e-6010") {
+ assertEquals("success", compactionStatus)
+ }
+ }
+ }
+
+ def wait_full_compaction_done = { String[][] tablets ->
+ for (String[] tablet in tablets) {
+ boolean running = true
+ do {
+ Thread.sleep(1000)
+ String tablet_id = tablet[0]
+ String backend_id = tablet[2]
+ def (code, out, err) =
be_get_compaction_status(backendId_to_backendIP.get(backend_id),
backendId_to_backendHttpPort.get(backend_id), tablet_id)
+ logger.info("Get compaction status: code=" + code + ", out=" +
out + ", err=" + err)
+ assertEquals(code, 0)
+ def compactionStatus = parseJson(out.trim())
+ assertEquals("success", compactionStatus.status.toLowerCase())
+ running = compactionStatus.run_status
+ } while (running)
+ }
+ }
+
+ def get_rowset_count = {String[][] tablets ->
+ int rowsetCount = 0
+ for (String[] tablet in tablets) {
+ def compactionStatusUrlIndex = 18
+ def (code, out, err) = curl("GET",
tablet[compactionStatusUrlIndex])
+ logger.info("Show tablets status: code=" + code + ", out=" + out +
", err=" + err)
+ assertEquals(code, 0)
+ def tabletJson = parseJson(out.trim())
+ assert tabletJson.rowsets instanceof List
+ rowsetCount +=((List<String>) tabletJson.rowsets).size()
+ }
+ return rowsetCount
+ }
+
+ def check_config = { String key, String value ->
+ for (String backend_id: backendId_to_backendIP.keySet()) {
+ def (code, out, err) =
show_be_config(backendId_to_backendIP.get(backend_id),
backendId_to_backendHttpPort.get(backend_id))
+ logger.info("Show config: code=" + code + ", out=" + out + ",
err=" + err)
+ assertEquals(code, 0)
+ def configList = parseJson(out.trim())
+ assert configList instanceof List
+ for (Object ele in (List) configList) {
+ assert ele instanceof List<String>
+ if (((List<String>) ele)[0] == key) {
+ assertEquals(value, ((List<String>) ele)[2])
+ }
+ }
+ }
+ }
+
+ def insert_data = { ->
+ sql """insert into ${tableName} values
+ (1,null,'addr qie3','yy','lj',100),
+ (2,null,'hehe',null,'lala',200),
+ (3,'beijing','addr xuanwu','wugui',null,300),
+ (4,'beijing','addr fengtai','fengtai1','fengtai2',null),
+ (5,'beijing','addr chaoyang','wangjing','donghuqu',500),
+ (6,'shanghai','hehe',null,'haha',null),
+ (7,'tengxun','qie','addr gg','lj',null),
+ (8,'tengxun2','qie',null,'lj',800)
+ """
+ }
+
+ def run_sql = { ->
+ // select all data
+ qt_select_0 "SELECT * FROM ${tableName} ORDER BY id"
+
+ // test IS NULL , IS NOT NULL
+ qt_select_is_null_1 "SELECT * FROM ${tableName} WHERE city IS NULL
ORDER BY id"
+ qt_select_is_null_2 "SELECT * FROM ${tableName} WHERE city IS NOT NULL
ORDER BY id"
+ qt_select_is_null_3 "SELECT * FROM ${tableName} WHERE addr IS NULL
ORDER BY id"
+ qt_select_is_null_4 "SELECT * FROM ${tableName} WHERE addr IS NOT NULL
ORDER BY id"
+ qt_select_is_null_5 "SELECT * FROM ${tableName} WHERE n IS NULL ORDER
BY id"
+ qt_select_is_null_6 "SELECT * FROM ${tableName} WHERE n IS NOT NULL
ORDER BY id"
+
+ // test compare predicate
+ qt_select_compare_11 "SELECT * FROM ${tableName} WHERE city =
'shanghai' ORDER BY id"
+ qt_select_compare_12 "SELECT * FROM ${tableName} WHERE city !=
'shanghai' ORDER BY id"
+ qt_select_compare_13 "SELECT * FROM ${tableName} WHERE city <=
'shanghai' ORDER BY id"
+ qt_select_compare_14 "SELECT * FROM ${tableName} WHERE city >=
'shanghai' ORDER BY id"
+
+ qt_select_compare_21 "SELECT * FROM ${tableName} WHERE n = 500 ORDER
BY id"
+ qt_select_compare_22 "SELECT * FROM ${tableName} WHERE n != 500 ORDER
BY id"
+ qt_select_compare_23 "SELECT * FROM ${tableName} WHERE n <= 500 ORDER
BY id"
+ qt_select_compare_24 "SELECT * FROM ${tableName} WHERE n >= 500 ORDER
BY id"
+
+ // test in predicates
+ qt_select_in_1 "SELECT * FROM ${tableName} WHERE city IN ('shanghai',
'beijing') ORDER BY id"
+ qt_select_in_2 "SELECT * FROM ${tableName} WHERE city NOT IN
('shanghai', 'beijing') ORDER BY id"
+ qt_select_in_3 "SELECT * FROM ${tableName} WHERE n IN (100, 300) ORDER
BY id"
+ qt_select_in_4 "SELECT * FROM ${tableName} WHERE n NOT IN (100, 300)
ORDER BY id"
+
+ // test match predicates
+ qt_select_match_1 "SELECT * FROM ${tableName} WHERE addr MATCH_ANY
'addr fengtai' ORDER BY id"
+ qt_select_match_2 "SELECT * FROM ${tableName} WHERE addr MATCH_ALL
'addr fengtai' ORDER BY id"
+ }
+
+ def run_test = { String[][] tablets ->
+ insert_data.call()
+ insert_data.call()
+
+ run_sql.call()
+
+ int replicaNum = 1
+ String[][] dedup_tablets = deduplicate_tablets(tablets)
+ if (dedup_tablets.size() > 0) {
+ replicaNum = Math.round(tablets.size() / dedup_tablets.size())
+ if (replicaNum != 1 && replicaNum != 3) {
+ assert(false)
+ }
+ }
+
+ // before full compaction, there are 3 rowsets.
+ int rowsetCount = get_rowset_count.call(tablets);
+ assert (rowsetCount == 3 * replicaNum)
+
+ // tigger full compaction for all tablets
+ trigger_full_compaction_on_tablets.call(tablets)
+
+ // wait for full compaction done
+ wait_full_compaction_done.call(tablets)
+
+ // after full compaction, there is only 1 rowset.
+ rowsetCount = get_rowset_count.call(tablets);
+ assert (rowsetCount == 1 * replicaNum)
+
+ run_sql.call()
+
+ // insert more data and trigger full compaction again
+ insert_data.call()
+
+ run_sql.call()
+
+ rowsetCount = get_rowset_count.call(tablets);
+ assert (rowsetCount == 2 * replicaNum)
+
+ // tigger full compaction for all tablets
+ trigger_full_compaction_on_tablets.call(tablets)
+
+ // wait for full compaction done
+ wait_full_compaction_done.call(tablets)
+
+ // after full compaction, there is only 1 rowset.
+ rowsetCount = get_rowset_count.call(tablets);
+ assert (rowsetCount == 1 * replicaNum)
+
+ run_sql.call()
+ }
+
+ boolean invertedIndexCompactionEnable = false
+ boolean has_update_be_config = false
+ try {
+ String backend_id;
+ backend_id = backendId_to_backendIP.keySet()[0]
+ def (code, out, err) =
show_be_config(backendId_to_backendIP.get(backend_id),
backendId_to_backendHttpPort.get(backend_id))
+
+ logger.info("Show config: code=" + code + ", out=" + out + ", err=" +
err)
+ assertEquals(code, 0)
+ def configList = parseJson(out.trim())
+ assert configList instanceof List
+
+ for (Object ele in (List) configList) {
+ assert ele instanceof List<String>
+ if (((List<String>) ele)[0] == "inverted_index_compaction_enable")
{
+ invertedIndexCompactionEnable =
Boolean.parseBoolean(((List<String>) ele)[2])
+ logger.info("inverted_index_compaction_enable:
${((List<String>) ele)[2]}")
+ }
+ if (((List<String>) ele)[0] == "disable_auto_compaction") {
+ disableAutoCompaction = Boolean.parseBoolean(((List<String>)
ele)[2])
+ logger.info("disable_auto_compaction: ${((List<String>)
ele)[2]}")
+ }
+ }
+ set_be_config.call("inverted_index_compaction_enable", "true")
+ has_update_be_config = true
+ // check updated config
+ check_config.call("inverted_index_compaction_enable", "true");
+
+
+ /**
+ * test for duplicated key table
+ */
+ sql """ DROP TABLE IF EXISTS ${tableName}; """
+ sql """
+ CREATE TABLE IF NOT EXISTS `${tableName}` (
+ `id` int NULL COMMENT "",
+ `city` varchar(20) NULL COMMENT "",
+ `addr` varchar(20) NULL COMMENT "",
+ `name` varchar(20) NULL COMMENT "",
+ `compy` varchar(20) NULL COMMENT "",
+ `n` int NULL COMMENT "",
+ INDEX idx_city(city) USING INVERTED,
+ INDEX idx_addr(addr) USING INVERTED
PROPERTIES("parser"="english"),
+ INDEX idx_n(n) USING INVERTED
+ ) ENGINE=OLAP
+ DUPLICATE KEY(`id`)
+ COMMENT "OLAP"
+ DISTRIBUTED BY HASH(`id`) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "disable_auto_compaction" = "true",
+ "in_memory" = "false",
+ "storage_format" = "V2"
+ )
+ """
+
+
//TabletId,ReplicaId,BackendId,SchemaHash,Version,LstSuccessVersion,LstFailedVersion,LstFailedTime,LocalDataSize,RemoteDataSize,RowCount,State,LstConsistencyCheckTime,CheckVersion,VersionCount,PathHash,MetaUrl,CompactionStatus
+ String[][] tablets = sql """ show tablets from ${tableName}; """
+
+ run_test.call(tablets)
+
+ /**
+ * test for unique key table
+ */
+ tableName = "test_index_compaction_null_unique"
+
+ sql """ DROP TABLE IF EXISTS ${tableName}; """
+ sql """
+ CREATE TABLE IF NOT EXISTS `${tableName}` (
+ `id` int NULL COMMENT "",
+ `city` varchar(20) NULL COMMENT "",
+ `addr` varchar(20) NULL COMMENT "",
+ `name` varchar(20) NULL COMMENT "",
+ `compy` varchar(20) NULL COMMENT "",
+ `n` int NULL COMMENT "",
+ INDEX idx_city(city) USING INVERTED,
+ INDEX idx_addr(addr) USING INVERTED
PROPERTIES("parser"="english"),
+ INDEX idx_n(n) USING INVERTED
+ ) ENGINE=OLAP
+ UNIQUE KEY(`id`)
+ COMMENT "OLAP"
+ DISTRIBUTED BY HASH(`id`) BUCKETS 1
+ PROPERTIES (
+ "replication_allocation" = "tag.location.default: 1",
+ "disable_auto_compaction" = "true",
+ "in_memory" = "false",
+ "storage_format" = "V2"
+ )
+ """
+
+ tablets = sql """ show tablets from ${tableName}; """
+ run_test.call(tablets)
+
+ } finally {
+ if (has_update_be_config) {
+ set_be_config.call("inverted_index_compaction_enable",
invertedIndexCompactionEnable.toString())
+ }
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]