[fix](function) fix last_value get wrong result when have order by clause (#9247)
This commit is contained in:
@ -26,157 +26,135 @@ TEST(function_bitmap_test, function_bitmap_min_test) {
|
||||
std::string func_name = "bitmap_min";
|
||||
InputTypeSet input_types = {TypeIndex::BitMap};
|
||||
|
||||
auto bitmap1 = new BitmapValue(1);
|
||||
auto bitmap2 = new BitmapValue(std::vector<uint64_t>({1, 9999999}));
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
DataSet data_set = {{{bitmap1}, (int64_t)1},
|
||||
{{bitmap2}, (int64_t)1},
|
||||
{{empty_bitmap}, Null()},
|
||||
BitmapValue bitmap1(1);
|
||||
BitmapValue bitmap2({1, 9999999});
|
||||
BitmapValue empty_bitmap;
|
||||
DataSet data_set = {{{&bitmap1}, (int64_t)1},
|
||||
{{&bitmap2}, (int64_t)1},
|
||||
{{&empty_bitmap}, Null()},
|
||||
{{Null()}, Null()}};
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete bitmap1;
|
||||
delete bitmap2;
|
||||
delete empty_bitmap;
|
||||
}
|
||||
TEST(function_bitmap_test, function_bitmap_max_test) {
|
||||
std::string func_name = "bitmap_max";
|
||||
InputTypeSet input_types = {TypeIndex::BitMap};
|
||||
|
||||
auto bitmap1 = new BitmapValue(1);
|
||||
auto bitmap2 = new BitmapValue(std::vector<uint64_t>({1, 9999999}));
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
DataSet data_set = {{{bitmap1}, (int64_t)1},
|
||||
{{bitmap2}, (int64_t)9999999},
|
||||
{{empty_bitmap}, Null()},
|
||||
BitmapValue bitmap1(1);
|
||||
BitmapValue bitmap2({1, 9999999});
|
||||
BitmapValue empty_bitmap;
|
||||
DataSet data_set = {{{&bitmap1}, (int64_t)1},
|
||||
{{&bitmap2}, (int64_t)9999999},
|
||||
{{&empty_bitmap}, Null()},
|
||||
{{Null()}, Null()}};
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete bitmap1;
|
||||
delete bitmap2;
|
||||
delete empty_bitmap;
|
||||
}
|
||||
|
||||
TEST(function_bitmap_test, function_bitmap_to_string_test) {
|
||||
std::string func_name = "bitmap_to_string";
|
||||
InputTypeSet input_types = {TypeIndex::BitMap};
|
||||
|
||||
auto bitmap1 = new BitmapValue(1);
|
||||
auto bitmap2 = new BitmapValue(std::vector<uint64_t>({1, 9999999}));
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
DataSet data_set = {{{bitmap1}, std::string("1")},
|
||||
{{bitmap2}, std::string("1,9999999")},
|
||||
{{empty_bitmap}, std::string("")},
|
||||
BitmapValue bitmap1(1);
|
||||
BitmapValue bitmap2({1, 9999999});
|
||||
BitmapValue empty_bitmap;
|
||||
DataSet data_set = {{{&bitmap1}, std::string("1")},
|
||||
{{&bitmap2}, std::string("1,9999999")},
|
||||
{{&empty_bitmap}, std::string("")},
|
||||
{{Null()}, Null()}};
|
||||
|
||||
check_function<DataTypeString, true>(func_name, input_types, data_set);
|
||||
delete bitmap1;
|
||||
delete bitmap2;
|
||||
delete empty_bitmap;
|
||||
}
|
||||
|
||||
TEST(function_bitmap_test, function_bitmap_and_count) {
|
||||
std::string func_name = "bitmap_and_count";
|
||||
InputTypeSet input_types = {TypeIndex::BitMap, TypeIndex::BitMap};
|
||||
auto bitmap1 = new BitmapValue(std::vector<uint64_t>({1, 2, 3}));
|
||||
auto bitmap2 = new BitmapValue(std::vector<uint64_t>({3, 4, 5}));
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
DataSet data_set = {{{bitmap1, empty_bitmap}, (int64_t)0},
|
||||
{{bitmap1, bitmap1}, (int64_t)3},
|
||||
{{bitmap1, bitmap2}, (int64_t)1}};
|
||||
BitmapValue bitmap1({1, 2, 3});
|
||||
BitmapValue bitmap2({3, 4, 5});
|
||||
BitmapValue empty_bitmap;
|
||||
DataSet data_set = {{{&bitmap1, &empty_bitmap}, (int64_t)0},
|
||||
{{&bitmap1, &bitmap1}, (int64_t)3},
|
||||
{{&bitmap1, &bitmap2}, (int64_t)1}};
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete bitmap1;
|
||||
delete bitmap2;
|
||||
delete empty_bitmap;
|
||||
|
||||
{
|
||||
InputTypeSet input_types = {TypeIndex::BitMap, TypeIndex::BitMap, TypeIndex::BitMap};
|
||||
BitmapValue bitmap1({33, 1, 2019});
|
||||
BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
|
||||
BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
|
||||
auto empty_bitmap = new BitmapValue(); //test empty
|
||||
BitmapValue empty_bitmap; //test empty
|
||||
|
||||
DataSet data_set = {{{&bitmap1, &bitmap2, empty_bitmap}, (int64_t)0},
|
||||
DataSet data_set = {{{&bitmap1, &bitmap2, &empty_bitmap}, (int64_t)0},
|
||||
{{&bitmap1, &bitmap2, &bitmap3}, (int64_t)1}, //33
|
||||
{{&bitmap1, &bitmap2, Null()}, Null()},
|
||||
{{&bitmap1, &bitmap3, &bitmap3}, (int64_t)1}}; //33
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete empty_bitmap;
|
||||
}
|
||||
}
|
||||
|
||||
TEST(function_bitmap_test, function_bitmap_or_count) {
|
||||
std::string func_name = "bitmap_or_count";
|
||||
InputTypeSet input_types = {TypeIndex::BitMap, TypeIndex::BitMap};
|
||||
auto bitmap1 = new BitmapValue(std::vector<uint64_t>({1, 2, 3}));
|
||||
auto bitmap2 = new BitmapValue(std::vector<uint64_t>({1, 2, 3, 4}));
|
||||
auto bitmap3 = new BitmapValue(std::vector<uint64_t>({2, 3}));
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
DataSet data_set = {{{bitmap1, empty_bitmap}, (int64_t)3},
|
||||
{{bitmap2, bitmap3}, (int64_t)4},
|
||||
{{bitmap1, bitmap3}, (int64_t)3}};
|
||||
|
||||
BitmapValue bitmap1({1, 2, 3});
|
||||
BitmapValue bitmap2({1, 2, 3, 4});
|
||||
BitmapValue bitmap3({2, 3});
|
||||
BitmapValue empty_bitmap;
|
||||
DataSet data_set = {{{&bitmap1, &empty_bitmap}, (int64_t)3},
|
||||
{{&bitmap2, &bitmap3}, (int64_t)4},
|
||||
{{&bitmap1, &bitmap3}, (int64_t)3}};
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete bitmap1;
|
||||
delete bitmap2;
|
||||
delete bitmap3;
|
||||
delete empty_bitmap;
|
||||
|
||||
{
|
||||
InputTypeSet input_types = {TypeIndex::BitMap, TypeIndex::BitMap, TypeIndex::BitMap};
|
||||
BitmapValue bitmap1({1024, 1, 2019});
|
||||
BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
|
||||
BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()}); //18446744073709551615
|
||||
auto empty_bitmap = new BitmapValue(); //test empty
|
||||
BitmapValue empty_bitmap; //test empty
|
||||
|
||||
DataSet data_set = {{{&bitmap1, &bitmap2, empty_bitmap}, (int64_t)5}, //0,1,33,1024,2019
|
||||
DataSet data_set = {{{&bitmap1, &bitmap2, &empty_bitmap}, (int64_t)5}, //0,1,33,1024,2019
|
||||
{{&bitmap1, &bitmap2, &bitmap3},
|
||||
(int64_t)7}, //0,1,5,33,1024,2019,18446744073709551615
|
||||
{{&bitmap1, empty_bitmap, Null()}, Null()},
|
||||
{{&bitmap1, &empty_bitmap, Null()}, Null()},
|
||||
{{&bitmap1, &bitmap3, &bitmap3},
|
||||
(int64_t)6}}; //1,5,33,1024,2019,18446744073709551615
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete empty_bitmap;
|
||||
}
|
||||
}
|
||||
|
||||
TEST(function_bitmap_test, function_bitmap_xor_count) {
|
||||
std::string func_name = "bitmap_xor_count";
|
||||
InputTypeSet input_types = {TypeIndex::BitMap, TypeIndex::BitMap};
|
||||
auto bitmap1 = new BitmapValue(std::vector<uint64_t>({1, 2, 3}));
|
||||
auto bitmap2 = new BitmapValue(std::vector<uint64_t>({1, 2, 3, 4}));
|
||||
auto bitmap3 = new BitmapValue(std::vector<uint64_t>({2, 3}));
|
||||
auto bitmap4 = new BitmapValue(std::vector<uint64_t>({1, 2, 6}));
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
DataSet data_set = {{{bitmap1, empty_bitmap}, (int64_t)3},
|
||||
{{bitmap2, bitmap3}, (int64_t)2},
|
||||
{{bitmap1, bitmap4}, (int64_t)2}};
|
||||
|
||||
BitmapValue bitmap1({1, 2, 3});
|
||||
BitmapValue bitmap2({1, 2, 3, 4});
|
||||
BitmapValue bitmap3({2, 3});
|
||||
BitmapValue bitmap4({1, 2, 6});
|
||||
BitmapValue empty_bitmap;
|
||||
DataSet data_set = {{{&bitmap1, &empty_bitmap}, (int64_t)3},
|
||||
{{&bitmap2, &bitmap3}, (int64_t)2},
|
||||
{{&bitmap1, &bitmap4}, (int64_t)2}};
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete bitmap1;
|
||||
delete bitmap2;
|
||||
delete bitmap3;
|
||||
delete bitmap4;
|
||||
delete empty_bitmap;
|
||||
|
||||
{
|
||||
InputTypeSet input_types = {TypeIndex::BitMap, TypeIndex::BitMap, TypeIndex::BitMap};
|
||||
BitmapValue bitmap1({1024, 1, 2019});
|
||||
BitmapValue bitmap2({0, 33, std::numeric_limits<uint64_t>::min()});
|
||||
BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
|
||||
auto empty_bitmap = new BitmapValue(); //test empty
|
||||
BitmapValue empty_bitmap; //test empty
|
||||
|
||||
DataSet data_set = {
|
||||
{{&bitmap1, &bitmap2, empty_bitmap}, (int64_t)5}, //0,1,33,1024,2019
|
||||
{{&bitmap1, &bitmap2, &empty_bitmap}, (int64_t)5}, //0,1,33,1024,2019
|
||||
{{&bitmap1, &bitmap2, &bitmap3}, (int64_t)6}, //0,1,5,1024,2019,18446744073709551615
|
||||
{{&bitmap1, empty_bitmap, Null()}, Null()},
|
||||
{{&bitmap1, &empty_bitmap, Null()}, Null()},
|
||||
{{&bitmap1, &bitmap3, &bitmap3}, (int64_t)3}}; //1,1024,2019
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete empty_bitmap;
|
||||
}
|
||||
}
|
||||
|
||||
@ -186,15 +164,14 @@ TEST(function_bitmap_test, function_bitmap_and_not_count) {
|
||||
BitmapValue bitmap1({1, 2, 3});
|
||||
BitmapValue bitmap2({3, 4, std::numeric_limits<uint64_t>::min()});
|
||||
BitmapValue bitmap3({33, 5, std::numeric_limits<uint64_t>::max()});
|
||||
auto empty_bitmap = new BitmapValue();
|
||||
BitmapValue empty_bitmap;
|
||||
|
||||
DataSet data_set = {{{&bitmap1, empty_bitmap}, (int64_t)3}, //1,2,3
|
||||
DataSet data_set = {{{&bitmap1, &empty_bitmap}, (int64_t)3}, //1,2,3
|
||||
{{&bitmap2, Null()}, Null()},
|
||||
{{&bitmap2, &bitmap3}, (int64_t)3}, //0,3,4
|
||||
{{&bitmap1, &bitmap2}, (int64_t)2}}; //1,2
|
||||
|
||||
check_function<DataTypeInt64, true>(func_name, input_types, data_set);
|
||||
delete empty_bitmap;
|
||||
}
|
||||
TEST(function_bitmap_test, function_bitmap_has_all) {
|
||||
std::string func_name = "bitmap_has_all";
|
||||
@ -207,18 +184,16 @@ TEST(function_bitmap_test, function_bitmap_has_all) {
|
||||
BitmapValue bitmap3 = BitmapValue({0, 1, 2});
|
||||
BitmapValue bitmap4 = BitmapValue({0, 1, 2, std::numeric_limits<uint64_t>::max()});
|
||||
BitmapValue bitmap5 = BitmapValue({0, 1, 2});
|
||||
auto empty_bitmap1 = new BitmapValue();
|
||||
auto empty_bitmap2 = new BitmapValue();
|
||||
BitmapValue empty_bitmap1;
|
||||
BitmapValue empty_bitmap2;
|
||||
|
||||
DataSet data_set = {{{&bitmap1, &bitmap2}, uint8(true)},
|
||||
{{empty_bitmap1, empty_bitmap2}, uint8(true)},
|
||||
{{&empty_bitmap1, &empty_bitmap2}, uint8(true)},
|
||||
{{&bitmap3, &bitmap4}, uint8(false)},
|
||||
{{&bitmap4, &bitmap5}, uint8(true)},
|
||||
{{Null(), empty_bitmap1}, Null()}};
|
||||
{{Null(), &empty_bitmap1}, Null()}};
|
||||
|
||||
check_function<DataTypeUInt8, true>(func_name, input_types, data_set);
|
||||
delete empty_bitmap1;
|
||||
delete empty_bitmap2;
|
||||
}
|
||||
|
||||
} // namespace doris::vectorized
|
||||
|
||||
Reference in New Issue
Block a user