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 <jianliang5...@gmail.com> 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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org