This is an automated email from the ASF dual-hosted git repository. kxiao pushed a commit to branch branch-2.0 in repository https://gitbox.apache.org/repos/asf/doris.git
commit df064d1edc0f058c28d9dc3a7bd9deb70e2b59ec Author: TengJianPing <18241664+jackte...@users.noreply.github.com> AuthorDate: Fri Sep 8 10:27:37 2023 +0800 [fix](intersect) fix wrong result of intersect node (#24044) Issue Number: close #24046 --- be/src/vec/exec/vset_operation_node.cpp | 56 +- .../data/query_p0/intersect/test_intersect2.csv | 2000 ++++++++++++++++++++ .../data/query_p0/intersect/test_intersect2.out | 18 + .../query_p0/intersect/test_intersect2.groovy | 111 ++ 4 files changed, 2154 insertions(+), 31 deletions(-) diff --git a/be/src/vec/exec/vset_operation_node.cpp b/be/src/vec/exec/vset_operation_node.cpp index ac01cbd5da..02d464d99e 100644 --- a/be/src/vec/exec/vset_operation_node.cpp +++ b/be/src/vec/exec/vset_operation_node.cpp @@ -682,7 +682,7 @@ void VSetOperationNode<is_intersect>::refresh_hash_table() { HashTableCtxType tmp_hash_table; bool is_need_shrink = arg.hash_table.should_be_shrink(_valid_element_in_hash_tbl); - if (is_need_shrink) { + if (is_intersect || is_need_shrink) { tmp_hash_table.hash_table.init_buf_size( _valid_element_in_hash_tbl / arg.hash_table.get_factor() + 1); } @@ -690,39 +690,33 @@ void VSetOperationNode<is_intersect>::refresh_hash_table() { arg.init_once(); auto& iter = arg.iter; auto iter_end = arg.hash_table.end(); - while (iter != iter_end) { - auto& mapped = iter->get_second(); - auto it = mapped.begin(); - - if constexpr (is_intersect) { //intersected - if (it->visited) { - it->visited = false; - if (is_need_shrink) { - tmp_hash_table.hash_table.insert(iter->get_value()); + std::visit( + [&](auto is_need_shrink_const) { + while (iter != iter_end) { + auto& mapped = iter->get_second(); + auto it = mapped.begin(); + + if constexpr (is_intersect) { //intersected + if (it->visited) { + it->visited = false; + tmp_hash_table.hash_table.insert(iter->get_value()); + } + ++iter; + } else { //except + if constexpr (is_need_shrink_const) { + if (!it->visited) { + tmp_hash_table.hash_table.insert( + iter->get_value()); + } + } + ++iter; + } } - ++iter; - } else { - if (!is_need_shrink) { - arg.hash_table.delete_zero_key(iter->get_first()); - // the ++iter would check if the current key is zero. if it does, the iterator will be moved to the container's head. - // so we do ++iter before set_zero to make the iterator move to next valid key correctly. - auto iter_prev = iter; - ++iter; - iter_prev->set_zero(); - } else { - ++iter; - } - } - } else { //except - if (!it->visited && is_need_shrink) { - tmp_hash_table.hash_table.insert(iter->get_value()); - } - ++iter; - } - } + }, + make_bool_variant(is_need_shrink)); arg.inited = false; - if (is_need_shrink) { + if (is_intersect || is_need_shrink) { arg.hash_table = std::move(tmp_hash_table.hash_table); } } else { diff --git a/regression-test/data/query_p0/intersect/test_intersect2.csv b/regression-test/data/query_p0/intersect/test_intersect2.csv new file mode 100644 index 0000000000..131867ced1 --- /dev/null +++ b/regression-test/data/query_p0/intersect/test_intersect2.csv @@ -0,0 +1,2000 @@ +459 DE 88 +760 UK 59 +292 UK -65 +964 ES 77 +001 UK -69 +095 DE 102 +661 UK 94 +404 ES -104 +348 DE -82 +350 ES 77 +601 DE 100 +282 DE -78 +443 DE -8 +134 UK 91 +720 ES -34 +479 UK 94 +675 UK 76 +389 DE -53 +388 DE 107 +369 ES -120 +801 UK 0 +637 ES 44 +100 ES 9 +478 ES 92 +653 UK 82 +768 ES -92 +495 UK -30 +304 ES -37 +600 UK 67 +696 UK 97 +380 ES -10 +266 DE -108 +488 ES 32 +912 DE -52 +497 UK 72 +500 DE 31 +894 UK 115 +451 UK 119 +025 ES 57 +709 ES -41 +544 DE -95 +167 ES 64 +825 UK 28 +084 UK -84 +846 ES -51 +299 ES -47 +848 UK \N +332 DE 0 +414 UK 3 +220 DE -83 +038 ES 13 +905 DE 71 +985 ES 78 +858 UK -30 +510 UK 5 +106 DE 6 +623 ES 121 +282 UK -97 +052 DE -110 +926 ES 79 +974 UK \N +096 DE -17 +433 ES 117 +717 ES 54 +680 ES -113 +871 DE 116 +328 UK -64 +145 ES 94 +575 UK -16 +030 ES 76 +781 UK -15 +068 DE -105 +069 DE -77 +128 ES -23 +024 DE 30 +896 UK -109 +875 UK \N +364 UK \N +278 UK -59 +623 UK \N +427 DE 58 +470 UK -116 +174 DE -78 +680 DE 78 +731 UK -78 +074 DE 25 +305 UK -102 +170 UK -123 +239 DE \N +355 DE -117 +822 UK 27 +380 ES -106 +850 DE \N +330 UK -44 +194 UK \N +366 DE 127 +574 UK -62 +158 ES -100 +822 ES 79 +901 DE 94 +988 ES \N +624 DE 104 +914 DE 9 +137 ES 52 +102 ES -48 +300 DE -35 +359 UK -21 +899 UK 114 +006 ES 128 +036 DE \N +227 UK 75 +873 ES -1 +630 DE -99 +885 ES 55 +943 ES 52 +590 UK 17 +310 UK -124 +949 ES 96 +869 UK -28 +294 DE -122 +163 UK 92 +624 UK -72 +168 UK \N +929 ES 10 +181 ES -69 +755 ES 81 +087 UK 75 +579 ES 26 +252 UK -106 +745 UK -74 +056 UK -103 +059 UK -13 +257 ES 70 +829 ES 9 +224 ES 112 +321 ES 9 +867 DE 110 +789 ES -102 +232 UK -88 +118 UK 91 +677 DE 36 +473 ES -106 +224 DE 93 +666 ES 47 +888 DE -57 +794 UK 41 +728 UK -83 +766 DE -121 +768 ES 24 +965 ES -24 +615 DE -56 +301 DE 122 +431 DE 10 +368 UK -41 +664 UK 57 +372 ES -10 +248 UK \N +785 DE 17 +694 DE 86 +403 UK 51 +146 UK -50 +542 ES -54 +275 DE 35 +439 DE 31 +485 UK 98 +804 ES -15 +551 DE \N +916 DE 105 +104 DE 89 +619 DE -96 +332 UK -9 +668 DE -96 +297 DE -79 +249 DE -36 +558 UK -74 +999 ES 2 +090 DE 110 +747 DE 103 +161 ES 31 +116 ES -44 +146 DE 45 +310 ES 123 +336 UK -85 +735 UK -39 +559 UK 15 +866 ES 37 +133 DE 90 +940 ES \N +224 UK 79 +772 DE -111 +061 DE 2 +532 DE 67 +175 UK 28 +536 DE -102 +896 UK 60 +445 UK 36 +214 UK 38 +344 DE -40 +234 ES 5 +685 UK -107 +273 DE 36 +972 ES 103 +267 UK -23 +146 DE -121 +113 UK 36 +475 ES -3 +231 DE 99 +659 ES -1 +716 UK 23 +365 UK 58 +329 ES -36 +344 ES 84 +085 UK 3 +952 UK 46 +933 UK 33 +059 DE 80 +602 UK 19 +542 ES 46 +795 UK 26 +118 DE -16 +757 UK 32 +019 ES 5 +143 UK 122 +925 ES 27 +370 ES -11 +141 UK 32 +951 ES 55 +464 ES -96 +721 DE -125 +155 DE 28 +020 ES -21 +027 ES -89 +521 UK -88 +386 DE -119 +186 ES \N +178 ES 80 +788 ES 90 +978 UK -36 +209 ES -28 +410 DE 29 +715 UK -42 +996 UK -65 +191 UK -45 +233 ES 124 +337 DE -82 +582 UK -80 +940 DE 37 +000 ES \N +680 ES -72 +193 ES 107 +395 DE 55 +097 DE -112 +983 UK \N +490 UK 56 +537 DE -112 +490 ES -116 +577 UK -19 +111 DE 59 +007 DE 104 +768 DE -27 +455 DE 8 +863 DE \N +253 UK 99 +275 ES -115 +017 DE -98 +939 DE -32 +136 DE 119 +344 DE \N +868 UK 33 +692 ES -97 +150 DE -96 +620 UK 32 +142 ES -65 +473 ES -29 +697 DE \N +314 UK 41 +145 ES 110 +468 DE 28 +145 ES -61 +411 UK -61 +699 DE -37 +708 ES 62 +217 UK 22 +193 ES -50 +998 ES 42 +679 DE 58 +509 DE -26 +568 DE -85 +164 UK -105 +248 DE 22 +738 UK -31 +171 ES -50 +023 ES 61 +469 UK 38 +540 ES -98 +325 DE -5 +324 UK 50 +857 ES -75 +746 DE -44 +186 UK -26 +575 DE -126 +299 DE -34 +996 ES 43 +873 UK -76 +309 ES -11 +693 DE -27 +810 ES 115 +675 DE 79 +136 UK 24 +681 UK -36 +295 DE -13 +141 DE -80 +852 DE 54 +204 UK 124 +966 ES -105 +909 ES \N +443 UK 98 +625 DE 36 +017 DE 97 +772 ES 77 +194 ES 128 +185 DE -111 +625 DE -120 +757 DE 113 +985 ES -70 +953 DE -99 +445 UK \N +000 UK 54 +868 ES 25 +235 DE -60 +608 DE -1 +899 UK -29 +388 DE -13 +167 DE 122 +747 DE -29 +428 DE -52 +141 ES 31 +353 ES -120 +866 DE 13 +825 UK -128 +649 DE -44 +179 UK \N +109 ES \N +888 DE -20 +810 DE 59 +552 UK -114 +634 UK -4 +077 DE -21 +049 ES -31 +643 DE 102 +803 UK -55 +274 DE 115 +981 ES 63 +895 UK -107 +707 ES -39 +465 DE 46 +804 DE -106 +622 UK -87 +698 DE 124 +440 ES -2 +428 DE -4 +019 DE 101 +453 ES 50 +892 UK 126 +880 UK 58 +960 UK 87 +557 UK \N +884 ES -15 +459 ES 98 +786 UK -126 +257 DE 107 +157 UK 108 +680 ES 122 +943 ES -115 +885 DE -41 +230 UK 67 +553 DE 7 +723 ES 38 +684 UK 54 +067 ES -53 +840 DE -63 +786 UK -121 +589 DE -114 +971 DE -112 +823 ES -57 +992 ES -67 +592 DE 31 +771 UK -106 +960 ES -95 +363 UK -108 +702 UK -48 +423 UK -11 +929 UK -23 +733 DE -46 +155 ES 39 +034 DE -120 +699 DE 29 +071 UK 97 +956 DE 5 +434 UK 100 +698 DE 103 +819 ES -118 +825 ES -66 +438 UK \N +384 UK -4 +127 ES 113 +431 DE -107 +296 ES 36 +920 ES 16 +033 UK 71 +388 DE 117 +058 ES -91 +370 ES -127 +681 DE 108 +774 ES -30 +460 DE -71 +826 UK -37 +997 ES -43 +709 ES \N +632 DE -105 +685 DE 104 +509 DE -107 +593 UK 36 +871 DE 89 +737 ES 17 +357 DE -51 +065 ES -71 +005 ES -90 +472 ES 11 +439 UK -54 +031 DE -24 +281 ES -51 +169 UK 38 +184 DE 4 +360 DE 52 +573 DE \N +868 DE -9 +345 ES -125 +847 UK -23 +766 UK 70 +159 ES \N +110 UK -67 +936 ES -122 +159 ES 36 +447 ES 5 +848 ES -108 +329 DE -125 +488 UK 110 +106 DE -93 +207 UK -1 +057 DE -39 +888 UK -73 +544 ES -26 +154 DE 115 +915 UK 9 +865 UK -63 +786 UK 9 +442 DE -10 +950 UK -116 +252 UK 109 +142 DE \N +568 UK 87 +548 UK 126 +398 DE 39 +779 ES -83 +472 UK -44 +196 DE -78 +558 DE \N +639 DE -27 +957 UK -3 +429 ES -36 +771 ES 92 +825 DE 86 +451 ES -19 +234 ES 57 +291 UK 119 +990 DE 20 +036 ES -90 +077 DE 30 +297 DE -126 +179 DE -71 +657 DE 115 +954 DE 3 +445 ES \N +545 UK 58 +452 ES 114 +117 ES 50 +691 DE -85 +987 DE 54 +243 ES 107 +784 DE -108 +859 DE 97 +746 DE -99 +749 ES 101 +180 UK -76 +482 UK -86 +657 DE 33 +232 ES \N +526 DE -84 +609 ES 113 +245 ES -32 +764 UK -18 +327 UK 21 +772 DE 44 +621 ES -73 +340 UK -128 +019 DE 18 +686 DE -52 +967 DE 112 +101 DE -39 +841 UK 21 +635 UK -32 +191 ES -2 +474 UK -33 +926 DE \N +105 UK -88 +235 DE 79 +375 ES -12 +022 DE -69 +156 UK -42 +557 DE 116 +578 DE -12 +239 DE -50 +854 DE -95 +252 ES 94 +702 ES -57 +126 UK -79 +319 ES -64 +623 UK -45 +105 ES -13 +051 ES 33 +246 DE -61 +914 ES 37 +964 UK 50 +676 DE -36 +187 ES 113 +706 DE 81 +440 ES -83 +988 ES 92 +169 UK 92 +382 UK 101 +469 DE 122 +999 ES 109 +745 UK 73 +760 ES 115 +179 UK 31 +885 UK 44 +404 UK -68 +768 ES -95 +732 ES 11 +365 DE -119 +166 ES 99 +180 DE 103 +634 ES -101 +760 ES \N +974 ES -118 +073 ES 72 +050 UK -42 +526 DE 14 +763 ES -59 +139 UK -7 +156 DE -17 +036 UK 118 +728 ES -123 +761 DE -108 +134 DE 20 +941 ES -69 +544 DE 108 +774 DE 110 +926 UK 103 +902 UK 35 +270 ES -78 +282 DE 26 +278 DE 20 +315 UK -35 +912 ES 103 +524 UK 40 +708 DE \N +391 UK 126 +391 ES -26 +989 UK 110 +924 UK -108 +880 DE -16 +509 ES \N +718 ES 27 +511 UK -128 +741 DE 103 +420 ES 123 +544 UK \N +201 ES -65 +892 UK -43 +221 DE -87 +602 UK 86 +812 DE 52 +359 DE -30 +859 UK 97 +786 ES \N +827 UK 0 +557 ES \N +934 UK -4 +162 ES 116 +280 DE 104 +736 ES -13 +080 ES -116 +144 UK -120 +273 UK -36 +079 UK 101 +053 ES -124 +630 UK -108 +369 ES -59 +924 ES -90 +270 UK -28 +368 DE -97 +115 UK 91 +262 ES 80 +730 ES 39 +090 UK 84 +077 UK -77 +482 UK -115 +623 DE 10 +546 ES -114 +306 ES -53 +521 DE 102 +832 UK 103 +261 ES -9 +772 ES \N +653 DE 55 +133 DE 24 +383 DE 78 +479 DE 86 +177 ES 65 +878 ES 117 +709 DE 41 +119 ES 110 +079 DE 35 +024 UK -119 +947 DE -118 +892 ES 77 +928 ES -91 +272 DE -127 +750 DE 8 +967 ES 47 +100 DE -60 +558 UK 110 +627 UK 90 +402 UK 94 +712 DE -28 +425 DE 30 +520 DE 112 +502 ES -74 +882 UK -23 +506 ES -122 +361 DE -87 +772 ES 18 +841 ES -75 +072 DE -104 +625 DE -47 +398 UK -34 +379 UK 102 +058 UK -88 +761 ES -27 +777 ES 1 +448 ES 48 +630 ES \N +500 DE 57 +101 DE -44 +538 ES -61 +503 DE -69 +499 ES 72 +381 DE 73 +668 ES 119 +553 ES -84 +403 DE 80 +133 UK 2 +308 UK 127 +488 ES 104 +630 UK 42 +562 UK -40 +469 UK 43 +939 UK -12 +985 DE -1 +812 ES 8 +575 DE \N +507 UK -3 +887 DE 89 +853 DE 104 +178 ES 118 +769 DE 33 +439 UK 88 +278 ES \N +301 ES 97 +435 ES 19 +093 ES 82 +925 UK 108 +622 ES 104 +388 UK -44 +473 DE 62 +276 ES -101 +582 UK \N +253 UK 10 +451 ES -58 +909 DE 124 +932 DE -37 +502 ES 97 +430 DE -43 +173 ES -49 +576 UK -73 +174 DE 116 +005 DE -94 +012 UK 26 +076 ES 26 +434 ES -72 +669 UK -35 +554 DE 4 +254 DE -51 +501 UK -116 +076 ES \N +233 UK -52 +328 UK 125 +847 UK -17 +907 UK \N +697 ES 124 +701 UK -64 +547 UK -47 +068 UK 20 +871 DE 55 +276 ES -118 +978 ES 114 +064 ES -109 +729 UK 26 +856 ES 66 +634 ES 86 +918 DE -74 +208 UK -51 +461 ES 56 +575 ES 32 +451 ES -63 +454 DE -72 +941 DE -49 +375 ES -79 +932 ES 103 +624 UK -75 +431 ES -54 +072 DE 38 +751 ES 19 +879 ES -67 +266 ES -34 +234 DE 27 +392 UK \N +102 UK -4 +971 DE 91 +692 DE 72 +171 DE 27 +095 DE -89 +905 DE -25 +849 UK 15 +674 ES 20 +876 ES -106 +962 ES 27 +786 ES 21 +932 DE -95 +386 ES -94 +957 ES 5 +699 ES -68 +016 DE 52 +652 ES 20 +213 ES -120 +090 UK -93 +964 UK -118 +414 UK -15 +834 UK -39 +193 UK -33 +526 UK -124 +486 ES -41 +659 UK -23 +119 ES \N +323 UK -89 +216 UK 94 +141 DE 128 +634 DE 65 +253 UK 54 +696 ES 76 +712 UK -115 +273 UK -46 +487 ES -65 +160 ES -58 +655 DE -14 +246 ES 121 +405 UK 74 +426 DE -17 +077 DE 81 +790 ES 44 +611 UK 58 +513 DE -2 +755 UK -59 +923 ES 24 +601 DE -63 +644 ES 52 +795 ES 36 +436 ES -19 +911 ES -72 +848 DE -59 +798 UK 15 +466 UK -44 +402 UK -118 +093 ES 13 +511 DE 108 +114 ES 77 +950 UK 80 +492 DE -82 +982 DE -85 +063 UK -107 +424 ES 45 +445 UK -47 +493 UK -122 +511 UK 41 +475 DE 17 +660 DE -65 +844 ES -74 +473 ES -26 +698 DE -36 +749 DE 74 +562 DE \N +691 UK 81 +484 ES -41 +891 ES -58 +743 UK 107 +700 UK -117 +743 DE -126 +851 ES -87 +036 DE -99 +462 UK -95 +042 ES -58 +673 UK 81 +183 ES 78 +369 UK 20 +669 DE -6 +750 ES 111 +777 DE -42 +312 DE 75 +492 ES -93 +716 ES 77 +988 DE 60 +717 DE -85 +273 DE 37 +576 UK 73 +091 DE 123 +790 UK -68 +074 ES \N +480 UK \N +859 ES -37 +913 UK -13 +428 DE -122 +665 UK -128 +235 UK -100 +174 DE -115 +968 UK 68 +826 DE 83 +051 DE -101 +362 UK 70 +556 UK -110 +536 DE -75 +320 UK 27 +650 ES 120 +367 ES -90 +391 DE 95 +755 UK -67 +347 ES 76 +435 ES -113 +645 UK -103 +336 DE 81 +634 UK -105 +574 ES -13 +463 UK 3 +389 ES -124 +185 DE -43 +547 ES -48 +247 UK 120 +998 ES \N +139 DE -69 +098 DE 24 +652 DE 38 +034 UK -96 +167 ES 28 +412 DE 55 +102 ES -53 +735 ES 92 +446 DE 20 +516 ES -73 +737 DE -51 +950 UK 54 +934 ES 95 +052 DE -48 +951 ES -37 +230 UK 2 +956 ES -9 +697 UK 49 +851 DE 20 +145 DE -80 +300 DE -109 +356 ES \N +354 ES -108 +625 UK -120 +626 DE -29 +612 DE -36 +325 ES 49 +289 DE -13 +156 DE 68 +157 UK 6 +461 UK -40 +092 ES -91 +760 UK -53 +999 ES 87 +265 DE 106 +443 ES \N +984 DE -35 +013 ES 1 +758 DE -103 +694 DE \N +685 UK \N +010 DE 76 +848 UK 15 +285 ES 27 +864 DE 62 +091 DE -42 +982 UK 106 +856 ES 9 +145 DE \N +436 UK 5 +133 DE -69 +008 UK 125 +055 DE 86 +718 ES 99 +533 UK -18 +702 DE 73 +108 UK -36 +614 ES -8 +531 ES -122 +847 ES 68 +784 UK 102 +727 ES -77 +728 UK 35 +065 ES 28 +090 UK -24 +255 UK -45 +602 UK -113 +042 ES -100 +364 UK -13 +523 DE -121 +526 ES 69 +361 DE -92 +902 UK 81 +799 UK -76 +254 UK -104 +628 UK 25 +810 ES 107 +315 DE -93 +709 ES -102 +939 UK 25 +657 UK -86 +660 DE 35 +931 UK 78 +736 UK 124 +183 UK -32 +994 ES -54 +718 DE 10 +287 UK 103 +316 DE 81 +613 UK 5 +627 DE -114 +406 ES 54 +076 UK 56 +542 UK 16 +067 ES \N +750 DE 118 +112 UK 68 +292 ES -17 +689 ES 75 +757 UK -29 +209 ES -57 +353 ES -72 +767 UK 41 +936 ES 77 +497 ES 62 +973 DE -34 +795 UK 56 +491 DE 15 +819 ES 29 +079 DE -72 +927 DE 45 +293 ES -85 +863 DE 26 +336 ES -84 +735 ES -17 +241 UK 68 +811 DE -65 +270 UK 109 +665 ES 97 +222 UK 112 +005 UK -88 +020 ES -108 +980 DE 92 +270 ES -18 +804 UK -6 +598 ES 107 +726 ES \N +595 DE -86 +602 DE 111 +155 DE -4 +985 UK 112 +008 UK -24 +949 UK 116 +540 ES -12 +158 ES 94 +789 UK -70 +031 UK 105 +466 DE -90 +724 ES -59 +968 ES 44 +499 UK -87 +643 UK 20 +622 UK -65 +927 ES 93 +121 DE 117 +724 DE -122 +061 DE 69 +996 UK 10 +883 ES -35 +425 DE 28 +490 ES -111 +065 DE -53 +430 UK 56 +830 DE -26 +125 UK 102 +506 UK 56 +857 DE 67 +505 ES -106 +698 UK -101 +749 DE -67 +090 DE \N +205 DE 27 +184 UK -48 +626 ES 25 +846 UK -1 +022 ES -38 +854 DE 71 +981 ES -10 +733 DE -22 +133 DE -21 +646 UK 1 +546 UK -98 +896 UK \N +088 UK -126 +298 UK -65 +076 UK -30 +854 UK 90 +941 DE 93 +721 DE 27 +310 DE 70 +508 DE -23 +548 UK -49 +628 ES 85 +065 ES -55 +223 UK 117 +280 UK -50 +618 ES 87 +590 DE 20 +462 ES -75 +587 UK 33 +812 UK -64 +840 UK 106 +829 DE \N +168 UK 27 +873 ES 20 +201 DE 72 +022 ES -46 +580 UK 61 +325 UK 62 +372 DE 61 +765 ES 62 +616 UK -51 +260 ES 113 +515 DE -59 +907 ES -82 +362 ES \N +722 DE \N +543 UK -89 +717 ES 32 +105 UK 86 +319 DE -70 +176 DE -60 +750 ES 119 +304 ES -30 +146 DE 36 +229 UK -51 +807 ES 103 +112 UK -109 +823 DE -14 +254 DE -47 +845 DE 59 +556 DE -88 +987 DE -59 +052 UK 66 +973 UK 109 +370 DE 119 +249 DE 30 +037 DE -109 +677 DE -23 +601 UK 19 +746 DE -67 +553 DE -7 +887 UK -95 +272 UK -33 +394 UK -5 +028 UK -32 +676 UK -121 +803 ES 114 +779 UK 38 +727 ES -56 +879 ES 71 +361 ES -128 +633 DE 96 +445 DE -11 +977 DE 106 +246 DE \N +868 DE 21 +422 ES 63 +553 UK -29 +023 ES 11 +800 UK -62 +116 DE 39 +378 ES 49 +442 UK -94 +518 UK 4 +658 DE 67 +813 ES -49 +478 DE 74 +753 ES 101 +844 UK 99 +302 ES -59 +289 ES -18 +688 ES 72 +160 ES -9 +488 ES -84 +349 UK 96 +757 DE 10 +718 UK 17 +784 UK 7 +713 DE 9 +020 DE \N +042 UK -109 +731 ES 4 +188 DE 30 +933 UK -77 +796 ES 109 +642 ES -25 +947 DE 39 +352 UK 59 +774 UK 48 +798 DE -49 +504 ES 65 +895 DE -115 +467 UK 66 +218 ES 52 +642 ES 116 +019 UK 52 +662 DE -23 +117 ES 18 +678 DE -81 +688 ES 8 +293 ES 122 +990 ES 48 +883 DE 23 +111 DE 8 +047 ES -8 +109 ES -101 +541 ES -114 +587 ES \N +132 DE 66 +350 ES -55 +224 ES -122 +767 DE 12 +270 UK -62 +531 DE 120 +555 UK -48 +861 UK -53 +725 ES 71 +542 ES -57 +847 DE 91 +373 UK -83 +166 ES 77 +708 ES 9 +640 ES 90 +544 UK 77 +653 DE -32 +585 DE 109 +420 ES 44 +942 DE 68 +038 ES -118 +731 ES 96 +769 DE -66 +106 UK 123 +163 UK 32 +982 DE 118 +763 ES 45 +906 UK -117 +318 ES 67 +814 UK 77 +395 UK -8 +821 DE -23 +723 UK 79 +891 UK -1 +346 UK 53 +392 ES 109 +169 UK -63 +714 UK -64 +198 ES 71 +305 DE -99 +530 UK -121 +426 ES 119 +576 UK 82 +482 UK -85 +243 DE \N +650 DE -111 +698 UK 12 +017 DE -123 +225 DE 7 +654 UK -18 +029 ES 108 +281 ES -36 +255 UK 61 +268 DE 28 +188 UK -95 +748 ES -68 +228 DE -118 +462 ES -32 +347 UK 41 +596 UK -41 +562 ES -2 +405 ES 1 +935 DE -5 +174 ES 32 +020 DE -59 +128 UK \N +885 DE 43 +769 DE 77 +388 UK -44 +615 UK -12 +779 UK 18 +776 UK 42 +161 DE -89 +785 ES 108 +111 ES -36 +435 UK 48 +111 UK -110 +217 UK -16 +976 UK \N +826 DE 125 +234 UK -48 +257 DE -69 +295 ES -68 +050 DE -120 +605 ES -8 +834 ES 71 +387 ES 106 +039 ES 17 +163 ES -87 +087 ES 116 +904 UK -62 +591 ES 70 +943 UK 125 +376 DE 24 +966 ES 57 +897 ES 12 +468 DE 89 +027 DE 9 +391 DE -113 +813 UK 55 +367 DE 25 +888 DE -81 +480 DE 59 +799 ES 28 +111 DE 56 +859 UK -97 +767 UK 89 +470 DE 25 +426 DE 86 +556 ES 22 +328 UK -120 +684 DE -25 +106 ES \N +644 ES 74 +240 DE -75 +395 UK -51 +839 DE -99 +077 UK 30 +761 UK 27 +747 UK -63 +195 DE -49 +702 ES -48 +149 DE -95 +880 ES 88 +673 UK -102 +191 DE -41 +321 UK -107 +829 DE \N +035 UK -126 +314 UK -83 +328 DE 112 +468 UK -98 +257 DE 67 +399 UK 52 +085 ES -115 +893 DE \N +055 DE 7 +205 DE \N +314 DE 76 +019 ES -118 +816 DE 26 +334 ES -104 +599 UK \N +500 ES 119 +760 DE 101 +996 DE 84 +818 ES 97 +808 ES -7 +087 UK -1 +302 UK 74 +337 ES \N +055 DE -40 +440 DE -117 +438 UK -53 +439 UK 88 +969 DE -24 +172 ES -26 +774 DE 43 +137 DE 121 +074 ES 25 +457 DE 76 +487 UK 65 +498 DE -77 +552 UK -31 +953 DE -115 +586 ES 37 +497 ES 14 +582 ES -116 +644 UK 13 +652 DE -54 +638 DE 22 +620 ES -76 +800 UK 97 +196 ES -29 +406 DE -28 +879 DE 28 +936 ES 76 +518 ES 31 +799 UK -109 +409 ES 34 +905 DE 9 +743 DE 14 +420 DE -109 +155 DE 116 +322 UK 108 +970 ES -48 +458 DE -113 +881 UK 85 +369 UK \N +576 DE -18 +587 ES -120 +440 UK 26 +341 ES 64 +508 ES -73 +824 DE 34 +545 ES 14 +825 UK 5 +786 ES -71 +495 ES -103 +407 ES 23 +387 DE -65 +614 UK 83 +744 ES 53 +002 ES 67 +694 DE -23 +663 ES 54 +128 UK 0 +358 DE -50 +777 UK 25 +588 ES -29 +107 UK 74 +847 ES -91 +513 DE \N +165 DE -51 +757 DE 15 +473 ES -76 +354 UK -115 +961 ES 6 +056 ES 27 +257 DE -5 +702 ES 95 +835 UK -110 +896 UK -78 +205 UK 37 +194 ES -13 +185 ES -20 +947 ES 92 +608 UK 19 +782 UK -6 +134 ES -72 +575 DE -85 +334 ES -7 +267 ES -115 +348 ES -75 +887 UK 25 +205 ES -32 +124 UK -23 +524 UK 73 +942 DE -81 +582 ES 109 +983 DE -54 +555 ES -82 +048 DE 85 +956 ES 127 +158 DE 62 +129 UK -85 +711 DE -127 +664 ES -27 +774 ES \N +586 ES 117 +867 UK -52 +490 UK -93 +334 DE -11 +816 UK -121 +841 UK 80 +233 DE -93 +352 UK 96 +497 DE -57 +677 ES \N +531 UK 98 +318 UK -57 +533 UK -101 +222 UK 7 +686 UK -82 +101 UK 56 +226 ES -117 +209 DE -87 +695 ES -17 +605 DE 4 +922 DE \N +977 ES -109 +546 UK 96 +501 ES 123 +281 ES 109 +905 DE -79 +030 DE 20 +145 UK 93 +415 ES 57 +695 ES 89 +986 DE \N +571 UK 91 +401 ES -1 +191 ES 8 +805 DE 27 +313 UK 36 +976 UK 49 +017 UK 35 +762 UK 7 +599 ES -123 +455 UK -126 +776 ES -44 +535 UK -113 +296 DE -86 +835 DE -15 +701 UK -90 +988 ES -106 +130 DE 99 +040 ES -33 +312 UK 80 +123 DE 15 +469 DE -53 +005 ES -43 +482 ES 118 +333 DE 85 +311 UK 110 +075 UK -4 +435 UK 1 +218 UK -120 +352 DE 0 +856 ES -117 +485 ES 31 +921 UK -19 +969 DE 1 +450 ES 16 +858 ES -20 +521 ES 32 +874 DE 47 +933 DE -55 +361 ES 122 +222 ES -61 +649 UK -31 +517 DE -53 +608 ES 104 +755 DE 100 +090 ES 56 +727 DE -124 +764 DE -120 +906 DE 68 +230 UK \N +856 ES 59 +542 DE -49 +644 DE -53 +040 DE -69 +933 UK -59 +358 DE 14 +981 ES 70 +446 DE -52 +125 UK -37 +822 ES -27 +786 UK -109 +360 UK -125 +374 ES 43 +685 DE 109 +555 ES -39 +756 UK -32 +089 DE 80 +691 DE -73 +889 UK 32 +401 DE \N +321 UK 90 +017 UK 91 +931 ES -79 +841 UK 91 +055 UK -72 +394 ES -48 +164 DE 70 +398 UK -5 +668 DE 8 +979 ES -29 +113 ES 96 +026 ES -76 +948 ES -7 +843 UK -13 +579 DE 19 +745 ES 53 +612 ES \N +563 UK 34 +297 DE 105 +071 ES -69 +554 ES 49 +800 ES 55 +245 UK 87 +330 ES -119 +743 DE 82 +024 DE 61 +092 ES 33 +003 ES 77 +312 ES -86 +133 DE -82 +807 UK 61 +783 UK \N +909 ES 12 +485 ES -99 +852 DE -76 +212 ES 62 +074 DE -6 +749 UK -76 +981 ES -69 +001 UK 25 +457 UK 104 +115 ES -99 +448 ES \N +989 ES -36 +816 ES 5 +533 ES 82 +604 ES 79 +696 UK -20 +209 UK 125 +732 UK 95 +848 UK 117 +230 UK 3 +552 ES 13 +650 DE -115 +506 DE 29 +966 UK -56 +738 ES -15 +471 UK -30 +922 ES -23 +008 ES -116 +045 DE -78 +343 ES 7 +598 UK 80 +120 DE -105 +858 UK -82 +053 ES \N +097 ES -67 +567 UK -127 +850 UK \N +155 UK 0 +015 ES -20 +577 DE 56 +705 DE -8 +860 UK -38 +250 ES -47 +846 UK -40 +920 ES \N +135 ES 37 +266 UK 84 +477 UK -97 +189 UK -73 +074 UK -28 +101 UK -6 +763 DE -13 +388 ES 34 +241 DE 71 +073 UK 8 +341 UK -96 +151 DE -26 +436 DE 62 +282 DE -89 +054 DE -98 +083 ES -33 +227 UK 32 +100 ES -91 +227 ES 58 +523 UK -13 +606 UK 61 +970 ES 115 +425 UK 91 +302 DE \N +120 ES -67 +646 DE -35 +762 UK -47 +623 UK -122 +810 ES -128 +769 UK \N +261 DE -127 +978 DE -90 +788 ES 74 +360 DE -97 +470 ES 104 +598 ES -41 +090 UK 58 +817 UK 88 +024 UK -63 +045 DE -22 +519 UK -105 +684 UK -99 +234 DE 7 +212 UK 75 +216 DE 32 +609 DE -99 +212 UK \N +226 ES 79 +262 UK 126 +117 ES -32 +422 UK 19 +215 ES 61 +507 ES 26 +567 DE -78 +741 UK -122 +772 DE -112 +352 DE 22 +260 DE \N +050 UK -35 +142 DE 54 +512 ES -26 +877 ES 52 +896 ES -111 +036 DE 62 +802 UK -54 +120 ES 117 +507 UK -69 +115 DE 127 +743 UK -1 +928 UK -98 +929 ES -68 +943 UK 8 +137 DE -20 +533 DE -100 +903 UK -128 +474 ES -110 +803 DE -54 +159 UK 71 +558 ES -97 +985 UK -66 +525 DE 86 +760 UK -86 +247 DE 62 +324 ES 41 +930 UK 124 +387 UK -22 +842 DE -122 +250 UK -116 +752 UK 11 +538 ES -23 +337 DE -112 +698 UK 24 +675 ES 113 +436 ES -15 +355 ES 47 +172 UK 2 +675 UK -46 +110 DE 64 +338 UK 31 +841 UK 69 +320 ES -113 +045 UK 55 +051 DE -61 +414 ES -112 +578 DE 75 +410 DE 67 +797 UK \N +126 DE -21 +367 DE -71 +762 DE 73 +749 DE 123 +559 ES 34 +938 UK 83 +474 UK 4 +512 UK 70 +375 ES 102 +936 UK 124 +960 ES -111 +894 ES -110 +887 ES -69 +522 DE 62 +131 UK -88 +487 UK 116 +554 UK -57 +947 DE 30 +430 ES -115 +172 ES -85 +371 DE -1 +321 ES \N +959 UK -119 +523 DE -20 +113 ES 80 +772 UK -124 +269 DE 45 +434 DE \N +898 DE 101 +229 DE -7 +357 ES -57 +233 UK -82 +606 ES -128 +442 UK 120 +789 DE -127 +840 ES -91 +328 UK -13 +594 DE 96 +767 ES 76 +533 UK 100 +501 ES -6 +357 UK 17 +942 ES 116 +829 DE \N +408 DE -47 +090 ES -53 +712 DE 111 +481 DE -20 +540 DE 43 +737 UK -128 +746 ES -79 +665 DE -126 +167 UK -101 +881 DE 113 +432 UK 25 +772 ES -14 +073 DE 44 +364 DE -11 +095 UK -80 +085 ES 82 +805 UK -23 +203 DE 93 +293 ES -113 +644 ES -81 +862 UK -23 +159 UK -90 +275 DE 90 +704 DE 93 +698 UK \N +272 DE 26 +392 ES -2 +288 UK 37 +966 UK \N +246 DE 101 +744 ES 1 +295 DE -118 +476 UK 5 +049 DE 7 +955 DE \N +746 UK -123 +250 DE -127 +885 ES -48 +456 UK -50 +424 ES 49 +191 UK 17 +229 UK -1 +078 UK -50 +438 DE 16 +103 UK 112 +742 UK -65 +837 DE -76 +199 UK -113 +692 DE -39 +315 DE 22 +377 DE -101 +033 UK -23 +604 DE -71 +929 DE \N +543 ES 8 +546 UK -99 +584 DE 50 +050 DE \N +869 UK 34 +238 UK 41 +938 ES -55 +971 UK 51 +084 UK -107 +961 DE -65 +307 UK -65 +822 ES -89 +223 UK 3 +677 UK -111 +534 DE -91 +263 UK 39 +574 UK -107 +870 ES \N +274 ES -111 +114 DE 61 +609 UK -101 +846 ES -31 +576 DE 28 +612 DE 15 +273 DE -43 +156 DE -74 +588 UK -95 +962 DE -51 +638 ES -99 +581 DE \N +052 DE 14 +791 ES 43 +110 DE 45 +098 DE 52 +719 DE 55 +164 UK -51 +681 UK -113 +559 ES -38 +478 UK -15 +091 UK 36 +698 DE -118 +853 ES -81 +747 UK 111 +603 UK 21 +456 DE -61 +051 UK -23 +011 ES 13 +090 UK -45 +675 DE -44 +980 UK 18 +370 DE -67 +597 ES -66 +465 UK 66 +398 UK 30 +030 DE 23 +749 UK -122 +283 UK -51 +328 DE 37 +312 DE 51 +037 ES 61 +001 UK -85 +703 UK 14 +509 UK 44 +703 UK -59 +748 UK 41 +159 ES 85 +185 UK -74 +269 UK 74 +372 DE -109 +591 UK 109 +079 UK 59 +938 ES -121 +644 ES 98 +627 DE 112 +183 UK -91 +835 DE -10 +966 DE -103 +570 UK -76 +355 DE -19 +978 UK 81 +266 ES 122 +372 ES 96 +640 ES 119 +370 ES 58 +841 DE 46 +658 ES -108 +208 UK 43 +528 DE -65 +854 DE -97 +860 UK -56 +731 UK -9 +873 ES \N +973 DE 9 +297 ES -77 +397 DE -58 +058 DE 75 +933 ES -9 +194 ES 116 +318 UK -95 +752 ES -11 +882 DE 69 +308 DE 28 +573 DE -40 +649 ES 96 +321 ES 111 +016 UK \N +830 DE -107 +928 DE -64 +462 UK 9 +589 ES 28 +795 DE -37 +946 UK -17 +184 UK -8 +382 UK 82 +462 UK -12 +228 DE -125 +963 DE -125 +675 UK 113 +424 ES -58 +623 UK 110 +115 ES 112 +968 DE -4 +650 UK 29 +525 ES -22 +291 ES 8 +038 DE 96 +539 DE -38 +728 ES 43 +750 UK -17 +559 ES -87 +356 DE 84 +523 ES 48 +279 DE -77 +412 UK -10 +106 ES -81 +168 UK -29 +344 DE 76 +424 ES -64 +303 DE -123 +860 ES -78 +492 DE 107 +768 UK 21 +937 UK 17 +275 DE -86 +163 ES 1 +067 UK -42 +918 ES 22 +928 DE 111 +146 UK -30 +866 DE 69 +065 DE -92 +639 DE 24 +536 DE 86 +278 DE 97 +273 UK -12 +623 UK -24 +374 DE 83 +064 UK 12 +851 UK 43 +338 UK -122 +860 ES -28 +291 DE -105 +356 UK -88 +818 UK 5 +093 ES 28 +406 ES 22 +705 ES 52 +228 ES 118 +122 ES -107 +670 UK 97 +621 DE -76 +654 UK \N +079 ES 81 +685 DE \N +631 DE 67 +275 DE 37 +108 UK -74 +842 DE 115 +740 DE -14 +553 UK -54 +264 DE 1 +210 ES 101 +723 ES 70 +059 UK 38 +731 ES -29 +468 UK -48 +306 UK 109 +411 UK -81 +803 DE -72 +804 DE 81 +745 UK -86 diff --git a/regression-test/data/query_p0/intersect/test_intersect2.out b/regression-test/data/query_p0/intersect/test_intersect2.out new file mode 100644 index 0000000000..6016a7d04f --- /dev/null +++ b/regression-test/data/query_p0/intersect/test_intersect2.out @@ -0,0 +1,18 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select1 -- +019 +073 +079 +090 +115 +141 +224 +623 +675 +718 +760 +767 +868 +885 +996 + diff --git a/regression-test/suites/query_p0/intersect/test_intersect2.groovy b/regression-test/suites/query_p0/intersect/test_intersect2.groovy new file mode 100644 index 0000000000..a1d97e37d9 --- /dev/null +++ b/regression-test/suites/query_p0/intersect/test_intersect2.groovy @@ -0,0 +1,111 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_intersect2") { + sql """ DROP TABLE IF EXISTS `test_intersect2` """ + sql """ + CREATE TABLE `test_intersect2` ( + `sku_code` varchar(200) NOT NULL, + `site_code` varchar(200) NOT NULL, + `is_lst` int(11) NULL + ) ENGINE=OLAP + DUPLICATE KEY(`sku_code`) + COMMENT 'OLAP' + DISTRIBUTED BY HASH(`sku_code`, `site_code`) BUCKETS 16 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + streamLoad { + table "test_intersect2" + file "test_intersect2.csv" + time 10000 + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + log.info("Stream load result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + assertEquals(json.NumberTotalRows, json.NumberLoadedRows) + assertTrue(json.NumberLoadedRows > 0 && json.LoadBytes > 0) + } + } + sql "sync" + + qt_select1 """ + select + * + from + ( + ( + SELECT + a.sku_code + FROM + ( + SELECT + * + FROM + test_intersect2 + ) a + WHERE + a.is_lst > 0 + AND a.site_code = 'UK' + ORDER BY + a.sku_code + ) + INTERSECT + ( + SELECT + b.sku_code + FROM + ( + SELECT + * + FROM + test_intersect2 + ) b + WHERE + b.is_lst >= 0 + AND b.site_code = 'DE' + ORDER BY + b.sku_code + ) + INTERSECT + ( + SELECT + c.sku_code + FROM + ( + SELECT + * + FROM + test_intersect2 + ) c + WHERE + c.is_lst >= 0 + AND c.site_code = 'ES' + ORDER BY + c.sku_code + ) + ) aa + order by + aa.sku_code; + """ +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org