From d445a026802c0338fb0b7f9914cd58ab2e239714 Mon Sep 17 00:00:00 2001 From: jacktengg Date: Tue, 11 Feb 2025 17:10:36 +0800 Subject: [PATCH] [ut](columns) Add be ut for ColumnDecimal, ColumnVector --- be/src/vec/columns/column.h | 2 - be/src/vec/columns/column_decimal.cpp | 3 +- be/src/vec/columns/column_object.h | 79 - be/src/vec/columns/columns_number.h | 1 - .../serde/data_type_decimal_serde.cpp | 2 +- be/test/agent/heartbeat_server_test.cpp | 2 +- be/test/data/vec/columns/BIGINT.csv | 26 + be/test/data/vec/columns/BIGINT_UNSIGNED.csv | 19 + be/test/data/vec/columns/DECIMALV3(1,0).csv | 20 + be/test/data/vec/columns/DECIMALV3(1,1).csv | 20 + be/test/data/vec/columns/DECIMALV3(10,5).csv | 9 + be/test/data/vec/columns/DECIMALV3(18,0).csv | 133 ++ be/test/data/vec/columns/DECIMALV3(18,18).csv | 203 +++ be/test/data/vec/columns/DECIMALV3(18,9).csv | 1341 ++++++++++++++++ be/test/data/vec/columns/DECIMALV3(27,9).csv | 41 + be/test/data/vec/columns/DECIMALV3(38,0).csv | 132 ++ be/test/data/vec/columns/DECIMALV3(38,30).csv | 1384 +++++++++++++++++ be/test/data/vec/columns/DECIMALV3(38,38).csv | 203 +++ be/test/data/vec/columns/DECIMALV3(76,0).csv | 137 ++ be/test/data/vec/columns/DECIMALV3(76,38).csv | 544 +++++++ be/test/data/vec/columns/DECIMALV3(76,76).csv | 119 ++ be/test/data/vec/columns/DECIMALV3(8,3).csv | 7 + be/test/data/vec/columns/DECIMALV3(9,0).csv | 5 + be/test/data/vec/columns/DECIMALV3(9,9).csv | 5 + be/test/data/vec/columns/INT.csv | 31 + be/test/data/vec/columns/INT_UNSIGNED.csv | 24 + be/test/data/vec/columns/LARGEINT.csv | 8 + .../data/vec/columns/LARGEINT_UNSIGNED.csv | 6 + be/test/data/vec/columns/SMALLINT.csv | 22 + .../data/vec/columns/SMALLINT_UNSIGNED.csv | 20 + be/test/data/vec/columns/TINYINT.csv | 8 + be/test/data/vec/columns/TINYINT_UNSIGNED.csv | 6 + ...umn_decimal128_1_update_crc_with_value.out | 1 + ...mn_decimal128_1_update_crcs_with_value.out | 1 + ..._decimal128_1_update_hashes_with_value.out | 1 + ...ecimal128_1_update_sip_hash_with_value.out | 1 + ..._decimal128_1_update_xxHash_with_value.out | 1 + ...umn_decimal256_1_update_crc_with_value.out | 1 + ...mn_decimal256_1_update_crcs_with_value.out | 1 + ..._decimal256_1_update_hashes_with_value.out | 1 + ...ecimal256_1_update_sip_hash_with_value.out | 1 + ..._decimal256_1_update_xxHash_with_value.out | 1 + ...lumn_decimal32_1_update_crc_with_value.out | 1 + ...umn_decimal32_1_update_crcs_with_value.out | 1 + ...n_decimal32_1_update_hashes_with_value.out | 1 + ...decimal32_1_update_sip_hash_with_value.out | 1 + ...n_decimal32_1_update_xxHash_with_value.out | 1 + ...lumn_decimal64_1_update_crc_with_value.out | 1 + ...umn_decimal64_1_update_crcs_with_value.out | 1 + ...n_decimal64_1_update_hashes_with_value.out | 1 + ...decimal64_1_update_sip_hash_with_value.out | 1 + ...n_decimal64_1_update_xxHash_with_value.out | 1 + .../column_int128_update_crc_with_value.out | 1 + .../column_int128_update_crcs_with_value.out | 1 + ...column_int128_update_hashes_with_value.out | 1 + ...lumn_int128_update_sip_hash_with_value.out | 1 + ...column_int128_update_xxHash_with_value.out | 1 + .../column_int16_update_crc_with_value.out | 1 + .../column_int16_update_crcs_with_value.out | 1 + .../column_int16_update_hashes_with_value.out | 1 + ...olumn_int16_update_sip_hash_with_value.out | 1 + .../column_int16_update_xxHash_with_value.out | 1 + .../column_int32_update_crc_with_value.out | 1 + .../column_int32_update_crcs_with_value.out | 1 + .../column_int32_update_hashes_with_value.out | 1 + ...olumn_int32_update_sip_hash_with_value.out | 1 + .../column_int32_update_xxHash_with_value.out | 1 + .../column_int64_update_crc_with_value.out | 1 + .../column_int64_update_crcs_with_value.out | 1 + .../column_int64_update_hashes_with_value.out | 1 + ...olumn_int64_update_sip_hash_with_value.out | 1 + .../column_int64_update_xxHash_with_value.out | 1 + .../column_int8_update_crc_with_value.out | 1 + .../column_int8_update_crcs_with_value.out | 1 + .../column_int8_update_hashes_with_value.out | 1 + ...column_int8_update_sip_hash_with_value.out | 1 + .../column_int8_update_xxHash_with_value.out | 1 + be/test/testutil/run_all_tests.cpp | 10 +- be/test/testutil/test_util.cpp | 3 + be/test/testutil/test_util.h | 3 + be/test/vec/columns/column_decimal_test.cpp | 719 +++++++++ be/test/vec/columns/column_ip_test.cpp | 5 +- be/test/vec/columns/column_vector_test.cpp | 549 +++++++ be/test/vec/columns/common_column_test.h | 819 +++++++++- run-be-ut.sh | 12 +- 85 files changed, 6590 insertions(+), 137 deletions(-) create mode 100644 be/test/data/vec/columns/BIGINT.csv create mode 100644 be/test/data/vec/columns/BIGINT_UNSIGNED.csv create mode 100644 be/test/data/vec/columns/DECIMALV3(1,0).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(1,1).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(10,5).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(18,0).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(18,18).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(18,9).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(27,9).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(38,0).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(38,30).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(38,38).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(76,0).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(76,38).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(76,76).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(8,3).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(9,0).csv create mode 100644 be/test/data/vec/columns/DECIMALV3(9,9).csv create mode 100644 be/test/data/vec/columns/INT.csv create mode 100644 be/test/data/vec/columns/INT_UNSIGNED.csv create mode 100644 be/test/data/vec/columns/LARGEINT.csv create mode 100644 be/test/data/vec/columns/LARGEINT_UNSIGNED.csv create mode 100644 be/test/data/vec/columns/SMALLINT.csv create mode 100644 be/test/data/vec/columns/SMALLINT_UNSIGNED.csv create mode 100644 be/test/data/vec/columns/TINYINT.csv create mode 100644 be/test/data/vec/columns/TINYINT_UNSIGNED.csv create mode 100644 be/test/expected_result/vec/columns/column_decimal128_1_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal128_1_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal128_1_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal128_1_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal128_1_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal256_1_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal256_1_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal256_1_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal256_1_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal256_1_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal32_1_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal32_1_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal32_1_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal32_1_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal32_1_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal64_1_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal64_1_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal64_1_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal64_1_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_decimal64_1_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int128_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int128_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int128_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int128_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int128_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int16_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int16_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int16_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int16_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int16_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int32_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int32_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int32_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int32_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int32_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int64_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int64_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int64_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int64_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int64_update_xxHash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int8_update_crc_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int8_update_crcs_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int8_update_hashes_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int8_update_sip_hash_with_value.out create mode 100644 be/test/expected_result/vec/columns/column_int8_update_xxHash_with_value.out create mode 100644 be/test/vec/columns/column_decimal_test.cpp create mode 100644 be/test/vec/columns/column_vector_test.cpp diff --git a/be/src/vec/columns/column.h b/be/src/vec/columns/column.h index 935113254e4f756..db1022febc8f115 100644 --- a/be/src/vec/columns/column.h +++ b/be/src/vec/columns/column.h @@ -207,8 +207,6 @@ class IColumn : public COW { } /// Appends one element from other column with the same type multiple times. - /// we should make sure position is less than src's size and length is less than src's size, - /// and position + length is less than src's size virtual void insert_many_from(const IColumn& src, size_t position, size_t length) { for (size_t i = 0; i < length; ++i) { insert_from(src, position); diff --git a/be/src/vec/columns/column_decimal.cpp b/be/src/vec/columns/column_decimal.cpp index eed5c9b706c48c7..276c616cdbf843d 100644 --- a/be/src/vec/columns/column_decimal.cpp +++ b/be/src/vec/columns/column_decimal.cpp @@ -468,8 +468,7 @@ void ColumnDecimal::compare_internal(size_t rhs_row_id, const IColumn& rhs, size_t end = simd::find_one(cmp_res, begin + 1); for (size_t row_id = begin; row_id < end; row_id++) { auto value_a = get_data()[row_id]; - int res = 0; - res = value_a > cmp_base ? 1 : (value_a < cmp_base ? -1 : 0); + int res = value_a > cmp_base ? 1 : (value_a < cmp_base ? -1 : 0); if (res * direction < 0) { filter[row_id] = 1; cmp_res[row_id] = 1; diff --git a/be/src/vec/columns/column_object.h b/be/src/vec/columns/column_object.h index e5e5009d53912bb..04a9cb4a7c102da 100644 --- a/be/src/vec/columns/column_object.h +++ b/be/src/vec/columns/column_object.h @@ -450,85 +450,6 @@ class ColumnObject final : public COWHelper { void update_crc_with_value(size_t start, size_t end, uint32_t& hash, const uint8_t* __restrict null_data) const override; - Int64 get_int(size_t /*n*/) const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "get_int" + get_name()); - } - - bool get_bool(size_t /*n*/) const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "get_bool" + get_name()); - } - - void insert_many_fix_len_data(const char* pos, size_t num) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "insert_many_fix_len_data" + get_name()); - } - - void insert_many_dict_data(const int32_t* data_array, size_t start_index, const StringRef* dict, - size_t data_num, uint32_t dict_num = 0) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "insert_many_dict_data" + get_name()); - } - - void insert_many_continuous_binary_data(const char* data, const uint32_t* offsets, - const size_t num) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "insert_many_continuous_binary_data" + get_name()); - } - - void insert_many_strings(const StringRef* strings, size_t num) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "insert_many_strings" + get_name()); - } - - void insert_many_strings_overflow(const StringRef* strings, size_t num, - size_t max_length) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "insert_many_strings_overflow" + get_name()); - } - - void insert_many_raw_data(const char* pos, size_t num) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "insert_many_raw_data" + get_name()); - } - - size_t get_max_row_byte_size() const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "get_max_row_byte_size" + get_name()); - } - - void serialize_vec(std::vector& keys, size_t num_rows, - size_t max_row_byte_size) const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "serialize_vec" + get_name()); - } - - void serialize_vec_with_null_map(std::vector& keys, size_t num_rows, - const uint8_t* null_map) const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "serialize_vec_with_null_map" + get_name()); - } - - void deserialize_vec(std::vector& keys, const size_t num_rows) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "deserialize_vec" + get_name()); - } - - void deserialize_vec_with_null_map(std::vector& keys, const size_t num_rows, - const uint8_t* null_map) override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, - "deserialize_vec_with_null_map" + get_name()); - } - - Status filter_by_selector(const uint16_t* sel, size_t sel_size, IColumn* col_ptr) const { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "filter_by_selector" + get_name()); - } - - bool structure_equals(const IColumn&) const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "structure_equals" + get_name()); - } - - StringRef get_raw_data() const override { - throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "get_raw_data" + get_name()); - } - StringRef get_data_at(size_t) const override { throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, "get_data_at" + get_name()); } diff --git a/be/src/vec/columns/columns_number.h b/be/src/vec/columns/columns_number.h index 33dbe4c8c63ba1a..9c0005e9d5d4e9f 100644 --- a/be/src/vec/columns/columns_number.h +++ b/be/src/vec/columns/columns_number.h @@ -32,7 +32,6 @@ using ColumnUInt8 = ColumnVector; using ColumnUInt16 = ColumnVector; using ColumnUInt32 = ColumnVector; using ColumnUInt64 = ColumnVector; -using ColumnUInt128 = ColumnVector; using ColumnInt8 = ColumnVector; using ColumnInt16 = ColumnVector; diff --git a/be/src/vec/data_types/serde/data_type_decimal_serde.cpp b/be/src/vec/data_types/serde/data_type_decimal_serde.cpp index c4c33c36d5aad30..e8f1b3a4e80419e 100644 --- a/be/src/vec/data_types/serde/data_type_decimal_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_decimal_serde.cpp @@ -82,7 +82,7 @@ Status DataTypeDecimalSerDe::deserialize_one_cell_from_json(IColumn& column, return Status::OK(); } return Status::InvalidArgument("parse decimal fail, string: '{}', primitive type: '{}'", - std::string(rb.position(), rb.count()).c_str(), + std::string(slice.data, slice.size).c_str(), get_primitive_type()); } diff --git a/be/test/agent/heartbeat_server_test.cpp b/be/test/agent/heartbeat_server_test.cpp index f0c93a8caca742e..b4fa6ff650b7471 100644 --- a/be/test/agent/heartbeat_server_test.cpp +++ b/be/test/agent/heartbeat_server_test.cpp @@ -33,7 +33,7 @@ using std::vector; namespace doris { TEST(HeartbeatTest, TestHeartbeat) { - setenv("DORIS_HOME", "./", 1); + // setenv("DORIS_HOME", "./", 1); THeartbeatResult heartbeat_result; ClusterInfo ori_cluster_info; ori_cluster_info.cluster_id = -1; diff --git a/be/test/data/vec/columns/BIGINT.csv b/be/test/data/vec/columns/BIGINT.csv new file mode 100644 index 000000000000000..0ac2b661537a7d5 --- /dev/null +++ b/be/test/data/vec/columns/BIGINT.csv @@ -0,0 +1,26 @@ +-1 +0 +1 +2 +3037000500 +-9223372036854775808 +9223372036854775807 +1234567890123456789 +4567891234567891234 +7891234567891234567 +3456789123456789123 +6789123456789123456 +2345678912345678912 +5678912345678912345 +8912345678912345678 +1234567891234567890 +-3873307664046405590 +7446424211242738476 +6637450474744415088 +-4388843650233597359 +306567258363819813 +-7091032546583349460 +1181091387208033590 +-8309987765617131980 +-6559491738043095171 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/BIGINT_UNSIGNED.csv b/be/test/data/vec/columns/BIGINT_UNSIGNED.csv new file mode 100644 index 000000000000000..1dfb5a8351a4220 --- /dev/null +++ b/be/test/data/vec/columns/BIGINT_UNSIGNED.csv @@ -0,0 +1,19 @@ +0 +1 +2 +3037000500 +9223372036854775807 +1234567890123456789 +4567891234567891234 +7891234567891234567 +3456789123456789123 +6789123456789123456 +2345678912345678912 +5678912345678912345 +8912345678912345678 +1234567891234567890 +7446424211242738476 +6637450474744415088 +306567258363819813 +1181091387208033590 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(1,0).csv b/be/test/data/vec/columns/DECIMALV3(1,0).csv new file mode 100644 index 000000000000000..1d90d12b3547ccb --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(1,0).csv @@ -0,0 +1,20 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(1,1).csv b/be/test/data/vec/columns/DECIMALV3(1,1).csv new file mode 100644 index 000000000000000..b8dc3a9b4bf45d9 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(1,1).csv @@ -0,0 +1,20 @@ +0 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +-0.1 +-0.2 +-0.3 +-0.4 +-0.5 +-0.6 +-0.7 +-0.8 +-0.9 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(10,5).csv b/be/test/data/vec/columns/DECIMALV3(10,5).csv new file mode 100644 index 000000000000000..1dd113929bd09ad --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(10,5).csv @@ -0,0 +1,9 @@ +00000.00000 +-00000.00000 +98765.43210 +0.00001 +99999.99999 +-98765.43210 +-0.00001 +-99999.99999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(18,0).csv b/be/test/data/vec/columns/DECIMALV3(18,0).csv new file mode 100644 index 000000000000000..9e8cb7dc5fc0c60 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(18,0).csv @@ -0,0 +1,133 @@ +0 +0.0 +00.0 +00.00 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1.0 +2.0 +3.0 +4.0 +5.0 +6.0 +7.0 +8.0 +9.0 +000000000000000000 +000000000000000001 +000000000000000005 +000000000000000009 +000000001000000000 +000000005000000000 +000000009000000000 +000000001000000001 +000000005000000005 +000000009000000009 +100000000000000000 +100000000000000001 +100000000000000005 +100000000000000009 +100000000000010000 +100000000000050000 +100000000000090000 +100000000000010001 +100000000000050005 +100000000000090009 +500000000000000000 +500000000000000001 +500000000000000005 +500000000000000009 +500000000000010000 +500000000000050000 +500000000000090000 +500000000000010001 +500000000000050005 +500000000000090009 +900000000000000000 +900000000000000001 +900000000000000005 +900000000000000009 +900000000000010000 +900000000000050000 +900000000000090000 +900000000000010001 +900000000000050005 +900000000000090009 +444444444444444444 +499999999999999999 +555555555555555555 +999999999999999999 +-0 +-0.0 +-00.0 +-00.00 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +-1.0 +-2.0 +-3.0 +-4.0 +-5.0 +-6.0 +-7.0 +-8.0 +-9.0 +-000000000000000000 +-000000000000000001 +-000000000000000005 +-000000000000000009 +-000000001000000000 +-000000005000000000 +-000000009000000000 +-000000001000000001 +-000000005000000005 +-000000009000000009 +-100000000000000000 +-100000000000000001 +-100000000000000005 +-100000000000000009 +-100000000000010000 +-100000000000050000 +-100000000000090000 +-100000000000010001 +-100000000000050005 +-100000000000090009 +-500000000000000000 +-500000000000000001 +-500000000000000005 +-500000000000000009 +-500000000000010000 +-500000000000050000 +-500000000000090000 +-500000000000010001 +-500000000000050005 +-500000000000090009 +-900000000000000000 +-900000000000000001 +-900000000000000005 +-900000000000000009 +-900000000000010000 +-900000000000050000 +-900000000000090000 +-900000000000010001 +-900000000000050005 +-900000000000090009 +-444444444444444444 +-499999999999999999 +-555555555555555555 +-999999999999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(18,18).csv b/be/test/data/vec/columns/DECIMALV3(18,18).csv new file mode 100644 index 000000000000000..94efdf534022b8d --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(18,18).csv @@ -0,0 +1,203 @@ +0 +0.0 +00.0 +00.00 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +0.000000000000000000 +0.000000000000000001 +0.000000000000000005 +0.000000000000000009 +0.000000001000000000 +0.000000005000000000 +0.000000009000000000 +0.000000001000000001 +0.000000005000000005 +0.000000009000000009 +0.100000000000000000 +0.100000000000000001 +0.100000000000000005 +0.100000000000000009 +0.100000000000010000 +0.100000000000050000 +0.100000000000090000 +0.100000000000010001 +0.100000000000050005 +0.100000000000090009 +0.500000000000000000 +0.500000000000000001 +0.500000000000000005 +0.500000000000000009 +0.500000000000010000 +0.500000000000050000 +0.500000000000090000 +0.500000000000010001 +0.500000000000050005 +0.500000000000090009 +0.900000000000000000 +0.900000000000000001 +0.900000000000000005 +0.900000000000000009 +0.900000000000010000 +0.900000000000050000 +0.900000000000090000 +0.900000000000010001 +0.900000000000050005 +0.900000000000090009 +0.444444444444444444 +0.499999999999999999 +0.555555555555555555 +0.999999999999999999 +0.00000000000000 +0.00000000000001 +0.00000000000005 +0.00000000000009 +0.00001000000000 +0.00005000000000 +0.00009000000000 +0.00001000000001 +0.00005000000005 +0.00009000000009 +0.10000000000000 +0.10000000000001 +0.10000000000005 +0.10000000000009 +0.10000000010000 +0.10000000050000 +0.10000000090000 +0.10000000010001 +0.10000000050005 +0.10000000090009 +0.50000000000000 +0.50000000000001 +0.50000000000005 +0.50000000000009 +0.50000000010000 +0.50000000050000 +0.50000000090000 +0.50000000010001 +0.50000000050005 +0.50000000090009 +0.90000000000000 +0.90000000000001 +0.90000000000005 +0.90000000000009 +0.90000000010000 +0.90000000050000 +0.90000000090000 +0.90000000010001 +0.90000000050005 +0.90000000090009 +0.44444444444444 +0.49999999999999 +0.55555555555555 +0.99999999999999 +-0 +-0.0 +-00.0 +-00.00 +-0.1 +-0.2 +-0.3 +-0.4 +-0.5 +-0.6 +-0.7 +-0.8 +-0.9 +-0.000000000000000000 +-0.000000000000000001 +-0.000000000000000005 +-0.000000000000000009 +-0.000000001000000000 +-0.000000005000000000 +-0.000000009000000000 +-0.000000001000000001 +-0.000000005000000005 +-0.000000009000000009 +-0.100000000000000000 +-0.100000000000000001 +-0.100000000000000005 +-0.100000000000000009 +-0.100000000000010000 +-0.100000000000050000 +-0.100000000000090000 +-0.100000000000010001 +-0.100000000000050005 +-0.100000000000090009 +-0.500000000000000000 +-0.500000000000000001 +-0.500000000000000005 +-0.500000000000000009 +-0.500000000000010000 +-0.500000000000050000 +-0.500000000000090000 +-0.500000000000010001 +-0.500000000000050005 +-0.500000000000090009 +-0.900000000000000000 +-0.900000000000000001 +-0.900000000000000005 +-0.900000000000000009 +-0.900000000000010000 +-0.900000000000050000 +-0.900000000000090000 +-0.900000000000010001 +-0.900000000000050005 +-0.900000000000090009 +-0.444444444444444444 +-0.499999999999999999 +-0.555555555555555555 +-0.999999999999999999 +-0.00000000000000 +-0.00000000000001 +-0.00000000000005 +-0.00000000000009 +-0.00001000000000 +-0.00005000000000 +-0.00009000000000 +-0.00001000000001 +-0.00005000000005 +-0.00009000000009 +-0.10000000000000 +-0.10000000000001 +-0.10000000000005 +-0.10000000000009 +-0.10000000010000 +-0.10000000050000 +-0.10000000090000 +-0.10000000010001 +-0.10000000050005 +-0.10000000090009 +-0.50000000000000 +-0.50000000000001 +-0.50000000000005 +-0.50000000000009 +-0.50000000010000 +-0.50000000050000 +-0.50000000090000 +-0.50000000010001 +-0.50000000050005 +-0.50000000090009 +-0.90000000000000 +-0.90000000000001 +-0.90000000000005 +-0.90000000000009 +-0.90000000010000 +-0.90000000050000 +-0.90000000090000 +-0.90000000010001 +-0.90000000050005 +-0.90000000090009 +-0.44444444444444 +-0.49999999999999 +-0.55555555555555 +-0.99999999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(18,9).csv b/be/test/data/vec/columns/DECIMALV3(18,9).csv new file mode 100644 index 000000000000000..1b94c2ababae32b --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(18,9).csv @@ -0,0 +1,1341 @@ +0 +0.0 +00.0 +00.00 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1.0 +2.0 +3.0 +4.0 +5.0 +6.0 +7.0 +8.0 +9.0 +000000000.000000000 +000000000.444444444 +000000000.999999999 +000000000.000000001 +000000000.000000005 +000000000.000000009 +000000000.000000100 +000000000.000000500 +000000000.000000900 +000000000.000000101 +000000000.000000505 +000000000.000000909 +000000000.100000000 +000000000.100000001 +000000000.100000005 +000000000.100000009 +000000000.101000000 +000000000.105000000 +000000000.109000000 +000000000.101000001 +000000000.105000005 +000000000.109000009 +000000000.900000000 +000000000.900000001 +000000000.900000005 +000000000.900000009 +000000000.901000000 +000000000.905000000 +000000000.909000000 +000000000.901000001 +000000000.905000005 +000000000.909000009 +000000001.000000000 +000000001.000000001 +000000001.000000005 +000000001.000000009 +000000001.001000000 +000000001.005000000 +000000001.009000000 +000000001.001000001 +000000001.005000005 +000000001.009000009 +000000001.100000000 +000000001.100000001 +000000001.100000005 +000000001.100000009 +000000001.101000000 +000000001.105000000 +000000001.109000000 +000000001.101000001 +000000001.105000005 +000000001.109000009 +000000001.900000000 +000000001.900000001 +000000001.900000005 +000000001.900000009 +000000001.901000000 +000000001.905000000 +000000001.909000000 +000000001.901000001 +000000001.905000005 +000000001.909000009 +000000009.000000000 +000000009.000000001 +000000009.000000005 +000000009.000000009 +000000009.001000000 +000000009.005000000 +000000009.009000000 +000000009.001000001 +000000009.005000005 +000000009.009000009 +000000009.100000000 +000000009.100000001 +000000009.100000005 +000000009.100000009 +000000009.101000000 +000000009.105000000 +000000009.109000000 +000000009.101000001 +000000009.105000005 +000000009.109000009 +000000009.900000000 +000000009.900000001 +000000009.900000005 +000000009.900000009 +000000009.901000000 +000000009.905000000 +000000009.909000000 +000000009.901000001 +000000009.905000005 +000000009.909000009 +100000000.000000000 +100000000.000000001 +100000000.000000005 +100000000.000000009 +100000000.000001000 +100000000.000005000 +100000000.000009000 +100000000.000001001 +100000000.000005005 +100000000.000009009 +100000000.100000000 +100000000.100000001 +100000000.100000005 +100000000.100000009 +100000000.100001000 +100000000.100005000 +100000000.100009000 +100000000.100001001 +100000000.500005005 +100000000.900009009 +100000001.000000000 +100000001.000000001 +100000001.000000005 +100000001.000000009 +100000001.000001000 +100000001.000005000 +100000001.000009000 +100000001.000001001 +100000001.000005005 +100000001.000009009 +100000001.100000000 +100000001.100000001 +100000001.100000005 +100000001.100000009 +100000001.100001000 +100000001.100005000 +100000001.100009000 +100000001.100001001 +100000001.500005005 +100000001.900009009 +100005000.000000000 +100005000.000000001 +100005000.000000005 +100005000.000000009 +100005000.000001000 +100005000.000005000 +100005000.000009000 +100005000.000001001 +100005000.000005005 +100005000.000009009 +100005000.100000000 +100005000.100000001 +100005000.100000005 +100005000.100000009 +100005000.100001000 +100005000.100005000 +100005000.100009000 +100005000.100001001 +100005000.500005005 +100005000.900009009 +100005090.000000000 +100005090.000000001 +100005090.000000005 +100005090.000000009 +100005090.000001000 +100005090.000005000 +100005090.000009000 +100005090.000001001 +100005090.000005005 +100005090.000009009 +100005090.100000000 +100005090.100000001 +100005090.100000005 +100005090.100000009 +100005090.100001000 +100005090.100005000 +100005090.100009000 +100005090.100001001 +100005090.500005005 +100005090.900009009 +500000000.000000000 +500000000.000000001 +500000000.000000005 +500000000.000000009 +500000000.000001000 +500000000.000005000 +500000000.000009000 +500000000.000001001 +500000000.000005005 +500000000.000009009 +500000000.100000000 +500000000.100000001 +500000000.100000005 +500000000.100000009 +500000000.100001000 +500000000.100005000 +500000000.100009000 +500000000.100001001 +500000000.500005005 +500000000.900009009 +900000000.000000000 +900000000.000000001 +900000000.000000005 +900000000.000000009 +900000000.000001000 +900000000.000005000 +900000000.000009000 +900000000.000001001 +900000000.000005005 +900000000.000009009 +900000000.100000000 +900000000.100000001 +900000000.100000005 +900000000.100000009 +900000000.100001000 +900000000.100005000 +900000000.100009000 +900000000.100001001 +900000000.500005005 +900000000.900009009 +444444444.444444444 +499999999.999999999 +555555555.555555555 +999999999.999999999 +000000000.00000000 +000000000.44444444 +000000000.99999999 +000000000.00000001 +000000000.00000005 +000000000.00000009 +000000000.00000100 +000000000.00000500 +000000000.00000900 +000000000.00000101 +000000000.00000505 +000000000.00000909 +000000000.10000000 +000000000.10000001 +000000000.10000005 +000000000.10000009 +000000000.10100000 +000000000.10500000 +000000000.10900000 +000000000.10100001 +000000000.10500005 +000000000.10900009 +000000000.90000000 +000000000.90000001 +000000000.90000005 +000000000.90000009 +000000000.90100000 +000000000.90500000 +000000000.90900000 +000000000.90100001 +000000000.90500005 +000000000.90900009 +000000001.00000000 +000000001.00000001 +000000001.00000005 +000000001.00000009 +000000001.00100000 +000000001.00500000 +000000001.00900000 +000000001.00100001 +000000001.00500005 +000000001.00900009 +000000001.10000000 +000000001.10000001 +000000001.10000005 +000000001.10000009 +000000001.10100000 +000000001.10500000 +000000001.10900000 +000000001.10100001 +000000001.10500005 +000000001.10900009 +000000001.90000000 +000000001.90000001 +000000001.90000005 +000000001.90000009 +000000001.90100000 +000000001.90500000 +000000001.90900000 +000000001.90100001 +000000001.90500005 +000000001.90900009 +000000009.00000000 +000000009.00000001 +000000009.00000005 +000000009.00000009 +000000009.00100000 +000000009.00500000 +000000009.00900000 +000000009.00100001 +000000009.00500005 +000000009.00900009 +000000009.10000000 +000000009.10000001 +000000009.10000005 +000000009.10000009 +000000009.10100000 +000000009.10500000 +000000009.10900000 +000000009.10100001 +000000009.10500005 +000000009.10900009 +000000009.90000000 +000000009.90000001 +000000009.90000005 +000000009.90000009 +000000009.90100000 +000000009.90500000 +000000009.90900000 +000000009.90100001 +000000009.90500005 +000000009.90900009 +100000000.00000000 +100000000.00000001 +100000000.00000005 +100000000.00000009 +100000000.00001000 +100000000.00005000 +100000000.00009000 +100000000.00001001 +100000000.00005005 +100000000.00009009 +100000000.10000000 +100000000.10000001 +100000000.10000005 +100000000.10000009 +100000000.10001000 +100000000.10005000 +100000000.10009000 +100000000.10001001 +100000000.50005005 +100000000.90009009 +100000001.00000000 +100000001.00000001 +100000001.00000005 +100000001.00000009 +100000001.00001000 +100000001.00005000 +100000001.00009000 +100000001.00001001 +100000001.00005005 +100000001.00009009 +100000001.10000000 +100000001.10000001 +100000001.10000005 +100000001.10000009 +100000001.10001000 +100000001.10005000 +100000001.10009000 +100000001.10001001 +100000001.50005005 +100000001.90009009 +100005000.00000000 +100005000.00000001 +100005000.00000005 +100005000.00000009 +100005000.00001000 +100005000.00005000 +100005000.00009000 +100005000.00001001 +100005000.00005005 +100005000.00009009 +100005000.10000000 +100005000.10000001 +100005000.10000005 +100005000.10000009 +100005000.10001000 +100005000.10005000 +100005000.10009000 +100005000.10001001 +100005000.50005005 +100005000.90009009 +100005090.00000000 +100005090.00000001 +100005090.00000005 +100005090.00000009 +100005090.00001000 +100005090.00005000 +100005090.00009000 +100005090.00001001 +100005090.00005005 +100005090.00009009 +100005090.10000000 +100005090.10000001 +100005090.10000005 +100005090.10000009 +100005090.10001000 +100005090.10005000 +100005090.10009000 +100005090.10001001 +100005090.50005005 +100005090.90009009 +500000000.00000000 +500000000.00000001 +500000000.00000005 +500000000.00000009 +500000000.00001000 +500000000.00005000 +500000000.00009000 +500000000.00001001 +500000000.00005005 +500000000.00009009 +500000000.10000000 +500000000.10000001 +500000000.10000005 +500000000.10000009 +500000000.10001000 +500000000.10005000 +500000000.10009000 +500000000.10001001 +500000000.50005005 +500000000.90009009 +900000000.00000000 +900000000.00000001 +900000000.00000005 +900000000.00000009 +900000000.00001000 +900000000.00005000 +900000000.00009000 +900000000.00001001 +900000000.00005005 +900000000.00009009 +900000000.10000000 +900000000.10000001 +900000000.10000005 +900000000.10000009 +900000000.10001000 +900000000.10005000 +900000000.10009000 +900000000.10001001 +900000000.50005005 +900000000.90009009 +444444444.44444444 +499999999.99999999 +555555555.55555555 +999999999.99999999 +00000000.000000000 +00000000.444444444 +00000000.999999999 +00000000.000000001 +00000000.000000005 +00000000.000000009 +00000000.000000100 +00000000.000000500 +00000000.000000900 +00000000.000000101 +00000000.000000505 +00000000.000000909 +00000000.100000000 +00000000.100000001 +00000000.100000005 +00000000.100000009 +00000000.101000000 +00000000.105000000 +00000000.109000000 +00000000.101000001 +00000000.105000005 +00000000.109000009 +00000000.900000000 +00000000.900000001 +00000000.900000005 +00000000.900000009 +00000000.901000000 +00000000.905000000 +00000000.909000000 +00000000.901000001 +00000000.905000005 +00000000.909000009 +00000001.000000000 +00000001.000000001 +00000001.000000005 +00000001.000000009 +00000001.001000000 +00000001.005000000 +00000001.009000000 +00000001.001000001 +00000001.005000005 +00000001.009000009 +00000001.100000000 +00000001.100000001 +00000001.100000005 +00000001.100000009 +00000001.101000000 +00000001.105000000 +00000001.109000000 +00000001.101000001 +00000001.105000005 +00000001.109000009 +00000001.900000000 +00000001.900000001 +00000001.900000005 +00000001.900000009 +00000001.901000000 +00000001.905000000 +00000001.909000000 +00000001.901000001 +00000001.905000005 +00000001.909000009 +00000009.000000000 +00000009.000000001 +00000009.000000005 +00000009.000000009 +00000009.001000000 +00000009.005000000 +00000009.009000000 +00000009.001000001 +00000009.005000005 +00000009.009000009 +00000009.100000000 +00000009.100000001 +00000009.100000005 +00000009.100000009 +00000009.101000000 +00000009.105000000 +00000009.109000000 +00000009.101000001 +00000009.105000005 +00000009.109000009 +00000009.900000000 +00000009.900000001 +00000009.900000005 +00000009.900000009 +00000009.901000000 +00000009.905000000 +00000009.909000000 +00000009.901000001 +00000009.905000005 +00000009.909000009 +10000000.000000000 +10000000.000000001 +10000000.000000005 +10000000.000000009 +10000000.000001000 +10000000.000005000 +10000000.000009000 +10000000.000001001 +10000000.000005005 +10000000.000009009 +10000000.100000000 +10000000.100000001 +10000000.100000005 +10000000.100000009 +10000000.100001000 +10000000.100005000 +10000000.100009000 +10000000.100001001 +10000000.500005005 +10000000.900009009 +10000001.000000000 +10000001.000000001 +10000001.000000005 +10000001.000000009 +10000001.000001000 +10000001.000005000 +10000001.000009000 +10000001.000001001 +10000001.000005005 +10000001.000009009 +10000001.100000000 +10000001.100000001 +10000001.100000005 +10000001.100000009 +10000001.100001000 +10000001.100005000 +10000001.100009000 +10000001.100001001 +10000001.500005005 +10000001.900009009 +10005000.000000000 +10005000.000000001 +10005000.000000005 +10005000.000000009 +10005000.000001000 +10005000.000005000 +10005000.000009000 +10005000.000001001 +10005000.000005005 +10005000.000009009 +10005000.100000000 +10005000.100000001 +10005000.100000005 +10005000.100000009 +10005000.100001000 +10005000.100005000 +10005000.100009000 +10005000.100001001 +10005000.500005005 +10005000.900009009 +10005090.000000000 +10005090.000000001 +10005090.000000005 +10005090.000000009 +10005090.000001000 +10005090.000005000 +10005090.000009000 +10005090.000001001 +10005090.000005005 +10005090.000009009 +10005090.100000000 +10005090.100000001 +10005090.100000005 +10005090.100000009 +10005090.100001000 +10005090.100005000 +10005090.100009000 +10005090.100001001 +10005090.500005005 +10005090.900009009 +50000000.000000000 +50000000.000000001 +50000000.000000005 +50000000.000000009 +50000000.000001000 +50000000.000005000 +50000000.000009000 +50000000.000001001 +50000000.000005005 +50000000.000009009 +50000000.100000000 +50000000.100000001 +50000000.100000005 +50000000.100000009 +50000000.100001000 +50000000.100005000 +50000000.100009000 +50000000.100001001 +50000000.500005005 +50000000.900009009 +90000000.000000000 +90000000.000000001 +90000000.000000005 +90000000.000000009 +90000000.000001000 +90000000.000005000 +90000000.000009000 +90000000.000001001 +90000000.000005005 +90000000.000009009 +90000000.100000000 +90000000.100000001 +90000000.100000005 +90000000.100000009 +90000000.100001000 +90000000.100005000 +90000000.100009000 +90000000.100001001 +90000000.500005005 +90000000.900009009 +44444444.444444444 +49999999.999999999 +55555555.555555555 +99999999.999999999 +-0 +-0.0 +-00.0 +-00.00 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +-1.0 +-2.0 +-3.0 +-4.0 +-5.0 +-6.0 +-7.0 +-8.0 +-9.0 +-000000000.000000000 +-000000000.444444444 +-000000000.999999999 +-000000000.000000001 +-000000000.000000005 +-000000000.000000009 +-000000000.000000100 +-000000000.000000500 +-000000000.000000900 +-000000000.000000101 +-000000000.000000505 +-000000000.000000909 +-000000000.100000000 +-000000000.100000001 +-000000000.100000005 +-000000000.100000009 +-000000000.101000000 +-000000000.105000000 +-000000000.109000000 +-000000000.101000001 +-000000000.105000005 +-000000000.109000009 +-000000000.900000000 +-000000000.900000001 +-000000000.900000005 +-000000000.900000009 +-000000000.901000000 +-000000000.905000000 +-000000000.909000000 +-000000000.901000001 +-000000000.905000005 +-000000000.909000009 +-000000001.000000000 +-000000001.000000001 +-000000001.000000005 +-000000001.000000009 +-000000001.001000000 +-000000001.005000000 +-000000001.009000000 +-000000001.001000001 +-000000001.005000005 +-000000001.009000009 +-000000001.100000000 +-000000001.100000001 +-000000001.100000005 +-000000001.100000009 +-000000001.101000000 +-000000001.105000000 +-000000001.109000000 +-000000001.101000001 +-000000001.105000005 +-000000001.109000009 +-000000001.900000000 +-000000001.900000001 +-000000001.900000005 +-000000001.900000009 +-000000001.901000000 +-000000001.905000000 +-000000001.909000000 +-000000001.901000001 +-000000001.905000005 +-000000001.909000009 +-000000009.000000000 +-000000009.000000001 +-000000009.000000005 +-000000009.000000009 +-000000009.001000000 +-000000009.005000000 +-000000009.009000000 +-000000009.001000001 +-000000009.005000005 +-000000009.009000009 +-000000009.100000000 +-000000009.100000001 +-000000009.100000005 +-000000009.100000009 +-000000009.101000000 +-000000009.105000000 +-000000009.109000000 +-000000009.101000001 +-000000009.105000005 +-000000009.109000009 +-000000009.900000000 +-000000009.900000001 +-000000009.900000005 +-000000009.900000009 +-000000009.901000000 +-000000009.905000000 +-000000009.909000000 +-000000009.901000001 +-000000009.905000005 +-000000009.909000009 +-100000000.000000000 +-100000000.000000001 +-100000000.000000005 +-100000000.000000009 +-100000000.000001000 +-100000000.000005000 +-100000000.000009000 +-100000000.000001001 +-100000000.000005005 +-100000000.000009009 +-100000000.100000000 +-100000000.100000001 +-100000000.100000005 +-100000000.100000009 +-100000000.100001000 +-100000000.100005000 +-100000000.100009000 +-100000000.100001001 +-100000000.500005005 +-100000000.900009009 +-100000001.000000000 +-100000001.000000001 +-100000001.000000005 +-100000001.000000009 +-100000001.000001000 +-100000001.000005000 +-100000001.000009000 +-100000001.000001001 +-100000001.000005005 +-100000001.000009009 +-100000001.100000000 +-100000001.100000001 +-100000001.100000005 +-100000001.100000009 +-100000001.100001000 +-100000001.100005000 +-100000001.100009000 +-100000001.100001001 +-100000001.500005005 +-100000001.900009009 +-100005000.000000000 +-100005000.000000001 +-100005000.000000005 +-100005000.000000009 +-100005000.000001000 +-100005000.000005000 +-100005000.000009000 +-100005000.000001001 +-100005000.000005005 +-100005000.000009009 +-100005000.100000000 +-100005000.100000001 +-100005000.100000005 +-100005000.100000009 +-100005000.100001000 +-100005000.100005000 +-100005000.100009000 +-100005000.100001001 +-100005000.500005005 +-100005000.900009009 +-100005090.000000000 +-100005090.000000001 +-100005090.000000005 +-100005090.000000009 +-100005090.000001000 +-100005090.000005000 +-100005090.000009000 +-100005090.000001001 +-100005090.000005005 +-100005090.000009009 +-100005090.100000000 +-100005090.100000001 +-100005090.100000005 +-100005090.100000009 +-100005090.100001000 +-100005090.100005000 +-100005090.100009000 +-100005090.100001001 +-100005090.500005005 +-100005090.900009009 +-500000000.000000000 +-500000000.000000001 +-500000000.000000005 +-500000000.000000009 +-500000000.000001000 +-500000000.000005000 +-500000000.000009000 +-500000000.000001001 +-500000000.000005005 +-500000000.000009009 +-500000000.100000000 +-500000000.100000001 +-500000000.100000005 +-500000000.100000009 +-500000000.100001000 +-500000000.100005000 +-500000000.100009000 +-500000000.100001001 +-500000000.500005005 +-500000000.900009009 +-900000000.000000000 +-900000000.000000001 +-900000000.000000005 +-900000000.000000009 +-900000000.000001000 +-900000000.000005000 +-900000000.000009000 +-900000000.000001001 +-900000000.000005005 +-900000000.000009009 +-900000000.100000000 +-900000000.100000001 +-900000000.100000005 +-900000000.100000009 +-900000000.100001000 +-900000000.100005000 +-900000000.100009000 +-900000000.100001001 +-900000000.500005005 +-900000000.900009009 +-444444444.444444444 +-499999999.999999999 +-555555555.555555555 +-999999999.999999999 +-000000000.00000000 +-000000000.44444444 +-000000000.99999999 +-000000000.00000001 +-000000000.00000005 +-000000000.00000009 +-000000000.00000100 +-000000000.00000500 +-000000000.00000900 +-000000000.00000101 +-000000000.00000505 +-000000000.00000909 +-000000000.10000000 +-000000000.10000001 +-000000000.10000005 +-000000000.10000009 +-000000000.10100000 +-000000000.10500000 +-000000000.10900000 +-000000000.10100001 +-000000000.10500005 +-000000000.10900009 +-000000000.90000000 +-000000000.90000001 +-000000000.90000005 +-000000000.90000009 +-000000000.90100000 +-000000000.90500000 +-000000000.90900000 +-000000000.90100001 +-000000000.90500005 +-000000000.90900009 +-000000001.00000000 +-000000001.00000001 +-000000001.00000005 +-000000001.00000009 +-000000001.00100000 +-000000001.00500000 +-000000001.00900000 +-000000001.00100001 +-000000001.00500005 +-000000001.00900009 +-000000001.10000000 +-000000001.10000001 +-000000001.10000005 +-000000001.10000009 +-000000001.10100000 +-000000001.10500000 +-000000001.10900000 +-000000001.10100001 +-000000001.10500005 +-000000001.10900009 +-000000001.90000000 +-000000001.90000001 +-000000001.90000005 +-000000001.90000009 +-000000001.90100000 +-000000001.90500000 +-000000001.90900000 +-000000001.90100001 +-000000001.90500005 +-000000001.90900009 +-000000009.00000000 +-000000009.00000001 +-000000009.00000005 +-000000009.00000009 +-000000009.00100000 +-000000009.00500000 +-000000009.00900000 +-000000009.00100001 +-000000009.00500005 +-000000009.00900009 +-000000009.10000000 +-000000009.10000001 +-000000009.10000005 +-000000009.10000009 +-000000009.10100000 +-000000009.10500000 +-000000009.10900000 +-000000009.10100001 +-000000009.10500005 +-000000009.10900009 +-000000009.90000000 +-000000009.90000001 +-000000009.90000005 +-000000009.90000009 +-000000009.90100000 +-000000009.90500000 +-000000009.90900000 +-000000009.90100001 +-000000009.90500005 +-000000009.90900009 +-100000000.00000000 +-100000000.00000001 +-100000000.00000005 +-100000000.00000009 +-100000000.00001000 +-100000000.00005000 +-100000000.00009000 +-100000000.00001001 +-100000000.00005005 +-100000000.00009009 +-100000000.10000000 +-100000000.10000001 +-100000000.10000005 +-100000000.10000009 +-100000000.10001000 +-100000000.10005000 +-100000000.10009000 +-100000000.10001001 +-100000000.50005005 +-100000000.90009009 +-100000001.00000000 +-100000001.00000001 +-100000001.00000005 +-100000001.00000009 +-100000001.00001000 +-100000001.00005000 +-100000001.00009000 +-100000001.00001001 +-100000001.00005005 +-100000001.00009009 +-100000001.10000000 +-100000001.10000001 +-100000001.10000005 +-100000001.10000009 +-100000001.10001000 +-100000001.10005000 +-100000001.10009000 +-100000001.10001001 +-100000001.50005005 +-100000001.90009009 +-100005000.00000000 +-100005000.00000001 +-100005000.00000005 +-100005000.00000009 +-100005000.00001000 +-100005000.00005000 +-100005000.00009000 +-100005000.00001001 +-100005000.00005005 +-100005000.00009009 +-100005000.10000000 +-100005000.10000001 +-100005000.10000005 +-100005000.10000009 +-100005000.10001000 +-100005000.10005000 +-100005000.10009000 +-100005000.10001001 +-100005000.50005005 +-100005000.90009009 +-100005090.00000000 +-100005090.00000001 +-100005090.00000005 +-100005090.00000009 +-100005090.00001000 +-100005090.00005000 +-100005090.00009000 +-100005090.00001001 +-100005090.00005005 +-100005090.00009009 +-100005090.10000000 +-100005090.10000001 +-100005090.10000005 +-100005090.10000009 +-100005090.10001000 +-100005090.10005000 +-100005090.10009000 +-100005090.10001001 +-100005090.50005005 +-100005090.90009009 +-500000000.00000000 +-500000000.00000001 +-500000000.00000005 +-500000000.00000009 +-500000000.00001000 +-500000000.00005000 +-500000000.00009000 +-500000000.00001001 +-500000000.00005005 +-500000000.00009009 +-500000000.10000000 +-500000000.10000001 +-500000000.10000005 +-500000000.10000009 +-500000000.10001000 +-500000000.10005000 +-500000000.10009000 +-500000000.10001001 +-500000000.50005005 +-500000000.90009009 +-900000000.00000000 +-900000000.00000001 +-900000000.00000005 +-900000000.00000009 +-900000000.00001000 +-900000000.00005000 +-900000000.00009000 +-900000000.00001001 +-900000000.00005005 +-900000000.00009009 +-900000000.10000000 +-900000000.10000001 +-900000000.10000005 +-900000000.10000009 +-900000000.10001000 +-900000000.10005000 +-900000000.10009000 +-900000000.10001001 +-900000000.50005005 +-900000000.90009009 +-444444444.44444444 +-499999999.99999999 +-555555555.55555555 +-999999999.99999999 +-00000000.000000000 +-00000000.444444444 +-00000000.999999999 +-00000000.000000001 +-00000000.000000005 +-00000000.000000009 +-00000000.000000100 +-00000000.000000500 +-00000000.000000900 +-00000000.000000101 +-00000000.000000505 +-00000000.000000909 +-00000000.100000000 +-00000000.100000001 +-00000000.100000005 +-00000000.100000009 +-00000000.101000000 +-00000000.105000000 +-00000000.109000000 +-00000000.101000001 +-00000000.105000005 +-00000000.109000009 +-00000000.900000000 +-00000000.900000001 +-00000000.900000005 +-00000000.900000009 +-00000000.901000000 +-00000000.905000000 +-00000000.909000000 +-00000000.901000001 +-00000000.905000005 +-00000000.909000009 +-00000001.000000000 +-00000001.000000001 +-00000001.000000005 +-00000001.000000009 +-00000001.001000000 +-00000001.005000000 +-00000001.009000000 +-00000001.001000001 +-00000001.005000005 +-00000001.009000009 +-00000001.100000000 +-00000001.100000001 +-00000001.100000005 +-00000001.100000009 +-00000001.101000000 +-00000001.105000000 +-00000001.109000000 +-00000001.101000001 +-00000001.105000005 +-00000001.109000009 +-00000001.900000000 +-00000001.900000001 +-00000001.900000005 +-00000001.900000009 +-00000001.901000000 +-00000001.905000000 +-00000001.909000000 +-00000001.901000001 +-00000001.905000005 +-00000001.909000009 +-00000009.000000000 +-00000009.000000001 +-00000009.000000005 +-00000009.000000009 +-00000009.001000000 +-00000009.005000000 +-00000009.009000000 +-00000009.001000001 +-00000009.005000005 +-00000009.009000009 +-00000009.100000000 +-00000009.100000001 +-00000009.100000005 +-00000009.100000009 +-00000009.101000000 +-00000009.105000000 +-00000009.109000000 +-00000009.101000001 +-00000009.105000005 +-00000009.109000009 +-00000009.900000000 +-00000009.900000001 +-00000009.900000005 +-00000009.900000009 +-00000009.901000000 +-00000009.905000000 +-00000009.909000000 +-00000009.901000001 +-00000009.905000005 +-00000009.909000009 +-10000000.000000000 +-10000000.000000001 +-10000000.000000005 +-10000000.000000009 +-10000000.000001000 +-10000000.000005000 +-10000000.000009000 +-10000000.000001001 +-10000000.000005005 +-10000000.000009009 +-10000000.100000000 +-10000000.100000001 +-10000000.100000005 +-10000000.100000009 +-10000000.100001000 +-10000000.100005000 +-10000000.100009000 +-10000000.100001001 +-10000000.500005005 +-10000000.900009009 +-10000001.000000000 +-10000001.000000001 +-10000001.000000005 +-10000001.000000009 +-10000001.000001000 +-10000001.000005000 +-10000001.000009000 +-10000001.000001001 +-10000001.000005005 +-10000001.000009009 +-10000001.100000000 +-10000001.100000001 +-10000001.100000005 +-10000001.100000009 +-10000001.100001000 +-10000001.100005000 +-10000001.100009000 +-10000001.100001001 +-10000001.500005005 +-10000001.900009009 +-10005000.000000000 +-10005000.000000001 +-10005000.000000005 +-10005000.000000009 +-10005000.000001000 +-10005000.000005000 +-10005000.000009000 +-10005000.000001001 +-10005000.000005005 +-10005000.000009009 +-10005000.100000000 +-10005000.100000001 +-10005000.100000005 +-10005000.100000009 +-10005000.100001000 +-10005000.100005000 +-10005000.100009000 +-10005000.100001001 +-10005000.500005005 +-10005000.900009009 +-10005090.000000000 +-10005090.000000001 +-10005090.000000005 +-10005090.000000009 +-10005090.000001000 +-10005090.000005000 +-10005090.000009000 +-10005090.000001001 +-10005090.000005005 +-10005090.000009009 +-10005090.100000000 +-10005090.100000001 +-10005090.100000005 +-10005090.100000009 +-10005090.100001000 +-10005090.100005000 +-10005090.100009000 +-10005090.100001001 +-10005090.500005005 +-10005090.900009009 +-50000000.000000000 +-50000000.000000001 +-50000000.000000005 +-50000000.000000009 +-50000000.000001000 +-50000000.000005000 +-50000000.000009000 +-50000000.000001001 +-50000000.000005005 +-50000000.000009009 +-50000000.100000000 +-50000000.100000001 +-50000000.100000005 +-50000000.100000009 +-50000000.100001000 +-50000000.100005000 +-50000000.100009000 +-50000000.100001001 +-50000000.500005005 +-50000000.900009009 +-90000000.000000000 +-90000000.000000001 +-90000000.000000005 +-90000000.000000009 +-90000000.000001000 +-90000000.000005000 +-90000000.000009000 +-90000000.000001001 +-90000000.000005005 +-90000000.000009009 +-90000000.100000000 +-90000000.100000001 +-90000000.100000005 +-90000000.100000009 +-90000000.100001000 +-90000000.100005000 +-90000000.100009000 +-90000000.100001001 +-90000000.500005005 +-90000000.900009009 +-44444444.444444444 +-49999999.999999999 +-55555555.555555555 +-99999999.999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(27,9).csv b/be/test/data/vec/columns/DECIMALV3(27,9).csv new file mode 100644 index 000000000000000..008b3ff6d58ceb9 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(27,9).csv @@ -0,0 +1,41 @@ +12.345678901 +987.654321 +0.123456789 +1234567.89 +0.987654321 +56789.12345 +123.456789 +45678.90123 +0.3456789 +2345.6789 +0.1 +1.0 +123.0 +123456789.123456789 +0.000000001 +100000000.1 +0.999999999 +0.000123456 +99999999.999999999 +0.123456 +123456.000000001 +1000000000.000000001 +0.000000123 +123456789012345.6789 +123.456000000 +999999999.9 +0.0000000001 +999.999999999 +0.012345678 +1234567890.123456789 +123456789012345.123456789 +98765432109876.987654321 +12345678901234.567890123 +87654321098765.432109876 +23456789012345.678901234 +76543210987654.321098765 +34567890123456.789012345 +65432109876543.210987654 +45678901234567.890123456 +54321098765432.109876543 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(38,0).csv b/be/test/data/vec/columns/DECIMALV3(38,0).csv new file mode 100644 index 000000000000000..9c0a829cdd680f7 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(38,0).csv @@ -0,0 +1,132 @@ +0 +0.0 +00.0 +00.00 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1.0 +2.0 +3.0 +4.0 +5.0 +6.0 +7.0 +8.0 +9.0 +00000000000000000000000000000000000000 +00000000000000000000000000000000000001 +00000000000000000000000000000000000005 +00000000000000000000000000000000000009 +00000000000000000010000000000000000000 +00000000000000000050000000000000000000 +00000000000000000090000000000000000000 +00000000000000000010000000000000000001 +00000000000000000050000000000000000005 +00000000000000000090000000000000000009 +10000000000000000000000000000000000000 +10000000000000000000000000000000000001 +10000000000000000000000000000000000005 +10000000000000000000000000000000000009 +10000000000000000000000100000000000000 +10000000000000000000000500000000000000 +10000000000000000000000900000000000000 +10000000000000000000000100000000000001 +10000000000000000000000500000000000005 +10000000000000000000000900000000000009 +50000000000000000000000000000000000000 +50000000000000000000000000000000000001 +50000000000000000000000000000000000005 +50000000000000000000000000000000000009 +50000000000000000000000100000000000000 +50000000000000000000000500000000000000 +50000000000000000000000900000000000000 +50000000000000000000000100000000000001 +50000000000000000000000500000000000005 +50000000000000000000000900000000000009 +90000000000000000000000000000000000000 +90000000000000000000000000000000000001 +90000000000000000000000000000000000005 +90000000000000000000000000000000000009 +90000000000000000000000100000000000000 +90000000000000000000000500000000000000 +90000000000000000000000900000000000000 +90000000000000000000000100000000000001 +90000000000000000000000500000000000005 +90000000000000000000000900000000000009 +44444444444444444444444444444444444444 +49999999999999999999999999999999999999 +55555555555555555555555555555555555555 +99999999999999999999999999999999999999 +-0 +-0.0 +-00.0 +-00.00 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +-1.0 +-2.0 +-3.0 +-4.0 +-5.0 +-6.0 +-7.0 +-8.0 +-9.0 +-00000000000000000000000000000000000000 +-00000000000000000000000000000000000001 +-00000000000000000000000000000000000005 +-00000000000000000000000000000000000009 +-00000000000000000010000000000000000000 +-00000000000000000050000000000000000000 +-00000000000000000090000000000000000000 +-00000000000000000010000000000000000001 +-00000000000000000050000000000000000005 +-00000000000000000090000000000000000009 +-10000000000000000000000000000000000000 +-10000000000000000000000000000000000001 +-10000000000000000000000000000000000005 +-10000000000000000000000000000000000009 +-10000000000000000000000100000000000000 +-10000000000000000000000500000000000000 +-10000000000000000000000900000000000000 +-10000000000000000000000100000000000001 +-10000000000000000000000500000000000005 +-10000000000000000000000900000000000009 +-50000000000000000000000000000000000000 +-50000000000000000000000000000000000001 +-50000000000000000000000000000000000005 +-50000000000000000000000000000000000009 +-50000000000000000000000100000000000000 +-50000000000000000000000500000000000000 +-50000000000000000000000900000000000000 +-50000000000000000000000100000000000001 +-50000000000000000000000500000000000005 +-50000000000000000000000900000000000009 +-90000000000000000000000000000000000000 +-90000000000000000000000000000000000001 +-90000000000000000000000000000000000005 +-90000000000000000000000000000000000009 +-90000000000000000000000100000000000000 +-90000000000000000000000500000000000000 +-90000000000000000000000900000000000000 +-90000000000000000000000100000000000001 +-90000000000000000000000500000000000005 +-90000000000000000000000900000000000009 +-44444444444444444444444444444444444444 +-49999999999999999999999999999999999999 +-55555555555555555555555555555555555555 +-99999999999999999999999999999999999999 \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(38,30).csv b/be/test/data/vec/columns/DECIMALV3(38,30).csv new file mode 100644 index 000000000000000..87ab9775bfb1582 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(38,30).csv @@ -0,0 +1,1384 @@ +12.345678901 +987.654321 +0.123456789 +1234567.89 +0.987654321 +56789.12345 +123.456789 +45678.90123 +0.3456789 +2345.6789 +0.1 +1.0 +123.0 +12345678.123456789 +0.000000000000000000000000000000001 +0.00000000000000000000000000000000123 +12345678.000000000000000000000000000000001 +99999999.999999999999999999999999999999 +10000000.1 +0.999999999 +0.000123456 +99999999.999999999 +0.123456 +123456.000000001 +10000000.000000001 +0.000000123 +12345678.67899012345 +123.456000000 +99999999.99 +0.0000000001 +999.999999999 +0.012345678 +12345678.12345678900000000000000000000 +12345.12345678900000000000000000000 +98765.98765432100000000000000000000 +1234567.56789012300000000000000000000 +876545.43210987600000000000000000000 +234545.67890123400000000000000000000 +0987654.32109876500000000000000000000 +123456.78901234500000000000000000000 +09876543.21098765400000000000000000000 +1234567.89012345600000000000000000000 +5432.10987654300000000000000000000 +0 +0.0 +00.0 +00.00 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1.0 +2.0 +3.0 +4.0 +5.0 +6.0 +7.0 +8.0 +9.0 +00000000.000000000000000000000000000000 +00000000.444444444444444444444444444444 +00000000.999999999999999999999999999999 +00000000.000000000000000000000000000001 +00000000.000000000000000000000000000005 +00000000.000000000000000000000000000009 +00000000.000000000010000000000000000000 +00000000.000000000050000000000000000000 +00000000.000000000090000000000000000000 +00000000.000000000010000000000000000001 +00000000.000000000050000000000000000005 +00000000.000000000090000000000000000009 +00000000.100000000000000000000000000000 +00000000.100000000000000000000000000001 +00000000.100000000000000000000000000005 +00000000.100000000000000000000000000009 +00000000.100000000010000000000000000000 +00000000.100000000050000000000000000000 +00000000.100000000090000000000000000000 +00000000.100000000010000000000000000001 +00000000.100000000050000000000000000005 +00000000.100000000090000000000000000009 +00000000.900000000000000000000000000000 +00000000.900000000000000000000000000001 +00000000.900000000000000000000000000005 +00000000.900000000000000000000000000009 +00000000.900000000010000000000000000000 +00000000.900000000050000000000000000000 +00000000.900000000090000000000000000000 +00000000.900000000010000000000000000001 +00000000.900000000050000000000000000005 +00000000.900000000090000000000000000009 +00000001.000000000000000000000000000000 +00000001.000000000000000000000000000001 +00000001.000000000000000000000000000005 +00000001.000000000000000000000000000009 +00000001.000000000010000000000000000000 +00000001.000000000050000000000000000000 +00000001.000000000090000000000000000000 +00000001.000000000010000000000000000001 +00000001.000000000050000000000000000005 +00000001.000000000090000000000000000009 +00000001.100000000000000000000000000000 +00000001.100000000000000000000000000001 +00000001.100000000000000000000000000005 +00000001.100000000000000000000000000009 +00000001.100000000010000000000000000000 +00000001.100000000050000000000000000000 +00000001.100000000090000000000000000000 +00000001.100000000010000000000000000001 +00000001.100000000050000000000000000005 +00000001.100000000090000000000000000009 +00000001.900000000000000000000000000000 +00000001.900000000000000000000000000001 +00000001.900000000000000000000000000005 +00000001.900000000000000000000000000009 +00000001.900000000010000000000000000000 +00000001.900000000050000000000000000000 +00000001.900000000090000000000000000000 +00000001.900000000010000000000000000001 +00000001.900000000050000000000000000005 +00000001.900000000090000000000000000009 +00000009.000000000000000000000000000000 +00000009.000000000000000000000000000001 +00000009.000000000000000000000000000005 +00000009.000000000000000000000000000009 +00000009.000000000010000000000000000000 +00000009.000000000050000000000000000000 +00000009.000000000090000000000000000000 +00000009.000000000010000000000000000001 +00000009.000000000050000000000000000005 +00000009.000000000090000000000000000009 +00000009.100000000000000000000000000000 +00000009.100000000000000000000000000001 +00000009.100000000000000000000000000005 +00000009.100000000000000000000000000009 +00000009.100000000010000000000000000000 +00000009.100000000050000000000000000000 +00000009.100000000090000000000000000000 +00000009.100000000010000000000000000001 +00000009.100000000050000000000000000005 +00000009.100000000090000000000000000009 +00000009.900000000000000000000000000000 +00000009.900000000000000000000000000001 +00000009.900000000000000000000000000005 +00000009.900000000000000000000000000009 +00000009.900000000010000000000000000000 +00000009.900000000050000000000000000000 +00000009.900000000090000000000000000000 +00000009.900000000010000000000000000001 +00000009.900000000050000000000000000005 +00000009.900000000090000000000000000009 +10000000.000000000000000000000000000000 +10000000.000000000000000000000000000001 +10000000.000000000000000000000000000005 +10000000.000000000000000000000000000009 +10000000.000000000000000100000000000000 +10000000.000000000000000500000000000000 +10000000.000000000000000900000000000000 +10000000.000000000000000100000000000001 +10000000.000000000000000500000000000005 +10000000.000000000000000900000000000009 +10000000.100000000000000000000000000000 +10000000.100000000000000000000000000001 +10000000.100000000000000000000000000005 +10000000.100000000000000000000000000009 +10000000.100000000000000100000000000000 +10000000.100000000000000500000000000000 +10000000.100000000000000900000000000000 +10000000.100000000000000100000000000001 +10000000.500000000000000500000000000005 +10000000.900000000000000900000000000009 +10000001.000000000000000000000000000000 +10000001.000000000000000000000000000001 +10000001.000000000000000000000000000005 +10000001.000000000000000000000000000009 +10000001.000000000000000100000000000000 +10000001.000000000000000500000000000000 +10000001.000000000000000900000000000000 +10000001.000000000000000100000000000001 +10000001.000000000000000500000000000005 +10000001.000000000000000900000000000009 +10000001.100000000000000000000000000000 +10000001.100000000000000000000000000001 +10000001.100000000000000000000000000005 +10000001.100000000000000000000000000009 +10000001.100000000000000100000000000000 +10000001.100000000000000500000000000000 +10000001.100000000000000900000000000000 +10000001.100000000000000100000000000001 +10000001.500000000000000500000000000005 +10000001.900000000000000900000000000009 +10000500.000000000000000000000000000000 +10000500.000000000000000000000000000001 +10000500.000000000000000000000000000005 +10000500.000000000000000000000000000009 +10000500.000000000000000100000000000000 +10000500.000000000000000500000000000000 +10000500.000000000000000900000000000000 +10000500.000000000000000100000000000001 +10000500.000000000000000500000000000005 +10000500.000000000000000900000000000009 +10000500.100000000000000000000000000000 +10000500.100000000000000000000000000001 +10000500.100000000000000000000000000005 +10000500.100000000000000000000000000009 +10000500.100000000000000100000000000000 +10000500.100000000000000500000000000000 +10000500.100000000000000900000000000000 +10000500.100000000000000100000000000001 +10000500.500000000000000500000000000005 +10000500.900000000000000900000000000009 +10000509.000000000000000000000000000000 +10000509.000000000000000000000000000001 +10000509.000000000000000000000000000005 +10000509.000000000000000000000000000009 +10000509.000000000000000100000000000000 +10000509.000000000000000500000000000000 +10000509.000000000000000900000000000000 +10000509.000000000000000100000000000001 +10000509.000000000000000500000000000005 +10000509.000000000000000900000000000009 +10000509.100000000000000000000000000000 +10000509.100000000000000000000000000001 +10000509.100000000000000000000000000005 +10000509.100000000000000000000000000009 +10000509.100000000000000100000000000000 +10000509.100000000000000500000000000000 +10000509.100000000000000900000000000000 +10000509.100000000000000100000000000001 +10000509.500000000000000500000000000005 +10000509.900000000000000900000000000009 +50000000.000000000000000000000000000000 +50000000.000000000000000000000000000001 +50000000.000000000000000000000000000005 +50000000.000000000000000000000000000009 +50000000.000000000000000100000000000000 +50000000.000000000000000500000000000000 +50000000.000000000000000900000000000000 +50000000.000000000000000100000000000001 +50000000.000000000000000500000000000005 +50000000.000000000000000900000000000009 +50000000.100000000000000000000000000000 +50000000.100000000000000000000000000001 +50000000.100000000000000000000000000005 +50000000.100000000000000000000000000009 +50000000.100000000000000100000000000000 +50000000.100000000000000500000000000000 +50000000.100000000000000900000000000000 +50000000.100000000000000100000000000001 +50000000.500000000000000500000000000005 +50000000.900000000000000900000000000009 +90000000.000000000000000000000000000000 +90000000.000000000000000000000000000001 +90000000.000000000000000000000000000005 +90000000.000000000000000000000000000009 +90000000.000000000000000100000000000000 +90000000.000000000000000500000000000000 +90000000.000000000000000900000000000000 +90000000.000000000000000100000000000001 +90000000.000000000000000500000000000005 +90000000.000000000000000900000000000009 +90000000.100000000000000000000000000000 +90000000.100000000000000000000000000001 +90000000.100000000000000000000000000005 +90000000.100000000000000000000000000009 +90000000.100000000000000100000000000000 +90000000.100000000000000500000000000000 +90000000.100000000000000900000000000000 +90000000.100000000000000100000000000001 +90000000.500000000000000500000000000005 +90000000.900000000000000900000000000009 +44444444.444444444444444444444444444444 +49999999.999999999999999999999999999999 +55555555.555555555555555555555555555555 +99999999.999999999999999999999999999999 +00000000.000000000000000000000000000 +00000000.444444444444444444444444444 +00000000.999999999999999999999999999 +00000000.000000000000000000000000001 +00000000.000000000000000000000000005 +00000000.000000000000000000000000009 +00000000.000000010000000000000000000 +00000000.000000050000000000000000000 +00000000.000000090000000000000000000 +00000000.000000010000000000000000001 +00000000.000000050000000000000000005 +00000000.000000090000000000000000009 +00000000.100000000000000000000000000 +00000000.100000000000000000000000001 +00000000.100000000000000000000000005 +00000000.100000000000000000000000009 +00000000.100000010000000000000000000 +00000000.100000050000000000000000000 +00000000.100000090000000000000000000 +00000000.100000010000000000000000001 +00000000.100000050000000000000000005 +00000000.100000090000000000000000009 +00000000.900000000000000000000000000 +00000000.900000000000000000000000001 +00000000.900000000000000000000000005 +00000000.900000000000000000000000009 +00000000.900000010000000000000000000 +00000000.900000050000000000000000000 +00000000.900000090000000000000000000 +00000000.900000010000000000000000001 +00000000.900000050000000000000000005 +00000000.900000090000000000000000009 +00000001.000000000000000000000000000 +00000001.000000000000000000000000001 +00000001.000000000000000000000000005 +00000001.000000000000000000000000009 +00000001.000000010000000000000000000 +00000001.000000050000000000000000000 +00000001.000000090000000000000000000 +00000001.000000010000000000000000001 +00000001.000000050000000000000000005 +00000001.000000090000000000000000009 +00000001.100000000000000000000000000 +00000001.100000000000000000000000001 +00000001.100000000000000000000000005 +00000001.100000000000000000000000009 +00000001.100000010000000000000000000 +00000001.100000050000000000000000000 +00000001.100000090000000000000000000 +00000001.100000010000000000000000001 +00000001.100000050000000000000000005 +00000001.100000090000000000000000009 +00000001.900000000000000000000000000 +00000001.900000000000000000000000001 +00000001.900000000000000000000000005 +00000001.900000000000000000000000009 +00000001.900000010000000000000000000 +00000001.900000050000000000000000000 +00000001.900000090000000000000000000 +00000001.900000010000000000000000001 +00000001.900000050000000000000000005 +00000001.900000090000000000000000009 +00000009.000000000000000000000000000 +00000009.000000000000000000000000001 +00000009.000000000000000000000000005 +00000009.000000000000000000000000009 +00000009.000000010000000000000000000 +00000009.000000050000000000000000000 +00000009.000000090000000000000000000 +00000009.000000010000000000000000001 +00000009.000000050000000000000000005 +00000009.000000090000000000000000009 +00000009.100000000000000000000000000 +00000009.100000000000000000000000001 +00000009.100000000000000000000000005 +00000009.100000000000000000000000009 +00000009.100000010000000000000000000 +00000009.100000050000000000000000000 +00000009.100000090000000000000000000 +00000009.100000010000000000000000001 +00000009.100000050000000000000000005 +00000009.100000090000000000000000009 +00000009.900000000000000000000000000 +00000009.900000000000000000000000001 +00000009.900000000000000000000000005 +00000009.900000000000000000000000009 +00000009.900000010000000000000000000 +00000009.900000050000000000000000000 +00000009.900000090000000000000000000 +00000009.900000010000000000000000001 +00000009.900000050000000000000000005 +00000009.900000090000000000000000009 +10000000.000000000000000000000000000 +10000000.000000000000000000000000001 +10000000.000000000000000000000000005 +10000000.000000000000000000000000009 +10000000.000000000000100000000000000 +10000000.000000000000500000000000000 +10000000.000000000000900000000000000 +10000000.000000000000100000000000001 +10000000.000000000000500000000000005 +10000000.000000000000900000000000009 +10000000.100000000000000000000000000 +10000000.100000000000000000000000001 +10000000.100000000000000000000000005 +10000000.100000000000000000000000009 +10000000.100000000000100000000000000 +10000000.100000000000500000000000000 +10000000.100000000000900000000000000 +10000000.100000000000100000000000001 +10000000.500000000000500000000000005 +10000000.900000000000900000000000009 +10000001.000000000000000000000000000 +10000001.000000000000000000000000001 +10000001.000000000000000000000000005 +10000001.000000000000000000000000009 +10000001.000000000000100000000000000 +10000001.000000000000500000000000000 +10000001.000000000000900000000000000 +10000001.000000000000100000000000001 +10000001.000000000000500000000000005 +10000001.000000000000900000000000009 +10000001.100000000000000000000000000 +10000001.100000000000000000000000001 +10000001.100000000000000000000000005 +10000001.100000000000000000000000009 +10000001.100000000000100000000000000 +10000001.100000000000500000000000000 +10000001.100000000000900000000000000 +10000001.100000000000100000000000001 +10000001.500000000000500000000000005 +10000001.900000000000900000000000009 +10000500.000000000000000000000000000 +10000500.000000000000000000000000001 +10000500.000000000000000000000000005 +10000500.000000000000000000000000009 +10000500.000000000000100000000000000 +10000500.000000000000500000000000000 +10000500.000000000000900000000000000 +10000500.000000000000100000000000001 +10000500.000000000000500000000000005 +10000500.000000000000900000000000009 +10000500.100000000000000000000000000 +10000500.100000000000000000000000001 +10000500.100000000000000000000000005 +10000500.100000000000000000000000009 +10000500.100000000000100000000000000 +10000500.100000000000500000000000000 +10000500.100000000000900000000000000 +10000500.100000000000100000000000001 +10000500.500000000000500000000000005 +10000500.900000000000900000000000009 +10000509.000000000000000000000000000 +10000509.000000000000000000000000001 +10000509.000000000000000000000000005 +10000509.000000000000000000000000009 +10000509.000000000000100000000000000 +10000509.000000000000500000000000000 +10000509.000000000000900000000000000 +10000509.000000000000100000000000001 +10000509.000000000000500000000000005 +10000509.000000000000900000000000009 +10000509.100000000000000000000000000 +10000509.100000000000000000000000001 +10000509.100000000000000000000000005 +10000509.100000000000000000000000009 +10000509.100000000000100000000000000 +10000509.100000000000500000000000000 +10000509.100000000000900000000000000 +10000509.100000000000100000000000001 +10000509.500000000000500000000000005 +10000509.900000000000900000000000009 +50000000.000000000000000000000000000 +50000000.000000000000000000000000001 +50000000.000000000000000000000000005 +50000000.000000000000000000000000009 +50000000.000000000000100000000000000 +50000000.000000000000500000000000000 +50000000.000000000000900000000000000 +50000000.000000000000100000000000001 +50000000.000000000000500000000000005 +50000000.000000000000900000000000009 +50000000.100000000000000000000000000 +50000000.100000000000000000000000001 +50000000.100000000000000000000000005 +50000000.100000000000000000000000009 +50000000.100000000000100000000000000 +50000000.100000000000500000000000000 +50000000.100000000000900000000000000 +50000000.100000000000100000000000001 +50000000.500000000000500000000000005 +50000000.900000000000900000000000009 +90000000.000000000000000000000000000 +90000000.000000000000000000000000001 +90000000.000000000000000000000000005 +90000000.000000000000000000000000009 +90000000.000000000000100000000000000 +90000000.000000000000500000000000000 +90000000.000000000000900000000000000 +90000000.000000000000100000000000001 +90000000.000000000000500000000000005 +90000000.000000000000900000000000009 +90000000.100000000000000000000000000 +90000000.100000000000000000000000001 +90000000.100000000000000000000000005 +90000000.100000000000000000000000009 +90000000.100000000000100000000000000 +90000000.100000000000500000000000000 +90000000.100000000000900000000000000 +90000000.100000000000100000000000001 +90000000.500000000000500000000000005 +90000000.900000000000900000000000009 +44444444.444444444444444444444444444 +49999999.999999999999999999999999999 +55555555.555555555555555555555555555 +99999999.999999999999999999999999999 +00000.000000000000000000000000000000 +00000.444444444444444444444444444444 +00000.999999999999999999999999999999 +00000.000000000000000000000000000001 +00000.000000000000000000000000000005 +00000.000000000000000000000000000009 +00000.000000000010000000000000000000 +00000.000000000050000000000000000000 +00000.000000000090000000000000000000 +00000.000000000010000000000000000001 +00000.000000000050000000000000000005 +00000.000000000090000000000000000009 +00000.100000000000000000000000000000 +00000.100000000000000000000000000001 +00000.100000000000000000000000000005 +00000.100000000000000000000000000009 +00000.100000000010000000000000000000 +00000.100000000050000000000000000000 +00000.100000000090000000000000000000 +00000.100000000010000000000000000001 +00000.100000000050000000000000000005 +00000.100000000090000000000000000009 +00000.900000000000000000000000000000 +00000.900000000000000000000000000001 +00000.900000000000000000000000000005 +00000.900000000000000000000000000009 +00000.900000000010000000000000000000 +00000.900000000050000000000000000000 +00000.900000000090000000000000000000 +00000.900000000010000000000000000001 +00000.900000000050000000000000000005 +00000.900000000090000000000000000009 +00001.000000000000000000000000000000 +00001.000000000000000000000000000001 +00001.000000000000000000000000000005 +00001.000000000000000000000000000009 +00001.000000000010000000000000000000 +00001.000000000050000000000000000000 +00001.000000000090000000000000000000 +00001.000000000010000000000000000001 +00001.000000000050000000000000000005 +00001.000000000090000000000000000009 +00001.100000000000000000000000000000 +00001.100000000000000000000000000001 +00001.100000000000000000000000000005 +00001.100000000000000000000000000009 +00001.100000000010000000000000000000 +00001.100000000050000000000000000000 +00001.100000000090000000000000000000 +00001.100000000010000000000000000001 +00001.100000000050000000000000000005 +00001.100000000090000000000000000009 +00001.900000000000000000000000000000 +00001.900000000000000000000000000001 +00001.900000000000000000000000000005 +00001.900000000000000000000000000009 +00001.900000000010000000000000000000 +00001.900000000050000000000000000000 +00001.900000000090000000000000000000 +00001.900000000010000000000000000001 +00001.900000000050000000000000000005 +00001.900000000090000000000000000009 +00009.000000000000000000000000000000 +00009.000000000000000000000000000001 +00009.000000000000000000000000000005 +00009.000000000000000000000000000009 +00009.000000000010000000000000000000 +00009.000000000050000000000000000000 +00009.000000000090000000000000000000 +00009.000000000010000000000000000001 +00009.000000000050000000000000000005 +00009.000000000090000000000000000009 +00009.100000000000000000000000000000 +00009.100000000000000000000000000001 +00009.100000000000000000000000000005 +00009.100000000000000000000000000009 +00009.100000000010000000000000000000 +00009.100000000050000000000000000000 +00009.100000000090000000000000000000 +00009.100000000010000000000000000001 +00009.100000000050000000000000000005 +00009.100000000090000000000000000009 +00009.900000000000000000000000000000 +00009.900000000000000000000000000001 +00009.900000000000000000000000000005 +00009.900000000000000000000000000009 +00009.900000000010000000000000000000 +00009.900000000050000000000000000000 +00009.900000000090000000000000000000 +00009.900000000010000000000000000001 +00009.900000000050000000000000000005 +00009.900000000090000000000000000009 +10000.000000000000000000000000000000 +10000.000000000000000000000000000001 +10000.000000000000000000000000000005 +10000.000000000000000000000000000009 +10000.000000000000000100000000000000 +10000.000000000000000500000000000000 +10000.000000000000000900000000000000 +10000.000000000000000100000000000001 +10000.000000000000000500000000000005 +10000.000000000000000900000000000009 +10000.100000000000000000000000000000 +10000.100000000000000000000000000001 +10000.100000000000000000000000000005 +10000.100000000000000000000000000009 +10000.100000000000000100000000000000 +10000.100000000000000500000000000000 +10000.100000000000000900000000000000 +10000.100000000000000100000000000001 +10000.500000000000000500000000000005 +10000.900000000000000900000000000009 +10001.000000000000000000000000000000 +10001.000000000000000000000000000001 +10001.000000000000000000000000000005 +10001.000000000000000000000000000009 +10001.000000000000000100000000000000 +10001.000000000000000500000000000000 +10001.000000000000000900000000000000 +10001.000000000000000100000000000001 +10001.000000000000000500000000000005 +10001.000000000000000900000000000009 +10001.100000000000000000000000000000 +10001.100000000000000000000000000001 +10001.100000000000000000000000000005 +10001.100000000000000000000000000009 +10001.100000000000000100000000000000 +10001.100000000000000500000000000000 +10001.100000000000000900000000000000 +10001.100000000000000100000000000001 +10001.500000000000000500000000000005 +10001.900000000000000900000000000009 +10500.000000000000000000000000000000 +10500.000000000000000000000000000001 +10500.000000000000000000000000000005 +10500.000000000000000000000000000009 +10500.000000000000000100000000000000 +10500.000000000000000500000000000000 +10500.000000000000000900000000000000 +10500.000000000000000100000000000001 +10500.000000000000000500000000000005 +10500.000000000000000900000000000009 +10500.100000000000000000000000000000 +10500.100000000000000000000000000001 +10500.100000000000000000000000000005 +10500.100000000000000000000000000009 +10500.100000000000000100000000000000 +10500.100000000000000500000000000000 +10500.100000000000000900000000000000 +10500.100000000000000100000000000001 +10500.500000000000000500000000000005 +10500.900000000000000900000000000009 +10509.000000000000000000000000000000 +10509.000000000000000000000000000001 +10509.000000000000000000000000000005 +10509.000000000000000000000000000009 +10509.000000000000000100000000000000 +10509.000000000000000500000000000000 +10509.000000000000000900000000000000 +10509.000000000000000100000000000001 +10509.000000000000000500000000000005 +10509.000000000000000900000000000009 +10509.100000000000000000000000000000 +10509.100000000000000000000000000001 +10509.100000000000000000000000000005 +10509.100000000000000000000000000009 +10509.100000000000000100000000000000 +10509.100000000000000500000000000000 +10509.100000000000000900000000000000 +10509.100000000000000100000000000001 +10509.500000000000000500000000000005 +10509.900000000000000900000000000009 +50000.000000000000000000000000000000 +50000.000000000000000000000000000001 +50000.000000000000000000000000000005 +50000.000000000000000000000000000009 +50000.000000000000000100000000000000 +50000.000000000000000500000000000000 +50000.000000000000000900000000000000 +50000.000000000000000100000000000001 +50000.000000000000000500000000000005 +50000.000000000000000900000000000009 +50000.100000000000000000000000000000 +50000.100000000000000000000000000001 +50000.100000000000000000000000000005 +50000.100000000000000000000000000009 +50000.100000000000000100000000000000 +50000.100000000000000500000000000000 +50000.100000000000000900000000000000 +50000.100000000000000100000000000001 +50000.500000000000000500000000000005 +50000.900000000000000900000000000009 +90000.000000000000000000000000000000 +90000.000000000000000000000000000001 +90000.000000000000000000000000000005 +90000.000000000000000000000000000009 +90000.000000000000000100000000000000 +90000.000000000000000500000000000000 +90000.000000000000000900000000000000 +90000.000000000000000100000000000001 +90000.000000000000000500000000000005 +90000.000000000000000900000000000009 +90000.100000000000000000000000000000 +90000.100000000000000000000000000001 +90000.100000000000000000000000000005 +90000.100000000000000000000000000009 +90000.100000000000000100000000000000 +90000.100000000000000500000000000000 +90000.100000000000000900000000000000 +90000.100000000000000100000000000001 +90000.500000000000000500000000000005 +90000.900000000000000900000000000009 +44444.444444444444444444444444444444 +49999.999999999999999999999999999999 +55555.555555555555555555555555555555 +99999.999999999999999999999999999999 +-0 +-0.0 +-00.0 +-00.00 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +-1.0 +-2.0 +-3.0 +-4.0 +-5.0 +-6.0 +-7.0 +-8.0 +-9.0 +-00000000.000000000000000000000000000000 +-00000000.444444444444444444444444444444 +-00000000.999999999999999999999999999999 +-00000000.000000000000000000000000000001 +-00000000.000000000000000000000000000005 +-00000000.000000000000000000000000000009 +-00000000.000000000010000000000000000000 +-00000000.000000000050000000000000000000 +-00000000.000000000090000000000000000000 +-00000000.000000000010000000000000000001 +-00000000.000000000050000000000000000005 +-00000000.000000000090000000000000000009 +-00000000.100000000000000000000000000000 +-00000000.100000000000000000000000000001 +-00000000.100000000000000000000000000005 +-00000000.100000000000000000000000000009 +-00000000.100000000010000000000000000000 +-00000000.100000000050000000000000000000 +-00000000.100000000090000000000000000000 +-00000000.100000000010000000000000000001 +-00000000.100000000050000000000000000005 +-00000000.100000000090000000000000000009 +-00000000.900000000000000000000000000000 +-00000000.900000000000000000000000000001 +-00000000.900000000000000000000000000005 +-00000000.900000000000000000000000000009 +-00000000.900000000010000000000000000000 +-00000000.900000000050000000000000000000 +-00000000.900000000090000000000000000000 +-00000000.900000000010000000000000000001 +-00000000.900000000050000000000000000005 +-00000000.900000000090000000000000000009 +-00000001.000000000000000000000000000000 +-00000001.000000000000000000000000000001 +-00000001.000000000000000000000000000005 +-00000001.000000000000000000000000000009 +-00000001.000000000010000000000000000000 +-00000001.000000000050000000000000000000 +-00000001.000000000090000000000000000000 +-00000001.000000000010000000000000000001 +-00000001.000000000050000000000000000005 +-00000001.000000000090000000000000000009 +-00000001.100000000000000000000000000000 +-00000001.100000000000000000000000000001 +-00000001.100000000000000000000000000005 +-00000001.100000000000000000000000000009 +-00000001.100000000010000000000000000000 +-00000001.100000000050000000000000000000 +-00000001.100000000090000000000000000000 +-00000001.100000000010000000000000000001 +-00000001.100000000050000000000000000005 +-00000001.100000000090000000000000000009 +-00000001.900000000000000000000000000000 +-00000001.900000000000000000000000000001 +-00000001.900000000000000000000000000005 +-00000001.900000000000000000000000000009 +-00000001.900000000010000000000000000000 +-00000001.900000000050000000000000000000 +-00000001.900000000090000000000000000000 +-00000001.900000000010000000000000000001 +-00000001.900000000050000000000000000005 +-00000001.900000000090000000000000000009 +-00000009.000000000000000000000000000000 +-00000009.000000000000000000000000000001 +-00000009.000000000000000000000000000005 +-00000009.000000000000000000000000000009 +-00000009.000000000010000000000000000000 +-00000009.000000000050000000000000000000 +-00000009.000000000090000000000000000000 +-00000009.000000000010000000000000000001 +-00000009.000000000050000000000000000005 +-00000009.000000000090000000000000000009 +-00000009.100000000000000000000000000000 +-00000009.100000000000000000000000000001 +-00000009.100000000000000000000000000005 +-00000009.100000000000000000000000000009 +-00000009.100000000010000000000000000000 +-00000009.100000000050000000000000000000 +-00000009.100000000090000000000000000000 +-00000009.100000000010000000000000000001 +-00000009.100000000050000000000000000005 +-00000009.100000000090000000000000000009 +-00000009.900000000000000000000000000000 +-00000009.900000000000000000000000000001 +-00000009.900000000000000000000000000005 +-00000009.900000000000000000000000000009 +-00000009.900000000010000000000000000000 +-00000009.900000000050000000000000000000 +-00000009.900000000090000000000000000000 +-00000009.900000000010000000000000000001 +-00000009.900000000050000000000000000005 +-00000009.900000000090000000000000000009 +-10000000.000000000000000000000000000000 +-10000000.000000000000000000000000000001 +-10000000.000000000000000000000000000005 +-10000000.000000000000000000000000000009 +-10000000.000000000000000100000000000000 +-10000000.000000000000000500000000000000 +-10000000.000000000000000900000000000000 +-10000000.000000000000000100000000000001 +-10000000.000000000000000500000000000005 +-10000000.000000000000000900000000000009 +-10000000.100000000000000000000000000000 +-10000000.100000000000000000000000000001 +-10000000.100000000000000000000000000005 +-10000000.100000000000000000000000000009 +-10000000.100000000000000100000000000000 +-10000000.100000000000000500000000000000 +-10000000.100000000000000900000000000000 +-10000000.100000000000000100000000000001 +-10000000.500000000000000500000000000005 +-10000000.900000000000000900000000000009 +-10000001.000000000000000000000000000000 +-10000001.000000000000000000000000000001 +-10000001.000000000000000000000000000005 +-10000001.000000000000000000000000000009 +-10000001.000000000000000100000000000000 +-10000001.000000000000000500000000000000 +-10000001.000000000000000900000000000000 +-10000001.000000000000000100000000000001 +-10000001.000000000000000500000000000005 +-10000001.000000000000000900000000000009 +-10000001.100000000000000000000000000000 +-10000001.100000000000000000000000000001 +-10000001.100000000000000000000000000005 +-10000001.100000000000000000000000000009 +-10000001.100000000000000100000000000000 +-10000001.100000000000000500000000000000 +-10000001.100000000000000900000000000000 +-10000001.100000000000000100000000000001 +-10000001.500000000000000500000000000005 +-10000001.900000000000000900000000000009 +-10000500.000000000000000000000000000000 +-10000500.000000000000000000000000000001 +-10000500.000000000000000000000000000005 +-10000500.000000000000000000000000000009 +-10000500.000000000000000100000000000000 +-10000500.000000000000000500000000000000 +-10000500.000000000000000900000000000000 +-10000500.000000000000000100000000000001 +-10000500.000000000000000500000000000005 +-10000500.000000000000000900000000000009 +-10000500.100000000000000000000000000000 +-10000500.100000000000000000000000000001 +-10000500.100000000000000000000000000005 +-10000500.100000000000000000000000000009 +-10000500.100000000000000100000000000000 +-10000500.100000000000000500000000000000 +-10000500.100000000000000900000000000000 +-10000500.100000000000000100000000000001 +-10000500.500000000000000500000000000005 +-10000500.900000000000000900000000000009 +-10000509.000000000000000000000000000000 +-10000509.000000000000000000000000000001 +-10000509.000000000000000000000000000005 +-10000509.000000000000000000000000000009 +-10000509.000000000000000100000000000000 +-10000509.000000000000000500000000000000 +-10000509.000000000000000900000000000000 +-10000509.000000000000000100000000000001 +-10000509.000000000000000500000000000005 +-10000509.000000000000000900000000000009 +-10000509.100000000000000000000000000000 +-10000509.100000000000000000000000000001 +-10000509.100000000000000000000000000005 +-10000509.100000000000000000000000000009 +-10000509.100000000000000100000000000000 +-10000509.100000000000000500000000000000 +-10000509.100000000000000900000000000000 +-10000509.100000000000000100000000000001 +-10000509.500000000000000500000000000005 +-10000509.900000000000000900000000000009 +-50000000.000000000000000000000000000000 +-50000000.000000000000000000000000000001 +-50000000.000000000000000000000000000005 +-50000000.000000000000000000000000000009 +-50000000.000000000000000100000000000000 +-50000000.000000000000000500000000000000 +-50000000.000000000000000900000000000000 +-50000000.000000000000000100000000000001 +-50000000.000000000000000500000000000005 +-50000000.000000000000000900000000000009 +-50000000.100000000000000000000000000000 +-50000000.100000000000000000000000000001 +-50000000.100000000000000000000000000005 +-50000000.100000000000000000000000000009 +-50000000.100000000000000100000000000000 +-50000000.100000000000000500000000000000 +-50000000.100000000000000900000000000000 +-50000000.100000000000000100000000000001 +-50000000.500000000000000500000000000005 +-50000000.900000000000000900000000000009 +-90000000.000000000000000000000000000000 +-90000000.000000000000000000000000000001 +-90000000.000000000000000000000000000005 +-90000000.000000000000000000000000000009 +-90000000.000000000000000100000000000000 +-90000000.000000000000000500000000000000 +-90000000.000000000000000900000000000000 +-90000000.000000000000000100000000000001 +-90000000.000000000000000500000000000005 +-90000000.000000000000000900000000000009 +-90000000.100000000000000000000000000000 +-90000000.100000000000000000000000000001 +-90000000.100000000000000000000000000005 +-90000000.100000000000000000000000000009 +-90000000.100000000000000100000000000000 +-90000000.100000000000000500000000000000 +-90000000.100000000000000900000000000000 +-90000000.100000000000000100000000000001 +-90000000.500000000000000500000000000005 +-90000000.900000000000000900000000000009 +-44444444.444444444444444444444444444444 +-49999999.999999999999999999999999999999 +-55555555.555555555555555555555555555555 +-99999999.999999999999999999999999999999 +-00000000.000000000000000000000000000 +-00000000.444444444444444444444444444 +-00000000.999999999999999999999999999 +-00000000.000000000000000000000000001 +-00000000.000000000000000000000000005 +-00000000.000000000000000000000000009 +-00000000.000000010000000000000000000 +-00000000.000000050000000000000000000 +-00000000.000000090000000000000000000 +-00000000.000000010000000000000000001 +-00000000.000000050000000000000000005 +-00000000.000000090000000000000000009 +-00000000.100000000000000000000000000 +-00000000.100000000000000000000000001 +-00000000.100000000000000000000000005 +-00000000.100000000000000000000000009 +-00000000.100000010000000000000000000 +-00000000.100000050000000000000000000 +-00000000.100000090000000000000000000 +-00000000.100000010000000000000000001 +-00000000.100000050000000000000000005 +-00000000.100000090000000000000000009 +-00000000.900000000000000000000000000 +-00000000.900000000000000000000000001 +-00000000.900000000000000000000000005 +-00000000.900000000000000000000000009 +-00000000.900000010000000000000000000 +-00000000.900000050000000000000000000 +-00000000.900000090000000000000000000 +-00000000.900000010000000000000000001 +-00000000.900000050000000000000000005 +-00000000.900000090000000000000000009 +-00000001.000000000000000000000000000 +-00000001.000000000000000000000000001 +-00000001.000000000000000000000000005 +-00000001.000000000000000000000000009 +-00000001.000000010000000000000000000 +-00000001.000000050000000000000000000 +-00000001.000000090000000000000000000 +-00000001.000000010000000000000000001 +-00000001.000000050000000000000000005 +-00000001.000000090000000000000000009 +-00000001.100000000000000000000000000 +-00000001.100000000000000000000000001 +-00000001.100000000000000000000000005 +-00000001.100000000000000000000000009 +-00000001.100000010000000000000000000 +-00000001.100000050000000000000000000 +-00000001.100000090000000000000000000 +-00000001.100000010000000000000000001 +-00000001.100000050000000000000000005 +-00000001.100000090000000000000000009 +-00000001.900000000000000000000000000 +-00000001.900000000000000000000000001 +-00000001.900000000000000000000000005 +-00000001.900000000000000000000000009 +-00000001.900000010000000000000000000 +-00000001.900000050000000000000000000 +-00000001.900000090000000000000000000 +-00000001.900000010000000000000000001 +-00000001.900000050000000000000000005 +-00000001.900000090000000000000000009 +-00000009.000000000000000000000000000 +-00000009.000000000000000000000000001 +-00000009.000000000000000000000000005 +-00000009.000000000000000000000000009 +-00000009.000000010000000000000000000 +-00000009.000000050000000000000000000 +-00000009.000000090000000000000000000 +-00000009.000000010000000000000000001 +-00000009.000000050000000000000000005 +-00000009.000000090000000000000000009 +-00000009.100000000000000000000000000 +-00000009.100000000000000000000000001 +-00000009.100000000000000000000000005 +-00000009.100000000000000000000000009 +-00000009.100000010000000000000000000 +-00000009.100000050000000000000000000 +-00000009.100000090000000000000000000 +-00000009.100000010000000000000000001 +-00000009.100000050000000000000000005 +-00000009.100000090000000000000000009 +-00000009.900000000000000000000000000 +-00000009.900000000000000000000000001 +-00000009.900000000000000000000000005 +-00000009.900000000000000000000000009 +-00000009.900000010000000000000000000 +-00000009.900000050000000000000000000 +-00000009.900000090000000000000000000 +-00000009.900000010000000000000000001 +-00000009.900000050000000000000000005 +-00000009.900000090000000000000000009 +-10000000.000000000000000000000000000 +-10000000.000000000000000000000000001 +-10000000.000000000000000000000000005 +-10000000.000000000000000000000000009 +-10000000.000000000000100000000000000 +-10000000.000000000000500000000000000 +-10000000.000000000000900000000000000 +-10000000.000000000000100000000000001 +-10000000.000000000000500000000000005 +-10000000.000000000000900000000000009 +-10000000.100000000000000000000000000 +-10000000.100000000000000000000000001 +-10000000.100000000000000000000000005 +-10000000.100000000000000000000000009 +-10000000.100000000000100000000000000 +-10000000.100000000000500000000000000 +-10000000.100000000000900000000000000 +-10000000.100000000000100000000000001 +-10000000.500000000000500000000000005 +-10000000.900000000000900000000000009 +-10000001.000000000000000000000000000 +-10000001.000000000000000000000000001 +-10000001.000000000000000000000000005 +-10000001.000000000000000000000000009 +-10000001.000000000000100000000000000 +-10000001.000000000000500000000000000 +-10000001.000000000000900000000000000 +-10000001.000000000000100000000000001 +-10000001.000000000000500000000000005 +-10000001.000000000000900000000000009 +-10000001.100000000000000000000000000 +-10000001.100000000000000000000000001 +-10000001.100000000000000000000000005 +-10000001.100000000000000000000000009 +-10000001.100000000000100000000000000 +-10000001.100000000000500000000000000 +-10000001.100000000000900000000000000 +-10000001.100000000000100000000000001 +-10000001.500000000000500000000000005 +-10000001.900000000000900000000000009 +-10000500.000000000000000000000000000 +-10000500.000000000000000000000000001 +-10000500.000000000000000000000000005 +-10000500.000000000000000000000000009 +-10000500.000000000000100000000000000 +-10000500.000000000000500000000000000 +-10000500.000000000000900000000000000 +-10000500.000000000000100000000000001 +-10000500.000000000000500000000000005 +-10000500.000000000000900000000000009 +-10000500.100000000000000000000000000 +-10000500.100000000000000000000000001 +-10000500.100000000000000000000000005 +-10000500.100000000000000000000000009 +-10000500.100000000000100000000000000 +-10000500.100000000000500000000000000 +-10000500.100000000000900000000000000 +-10000500.100000000000100000000000001 +-10000500.500000000000500000000000005 +-10000500.900000000000900000000000009 +-10000509.000000000000000000000000000 +-10000509.000000000000000000000000001 +-10000509.000000000000000000000000005 +-10000509.000000000000000000000000009 +-10000509.000000000000100000000000000 +-10000509.000000000000500000000000000 +-10000509.000000000000900000000000000 +-10000509.000000000000100000000000001 +-10000509.000000000000500000000000005 +-10000509.000000000000900000000000009 +-10000509.100000000000000000000000000 +-10000509.100000000000000000000000001 +-10000509.100000000000000000000000005 +-10000509.100000000000000000000000009 +-10000509.100000000000100000000000000 +-10000509.100000000000500000000000000 +-10000509.100000000000900000000000000 +-10000509.100000000000100000000000001 +-10000509.500000000000500000000000005 +-10000509.900000000000900000000000009 +-50000000.000000000000000000000000000 +-50000000.000000000000000000000000001 +-50000000.000000000000000000000000005 +-50000000.000000000000000000000000009 +-50000000.000000000000100000000000000 +-50000000.000000000000500000000000000 +-50000000.000000000000900000000000000 +-50000000.000000000000100000000000001 +-50000000.000000000000500000000000005 +-50000000.000000000000900000000000009 +-50000000.100000000000000000000000000 +-50000000.100000000000000000000000001 +-50000000.100000000000000000000000005 +-50000000.100000000000000000000000009 +-50000000.100000000000100000000000000 +-50000000.100000000000500000000000000 +-50000000.100000000000900000000000000 +-50000000.100000000000100000000000001 +-50000000.500000000000500000000000005 +-50000000.900000000000900000000000009 +-90000000.000000000000000000000000000 +-90000000.000000000000000000000000001 +-90000000.000000000000000000000000005 +-90000000.000000000000000000000000009 +-90000000.000000000000100000000000000 +-90000000.000000000000500000000000000 +-90000000.000000000000900000000000000 +-90000000.000000000000100000000000001 +-90000000.000000000000500000000000005 +-90000000.000000000000900000000000009 +-90000000.100000000000000000000000000 +-90000000.100000000000000000000000001 +-90000000.100000000000000000000000005 +-90000000.100000000000000000000000009 +-90000000.100000000000100000000000000 +-90000000.100000000000500000000000000 +-90000000.100000000000900000000000000 +-90000000.100000000000100000000000001 +-90000000.500000000000500000000000005 +-90000000.900000000000900000000000009 +-44444444.444444444444444444444444444 +-49999999.999999999999999999999999999 +-55555555.555555555555555555555555555 +-99999999.999999999999999999999999999 +-00000.000000000000000000000000000000 +-00000.444444444444444444444444444444 +-00000.999999999999999999999999999999 +-00000.000000000000000000000000000001 +-00000.000000000000000000000000000005 +-00000.000000000000000000000000000009 +-00000.000000000010000000000000000000 +-00000.000000000050000000000000000000 +-00000.000000000090000000000000000000 +-00000.000000000010000000000000000001 +-00000.000000000050000000000000000005 +-00000.000000000090000000000000000009 +-00000.100000000000000000000000000000 +-00000.100000000000000000000000000001 +-00000.100000000000000000000000000005 +-00000.100000000000000000000000000009 +-00000.100000000010000000000000000000 +-00000.100000000050000000000000000000 +-00000.100000000090000000000000000000 +-00000.100000000010000000000000000001 +-00000.100000000050000000000000000005 +-00000.100000000090000000000000000009 +-00000.900000000000000000000000000000 +-00000.900000000000000000000000000001 +-00000.900000000000000000000000000005 +-00000.900000000000000000000000000009 +-00000.900000000010000000000000000000 +-00000.900000000050000000000000000000 +-00000.900000000090000000000000000000 +-00000.900000000010000000000000000001 +-00000.900000000050000000000000000005 +-00000.900000000090000000000000000009 +-00001.000000000000000000000000000000 +-00001.000000000000000000000000000001 +-00001.000000000000000000000000000005 +-00001.000000000000000000000000000009 +-00001.000000000010000000000000000000 +-00001.000000000050000000000000000000 +-00001.000000000090000000000000000000 +-00001.000000000010000000000000000001 +-00001.000000000050000000000000000005 +-00001.000000000090000000000000000009 +-00001.100000000000000000000000000000 +-00001.100000000000000000000000000001 +-00001.100000000000000000000000000005 +-00001.100000000000000000000000000009 +-00001.100000000010000000000000000000 +-00001.100000000050000000000000000000 +-00001.100000000090000000000000000000 +-00001.100000000010000000000000000001 +-00001.100000000050000000000000000005 +-00001.100000000090000000000000000009 +-00001.900000000000000000000000000000 +-00001.900000000000000000000000000001 +-00001.900000000000000000000000000005 +-00001.900000000000000000000000000009 +-00001.900000000010000000000000000000 +-00001.900000000050000000000000000000 +-00001.900000000090000000000000000000 +-00001.900000000010000000000000000001 +-00001.900000000050000000000000000005 +-00001.900000000090000000000000000009 +-00009.000000000000000000000000000000 +-00009.000000000000000000000000000001 +-00009.000000000000000000000000000005 +-00009.000000000000000000000000000009 +-00009.000000000010000000000000000000 +-00009.000000000050000000000000000000 +-00009.000000000090000000000000000000 +-00009.000000000010000000000000000001 +-00009.000000000050000000000000000005 +-00009.000000000090000000000000000009 +-00009.100000000000000000000000000000 +-00009.100000000000000000000000000001 +-00009.100000000000000000000000000005 +-00009.100000000000000000000000000009 +-00009.100000000010000000000000000000 +-00009.100000000050000000000000000000 +-00009.100000000090000000000000000000 +-00009.100000000010000000000000000001 +-00009.100000000050000000000000000005 +-00009.100000000090000000000000000009 +-00009.900000000000000000000000000000 +-00009.900000000000000000000000000001 +-00009.900000000000000000000000000005 +-00009.900000000000000000000000000009 +-00009.900000000010000000000000000000 +-00009.900000000050000000000000000000 +-00009.900000000090000000000000000000 +-00009.900000000010000000000000000001 +-00009.900000000050000000000000000005 +-00009.900000000090000000000000000009 +-10000.000000000000000000000000000000 +-10000.000000000000000000000000000001 +-10000.000000000000000000000000000005 +-10000.000000000000000000000000000009 +-10000.000000000000000100000000000000 +-10000.000000000000000500000000000000 +-10000.000000000000000900000000000000 +-10000.000000000000000100000000000001 +-10000.000000000000000500000000000005 +-10000.000000000000000900000000000009 +-10000.100000000000000000000000000000 +-10000.100000000000000000000000000001 +-10000.100000000000000000000000000005 +-10000.100000000000000000000000000009 +-10000.100000000000000100000000000000 +-10000.100000000000000500000000000000 +-10000.100000000000000900000000000000 +-10000.100000000000000100000000000001 +-10000.500000000000000500000000000005 +-10000.900000000000000900000000000009 +-10001.000000000000000000000000000000 +-10001.000000000000000000000000000001 +-10001.000000000000000000000000000005 +-10001.000000000000000000000000000009 +-10001.000000000000000100000000000000 +-10001.000000000000000500000000000000 +-10001.000000000000000900000000000000 +-10001.000000000000000100000000000001 +-10001.000000000000000500000000000005 +-10001.000000000000000900000000000009 +-10001.100000000000000000000000000000 +-10001.100000000000000000000000000001 +-10001.100000000000000000000000000005 +-10001.100000000000000000000000000009 +-10001.100000000000000100000000000000 +-10001.100000000000000500000000000000 +-10001.100000000000000900000000000000 +-10001.100000000000000100000000000001 +-10001.500000000000000500000000000005 +-10001.900000000000000900000000000009 +-10500.000000000000000000000000000000 +-10500.000000000000000000000000000001 +-10500.000000000000000000000000000005 +-10500.000000000000000000000000000009 +-10500.000000000000000100000000000000 +-10500.000000000000000500000000000000 +-10500.000000000000000900000000000000 +-10500.000000000000000100000000000001 +-10500.000000000000000500000000000005 +-10500.000000000000000900000000000009 +-10500.100000000000000000000000000000 +-10500.100000000000000000000000000001 +-10500.100000000000000000000000000005 +-10500.100000000000000000000000000009 +-10500.100000000000000100000000000000 +-10500.100000000000000500000000000000 +-10500.100000000000000900000000000000 +-10500.100000000000000100000000000001 +-10500.500000000000000500000000000005 +-10500.900000000000000900000000000009 +-10509.000000000000000000000000000000 +-10509.000000000000000000000000000001 +-10509.000000000000000000000000000005 +-10509.000000000000000000000000000009 +-10509.000000000000000100000000000000 +-10509.000000000000000500000000000000 +-10509.000000000000000900000000000000 +-10509.000000000000000100000000000001 +-10509.000000000000000500000000000005 +-10509.000000000000000900000000000009 +-10509.100000000000000000000000000000 +-10509.100000000000000000000000000001 +-10509.100000000000000000000000000005 +-10509.100000000000000000000000000009 +-10509.100000000000000100000000000000 +-10509.100000000000000500000000000000 +-10509.100000000000000900000000000000 +-10509.100000000000000100000000000001 +-10509.500000000000000500000000000005 +-10509.900000000000000900000000000009 +-50000.000000000000000000000000000000 +-50000.000000000000000000000000000001 +-50000.000000000000000000000000000005 +-50000.000000000000000000000000000009 +-50000.000000000000000100000000000000 +-50000.000000000000000500000000000000 +-50000.000000000000000900000000000000 +-50000.000000000000000100000000000001 +-50000.000000000000000500000000000005 +-50000.000000000000000900000000000009 +-50000.100000000000000000000000000000 +-50000.100000000000000000000000000001 +-50000.100000000000000000000000000005 +-50000.100000000000000000000000000009 +-50000.100000000000000100000000000000 +-50000.100000000000000500000000000000 +-50000.100000000000000900000000000000 +-50000.100000000000000100000000000001 +-50000.500000000000000500000000000005 +-50000.900000000000000900000000000009 +-90000.000000000000000000000000000000 +-90000.000000000000000000000000000001 +-90000.000000000000000000000000000005 +-90000.000000000000000000000000000009 +-90000.000000000000000100000000000000 +-90000.000000000000000500000000000000 +-90000.000000000000000900000000000000 +-90000.000000000000000100000000000001 +-90000.000000000000000500000000000005 +-90000.000000000000000900000000000009 +-90000.100000000000000000000000000000 +-90000.100000000000000000000000000001 +-90000.100000000000000000000000000005 +-90000.100000000000000000000000000009 +-90000.100000000000000100000000000000 +-90000.100000000000000500000000000000 +-90000.100000000000000900000000000000 +-90000.100000000000000100000000000001 +-90000.500000000000000500000000000005 +-90000.900000000000000900000000000009 +-44444.444444444444444444444444444444 +-49999.999999999999999999999999999999 +-55555.555555555555555555555555555555 +-99999.999999999999999999999999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(38,38).csv b/be/test/data/vec/columns/DECIMALV3(38,38).csv new file mode 100644 index 000000000000000..6b0cc31b6154ac6 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(38,38).csv @@ -0,0 +1,203 @@ +0 +0.0 +00.0 +00.00 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +0.00000000000000000000000000000000000000 +0.00000000000000000000000000000000000001 +0.00000000000000000000000000000000000005 +0.00000000000000000000000000000000000009 +0.00000000000000000010000000000000000000 +0.00000000000000000050000000000000000000 +0.00000000000000000090000000000000000000 +0.00000000000000000010000000000000000001 +0.00000000000000000050000000000000000005 +0.00000000000000000090000000000000000009 +0.10000000000000000000000000000000000000 +0.10000000000000000000000000000000000001 +0.10000000000000000000000000000000000005 +0.10000000000000000000000000000000000009 +0.10000000000000000000000100000000000000 +0.10000000000000000000000500000000000000 +0.10000000000000000000000900000000000000 +0.10000000000000000000000100000000000001 +0.10000000000000000000000500000000000005 +0.10000000000000000000000900000000000009 +0.50000000000000000000000000000000000000 +0.50000000000000000000000000000000000001 +0.50000000000000000000000000000000000005 +0.50000000000000000000000000000000000009 +0.50000000000000000000000100000000000000 +0.50000000000000000000000500000000000000 +0.50000000000000000000000900000000000000 +0.50000000000000000000000100000000000001 +0.50000000000000000000000500000000000005 +0.50000000000000000000000900000000000009 +0.90000000000000000000000000000000000000 +0.90000000000000000000000000000000000001 +0.90000000000000000000000000000000000005 +0.90000000000000000000000000000000000009 +0.90000000000000000000000100000000000000 +0.90000000000000000000000500000000000000 +0.90000000000000000000000900000000000000 +0.90000000000000000000000100000000000001 +0.90000000000000000000000500000000000005 +0.90000000000000000000000900000000000009 +0.44444444444444444444444444444444444444 +0.49999999999999999999999999999999999999 +0.55555555555555555555555555555555555555 +0.99999999999999999999999999999999999999 +0.0000000000000000000000000000000000 +0.0000000000000000000000000000000001 +0.0000000000000000000000000000000005 +0.0000000000000000000000000000000009 +0.0000000000000010000000000000000000 +0.0000000000000050000000000000000000 +0.0000000000000090000000000000000000 +0.0000000000000010000000000000000001 +0.0000000000000050000000000000000005 +0.0000000000000090000000000000000009 +0.1000000000000000000000000000000000 +0.1000000000000000000000000000000001 +0.1000000000000000000000000000000005 +0.1000000000000000000000000000000009 +0.1000000000000000000100000000000000 +0.1000000000000000000500000000000000 +0.1000000000000000000900000000000000 +0.1000000000000000000100000000000001 +0.1000000000000000000500000000000005 +0.1000000000000000000900000000000009 +0.5000000000000000000000000000000000 +0.5000000000000000000000000000000001 +0.5000000000000000000000000000000005 +0.5000000000000000000000000000000009 +0.5000000000000000000100000000000000 +0.5000000000000000000500000000000000 +0.5000000000000000000900000000000000 +0.5000000000000000000100000000000001 +0.5000000000000000000500000000000005 +0.5000000000000000000900000000000009 +0.9000000000000000000000000000000000 +0.9000000000000000000000000000000001 +0.9000000000000000000000000000000005 +0.9000000000000000000000000000000009 +0.9000000000000000000100000000000000 +0.9000000000000000000500000000000000 +0.9000000000000000000900000000000000 +0.9000000000000000000100000000000001 +0.9000000000000000000500000000000005 +0.9000000000000000000900000000000009 +0.4444444444444444444444444444444444 +0.4999999999999999999999999999999999 +0.5555555555555555555555555555555555 +0.9999999999999999999999999999999999 +-0 +-0.0 +-00.0 +-00.00 +-0.1 +-0.2 +-0.3 +-0.4 +-0.5 +-0.6 +-0.7 +-0.8 +-0.9 +-0.00000000000000000000000000000000000000 +-0.00000000000000000000000000000000000001 +-0.00000000000000000000000000000000000005 +-0.00000000000000000000000000000000000009 +-0.00000000000000000010000000000000000000 +-0.00000000000000000050000000000000000000 +-0.00000000000000000090000000000000000000 +-0.00000000000000000010000000000000000001 +-0.00000000000000000050000000000000000005 +-0.00000000000000000090000000000000000009 +-0.10000000000000000000000000000000000000 +-0.10000000000000000000000000000000000001 +-0.10000000000000000000000000000000000005 +-0.10000000000000000000000000000000000009 +-0.10000000000000000000000100000000000000 +-0.10000000000000000000000500000000000000 +-0.10000000000000000000000900000000000000 +-0.10000000000000000000000100000000000001 +-0.10000000000000000000000500000000000005 +-0.10000000000000000000000900000000000009 +-0.50000000000000000000000000000000000000 +-0.50000000000000000000000000000000000001 +-0.50000000000000000000000000000000000005 +-0.50000000000000000000000000000000000009 +-0.50000000000000000000000100000000000000 +-0.50000000000000000000000500000000000000 +-0.50000000000000000000000900000000000000 +-0.50000000000000000000000100000000000001 +-0.50000000000000000000000500000000000005 +-0.50000000000000000000000900000000000009 +-0.90000000000000000000000000000000000000 +-0.90000000000000000000000000000000000001 +-0.90000000000000000000000000000000000005 +-0.90000000000000000000000000000000000009 +-0.90000000000000000000000100000000000000 +-0.90000000000000000000000500000000000000 +-0.90000000000000000000000900000000000000 +-0.90000000000000000000000100000000000001 +-0.90000000000000000000000500000000000005 +-0.90000000000000000000000900000000000009 +-0.44444444444444444444444444444444444444 +-0.49999999999999999999999999999999999999 +-0.55555555555555555555555555555555555555 +-0.99999999999999999999999999999999999999 +-0.0000000000000000000000000000000000 +-0.0000000000000000000000000000000001 +-0.0000000000000000000000000000000005 +-0.0000000000000000000000000000000009 +-0.0000000000000010000000000000000000 +-0.0000000000000050000000000000000000 +-0.0000000000000090000000000000000000 +-0.0000000000000010000000000000000001 +-0.0000000000000050000000000000000005 +-0.0000000000000090000000000000000009 +-0.1000000000000000000000000000000000 +-0.1000000000000000000000000000000001 +-0.1000000000000000000000000000000005 +-0.1000000000000000000000000000000009 +-0.1000000000000000000100000000000000 +-0.1000000000000000000500000000000000 +-0.1000000000000000000900000000000000 +-0.1000000000000000000100000000000001 +-0.1000000000000000000500000000000005 +-0.1000000000000000000900000000000009 +-0.5000000000000000000000000000000000 +-0.5000000000000000000000000000000001 +-0.5000000000000000000000000000000005 +-0.5000000000000000000000000000000009 +-0.5000000000000000000100000000000000 +-0.5000000000000000000500000000000000 +-0.5000000000000000000900000000000000 +-0.5000000000000000000100000000000001 +-0.5000000000000000000500000000000005 +-0.5000000000000000000900000000000009 +-0.9000000000000000000000000000000000 +-0.9000000000000000000000000000000001 +-0.9000000000000000000000000000000005 +-0.9000000000000000000000000000000009 +-0.9000000000000000000100000000000000 +-0.9000000000000000000500000000000000 +-0.9000000000000000000900000000000000 +-0.9000000000000000000100000000000001 +-0.9000000000000000000500000000000005 +-0.9000000000000000000900000000000009 +-0.4444444444444444444444444444444444 +-0.4999999999999999999999999999999999 +-0.5555555555555555555555555555555555 +-0.9999999999999999999999999999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(76,0).csv b/be/test/data/vec/columns/DECIMALV3(76,0).csv new file mode 100644 index 000000000000000..e1f48b6f2f32162 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(76,0).csv @@ -0,0 +1,137 @@ +0 +0.0 +00.0 +00.00 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1.0 +2.0 +3.0 +4.0 +5.0 +6.0 +7.0 +8.0 +9.0 +0000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000000005 +0000000000000000000000000000000000000000000000000000000000000000000000000009 +0000000000000000000000000000000000000000000000000000010000000000000000000000 +0000000000000000000000000000000000000000000000000000050000000000000000000000 +0000000000000000000000000000000000000000000000000000090000000000000000000000 +0000000000000000000000000000000000000000000000000000010000000000000000000001 +0000000000000000000000000000000000000000000000000000050000000000000000000005 +0000000000000000000000000000000000000000000000000000090000000000000000000009 +1000000000000000000000000000000000000000000000000000000000000000000000000000 +5000000000000000000000000000000000000000000000000000000000000000000000000000 +9000000000000000000000000000000000000000000000000000000000000000000000000000 +1000000000000000000000000000000000000000000000000000000000000000000000000001 +5000000000000000000000000000000000000000000000000000000000000000000000000005 +9000000000000000000000000000000000000000000000000000000000000000000000000009 +1000000000000000000000000000000000000000000000000000000000000000000100000001 +5000000000000000000000000000000000000000000000000000000000000000000500000005 +9000000000000000000000000000000000000000000000000000000000000000000900000009 +4444444444444444444444444444444444444444444444444444444444444444444444444444 +4999999999999999999999999999999999999999999999999999999999999999999999999999 +5555555555555555555555555555555555555555555555555555555555555555555555555555 +9999999999999999999999999999999999999999999999999999999999999999999999999999 +0000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000001 +0000000000000000000000000000000000000000000000000000000000000000000000005 +0000000000000000000000000000000000000000000000000000000000000000000000009 +0000000000000000000000000000000000000000000000000010000000000000000000000 +0000000000000000000000000000000000000000000000000050000000000000000000000 +0000000000000000000000000000000000000000000000000090000000000000000000000 +0000000000000000000000000000000000000000000000000010000000000000000000001 +0000000000000000000000000000000000000000000000000050000000000000000000005 +0000000000000000000000000000000000000000000000000090000000000000000000009 +1000000000000000000000000000000000000000000000000000000000000000000000000 +5000000000000000000000000000000000000000000000000000000000000000000000000 +9000000000000000000000000000000000000000000000000000000000000000000000000 +1000000000000000000000000000000000000000000000000000000000000000000000001 +5000000000000000000000000000000000000000000000000000000000000000000000005 +9000000000000000000000000000000000000000000000000000000000000000000000009 +1000000000000000000000000000000000000000000000000000000000000000100000001 +5000000000000000000000000000000000000000000000000000000000000000500000005 +9000000000000000000000000000000000000000000000000000000000000000900000009 +4444444444444444444444444444444444444444444444444444444444444444444444444 +4999999999999999999999999999999999999999999999999999999999999999999999999 +5555555555555555555555555555555555555555555555555555555555555555555555555 +9999999999999999999999999999999999999999999999999999999999999999999999999 +-0 +-0.0 +-00.0 +-00.00 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +-1.0 +-2.0 +-3.0 +-4.0 +-5.0 +-6.0 +-7.0 +-8.0 +-9.0 +-0000000000000000000000000000000000000000000000000000000000000000000000000000 +-0000000000000000000000000000000000000000000000000000000000000000000000000001 +-0000000000000000000000000000000000000000000000000000000000000000000000000005 +-0000000000000000000000000000000000000000000000000000000000000000000000000009 +-0000000000000000000000000000000000000000000000000000010000000000000000000000 +-0000000000000000000000000000000000000000000000000000050000000000000000000000 +-0000000000000000000000000000000000000000000000000000090000000000000000000000 +-0000000000000000000000000000000000000000000000000000010000000000000000000001 +-0000000000000000000000000000000000000000000000000000050000000000000000000005 +-0000000000000000000000000000000000000000000000000000090000000000000000000009 +-1000000000000000000000000000000000000000000000000000000000000000000000000000 +-5000000000000000000000000000000000000000000000000000000000000000000000000000 +-9000000000000000000000000000000000000000000000000000000000000000000000000000 +-1000000000000000000000000000000000000000000000000000000000000000000000000001 +-5000000000000000000000000000000000000000000000000000000000000000000000000005 +-9000000000000000000000000000000000000000000000000000000000000000000000000009 +-1000000000000000000000000000000000000000000000000000000000000000000100000001 +-5000000000000000000000000000000000000000000000000000000000000000000500000005 +-9000000000000000000000000000000000000000000000000000000000000000000900000009 +-4444444444444444444444444444444444444444444444444444444444444444444444444444 +-4999999999999999999999999999999999999999999999999999999999999999999999999999 +-5555555555555555555555555555555555555555555555555555555555555555555555555555 +-9999999999999999999999999999999999999999999999999999999999999999999999999999 +-0000000000000000000000000000000000000000000000000000000000000000000000000 +-0000000000000000000000000000000000000000000000000000000000000000000000001 +-0000000000000000000000000000000000000000000000000000000000000000000000005 +-0000000000000000000000000000000000000000000000000000000000000000000000009 +-0000000000000000000000000000000000000000000000000010000000000000000000000 +-0000000000000000000000000000000000000000000000000050000000000000000000000 +-0000000000000000000000000000000000000000000000000090000000000000000000000 +-0000000000000000000000000000000000000000000000000010000000000000000000001 +-0000000000000000000000000000000000000000000000000050000000000000000000005 +-0000000000000000000000000000000000000000000000000090000000000000000000009 +-1000000000000000000000000000000000000000000000000000000000000000000000000 +-5000000000000000000000000000000000000000000000000000000000000000000000000 +-9000000000000000000000000000000000000000000000000000000000000000000000000 +-1000000000000000000000000000000000000000000000000000000000000000000000001 +-5000000000000000000000000000000000000000000000000000000000000000000000005 +-9000000000000000000000000000000000000000000000000000000000000000000000009 +-1000000000000000000000000000000000000000000000000000000000000000100000001 +-5000000000000000000000000000000000000000000000000000000000000000500000005 +-9000000000000000000000000000000000000000000000000000000000000000900000009 +-4444444444444444444444444444444444444444444444444444444444444444444444444 +-4999999999999999999999999999999999999999999999999999999999999999999999999 +-5555555555555555555555555555555555555555555555555555555555555555555555555 +-9999999999999999999999999999999999999999999999999999999999999999999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(76,38).csv b/be/test/data/vec/columns/DECIMALV3(76,38).csv new file mode 100644 index 000000000000000..2392c64978351fb --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(76,38).csv @@ -0,0 +1,544 @@ +0 +0.0 +00.0 +00.00 +1 +2 +3 +4 +5 +6 +7 +8 +9 +1.0 +2.0 +3.0 +4.0 +5.0 +6.0 +7.0 +8.0 +9.0 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.9 +00000000000000000000000000000000000000.00000000000000000000000000000000000000 +00000000000000000000000000000000000000.00000000000000000000000000000000000001 +00000000000000000000000000000000000000.00000000000000000000000000000000000005 +00000000000000000000000000000000000000.00000000000000000000000000000000000009 +00000000000000000000000000000000000000.00000000000000010000000000000000000000 +00000000000000000000000000000000000000.00000000000000050000000000000000000000 +00000000000000000000000000000000000000.00000000000000090000000000000000000000 +00000000000000000000000000000000000000.00000000000000010000000000000000000001 +00000000000000000000000000000000000000.00000000000000050000000000000000000005 +00000000000000000000000000000000000000.00000000000000090000000000000000000009 +00000000000000000000000000000000000000.10000000000000000000000000000000000000 +00000000000000000000000000000000000000.10000000000000000000000000000000000001 +00000000000000000000000000000000000000.10000000000000010000000000000000000001 +00000000000000000000000000000000000000.50000000000000050000000000000000000005 +00000000000000000000000000000000000000.90000000000000090000000000000000000009 +00000000000000000000000000000000000001.00000000000000000000000000000000000000 +00000000000000000000000000000000000001.00000000000000000000000000000000000001 +00000000000000000000000000000000000001.00000000000000000000000000000000000005 +00000000000000000000000000000000000001.00000000000000000000000000000000000009 +00000000000000000000000000000000000001.00000000000000010000000000000000000000 +00000000000000000000000000000000000001.00000000000000050000000000000000000000 +00000000000000000000000000000000000001.00000000000000090000000000000000000000 +00000000000000000000000000000000000001.00000000000000010000000000000000000001 +00000000000000000000000000000000000001.00000000000000050000000000000000000005 +00000000000000000000000000000000000001.00000000000000090000000000000000000009 +00000000000000000000000000000000000001.10000000000000010000000000000000000001 +00000000000000000000000000000000000001.50000000000000050000000000000000000005 +00000000000000000000000000000000000001.90000000000000090000000000000000000009 +00000000000000000000000000000000010001.00000000000000000000000000000000000000 +00000000000000000000000000000000010001.00000000000000000000000000000000000001 +00000000000000000000000000000000010001.00000000000000000000000000000000000005 +00000000000000000000000000000000010001.00000000000000000000000000000000000009 +00000000000000000000000000000000010001.00000000000000010000000000000000000000 +00000000000000000000000000000000010001.00000000000000050000000000000000000000 +00000000000000000000000000000000010001.00000000000000090000000000000000000000 +00000000000000000000000000000000010001.00000000000000010000000000000000000001 +00000000000000000000000000000000010001.00000000000000050000000000000000000005 +00000000000000000000000000000000010001.00000000000000090000000000000000000009 +00000000000000000000000000000000010001.10000000000000010000000000000000000001 +00000000000000000000000000000000010001.50000000000000050000000000000000000005 +00000000000000000000000000000000010001.90000000000000090000000000000000000009 +10000000000000000000000000000000000000.00000000000000000000000000000000000000 +50000000000000000000000000000000000000.00000000000000000000000000000000000000 +90000000000000000000000000000000000000.00000000000000000000000000000000000000 +10000000000000000000000000000000000000.00000000000000000000000000000000000001 +50000000000000000000000000000000000000.00000000000000000000000000000000000005 +90000000000000000000000000000000000000.00000000000000000000000000000000000009 +10000000000000000000000000000000000000.00000000000000000000000000000100000001 +50000000000000000000000000000000000000.00000000000000000000000000000500000005 +90000000000000000000000000000000000000.00000000000000000000000000000900000009 +10000000000000000000000000000000000000.10000000000000000000000000000100000001 +50000000000000000000000000000000000000.50000000000000000000000000000500000005 +90000000000000000000000000000000000000.90000000000000000000000000000900000009 +10000000000000000000000000000000000001.00000000000000000000000000000000000000 +50000000000000000000000000000000000001.00000000000000000000000000000000000000 +90000000000000000000000000000000000001.00000000000000000000000000000000000000 +10000000000000000000000000000000000001.00000000000000000000000000000000000001 +50000000000000000000000000000000000001.00000000000000000000000000000000000005 +90000000000000000000000000000000000001.00000000000000000000000000000000000009 +10000000000000000000000000000000000001.00000000000000000000000000000100000001 +50000000000000000000000000000000000001.00000000000000000000000000000500000005 +90000000000000000000000000000000000001.00000000000000000000000000000900000009 +10000000000000000000000000000000000001.10000000000000000000000000000100000001 +50000000000000000000000000000000000001.50000000000000000000000000000500000005 +90000000000000000000000000000000000001.90000000000000000000000000000900000009 +10000000000000000000000000000000010001.00000000000000000000000000000000000000 +50000000000000000000000000000000010001.00000000000000000000000000000000000000 +90000000000000000000000000000000010001.00000000000000000000000000000000000000 +10000000000000000000000000000000010001.00000000000000000000000000000000000001 +50000000000000000000000000000000010001.00000000000000000000000000000000000005 +90000000000000000000000000000000010001.00000000000000000000000000000000000009 +10000000000000000000000000000000010001.00000000000000000000000000000100000001 +50000000000000000000000000000000010001.00000000000000000000000000000500000005 +90000000000000000000000000000000010001.00000000000000000000000000000900000009 +10000000000000000000000000000000010001.10000000000000000000000000000100000001 +50000000000000000000000000000000010001.50000000000000000000000000000500000005 +90000000000000000000000000000000010001.90000000000000000000000000000900000009 +44444444444444444444444444444444444444.44444444444444444444444444444444444444 +49999999999999999999999999999999999999.99999999999999999999999999999999999999 +55555555555555555555555555555555555555.55555555555555555555555555555555555555 +00000000000000000000000000000000000000.00000000000000000000000000000000000 +00000000000000000000000000000000000000.00000000000000000000000000000000001 +00000000000000000000000000000000000000.00000000000000000000000000000000005 +00000000000000000000000000000000000000.00000000000000000000000000000000009 +00000000000000000000000000000000000000.00000000000010000000000000000000000 +00000000000000000000000000000000000000.00000000000050000000000000000000000 +00000000000000000000000000000000000000.00000000000090000000000000000000000 +00000000000000000000000000000000000000.00000000000010000000000000000000001 +00000000000000000000000000000000000000.00000000000050000000000000000000005 +00000000000000000000000000000000000000.00000000000090000000000000000000009 +00000000000000000000000000000000000000.10000000000000000000000000000000000 +00000000000000000000000000000000000000.10000000000000000000000000000000001 +00000000000000000000000000000000000000.10000000000010000000000000000000001 +00000000000000000000000000000000000000.50000000000050000000000000000000005 +00000000000000000000000000000000000000.90000000000090000000000000000000009 +00000000000000000000000000000000000001.00000000000000000000000000000000000 +00000000000000000000000000000000000001.00000000000000000000000000000000001 +00000000000000000000000000000000000001.00000000000000000000000000000000005 +00000000000000000000000000000000000001.00000000000000000000000000000000009 +00000000000000000000000000000000000001.00000000000010000000000000000000000 +00000000000000000000000000000000000001.00000000000050000000000000000000000 +00000000000000000000000000000000000001.00000000000090000000000000000000000 +00000000000000000000000000000000000001.00000000000010000000000000000000001 +00000000000000000000000000000000000001.00000000000050000000000000000000005 +00000000000000000000000000000000000001.00000000000090000000000000000000009 +00000000000000000000000000000000000001.10000000000010000000000000000000001 +00000000000000000000000000000000000001.50000000000050000000000000000000005 +00000000000000000000000000000000000001.90000000000090000000000000000000009 +00000000000000000000000000000000010001.00000000000000000000000000000000000 +00000000000000000000000000000000010001.00000000000000000000000000000000001 +00000000000000000000000000000000010001.00000000000000000000000000000000005 +00000000000000000000000000000000010001.00000000000000000000000000000000009 +00000000000000000000000000000000010001.00000000000010000000000000000000000 +00000000000000000000000000000000010001.00000000000050000000000000000000000 +00000000000000000000000000000000010001.00000000000090000000000000000000000 +00000000000000000000000000000000010001.00000000000010000000000000000000001 +00000000000000000000000000000000010001.00000000000050000000000000000000005 +00000000000000000000000000000000010001.00000000000090000000000000000000009 +00000000000000000000000000000000010001.10000000000010000000000000000000001 +00000000000000000000000000000000010001.50000000000050000000000000000000005 +00000000000000000000000000000000010001.90000000000090000000000000000000009 +10000000000000000000000000000000000000.00000000000000000000000000000000000 +50000000000000000000000000000000000000.00000000000000000000000000000000000 +90000000000000000000000000000000000000.00000000000000000000000000000000000 +10000000000000000000000000000000000000.00000000000000000000000000000000001 +50000000000000000000000000000000000000.00000000000000000000000000000000005 +90000000000000000000000000000000000000.00000000000000000000000000000000009 +10000000000000000000000000000000000000.00000000000000000000000000100000001 +50000000000000000000000000000000000000.00000000000000000000000000500000005 +90000000000000000000000000000000000000.00000000000000000000000000900000009 +10000000000000000000000000000000000000.10000000000000000000000000100000001 +50000000000000000000000000000000000000.50000000000000000000000000500000005 +90000000000000000000000000000000000000.90000000000000000000000000900000009 +10000000000000000000000000000000000001.00000000000000000000000000000000000 +50000000000000000000000000000000000001.00000000000000000000000000000000000 +90000000000000000000000000000000000001.00000000000000000000000000000000000 +10000000000000000000000000000000000001.00000000000000000000000000000000001 +50000000000000000000000000000000000001.00000000000000000000000000000000005 +90000000000000000000000000000000000001.00000000000000000000000000000000009 +10000000000000000000000000000000000001.00000000000000000000000000100000001 +50000000000000000000000000000000000001.00000000000000000000000000500000005 +90000000000000000000000000000000000001.00000000000000000000000000900000009 +10000000000000000000000000000000000001.10000000000000000000000000100000001 +50000000000000000000000000000000000001.50000000000000000000000000500000005 +90000000000000000000000000000000000001.90000000000000000000000000900000009 +10000000000000000000000000000000010001.00000000000000000000000000000000000 +50000000000000000000000000000000010001.00000000000000000000000000000000000 +90000000000000000000000000000000010001.00000000000000000000000000000000000 +10000000000000000000000000000000010001.00000000000000000000000000000000001 +50000000000000000000000000000000010001.00000000000000000000000000000000005 +90000000000000000000000000000000010001.00000000000000000000000000000000009 +10000000000000000000000000000000010001.00000000000000000000000000100000001 +50000000000000000000000000000000010001.00000000000000000000000000500000005 +90000000000000000000000000000000010001.00000000000000000000000000900000009 +10000000000000000000000000000000010001.10000000000000000000000000100000001 +50000000000000000000000000000000010001.50000000000000000000000000500000005 +90000000000000000000000000000000010001.90000000000000000000000000900000009 +44444444444444444444444444444444444444.44444444444444444444444444444444444 +49999999999999999999999999999999999999.99999999999999999999999999999999999 +55555555555555555555555555555555555555.55555555555555555555555555555555555 +99999999999999999999999999999999999999.99999999999999999999999999999999999 +99999999999999999999999999999999999999.99999999999999999999999999999999999 +00000000000000000000000000000000000.00000000000000000000000000000000000000 +00000000000000000000000000000000000.00000000000000000000000000000000000001 +00000000000000000000000000000000000.00000000000000000000000000000000000005 +00000000000000000000000000000000000.00000000000000000000000000000000000009 +00000000000000000000000000000000000.00000000000000010000000000000000000000 +00000000000000000000000000000000000.00000000000000050000000000000000000000 +00000000000000000000000000000000000.00000000000000090000000000000000000000 +00000000000000000000000000000000000.00000000000000010000000000000000000001 +00000000000000000000000000000000000.00000000000000050000000000000000000005 +00000000000000000000000000000000000.00000000000000090000000000000000000009 +00000000000000000000000000000000000.10000000000000000000000000000000000000 +00000000000000000000000000000000000.10000000000000000000000000000000000001 +00000000000000000000000000000000000.10000000000000010000000000000000000001 +00000000000000000000000000000000000.50000000000000050000000000000000000005 +00000000000000000000000000000000000.90000000000000090000000000000000000009 +00000000000000000000000000000000001.00000000000000000000000000000000000000 +00000000000000000000000000000000001.00000000000000000000000000000000000001 +00000000000000000000000000000000001.00000000000000000000000000000000000005 +00000000000000000000000000000000001.00000000000000000000000000000000000009 +00000000000000000000000000000000001.00000000000000010000000000000000000000 +00000000000000000000000000000000001.00000000000000050000000000000000000000 +00000000000000000000000000000000001.00000000000000090000000000000000000000 +00000000000000000000000000000000001.00000000000000010000000000000000000001 +00000000000000000000000000000000001.00000000000000050000000000000000000005 +00000000000000000000000000000000001.00000000000000090000000000000000000009 +00000000000000000000000000000000001.10000000000000010000000000000000000001 +00000000000000000000000000000000001.50000000000000050000000000000000000005 +00000000000000000000000000000000001.90000000000000090000000000000000000009 +00000000000000000000000000000010001.00000000000000000000000000000000000000 +00000000000000000000000000000010001.00000000000000000000000000000000000001 +00000000000000000000000000000010001.00000000000000000000000000000000000005 +00000000000000000000000000000010001.00000000000000000000000000000000000009 +00000000000000000000000000000010001.00000000000000010000000000000000000000 +00000000000000000000000000000010001.00000000000000050000000000000000000000 +00000000000000000000000000000010001.00000000000000090000000000000000000000 +00000000000000000000000000000010001.00000000000000010000000000000000000001 +00000000000000000000000000000010001.00000000000000050000000000000000000005 +00000000000000000000000000000010001.00000000000000090000000000000000000009 +00000000000000000000000000000010001.10000000000000010000000000000000000001 +00000000000000000000000000000010001.50000000000000050000000000000000000005 +00000000000000000000000000000010001.90000000000000090000000000000000000009 +10000000000000000000000000000000000.00000000000000000000000000000000000000 +50000000000000000000000000000000000.00000000000000000000000000000000000000 +90000000000000000000000000000000000.00000000000000000000000000000000000000 +10000000000000000000000000000000000.00000000000000000000000000000000000001 +50000000000000000000000000000000000.00000000000000000000000000000000000005 +90000000000000000000000000000000000.00000000000000000000000000000000000009 +10000000000000000000000000000000000.00000000000000000000000000000100000001 +50000000000000000000000000000000000.00000000000000000000000000000500000005 +90000000000000000000000000000000000.00000000000000000000000000000900000009 +10000000000000000000000000000000000.10000000000000000000000000000100000001 +50000000000000000000000000000000000.50000000000000000000000000000500000005 +90000000000000000000000000000000000.90000000000000000000000000000900000009 +10000000000000000000000000000000001.00000000000000000000000000000000000000 +50000000000000000000000000000000001.00000000000000000000000000000000000000 +90000000000000000000000000000000001.00000000000000000000000000000000000000 +10000000000000000000000000000000001.00000000000000000000000000000000000001 +50000000000000000000000000000000001.00000000000000000000000000000000000005 +90000000000000000000000000000000001.00000000000000000000000000000000000009 +10000000000000000000000000000000001.00000000000000000000000000000100000001 +50000000000000000000000000000000001.00000000000000000000000000000500000005 +90000000000000000000000000000000001.00000000000000000000000000000900000009 +10000000000000000000000000000000001.10000000000000000000000000000100000001 +50000000000000000000000000000000001.50000000000000000000000000000500000005 +90000000000000000000000000000000001.90000000000000000000000000000900000009 +10000000000000000000000000000010001.00000000000000000000000000000000000000 +50000000000000000000000000000010001.00000000000000000000000000000000000000 +90000000000000000000000000000010001.00000000000000000000000000000000000000 +10000000000000000000000000000010001.00000000000000000000000000000000000001 +50000000000000000000000000000010001.00000000000000000000000000000000000005 +90000000000000000000000000000010001.00000000000000000000000000000000000009 +10000000000000000000000000000010001.00000000000000000000000000000100000001 +50000000000000000000000000000010001.00000000000000000000000000000500000005 +90000000000000000000000000000010001.00000000000000000000000000000900000009 +10000000000000000000000000000010001.10000000000000000000000000000100000001 +50000000000000000000000000000010001.50000000000000000000000000000500000005 +90000000000000000000000000000010001.90000000000000000000000000000900000009 +44444444444444444444444444444444444.44444444444444444444444444444444444444 +49999999999999999999999999999999999.99999999999999999999999999999999999999 +55555555555555555555555555555555555.55555555555555555555555555555555555555 +-0 +-0.0 +-00.0 +-00.00 +-1 +-2 +-3 +-4 +-5 +-6 +-7 +-8 +-9 +-1.0 +-2.0 +-3.0 +-4.0 +-5.0 +-6.0 +-7.0 +-8.0 +-9.0 +-0.1 +-0.2 +-0.3 +-0.4 +-0.5 +-0.6 +-0.7 +-0.9 +-00000000000000000000000000000000000000.00000000000000000000000000000000000000 +-00000000000000000000000000000000000000.00000000000000000000000000000000000001 +-00000000000000000000000000000000000000.00000000000000000000000000000000000005 +-00000000000000000000000000000000000000.00000000000000000000000000000000000009 +-00000000000000000000000000000000000000.00000000000000010000000000000000000000 +-00000000000000000000000000000000000000.00000000000000050000000000000000000000 +-00000000000000000000000000000000000000.00000000000000090000000000000000000000 +-00000000000000000000000000000000000000.00000000000000010000000000000000000001 +-00000000000000000000000000000000000000.00000000000000050000000000000000000005 +-00000000000000000000000000000000000000.00000000000000090000000000000000000009 +-00000000000000000000000000000000000000.10000000000000000000000000000000000000 +-00000000000000000000000000000000000000.10000000000000000000000000000000000001 +-00000000000000000000000000000000000000.10000000000000010000000000000000000001 +-00000000000000000000000000000000000000.50000000000000050000000000000000000005 +-00000000000000000000000000000000000000.90000000000000090000000000000000000009 +-00000000000000000000000000000000000001.00000000000000000000000000000000000000 +-00000000000000000000000000000000000001.00000000000000000000000000000000000001 +-00000000000000000000000000000000000001.00000000000000000000000000000000000005 +-00000000000000000000000000000000000001.00000000000000000000000000000000000009 +-00000000000000000000000000000000000001.00000000000000010000000000000000000000 +-00000000000000000000000000000000000001.00000000000000050000000000000000000000 +-00000000000000000000000000000000000001.00000000000000090000000000000000000000 +-00000000000000000000000000000000000001.00000000000000010000000000000000000001 +-00000000000000000000000000000000000001.00000000000000050000000000000000000005 +-00000000000000000000000000000000000001.00000000000000090000000000000000000009 +-00000000000000000000000000000000000001.10000000000000010000000000000000000001 +-00000000000000000000000000000000000001.50000000000000050000000000000000000005 +-00000000000000000000000000000000000001.90000000000000090000000000000000000009 +-00000000000000000000000000000000010001.00000000000000000000000000000000000000 +-00000000000000000000000000000000010001.00000000000000000000000000000000000001 +-00000000000000000000000000000000010001.00000000000000000000000000000000000005 +-00000000000000000000000000000000010001.00000000000000000000000000000000000009 +-00000000000000000000000000000000010001.00000000000000010000000000000000000000 +-00000000000000000000000000000000010001.00000000000000050000000000000000000000 +-00000000000000000000000000000000010001.00000000000000090000000000000000000000 +-00000000000000000000000000000000010001.00000000000000010000000000000000000001 +-00000000000000000000000000000000010001.00000000000000050000000000000000000005 +-00000000000000000000000000000000010001.00000000000000090000000000000000000009 +-00000000000000000000000000000000010001.10000000000000010000000000000000000001 +-00000000000000000000000000000000010001.50000000000000050000000000000000000005 +-00000000000000000000000000000000010001.90000000000000090000000000000000000009 +-10000000000000000000000000000000000000.00000000000000000000000000000000000000 +-50000000000000000000000000000000000000.00000000000000000000000000000000000000 +-90000000000000000000000000000000000000.00000000000000000000000000000000000000 +-10000000000000000000000000000000000000.00000000000000000000000000000000000001 +-50000000000000000000000000000000000000.00000000000000000000000000000000000005 +-90000000000000000000000000000000000000.00000000000000000000000000000000000009 +-10000000000000000000000000000000000000.00000000000000000000000000000100000001 +-50000000000000000000000000000000000000.00000000000000000000000000000500000005 +-90000000000000000000000000000000000000.00000000000000000000000000000900000009 +-10000000000000000000000000000000000000.10000000000000000000000000000100000001 +-50000000000000000000000000000000000000.50000000000000000000000000000500000005 +-90000000000000000000000000000000000000.90000000000000000000000000000900000009 +-10000000000000000000000000000000000001.00000000000000000000000000000000000000 +-50000000000000000000000000000000000001.00000000000000000000000000000000000000 +-90000000000000000000000000000000000001.00000000000000000000000000000000000000 +-10000000000000000000000000000000000001.00000000000000000000000000000000000001 +-50000000000000000000000000000000000001.00000000000000000000000000000000000005 +-90000000000000000000000000000000000001.00000000000000000000000000000000000009 +-10000000000000000000000000000000000001.00000000000000000000000000000100000001 +-50000000000000000000000000000000000001.00000000000000000000000000000500000005 +-90000000000000000000000000000000000001.00000000000000000000000000000900000009 +-10000000000000000000000000000000000001.10000000000000000000000000000100000001 +-50000000000000000000000000000000000001.50000000000000000000000000000500000005 +-90000000000000000000000000000000000001.90000000000000000000000000000900000009 +-10000000000000000000000000000000010001.00000000000000000000000000000000000000 +-50000000000000000000000000000000010001.00000000000000000000000000000000000000 +-90000000000000000000000000000000010001.00000000000000000000000000000000000000 +-10000000000000000000000000000000010001.00000000000000000000000000000000000001 +-50000000000000000000000000000000010001.00000000000000000000000000000000000005 +-90000000000000000000000000000000010001.00000000000000000000000000000000000009 +-10000000000000000000000000000000010001.00000000000000000000000000000100000001 +-50000000000000000000000000000000010001.00000000000000000000000000000500000005 +-90000000000000000000000000000000010001.00000000000000000000000000000900000009 +-10000000000000000000000000000000010001.10000000000000000000000000000100000001 +-50000000000000000000000000000000010001.50000000000000000000000000000500000005 +-90000000000000000000000000000000010001.90000000000000000000000000000900000009 +-44444444444444444444444444444444444444.44444444444444444444444444444444444444 +-49999999999999999999999999999999999999.99999999999999999999999999999999999999 +-55555555555555555555555555555555555555.55555555555555555555555555555555555555 +-00000000000000000000000000000000000000.00000000000000000000000000000000000 +-00000000000000000000000000000000000000.00000000000000000000000000000000001 +-00000000000000000000000000000000000000.00000000000000000000000000000000005 +-00000000000000000000000000000000000000.00000000000000000000000000000000009 +-00000000000000000000000000000000000000.00000000000010000000000000000000000 +-00000000000000000000000000000000000000.00000000000050000000000000000000000 +-00000000000000000000000000000000000000.00000000000090000000000000000000000 +-00000000000000000000000000000000000000.00000000000010000000000000000000001 +-00000000000000000000000000000000000000.00000000000050000000000000000000005 +-00000000000000000000000000000000000000.00000000000090000000000000000000009 +-00000000000000000000000000000000000000.10000000000000000000000000000000000 +-00000000000000000000000000000000000000.10000000000000000000000000000000001 +-00000000000000000000000000000000000000.10000000000010000000000000000000001 +-00000000000000000000000000000000000000.50000000000050000000000000000000005 +-00000000000000000000000000000000000000.90000000000090000000000000000000009 +-00000000000000000000000000000000000001.00000000000000000000000000000000000 +-00000000000000000000000000000000000001.00000000000000000000000000000000001 +-00000000000000000000000000000000000001.00000000000000000000000000000000005 +-00000000000000000000000000000000000001.00000000000000000000000000000000009 +-00000000000000000000000000000000000001.00000000000010000000000000000000000 +-00000000000000000000000000000000000001.00000000000050000000000000000000000 +-00000000000000000000000000000000000001.00000000000090000000000000000000000 +-00000000000000000000000000000000000001.00000000000010000000000000000000001 +-00000000000000000000000000000000000001.00000000000050000000000000000000005 +-00000000000000000000000000000000000001.00000000000090000000000000000000009 +-00000000000000000000000000000000000001.10000000000010000000000000000000001 +-00000000000000000000000000000000000001.50000000000050000000000000000000005 +-00000000000000000000000000000000000001.90000000000090000000000000000000009 +-00000000000000000000000000000000010001.00000000000000000000000000000000000 +-00000000000000000000000000000000010001.00000000000000000000000000000000001 +-00000000000000000000000000000000010001.00000000000000000000000000000000005 +-00000000000000000000000000000000010001.00000000000000000000000000000000009 +-00000000000000000000000000000000010001.00000000000010000000000000000000000 +-00000000000000000000000000000000010001.00000000000050000000000000000000000 +-00000000000000000000000000000000010001.00000000000090000000000000000000000 +-00000000000000000000000000000000010001.00000000000010000000000000000000001 +-00000000000000000000000000000000010001.00000000000050000000000000000000005 +-00000000000000000000000000000000010001.00000000000090000000000000000000009 +-00000000000000000000000000000000010001.10000000000010000000000000000000001 +-00000000000000000000000000000000010001.50000000000050000000000000000000005 +-00000000000000000000000000000000010001.90000000000090000000000000000000009 +-10000000000000000000000000000000000000.00000000000000000000000000000000000 +-50000000000000000000000000000000000000.00000000000000000000000000000000000 +-90000000000000000000000000000000000000.00000000000000000000000000000000000 +-10000000000000000000000000000000000000.00000000000000000000000000000000001 +-50000000000000000000000000000000000000.00000000000000000000000000000000005 +-90000000000000000000000000000000000000.00000000000000000000000000000000009 +-10000000000000000000000000000000000000.00000000000000000000000000100000001 +-50000000000000000000000000000000000000.00000000000000000000000000500000005 +-90000000000000000000000000000000000000.00000000000000000000000000900000009 +-10000000000000000000000000000000000000.10000000000000000000000000100000001 +-50000000000000000000000000000000000000.50000000000000000000000000500000005 +-90000000000000000000000000000000000000.90000000000000000000000000900000009 +-10000000000000000000000000000000000001.00000000000000000000000000000000000 +-50000000000000000000000000000000000001.00000000000000000000000000000000000 +-90000000000000000000000000000000000001.00000000000000000000000000000000000 +-10000000000000000000000000000000000001.00000000000000000000000000000000001 +-50000000000000000000000000000000000001.00000000000000000000000000000000005 +-90000000000000000000000000000000000001.00000000000000000000000000000000009 +-10000000000000000000000000000000000001.00000000000000000000000000100000001 +-50000000000000000000000000000000000001.00000000000000000000000000500000005 +-90000000000000000000000000000000000001.00000000000000000000000000900000009 +-10000000000000000000000000000000000001.10000000000000000000000000100000001 +-50000000000000000000000000000000000001.50000000000000000000000000500000005 +-90000000000000000000000000000000000001.90000000000000000000000000900000009 +-10000000000000000000000000000000010001.00000000000000000000000000000000000 +-50000000000000000000000000000000010001.00000000000000000000000000000000000 +-90000000000000000000000000000000010001.00000000000000000000000000000000000 +-10000000000000000000000000000000010001.00000000000000000000000000000000001 +-50000000000000000000000000000000010001.00000000000000000000000000000000005 +-90000000000000000000000000000000010001.00000000000000000000000000000000009 +-10000000000000000000000000000000010001.00000000000000000000000000100000001 +-50000000000000000000000000000000010001.00000000000000000000000000500000005 +-90000000000000000000000000000000010001.00000000000000000000000000900000009 +-10000000000000000000000000000000010001.10000000000000000000000000100000001 +-50000000000000000000000000000000010001.50000000000000000000000000500000005 +-90000000000000000000000000000000010001.90000000000000000000000000900000009 +-44444444444444444444444444444444444444.44444444444444444444444444444444444 +-49999999999999999999999999999999999999.99999999999999999999999999999999999 +-55555555555555555555555555555555555555.55555555555555555555555555555555555 +-99999999999999999999999999999999999999.99999999999999999999999999999999999 +-99999999999999999999999999999999999999.99999999999999999999999999999999999 +-00000000000000000000000000000000000.00000000000000000000000000000000000000 +-00000000000000000000000000000000000.00000000000000000000000000000000000001 +-00000000000000000000000000000000000.00000000000000000000000000000000000005 +-00000000000000000000000000000000000.00000000000000000000000000000000000009 +-00000000000000000000000000000000000.00000000000000010000000000000000000000 +-00000000000000000000000000000000000.00000000000000050000000000000000000000 +-00000000000000000000000000000000000.00000000000000090000000000000000000000 +-00000000000000000000000000000000000.00000000000000010000000000000000000001 +-00000000000000000000000000000000000.00000000000000050000000000000000000005 +-00000000000000000000000000000000000.00000000000000090000000000000000000009 +-00000000000000000000000000000000000.10000000000000000000000000000000000000 +-00000000000000000000000000000000000.10000000000000000000000000000000000001 +-00000000000000000000000000000000000.10000000000000010000000000000000000001 +-00000000000000000000000000000000000.50000000000000050000000000000000000005 +-00000000000000000000000000000000000.90000000000000090000000000000000000009 +-00000000000000000000000000000000001.00000000000000000000000000000000000000 +-00000000000000000000000000000000001.00000000000000000000000000000000000001 +-00000000000000000000000000000000001.00000000000000000000000000000000000005 +-00000000000000000000000000000000001.00000000000000000000000000000000000009 +-00000000000000000000000000000000001.00000000000000010000000000000000000000 +-00000000000000000000000000000000001.00000000000000050000000000000000000000 +-00000000000000000000000000000000001.00000000000000090000000000000000000000 +-00000000000000000000000000000000001.00000000000000010000000000000000000001 +-00000000000000000000000000000000001.00000000000000050000000000000000000005 +-00000000000000000000000000000000001.00000000000000090000000000000000000009 +-00000000000000000000000000000000001.10000000000000010000000000000000000001 +-00000000000000000000000000000000001.50000000000000050000000000000000000005 +-00000000000000000000000000000000001.90000000000000090000000000000000000009 +-00000000000000000000000000000010001.00000000000000000000000000000000000000 +-00000000000000000000000000000010001.00000000000000000000000000000000000001 +-00000000000000000000000000000010001.00000000000000000000000000000000000005 +-00000000000000000000000000000010001.00000000000000000000000000000000000009 +-00000000000000000000000000000010001.00000000000000010000000000000000000000 +-00000000000000000000000000000010001.00000000000000050000000000000000000000 +-00000000000000000000000000000010001.00000000000000090000000000000000000000 +-00000000000000000000000000000010001.00000000000000010000000000000000000001 +-00000000000000000000000000000010001.00000000000000050000000000000000000005 +-00000000000000000000000000000010001.00000000000000090000000000000000000009 +-00000000000000000000000000000010001.10000000000000010000000000000000000001 +-00000000000000000000000000000010001.50000000000000050000000000000000000005 +-00000000000000000000000000000010001.90000000000000090000000000000000000009 +-10000000000000000000000000000000000.00000000000000000000000000000000000000 +-50000000000000000000000000000000000.00000000000000000000000000000000000000 +-90000000000000000000000000000000000.00000000000000000000000000000000000000 +-10000000000000000000000000000000000.00000000000000000000000000000000000001 +-50000000000000000000000000000000000.00000000000000000000000000000000000005 +-90000000000000000000000000000000000.00000000000000000000000000000000000009 +-10000000000000000000000000000000000.00000000000000000000000000000100000001 +-50000000000000000000000000000000000.00000000000000000000000000000500000005 +-90000000000000000000000000000000000.00000000000000000000000000000900000009 +-10000000000000000000000000000000000.10000000000000000000000000000100000001 +-50000000000000000000000000000000000.50000000000000000000000000000500000005 +-90000000000000000000000000000000000.90000000000000000000000000000900000009 +-10000000000000000000000000000000001.00000000000000000000000000000000000000 +-50000000000000000000000000000000001.00000000000000000000000000000000000000 +-90000000000000000000000000000000001.00000000000000000000000000000000000000 +-10000000000000000000000000000000001.00000000000000000000000000000000000001 +-50000000000000000000000000000000001.00000000000000000000000000000000000005 +-90000000000000000000000000000000001.00000000000000000000000000000000000009 +-10000000000000000000000000000000001.00000000000000000000000000000100000001 +-50000000000000000000000000000000001.00000000000000000000000000000500000005 +-90000000000000000000000000000000001.00000000000000000000000000000900000009 +-10000000000000000000000000000000001.10000000000000000000000000000100000001 +-50000000000000000000000000000000001.50000000000000000000000000000500000005 +-90000000000000000000000000000000001.90000000000000000000000000000900000009 +-10000000000000000000000000000010001.00000000000000000000000000000000000000 +-50000000000000000000000000000010001.00000000000000000000000000000000000000 +-90000000000000000000000000000010001.00000000000000000000000000000000000000 +-10000000000000000000000000000010001.00000000000000000000000000000000000001 +-50000000000000000000000000000010001.00000000000000000000000000000000000005 +-90000000000000000000000000000010001.00000000000000000000000000000000000009 +-10000000000000000000000000000010001.00000000000000000000000000000100000001 +-50000000000000000000000000000010001.00000000000000000000000000000500000005 +-90000000000000000000000000000010001.00000000000000000000000000000900000009 +-10000000000000000000000000000010001.10000000000000000000000000000100000001 +-50000000000000000000000000000010001.50000000000000000000000000000500000005 +-90000000000000000000000000000010001.90000000000000000000000000000900000009 +-44444444444444444444444444444444444.44444444444444444444444444444444444444 +-49999999999999999999999999999999999.99999999999999999999999999999999999999 +-55555555555555555555555555555555555.55555555555555555555555555555555555555 \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(76,76).csv b/be/test/data/vec/columns/DECIMALV3(76,76).csv new file mode 100644 index 000000000000000..2953306ed0bb7d2 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(76,76).csv @@ -0,0 +1,119 @@ +0 +0.0 +00.0 +00.00 +0.1 +0.2 +0.3 +0.4 +0.5 +0.6 +0.7 +0.8 +0.9 +0.0000000000000000000000000000000000000000000000000000000000000000000000000000 +0.0000000000000000000000000000000000000000000000000000000000000000000000000001 +0.0000000000000000000000000000000000000000000000000000000000000000000000000005 +0.0000000000000000000000000000000000000000000000000000000000000000000000000009 +0.0000000000000000000000000000000000000000000000000000010000000000000000000000 +0.0000000000000000000000000000000000000000000000000000050000000000000000000000 +0.0000000000000000000000000000000000000000000000000000090000000000000000000000 +0.0000000000000000000000000000000000000000000000000000010000000000000000000001 +0.0000000000000000000000000000000000000000000000000000050000000000000000000005 +0.0000000000000000000000000000000000000000000000000000090000000000000000000009 +0.1000000000000000000000000000000000000000000000000000000000000000000000000000 +0.5000000000000000000000000000000000000000000000000000000000000000000000000000 +0.9000000000000000000000000000000000000000000000000000000000000000000000000000 +0.1000000000000000000000000000000000000000000000000000000000000000000000000001 +0.5000000000000000000000000000000000000000000000000000000000000000000000000005 +0.9000000000000000000000000000000000000000000000000000000000000000000000000009 +0.1000000000000000000000000000000000000000000000000000000000000000000100000001 +0.5000000000000000000000000000000000000000000000000000000000000000000500000005 +0.9000000000000000000000000000000000000000000000000000000000000000000900000009 +0.4444444444444444444444444444444444444444444444444444444444444444444444444444 +0.4999999999999999999999999999999999999999999999999999999999999999999999999999 +0.5555555555555555555555555555555555555555555555555555555555555555555555555555 +0.9999999999999999999999999999999999999999999999999999999999999999999999999999 +0.0000000000000000000000000000000000000000000000000000000000000000000000000 +0.0000000000000000000000000000000000000000000000000000000000000000000000001 +0.0000000000000000000000000000000000000000000000000000000000000000000000005 +0.0000000000000000000000000000000000000000000000000000000000000000000000009 +0.0000000000000000000000000000000000000000000000000010000000000000000000000 +0.0000000000000000000000000000000000000000000000000050000000000000000000000 +0.0000000000000000000000000000000000000000000000000090000000000000000000000 +0.0000000000000000000000000000000000000000000000000010000000000000000000001 +0.0000000000000000000000000000000000000000000000000050000000000000000000005 +0.0000000000000000000000000000000000000000000000000090000000000000000000009 +0.1000000000000000000000000000000000000000000000000000000000000000000000000 +0.5000000000000000000000000000000000000000000000000000000000000000000000000 +0.9000000000000000000000000000000000000000000000000000000000000000000000000 +0.1000000000000000000000000000000000000000000000000000000000000000000000001 +0.5000000000000000000000000000000000000000000000000000000000000000000000005 +0.9000000000000000000000000000000000000000000000000000000000000000000000009 +0.1000000000000000000000000000000000000000000000000000000000000000100000001 +0.5000000000000000000000000000000000000000000000000000000000000000500000005 +0.9000000000000000000000000000000000000000000000000000000000000000900000009 +0.4444444444444444444444444444444444444444444444444444444444444444444444444 +0.4999999999999999999999999999999999999999999999999999999999999999999999999 +0.5555555555555555555555555555555555555555555555555555555555555555555555555 +0.9999999999999999999999999999999999999999999999999999999999999999999999999 +-0 +-0.0 +-00.0 +-00.00 +-0.1 +-0.2 +-0.3 +-0.4 +-0.5 +-0.6 +-0.7 +-0.8 +-0.9 +-0.0000000000000000000000000000000000000000000000000000000000000000000000000000 +-0.0000000000000000000000000000000000000000000000000000000000000000000000000001 +-0.0000000000000000000000000000000000000000000000000000000000000000000000000005 +-0.0000000000000000000000000000000000000000000000000000000000000000000000000009 +-0.0000000000000000000000000000000000000000000000000000010000000000000000000000 +-0.0000000000000000000000000000000000000000000000000000050000000000000000000000 +-0.0000000000000000000000000000000000000000000000000000090000000000000000000000 +-0.0000000000000000000000000000000000000000000000000000010000000000000000000001 +-0.0000000000000000000000000000000000000000000000000000050000000000000000000005 +-0.0000000000000000000000000000000000000000000000000000090000000000000000000009 +-0.1000000000000000000000000000000000000000000000000000000000000000000000000000 +-0.5000000000000000000000000000000000000000000000000000000000000000000000000000 +-0.9000000000000000000000000000000000000000000000000000000000000000000000000000 +-0.1000000000000000000000000000000000000000000000000000000000000000000000000001 +-0.5000000000000000000000000000000000000000000000000000000000000000000000000005 +-0.9000000000000000000000000000000000000000000000000000000000000000000000000009 +-0.1000000000000000000000000000000000000000000000000000000000000000000100000001 +-0.5000000000000000000000000000000000000000000000000000000000000000000500000005 +-0.9000000000000000000000000000000000000000000000000000000000000000000900000009 +-0.4444444444444444444444444444444444444444444444444444444444444444444444444444 +-0.4999999999999999999999999999999999999999999999999999999999999999999999999999 +-0.5555555555555555555555555555555555555555555555555555555555555555555555555555 +-0.9999999999999999999999999999999999999999999999999999999999999999999999999999 +-0.0000000000000000000000000000000000000000000000000000000000000000000000000 +-0.0000000000000000000000000000000000000000000000000000000000000000000000001 +-0.0000000000000000000000000000000000000000000000000000000000000000000000005 +-0.0000000000000000000000000000000000000000000000000000000000000000000000009 +-0.0000000000000000000000000000000000000000000000000010000000000000000000000 +-0.0000000000000000000000000000000000000000000000000050000000000000000000000 +-0.0000000000000000000000000000000000000000000000000090000000000000000000000 +-0.0000000000000000000000000000000000000000000000000010000000000000000000001 +-0.0000000000000000000000000000000000000000000000000050000000000000000000005 +-0.0000000000000000000000000000000000000000000000000090000000000000000000009 +-0.1000000000000000000000000000000000000000000000000000000000000000000000000 +-0.5000000000000000000000000000000000000000000000000000000000000000000000000 +-0.9000000000000000000000000000000000000000000000000000000000000000000000000 +-0.1000000000000000000000000000000000000000000000000000000000000000000000001 +-0.5000000000000000000000000000000000000000000000000000000000000000000000005 +-0.9000000000000000000000000000000000000000000000000000000000000000000000009 +-0.1000000000000000000000000000000000000000000000000000000000000000100000001 +-0.5000000000000000000000000000000000000000000000000000000000000000500000005 +-0.9000000000000000000000000000000000000000000000000000000000000000900000009 +-0.4444444444444444444444444444444444444444444444444444444444444444444444444 +-0.4999999999999999999999999999999999999999999999999999999999999999999999999 +-0.5555555555555555555555555555555555555555555555555555555555555555555555555 +-0.9999999999999999999999999999999999999999999999999999999999999999999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(8,3).csv b/be/test/data/vec/columns/DECIMALV3(8,3).csv new file mode 100644 index 000000000000000..1c6770533ee8a43 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(8,3).csv @@ -0,0 +1,7 @@ +87654.210 +0.001 +99999.999 +-87654.210 +-0.001 +-99999.999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(9,0).csv b/be/test/data/vec/columns/DECIMALV3(9,0).csv new file mode 100644 index 000000000000000..c8efaf4aa880a56 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(9,0).csv @@ -0,0 +1,5 @@ +890123456 +999999999 +-890123456 +-999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/DECIMALV3(9,9).csv b/be/test/data/vec/columns/DECIMALV3(9,9).csv new file mode 100644 index 000000000000000..8e779837f85fea6 --- /dev/null +++ b/be/test/data/vec/columns/DECIMALV3(9,9).csv @@ -0,0 +1,5 @@ +0.890123456 +0.999999999 +-0.890123456 +-0.999999999 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/INT.csv b/be/test/data/vec/columns/INT.csv new file mode 100644 index 000000000000000..a02db916e8c473f --- /dev/null +++ b/be/test/data/vec/columns/INT.csv @@ -0,0 +1,31 @@ +-1 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +46341 +-2147483648 +2147483647 +1254267885 +-304535224 +-833501213 +-1420060407 +-61375860 +1122447641 +1492845018 +-624246370 +220575248 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/INT_UNSIGNED.csv b/be/test/data/vec/columns/INT_UNSIGNED.csv new file mode 100644 index 000000000000000..7f0dd44d68d9a08 --- /dev/null +++ b/be/test/data/vec/columns/INT_UNSIGNED.csv @@ -0,0 +1,24 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +46341 +2147483647 +1254267885 +1122447641 +1492845018 +220575248 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/LARGEINT.csv b/be/test/data/vec/columns/LARGEINT.csv new file mode 100644 index 000000000000000..3ad18c9752facae --- /dev/null +++ b/be/test/data/vec/columns/LARGEINT.csv @@ -0,0 +1,8 @@ +-1 +0 +1 +2 +17014118346046923173168730 +-170141183460469231731687303715884105727 +170141183460469231731687303715884105727 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/LARGEINT_UNSIGNED.csv b/be/test/data/vec/columns/LARGEINT_UNSIGNED.csv new file mode 100644 index 000000000000000..789f0a660e88d81 --- /dev/null +++ b/be/test/data/vec/columns/LARGEINT_UNSIGNED.csv @@ -0,0 +1,6 @@ +0 +1 +2 +17014118346046923173168730 +170141183460469231731687303715884105727 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/SMALLINT.csv b/be/test/data/vec/columns/SMALLINT.csv new file mode 100644 index 000000000000000..9e36ed0f5654332 --- /dev/null +++ b/be/test/data/vec/columns/SMALLINT.csv @@ -0,0 +1,22 @@ +-1 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +182 +-32768 +32767 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/SMALLINT_UNSIGNED.csv b/be/test/data/vec/columns/SMALLINT_UNSIGNED.csv new file mode 100644 index 000000000000000..a066b57bc906456 --- /dev/null +++ b/be/test/data/vec/columns/SMALLINT_UNSIGNED.csv @@ -0,0 +1,20 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +182 +32767 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/TINYINT.csv b/be/test/data/vec/columns/TINYINT.csv new file mode 100644 index 000000000000000..5a395bb57b21a32 --- /dev/null +++ b/be/test/data/vec/columns/TINYINT.csv @@ -0,0 +1,8 @@ +-1 +0 +1 +2 +12 +-128 +127 +NULL \ No newline at end of file diff --git a/be/test/data/vec/columns/TINYINT_UNSIGNED.csv b/be/test/data/vec/columns/TINYINT_UNSIGNED.csv new file mode 100644 index 000000000000000..40684475a72dc8d --- /dev/null +++ b/be/test/data/vec/columns/TINYINT_UNSIGNED.csv @@ -0,0 +1,6 @@ +0 +1 +2 +12 +127 +NULL \ No newline at end of file diff --git a/be/test/expected_result/vec/columns/column_decimal128_1_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_decimal128_1_update_crc_with_value.out new file mode 100644 index 000000000000000..652590cc3d0e722 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal128_1_update_crc_with_value.out @@ -0,0 +1 @@ +column: Decimal128V3 with hashes: 1763268460 with ptr: 132 diff --git a/be/test/expected_result/vec/columns/column_decimal128_1_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_decimal128_1_update_crcs_with_value.out new file mode 100644 index 000000000000000..feecf8a5bfcf775 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal128_1_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Decimal128V3 with hashes: [3971697493,3971697493,3971697493,3971697493,1121180356,1796959798,3312713639,948570066,2531432003,3207209649,289583904,2678641690,834684299,1121180356,1796959798,3312713639,948570066,2531432003,3207209649,289583904,2678641690,834684299,3971697493,1121180356,2531432003,834684299,2194888695,1001888115,2156056377,750503526,1106134117,1576649191,2868503421,76641004,3500162667,2005069219,1470897211,2721776039,3468578440,4190408106,3630357681,331694166,4236578415,1391304702,2262619001,570294449,3961536790,992375183,1302322734,1112068231,1098886297,2430914800,4247862101,1398385348,2271798851,541734283,167520148,2680105497,2075078625,2811540997,3857118991,2798919999,2383904181,2306610096,4199526843,2304600846,3971697493,3971697493,3971697493,3971697493,1068746266,2447071115,3088311161,377189096,3951200925,1172970252,1814212606,3259645551,1285577045,1068746266,2447071115,3088311161,377189096,3951200925,1172970252,1814212606,3259645551,1285577045,3971697493,1068746266,3951200925,1285577045,376290835,2936631447,339486429,1373362872,1015961787,546954553,201880557,2045865522,2915050165,182645117,3674321298,781626382,1108599585,2225377652,2768420975,1856330888,1517592319,797803296,4223455143,1553865839,1619913919,3079396390,3241309063,1059638361,1008709703,3984903214,1539353541,775534106,4194892445,1563044181,2236713533,319981488,4144136776,3673467611,2558979025,3686022625,2699430031,4095479662,2268048741,4097669072] diff --git a/be/test/expected_result/vec/columns/column_decimal128_1_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_decimal128_1_update_hashes_with_value.out new file mode 100644 index 000000000000000..18a881c1945c6dc --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal128_1_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Decimal128V3 with hashes: [15034821391391295848,15034821391391295848,15034821391391295848,15034821391391295848,2806482627441532945,14758132037427638366,7939812443839392459,17300379171440958733,8046136091381703158,241600572499217856,5175499747093961662,9066231951875758376,18096404086324926682,2806482627441532945,14758132037427638366,7939812443839392459,17300379171440958733,8046136091381703158,241600572499217856,5175499747093961662,9066231951875758376,18096404086324926682,15034821391391295848,2806482627441532945,8046136091381703158,18096404086324926682,6565451914038188149,3599359451061808556,12072365158016522959,13071773894112679256,8577572458648210556,5623667202888167921,6183096137861098017,3071542261155960801,705148014559825104,6293049985045074592,10559732470879170210,1869558836474744928,14331369661403402491,9197083614742965014,14959260737773389424,13511456823150441879,14457234149339556225,5084416092335415306,10657403094879456783,2625549497568196533,7218583553549561421,9956119110873956781,11857174753775799174,9176463064758483793,13191057500571440107,9434786900257500844,7261660106395898288,12900303829196261353,2733924132745322737,7454130061015379364,15161535888436284059,8302014713986017800,13927519826181225586,9260426583458118183,6932412452439598094,1178017278358404610,14853751612913213120,4953641426068987294,6922904023668323097,16080083733124486876,15034821391391295848,15034821391391295848,15034821391391295848,15034821391391295848,8226423055709418259,18216398470952071428,17934734405668987730,6113249630222289046,14581362778538380298,7154527111636056250,11201939150766176069,16528996851578891219,4397730327495479907,8226423055709418259,18216398470952071428,17934734405668987730,6113249630222289046,14581362778538380298,7154527111636056250,11201939150766176069,16528996851578891219,4397730327495479907,15034821391391295848,8226423055709418259,14581362778538380298,4397730327495479907,13148185843239063913,14602940541761274069,17331745202546413803,11619504863598472209,18043576227007900823,13472189371922661338,17255948642258921257,12574865805523330205,11865425364119126258,8144913968128466325,3437699400055101407,14209019002438897476,3168860033663377565,12552038959089148347,12357227517713224044,89656298128196933,14754496816909640877,5391088467747298421,13793061609384103501,5541413397899706121,3102243246939541747,10576847359988245187,2908657738112958765,2177838913823946580,973758984230478711,15955975810616926454,3164548962382040899,9936440782251475369,11959650997054794911,6648956807426678117,7907008188975370974,13389867712675942924,17712036123557188781,17100662537685807725,7565232346019570280,5427192982786130589,12762068857869418239,12603245383509769730,3917506361834333293,1489453395025516299] diff --git a/be/test/expected_result/vec/columns/column_decimal128_1_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_decimal128_1_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..9f607146202e23b --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal128_1_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Decimal128V3 with hashes: 13029017340823389993 with ptr: 132 diff --git a/be/test/expected_result/vec/columns/column_decimal128_1_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_decimal128_1_update_xxHash_with_value.out new file mode 100644 index 000000000000000..d7f853133bbe4cb --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal128_1_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Decimal128V3 with hashes: 11274666896127783607 with ptr: 132 diff --git a/be/test/expected_result/vec/columns/column_decimal256_1_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_decimal256_1_update_crc_with_value.out new file mode 100644 index 000000000000000..da9e1da77cc5264 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal256_1_update_crc_with_value.out @@ -0,0 +1 @@ +column: Decimal256 with hashes: 43375621 with ptr: 136 diff --git a/be/test/expected_result/vec/columns/column_decimal256_1_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_decimal256_1_update_crcs_with_value.out new file mode 100644 index 000000000000000..e7799aa1cfe5228 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal256_1_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Decimal256 with hashes: [420107693,420107693,420107693,420107693,3905966087,567236792,3491061010,1753239431,2572831277,1346716306,2711570232,4196295161,197420115,3905966087,567236792,3491061010,1753239431,2572831277,1346716306,2711570232,4196295161,197420115,420107693,3905966087,2572831277,197420115,727702691,3348386660,865636204,3666204937,1204047076,559333010,3296580559,1081942525,1125471263,900191845,3224190589,1373332961,1813569939,1030474219,2067704978,1666978767,2798280032,1718207433,1277249500,420107693,3905966087,2572831277,197420115,727702691,3348386660,865636204,3666204937,1204047076,559333010,1530784251,3131494236,715298147,2867326033,989253852,946644125,4082686887,3350210378,310996462,3402150319,2976023197,2193993260,1668347942,420107693,420107693,420107693,420107693,4285311755,246853281,3349784094,913548212,2397483297,2134684811,3055795252,1207548318,477667167,4285311755,246853281,3349784094,913548212,2397483297,2134684811,3055795252,1207548318,477667167,420107693,4285311755,2397483297,477667167,2366536429,1640363306,2512988450,3443073541,1350088680,921322910,3299627508,1085055942,1136973348,572206441,3616654705,1181196013,2074352287,718746343,1820481438,1034944508,2977343084,1909799109,1537064144,420107693,4285311755,2397483297,477667167,2366536429,1640363306,2512988450,3443073541,1350088680,921322910,3063896732,1459911739,3338675716,3176863581,759835600,802185105,3840155819,3490503750,87398114,2486918556,2799597969,2507756832,1959527210] diff --git a/be/test/expected_result/vec/columns/column_decimal256_1_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_decimal256_1_update_hashes_with_value.out new file mode 100644 index 000000000000000..4ba65ee53a26856 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal256_1_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Decimal256 with hashes: [11553746372678240669,11553746372678240669,11553746372678240669,11553746372678240669,2319651275181844610,4378618721005623021,13624858504109962222,4249019617056036009,9186514451661920151,2425756810202776548,2186714606238324615,13292472508123175054,2222486702645688442,2319651275181844610,4378618721005623021,13624858504109962222,4249019617056036009,9186514451661920151,2425756810202776548,2186714606238324615,13292472508123175054,2222486702645688442,11553746372678240669,2319651275181844610,9186514451661920151,2222486702645688442,8834799860464127761,4531912200664565951,13557454219673612745,17325361175542458660,16332383528577966082,3411264757767137220,2304094417838226387,806210812518262111,11254924421837041163,12843444494019099297,17001534374335527764,10996307711192372557,7215754920774365268,4855589119590698289,9544548589968171773,8017131775050890739,14783524084563293171,7745604229145237957,13800638794972114955,11553746372678240669,2319651275181844610,9186514451661920151,2222486702645688442,8834799860464127761,4531912200664565951,13557454219673612745,17325361175542458660,16332383528577966082,3411264757767137220,1047870515856452090,7988886744913711966,12828444851783421723,14686809665718504465,6228885729554591891,1981772053515787532,16382794711164805749,6640322109072199595,8361876088820869303,4296971608960723154,15032415436766116228,8606967460440850869,10878007830169200985,11553746372678240669,11553746372678240669,11553746372678240669,11553746372678240669,3960537223307592690,10994469699627660235,4032589930281906146,11417235483253399303,6525909558378808732,8492429029618703488,17193695767770812494,5183791061280227101,15953170509361057238,3960537223307592690,10994469699627660235,4032589930281906146,11417235483253399303,6525909558378808732,8492429029618703488,17193695767770812494,5183791061280227101,15953170509361057238,11553746372678240669,3960537223307592690,6525909558378808732,15953170509361057238,6462771813301809864,15142703449926381548,17219901389472314696,1882832627072531950,11056331250981687585,5809817988802423128,14450639429486105527,13218881556871583634,1421593918072841729,1725815315588958639,9477739598778980971,16811130780998177664,10474708290317524466,5246897239166624302,5296672769712352474,6483697477379740506,6329716326261528371,11163511903229765393,12274970770185255707,11553746372678240669,3960537223307592690,6525909558378808732,15953170509361057238,6462771813301809864,15142703449926381548,17219901389472314696,1882832627072531950,11056331250981687585,5809817988802423128,6447247592882013051,14729447208024025315,11978678682352604470,9135511227021847333,513628119076534290,13182843089282347800,1124250425571430399,1645539209119228102,14117895135296765973,16989892994230183536,10273632396784727527,13269213213551246289,8925003909741409907] diff --git a/be/test/expected_result/vec/columns/column_decimal256_1_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_decimal256_1_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..a0b99dbe184cf06 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal256_1_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Decimal256 with hashes: 13461218853732452065 with ptr: 136 diff --git a/be/test/expected_result/vec/columns/column_decimal256_1_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_decimal256_1_update_xxHash_with_value.out new file mode 100644 index 000000000000000..a6494431b46dd51 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal256_1_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Decimal256 with hashes: 3390302738494855225 with ptr: 136 diff --git a/be/test/expected_result/vec/columns/column_decimal32_1_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_decimal32_1_update_crc_with_value.out new file mode 100644 index 000000000000000..22746d11cf521d8 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal32_1_update_crc_with_value.out @@ -0,0 +1 @@ +column: Decimal32 with hashes: 3048919421 with ptr: 19 diff --git a/be/test/expected_result/vec/columns/column_decimal32_1_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_decimal32_1_update_crcs_with_value.out new file mode 100644 index 000000000000000..6c395f6ca2cf695 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal32_1_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Decimal32 with hashes: [558161692,2583214201,2337085335,871461106,2921744459,379203374,70222016,3163809701,3840997363,1548521622,4294967295,1195612314,1442199412,3981070353,1889364136,3357609933,3667173411,1646839622,978048784] diff --git a/be/test/expected_result/vec/columns/column_decimal32_1_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_decimal32_1_update_hashes_with_value.out new file mode 100644 index 000000000000000..27518d774b653ab --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal32_1_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Decimal32 with hashes: [5238470482016868669,15781232456890734344,8139571457004014537,14469997262933715357,10886713987833304216,13488391213372187246,17669285146123216010,6318062648460624204,13260165450052999762,14507225453823563092,14801956013896328748,8076795207839446699,16001136339878868738,11523875851816110123,10605178677446607853,15772540244370874724,10620998333716774122,10877760891339241546,16496720233941000557] diff --git a/be/test/expected_result/vec/columns/column_decimal32_1_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_decimal32_1_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..34569b03b632f2c --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal32_1_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Decimal32 with hashes: 3656676387695527692 with ptr: 19 diff --git a/be/test/expected_result/vec/columns/column_decimal32_1_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_decimal32_1_update_xxHash_with_value.out new file mode 100644 index 000000000000000..465ddf89c1a2732 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal32_1_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Decimal32 with hashes: 15209422158015590811 with ptr: 19 diff --git a/be/test/expected_result/vec/columns/column_decimal64_1_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_decimal64_1_update_crc_with_value.out new file mode 100644 index 000000000000000..8d9f0991fa8a502 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal64_1_update_crc_with_value.out @@ -0,0 +1 @@ +column: Decimal64 with hashes: 839261259 with ptr: 132 diff --git a/be/test/expected_result/vec/columns/column_decimal64_1_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_decimal64_1_update_crcs_with_value.out new file mode 100644 index 000000000000000..c08211dfb8523f5 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal64_1_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Decimal64 with hashes: [1696784233,1696784233,1696784233,1696784233,2844319735,654825492,3954038922,3781742995,767742221,2739787502,1877464688,3066545372,2054014018,2844319735,654825492,3954038922,3781742995,767742221,2739787502,1877464688,3066545372,2054014018,1696784233,2844319735,767742221,2054014018,1732485918,4123211242,2624312901,2884215680,3173202830,2200227182,4219939847,925707417,3009880675,3838326572,2368084542,1398037207,3402027533,1099700896,464802995,3582576934,3611733359,468495857,2678498059,3356079684,2716310358,2140527551,3859239781,1833802696,930469339,4182263886,1650125903,2935024849,716890667,2098591588,352049782,3398015647,1394283077,3629243112,2187957499,1280575854,921835713,3853488919,1863252228,1944273226,1696784233,1696784233,1696784233,1696784233,558161692,3991854978,1667356769,2949372159,2769211878,1772409208,3878409883,729929221,4070687913,558161692,3991854978,1667356769,2949372159,2769211878,1772409208,3878409883,729929221,4070687913,1696784233,558161692,2769211878,4070687913,881245968,2785421796,3484338763,589669227,904870757,199806341,2366116362,3219205234,1001071240,1812215751,1826306508,2997451045,725348863,3376421451,2474136664,1564854733,2714342242,2468392218,392864736,1086699183,1075493028,2657679437,133853335,3850476323,3216626992,1904494757,349557314,641526842,2725700288,4124702607,4110875012,729069933,3001430455,1352522243,178623504,3298298245,2018578861,1835242492,3888314863,4214178209] diff --git a/be/test/expected_result/vec/columns/column_decimal64_1_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_decimal64_1_update_hashes_with_value.out new file mode 100644 index 000000000000000..1e4bf53b0eeb998 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal64_1_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Decimal64 with hashes: [14374147212387527897,14374147212387527897,14374147212387527897,14374147212387527897,3439722301264460078,2343778756980564547,5589565451239960189,14565249271442862456,10233279695637096332,7753311634367670075,9324454920402081455,11671990019772833022,531617755107230871,3439722301264460078,2343778756980564547,5589565451239960189,14565249271442862456,10233279695637096332,7753311634367670075,9324454920402081455,11671990019772833022,531617755107230871,14374147212387527897,3439722301264460078,10233279695637096332,531617755107230871,9939511495660189829,7318986959489321498,14866641191020685583,6386580447780311254,2788228499246020095,9238816527008351221,12068978516246274236,15586798278746420224,12125973531685367648,3715386957538010082,14428933557541802967,15892750889112028759,16575462026425822505,15355618175703338030,17752417239326628444,8380349898641026484,2807651765881923122,17860022993971329212,6676347693490280400,11995220549114076936,2602037098872716214,6711290953070429336,17225059285594121656,5403203872906850893,1705724461617552768,14244856228886327886,15825365924630835631,5253863538640465834,2604777031587120281,16081392804128155153,10176557001834616112,10948499258991171409,11278642902554783908,862869495828813926,13644419876760563630,5629697269492323515,8718108803425207939,13414401083241390548,9627090370489349417,9246802243746555594,14374147212387527897,14374147212387527897,14374147212387527897,14374147212387527897,5841669975847748627,8645101703549425753,4775679867115896880,16276732815735568945,7602370513495869217,867158927618287402,14838759734602465204,4151576334746114585,17169255283832112058,5841669975847748627,8645101703549425753,4775679867115896880,16276732815735568945,7602370513495869217,867158927618287402,14838759734602465204,4151576334746114585,17169255283832112058,14374147212387527897,5841669975847748627,7602370513495869217,17169255283832112058,10122190217512365301,11729321060803066807,9682215904350589073,17158437062933784762,13498002603573102036,14087053580264416309,2484993622220328463,18392964652250784731,4153831108807516597,11625383737495055033,15170579653600540791,18402413150393108273,7486385566207921917,737604094300023706,17248234686296813722,7630892366600349016,11280733667925936105,9944733927758889036,7325255246931466536,5454514767386568,13014927327849203836,1235691151967923304,7423021307321136464,10029639936029726583,311895996688666047,5236123567645578990,6054421935241813534,7598896049933407255,9391239291792678070,8869887748831651164,2228744245047958678,15789323082186751596,8890154598045291020,7082835340802765941,13118007827595769643,8552995284282582329,7894112323044325447,1052217376295957958,17214810356532313232,628888787382391647] diff --git a/be/test/expected_result/vec/columns/column_decimal64_1_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_decimal64_1_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..4feb688311ade15 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal64_1_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Decimal64 with hashes: 12482103859687845184 with ptr: 132 diff --git a/be/test/expected_result/vec/columns/column_decimal64_1_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_decimal64_1_update_xxHash_with_value.out new file mode 100644 index 000000000000000..e58949babed8cb9 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_decimal64_1_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Decimal64 with hashes: 7162760892064776568 with ptr: 132 diff --git a/be/test/expected_result/vec/columns/column_int128_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_int128_update_crc_with_value.out new file mode 100644 index 000000000000000..958b16704caa32c --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int128_update_crc_with_value.out @@ -0,0 +1 @@ +column: Int128 with hashes: 2403389654 with ptr: 7 diff --git a/be/test/expected_result/vec/columns/column_int128_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_int128_update_crcs_with_value.out new file mode 100644 index 000000000000000..7969ed55f74d50f --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int128_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Int128 with hashes: [1068746266,3971697493,1121180356,1796959798,2030571178,2943048164,3523953978] diff --git a/be/test/expected_result/vec/columns/column_int128_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_int128_update_hashes_with_value.out new file mode 100644 index 000000000000000..b9d4874cb00fac2 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int128_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Int128 with hashes: [8226423055709418259,15034821391391295848,2806482627441532945,14758132037427638366,12723645926297883426,3175876276151021271,14627993631802167871] diff --git a/be/test/expected_result/vec/columns/column_int128_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_int128_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..6be2cb2850137f7 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int128_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Int128 with hashes: 15172130973668923360 with ptr: 7 diff --git a/be/test/expected_result/vec/columns/column_int128_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_int128_update_xxHash_with_value.out new file mode 100644 index 000000000000000..90490a4d933220a --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int128_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Int128 with hashes: 9989133496829172726 with ptr: 7 diff --git a/be/test/expected_result/vec/columns/column_int16_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_int16_update_crc_with_value.out new file mode 100644 index 000000000000000..8925296e3dc5840 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int16_update_crc_with_value.out @@ -0,0 +1 @@ +column: Int16 with hashes: 1308014103 with ptr: 21 diff --git a/be/test/expected_result/vec/columns/column_int16_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_int16_update_crcs_with_value.out new file mode 100644 index 000000000000000..0e491b08f061ee7 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int16_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Int16 with hashes: [4294901760,1104745215,1489118142,1945071741,1794392380,632674299,1018095290,394507641,244876344,2298517751,2417732022,3140942453,2720910132,3983302131,4101467314,3747233649,3326152240,186319022,4081458113,2892075487,306676512] diff --git a/be/test/expected_result/vec/columns/column_int16_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_int16_update_hashes_with_value.out new file mode 100644 index 000000000000000..4648e63e29d7836 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int16_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Int16 with hashes: [12851027882866032747,3685390413631870213,12363696039452112576,10644993193307281418,8386526569404862294,13806247758289761820,2597309697680638508,6092922510659166554,17740370434544570092,14022894634313835675,15964399897225686115,13537849523824340757,11075049457881178803,1647627511971957352,11596266418288130991,11193041915647647553,7187733928238427108,680621092039413175,5766854523240011094,6926826367057628479,605420444776799894] diff --git a/be/test/expected_result/vec/columns/column_int16_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_int16_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..e97cc35aca68459 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int16_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Int16 with hashes: 10459934319281507110 with ptr: 21 diff --git a/be/test/expected_result/vec/columns/column_int16_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_int16_update_xxHash_with_value.out new file mode 100644 index 000000000000000..40de49490c39b45 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int16_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Int16 with hashes: 9944475251735760093 with ptr: 21 diff --git a/be/test/expected_result/vec/columns/column_int32_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_int32_update_crc_with_value.out new file mode 100644 index 000000000000000..6e35f1f0abba095 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int32_update_crc_with_value.out @@ -0,0 +1 @@ +column: Int32 with hashes: 3759513422 with ptr: 30 diff --git a/be/test/expected_result/vec/columns/column_int32_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_int32_update_crcs_with_value.out new file mode 100644 index 000000000000000..66137eda923b67f --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int32_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Int32 with hashes: [4294967295,558161692,2583214201,2337085335,871461106,2921744459,379203374,70222016,3163809701,3840997363,1548521622,1324957560,4131739677,1804755108,3543009217,3248203823,2032652106,1901955203,3574535125,3439090748,306674911,2614234282,3325637170,2920428205,3066424598,2656849597,2685472057,4220980582,3148198386,650946171] diff --git a/be/test/expected_result/vec/columns/column_int32_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_int32_update_hashes_with_value.out new file mode 100644 index 000000000000000..1067440c82381f8 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int32_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Int32 with hashes: [14801956013896328748,5238470482016868669,15781232456890734344,8139571457004014537,14469997262933715357,10886713987833304216,13488391213372187246,17669285146123216010,6318062648460624204,13260165450052999762,14507225453823563092,651797093295460290,8551258229804624390,5420799020890387807,9719206248845226434,3970021224544302162,18161998364179038543,7251233660364289376,1914813974022205486,7513848233174832419,6147526096378114303,8043741074961794096,15425591510361624242,16092759366000079945,15015897113046962708,10560498510292420355,3718314756743052705,16665407701347888750,13018478465867131439,10416249989333130778] diff --git a/be/test/expected_result/vec/columns/column_int32_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_int32_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..eaaa2a3af1dd20d --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int32_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Int32 with hashes: 7280711679002048935 with ptr: 30 diff --git a/be/test/expected_result/vec/columns/column_int32_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_int32_update_xxHash_with_value.out new file mode 100644 index 000000000000000..6a8e062e16c885e --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int32_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Int32 with hashes: 10449364723459581252 with ptr: 30 diff --git a/be/test/expected_result/vec/columns/column_int64_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_int64_update_crc_with_value.out new file mode 100644 index 000000000000000..1ed9672c82aeae9 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int64_update_crc_with_value.out @@ -0,0 +1 @@ +column: Int64 with hashes: 635470604 with ptr: 25 diff --git a/be/test/expected_result/vec/columns/column_int64_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_int64_update_crcs_with_value.out new file mode 100644 index 000000000000000..807be76120d82e7 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int64_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Int64 with hashes: [558161692,1696784233,2844319735,654825492,1921345496,2291817545,3439090748,2536581894,1465943917,676029809,190148423,1106919087,3908724218,3254635097,3266462715,3534884739,1482665638,2548525293,3240172831,1300161392,2897990065,3635078855,2815100544,3017151987,3236412956] diff --git a/be/test/expected_result/vec/columns/column_int64_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_int64_update_hashes_with_value.out new file mode 100644 index 000000000000000..37218b31b377d93 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int64_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Int64 with hashes: [5841669975847748627,14374147212387527897,3439722301264460078,2343778756980564547,15531433798976174839,9407778237848358495,11687913294787043142,17105196082561940448,4791697114135341681,17499402597690332666,15500129181524614608,323313723707818295,3073373838427652218,7461481882925908489,5860003063163428986,5304985858438938193,16983365351046814202,7300199923753326235,14199840887633728465,3496427795585199759,8961299610633755577,18256665286044489586,17219290228139247200,18429324167267850907,16110110037811274626] diff --git a/be/test/expected_result/vec/columns/column_int64_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_int64_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..ec1bb7df6e27ff5 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int64_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Int64 with hashes: 8763688519970650030 with ptr: 25 diff --git a/be/test/expected_result/vec/columns/column_int64_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_int64_update_xxHash_with_value.out new file mode 100644 index 000000000000000..ca021e94fdcd018 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int64_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Int64 with hashes: 13349449592915034252 with ptr: 25 diff --git a/be/test/expected_result/vec/columns/column_int8_update_crc_with_value.out b/be/test/expected_result/vec/columns/column_int8_update_crc_with_value.out new file mode 100644 index 000000000000000..7249373b466876f --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int8_update_crc_with_value.out @@ -0,0 +1 @@ +column: Int8 with hashes: 1779464695 with ptr: 7 diff --git a/be/test/expected_result/vec/columns/column_int8_update_crcs_with_value.out b/be/test/expected_result/vec/columns/column_int8_update_crcs_with_value.out new file mode 100644 index 000000000000000..4f2683de5b96786 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int8_update_crcs_with_value.out @@ -0,0 +1 @@ +column: Int8 with hashes: [4278190080,3523407757,2768625435,1007455905,3686048678,1069182125,314082080] diff --git a/be/test/expected_result/vec/columns/column_int8_update_hashes_with_value.out b/be/test/expected_result/vec/columns/column_int8_update_hashes_with_value.out new file mode 100644 index 000000000000000..05f1775f5ec754f --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int8_update_hashes_with_value.out @@ -0,0 +1 @@ +column: Int8 with hashes: [15473502163978278702,14144645293874801883,16226181191752404715,14552307339992752127,2765702133756617546,7715946029497977153,3032053336604930433] diff --git a/be/test/expected_result/vec/columns/column_int8_update_sip_hash_with_value.out b/be/test/expected_result/vec/columns/column_int8_update_sip_hash_with_value.out new file mode 100644 index 000000000000000..c7eb533f582ceb3 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int8_update_sip_hash_with_value.out @@ -0,0 +1 @@ +column: Int8 with hashes: 16714759449077920700 with ptr: 7 diff --git a/be/test/expected_result/vec/columns/column_int8_update_xxHash_with_value.out b/be/test/expected_result/vec/columns/column_int8_update_xxHash_with_value.out new file mode 100644 index 000000000000000..7dbd5002b3bbd26 --- /dev/null +++ b/be/test/expected_result/vec/columns/column_int8_update_xxHash_with_value.out @@ -0,0 +1 @@ +column: Int8 with hashes: 2813423873539239237 with ptr: 7 diff --git a/be/test/testutil/run_all_tests.cpp b/be/test/testutil/run_all_tests.cpp index 44cccb7fec16c45..ac43c7ace14614a 100644 --- a/be/test/testutil/run_all_tests.cpp +++ b/be/test/testutil/run_all_tests.cpp @@ -15,9 +15,6 @@ // specific language governing permissions and limitations // under the License. -#include -#include - #include #include @@ -25,12 +22,8 @@ #include "common/logging.h" #include "common/status.h" #include "gtest/gtest.h" -#include "gtest/gtest_pred_impl.h" -#include "http/ev_http_server.h" -#include "olap/options.h" #include "olap/page_cache.h" #include "olap/segment_loader.h" -#include "olap/storage_engine.h" #include "olap/tablet_column_object_pool.h" #include "olap/tablet_schema_cache.h" #include "runtime/exec_env.h" @@ -38,14 +31,12 @@ #include "runtime/memory/thread_mem_tracker_mgr.h" #include "runtime/thread_context.h" #include "service/backend_options.h" -#include "service/backend_service.h" #include "service/http_service.h" #include "test_util.h" #include "testutil/http_utils.h" #include "util/cpu_info.h" #include "util/disk_info.h" #include "util/mem_info.h" -#include "util/thrift_server.h" int main(int argc, char** argv) { doris::ThreadLocalHandle::create_thread_local_if_not_exits(); @@ -105,6 +96,7 @@ int main(int argc, char** argv) { listeners.Append(new TestListener); doris::ExecEnv::GetInstance()->set_tracking_memory(false); + google::ParseCommandLineFlags(&argc, &argv, false); int res = RUN_ALL_TESTS(); doris::ExecEnv::GetInstance()->set_non_block_close_thread_pool(nullptr); diff --git a/be/test/testutil/test_util.cpp b/be/test/testutil/test_util.cpp index d24dc2dc22d24c9..7ae944221805e5a 100644 --- a/be/test/testutil/test_util.cpp +++ b/be/test/testutil/test_util.cpp @@ -37,12 +37,15 @@ #include // IWYU pragma: keep #include +#include "gflags/gflags.h" #include "gutil/strings/numbers.h" #include "gutil/strings/substitute.h" #include "olap/olap_common.h" using strings::Substitute; +DEFINE_bool(gen_out, false, "generate expected check data for test"); + namespace doris { static const char* const kSlowTestsEnvVar = "DORIS_ALLOW_SLOW_TESTS"; diff --git a/be/test/testutil/test_util.h b/be/test/testutil/test_util.h index 6bd6b4c71921797..8452d1bd800f655 100644 --- a/be/test/testutil/test_util.h +++ b/be/test/testutil/test_util.h @@ -20,8 +20,11 @@ #include #include +#include "gflags/gflags.h" #include "gtest/gtest.h" +DECLARE_bool(gen_out); + struct TestCaseInfo { inline static int arg_const_info {}; inline static int cur_cast_line {}; diff --git a/be/test/vec/columns/column_decimal_test.cpp b/be/test/vec/columns/column_decimal_test.cpp new file mode 100644 index 000000000000000..48133043ac822fd --- /dev/null +++ b/be/test/vec/columns/column_decimal_test.cpp @@ -0,0 +1,719 @@ +// 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. + +#include "vec/columns/column_decimal.h" + +#include +#include +#include + +#include "vec/columns/column.h" +#include "vec/columns/columns_number.h" +#include "vec/columns/common_column_test.h" +#include "vec/core/types.h" +#include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_factory.hpp" +#include "vec/data_types/data_type_nullable.h" + +namespace doris::vectorized { +class ColumnDecimalTest : public CommonColumnTest { +protected: + std::string test_data_dir; + std::string test_result_dir; + void SetUp() override { + auto root_dir = std::string(getenv("ROOT")); + test_data_dir = root_dir + "/be/test/data/vec/columns"; + test_result_dir = root_dir + "/be/test/expected_result/vec/columns"; + + column_decimal32_1 = ColumnDecimal32::create(0, 0); + column_decimal32_2 = ColumnDecimal32::create(0, 1); + column_decimal32_3 = ColumnDecimal32::create(0, 3); + column_decimal32_4 = ColumnDecimal32::create(0, 0); + column_decimal32_5 = ColumnDecimal32::create(0, 9); + + column_decimal64_1 = ColumnDecimal64::create(0, 0); + column_decimal64_2 = ColumnDecimal64::create(0, 9); + column_decimal64_3 = ColumnDecimal64::create(0, 18); + + column_decimal128_1 = ColumnDecimal128V3::create(0, 0); + column_decimal128_2 = ColumnDecimal128V3::create(0, 30); + column_decimal128_3 = ColumnDecimal128V3::create(0, 38); + + column_decimal256_1 = ColumnDecimal256::create(0, 0); + column_decimal256_2 = ColumnDecimal256::create(0, 38); + column_decimal256_3 = ColumnDecimal256::create(0, 76); + + load_columns_data(); + } + + DataTypePtr dt_decimal32_1 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL32, 1, 0); + DataTypePtr dt_decimal32_2 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL32, 1, 1); + DataTypePtr dt_decimal32_3 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL32, 8, 3); + DataTypePtr dt_decimal32_4 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL32, 9, 0); + DataTypePtr dt_decimal32_5 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL32, 9, 9); + + DataTypePtr dt_decimal64_1 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL64, 18, 0); + DataTypePtr dt_decimal64_2 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL64, 18, 9); + DataTypePtr dt_decimal64_3 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL64, 18, 18); + + DataTypePtr dt_decimal128_1 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL128I, 38, 0); + DataTypePtr dt_decimal128_2 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL128I, 38, 30); + DataTypePtr dt_decimal128_3 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL128I, 38, 38); + + DataTypePtr dt_decimal256_1 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL256, 76, 0); + DataTypePtr dt_decimal256_2 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL256, 76, 38); + DataTypePtr dt_decimal256_3 = DataTypeFactory::instance().create_data_type( + FieldType::OLAP_FIELD_TYPE_DECIMAL256, 76, 76); + + /* +/// The maximum precision representable by a 4-byte decimal (Decimal4Value) +constexpr int MAX_DECIMAL32_PRECISION = 9; +/// The maximum precision representable by a 8-byte decimal (Decimal8Value) +constexpr int MAX_DECIMAL64_PRECISION = 18; +/// The maximum precision representable by a 16-byte decimal +constexpr int MAX_DECIMAL128_PRECISION = 38; +/// The maximum precision representable by a 32-byte decimal +constexpr int MAX_DECIMAL256_PRECISION = 76; +*/ + ColumnDecimal32::MutablePtr column_decimal32_1; // decimal32(1,0) + ColumnDecimal32::MutablePtr column_decimal32_2; // decimal32(1,1) + ColumnDecimal32::MutablePtr column_decimal32_3; // decimal32(8,3) + ColumnDecimal32::MutablePtr column_decimal32_4; // decimal32(9,0) + ColumnDecimal32::MutablePtr column_decimal32_5; // decimal32(9,9) + + ColumnDecimal64::MutablePtr column_decimal64_1; // decimal64(18,0) + ColumnDecimal64::MutablePtr column_decimal64_2; // decimal64(18,9) + ColumnDecimal64::MutablePtr column_decimal64_3; // decimal64(18,18) + + ColumnDecimal128V3::MutablePtr column_decimal128_1; // decimal128(38,0) + ColumnDecimal128V3::MutablePtr column_decimal128_2; // decimal128(38,30) + ColumnDecimal128V3::MutablePtr column_decimal128_3; // decimal128(38,38) + + ColumnDecimal256::MutablePtr column_decimal256_1; // decimal256(76,0) + ColumnDecimal256::MutablePtr column_decimal256_2; // decimal256(76,38) + ColumnDecimal256::MutablePtr column_decimal256_3; // decimal256(76,76) + + ColumnConst::MutablePtr column_decimal32_const; + + void load_columns_data() { + std::cout << "loading test dataset" << std::endl; + // decimal32 + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_1->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(1,0).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_2->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(1,1).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_3->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(8,3).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_4->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_4->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(9,0).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_5->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_5->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(9,9).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + + // decimal64 + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal64_1->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(18,0).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal64_2->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(18,9).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal64_3->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(18,18).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + + // decimal128 + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal128_1->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(38,0).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal128_2->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(38,30).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal128_3->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(38,38).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + + // decimal256 + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal256_1->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(76,0).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal256_2->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(76,38).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal256_3->get_serde()}; + std::string data_file = test_data_dir + "/DECIMALV3(76,76).csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + std::cout << "loading test dataset done" << std::endl; + } + + void _common_test_all_types( + const std::string& function_name, + std::function + assert_callback) { + // insert from data csv and assert insert result + // decimal32 + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_1->get_serde()}; + check_data(test_result_dir + "/column_decimal32_1_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_2->get_serde()}; + check_data(test_result_dir + "/column_decimal32_2_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_3->get_serde()}; + check_data(test_result_dir + "/column_decimal32_3_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_4->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_4->get_serde()}; + check_data(test_result_dir + "/column_decimal32_4_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_5->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal32_5->get_serde()}; + check_data(test_result_dir + "/column_decimal32_5_" + function_name + ".out", columns, + serde, assert_callback); + } + + // decimal64 + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal64_1->get_serde()}; + check_data(test_result_dir + "/column_decimal64_1_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal64_2->get_serde()}; + check_data(test_result_dir + "/column_decimal64_2_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal64_3->get_serde()}; + check_data(test_result_dir + "/column_decimal64_3_" + function_name + ".out", columns, + serde, assert_callback); + } + + // decimal128 + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal128_1->get_serde()}; + check_data(test_result_dir + "/column_decimal128_1_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal128_2->get_serde()}; + check_data(test_result_dir + "/column_decimal128_2_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal128_3->get_serde()}; + check_data(test_result_dir + "/column_decimal128_3_" + function_name + ".out", columns, + serde, assert_callback); + } + + // decimal256 + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal256_1->get_serde()}; + check_data(test_result_dir + "/column_decimal256_1_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_2->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal256_2->get_serde()}; + check_data(test_result_dir + "/column_decimal256_2_" + function_name + ".out", columns, + serde, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_3->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_decimal256_3->get_serde()}; + check_data(test_result_dir + "/column_decimal256_3_" + function_name + ".out", columns, + serde, assert_callback); + } + } + + void hash_common_test( + const std::string& function_name, + std::function + assert_callback) { + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_1->get_serde()}; + check_data(test_result_dir + "/column_decimal32_1_" + function_name + ".out", columns, + serdes, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal64_1->get_serde()}; + check_data(test_result_dir + "/column_decimal64_1_" + function_name + ".out", columns, + serdes, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal128_1->get_serde()}; + check_data(test_result_dir + "/column_decimal128_1_" + function_name + ".out", columns, + serdes, assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal256_1->get_serde()}; + check_data(test_result_dir + "/column_decimal256_1_" + function_name + ".out", columns, + serdes, assert_callback); + } + } + template + void _column_decimal_common_test_with_type(const std::string& function_name, T callback) { + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_1->get_serde()}; + callback(Decimal32(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_2->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_2->get_serde()}; + callback(Decimal32(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_3->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_3->get_serde()}; + callback(Decimal32(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_4->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_4->get_serde()}; + callback(Decimal32(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal32_5->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_5->get_serde()}; + callback(Decimal32(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal64_1->get_serde()}; + callback(Decimal64(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_2->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal64_2->get_serde()}; + callback(Decimal64(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_3->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal64_3->get_serde()}; + callback(Decimal64(), columns); + } + + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal128_1->get_serde()}; + callback(Decimal128V3(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_2->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal128_2->get_serde()}; + callback(Decimal128V3(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_3->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal128_3->get_serde()}; + callback(Decimal128V3(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal256_1->get_serde()}; + callback(Decimal256(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_2->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal256_2->get_serde()}; + callback(Decimal256(), columns); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_3->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal256_3->get_serde()}; + callback(Decimal256(), columns); + } + } +}; + +TEST_F(ColumnDecimalTest, get_data_at_test) { + _column_decimal_common_test_with_type("get_data_at", assert_column_vector_get_data_at_callback); +} +TEST_F(ColumnDecimalTest, field_test) { + _column_decimal_common_test_with_type("field", assert_column_vector_field_callback); +} +TEST_F(ColumnDecimalTest, insert_from_test) { + _column_decimal_common_test_with_type("insert_from", assert_column_vector_insert_from_callback); +} +TEST_F(ColumnDecimalTest, insert_indices_from_test) { + _column_decimal_common_test_with_type("insert_indices_from", + assert_column_vector_insert_indices_from_callback); +} + +// decimal, vector, nullable, PredicateColumnType +TEST_F(ColumnDecimalTest, insert_many_fix_len_data_test) { + _column_decimal_common_test_with_type("insert_many_fix_len_data", + assert_column_vector_insert_many_fix_len_data_callback); +} + +TEST_F(ColumnDecimalTest, insert_many_raw_data_test) { + _column_decimal_common_test_with_type("insert_many_raw_data", + assert_column_vector_insert_many_raw_data_callback); +} + +TEST_F(ColumnDecimalTest, insert_data_test) { + _column_decimal_common_test_with_type("insert_data", assert_column_vector_insert_data_callback); +} + +TEST_F(ColumnDecimalTest, insert_default_test) { + _column_decimal_common_test_with_type("insert_default", + assert_column_vector_insert_default_callback); +} + +TEST_F(ColumnDecimalTest, insert_range_from_test) { + _column_decimal_common_test_with_type("insert_range_from", + assert_column_vector_insert_range_from_callback); +} + +TEST_F(ColumnDecimalTest, insert_many_defaults_test) { + _column_decimal_common_test_with_type("insert_many_defaults", + assert_column_vector_insert_many_defaults_callback); +} + +TEST_F(ColumnDecimalTest, insert_many_from_test) { + _column_decimal_common_test_with_type("insert_many_from", + assert_column_vector_insert_many_from_callback); +} + +TEST_F(ColumnDecimalTest, pop_back_test) { + _column_decimal_common_test_with_type("pop_back", assert_column_vector_pop_back_callback); +} + +TEST_F(ColumnDecimalTest, ser_deser_test) { + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_decimal32_1}); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_decimal64_1}); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_decimal128_1}); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_decimal256_1}); + } +} +TEST_F(ColumnDecimalTest, ser_deser_vec_test) { + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + ser_deser_vec(columns, {dt_decimal32_1}); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + ser_deser_vec(columns, {dt_decimal64_1}); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + ser_deser_vec(columns, {dt_decimal128_1}); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + ser_deser_vec(columns, {dt_decimal256_1}); + } +} + +TEST_F(ColumnDecimalTest, update_sip_hash_with_value_test) { + hash_common_test("update_sip_hash_with_value", assert_update_siphashes_with_value_callback); +} +TEST_F(ColumnDecimalTest, update_hashes_with_value_test) { + hash_common_test("update_hashes_with_value", assert_update_hashes_with_value_callback); +} +TEST_F(ColumnDecimalTest, update_crcs_with_value_test) { + std::string function_name = "update_crcs_with_value"; + { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal32_1->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_DECIMAL32); + assert_update_crc_hashes_callback( + columns, serdes, pts, + test_result_dir + "/column_decimal32_1_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_decimal64_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal64_1->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_DECIMAL64); + assert_update_crc_hashes_callback( + columns, serdes, pts, + test_result_dir + "/column_decimal64_1_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_decimal128_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal128_1->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_DECIMAL128I); + assert_update_crc_hashes_callback( + columns, serdes, pts, + test_result_dir + "/column_decimal128_1_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_decimal256_1->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_decimal256_1->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_DECIMAL256); + assert_update_crc_hashes_callback( + columns, serdes, pts, + test_result_dir + "/column_decimal256_1_" + function_name + ".out"); + } +} + +TEST_F(ColumnDecimalTest, update_xxHash_with_value_test) { + hash_common_test("update_xxHash_with_value", assert_update_xxHash_with_value_callback); +} +TEST_F(ColumnDecimalTest, update_crc_with_value_test) { + hash_common_test("update_crc_with_value", assert_update_crc_with_value_callback); +} + +TEST_F(ColumnDecimalTest, get_bool_test) { + _column_decimal_common_test_with_type("get_bool", assert_column_vector_get_bool_callback); +} +TEST_F(ColumnDecimalTest, get_int64_test) { + _column_decimal_common_test_with_type("get_int", assert_column_vector_get_int64_callback); +} +TEST_F(ColumnDecimalTest, filter_test) { + _column_decimal_common_test_with_type("filter", assert_column_vector_filter_callback); +} +TEST_F(ColumnDecimalTest, get_permutation_test) { + assert_column_permutations(*column_decimal64_1, dt_decimal64_1); + assert_column_permutations(*column_decimal32_1, dt_decimal32_1); + assert_column_permutations(*column_decimal32_2, dt_decimal32_2); + assert_column_permutations(*column_decimal32_3, dt_decimal32_3); + assert_column_permutations(*column_decimal32_4, dt_decimal32_4); + assert_column_permutations(*column_decimal32_5, dt_decimal32_5); + assert_column_permutations(*column_decimal64_1, dt_decimal64_1); + assert_column_permutations(*column_decimal64_2, dt_decimal64_2); + assert_column_permutations(*column_decimal64_3, dt_decimal64_3); + assert_column_permutations(*column_decimal128_1, dt_decimal128_1); + assert_column_permutations(*column_decimal128_2, dt_decimal128_2); + assert_column_permutations(*column_decimal128_3, dt_decimal128_3); + assert_column_permutations(*column_decimal256_1, dt_decimal256_1); + assert_column_permutations(*column_decimal256_2, dt_decimal256_2); + assert_column_permutations(*column_decimal256_3, dt_decimal256_3); +} + +TEST_F(ColumnDecimalTest, permute_test) { + MutableColumns columns; + columns.push_back(column_decimal32_1->get_ptr()); + columns.push_back(column_decimal64_1->get_ptr()); + columns.push_back(column_decimal128_1->get_ptr()); + columns.push_back(column_decimal256_1->get_ptr()); + assert_permute(columns, 0); + assert_permute(columns, 1); + assert_permute(columns, column_decimal32_1->size()); + assert_permute(columns, UINT64_MAX); +} + +TEST_F(ColumnDecimalTest, replicate_test) { + _column_decimal_common_test_with_type("replicate", assert_column_vector_replicate_callback); +} + +template +void insert_value_test(ColumnDecimal* src_col) { + auto col = src_col->clone_empty(); + auto* dec_col = assert_cast*>(col.get()); + for (size_t i = 0; i < src_col->size(); ++i) { + dec_col->insert_value(src_col->get_element(i)); + } + for (size_t i = 0; i < src_col->size(); ++i) { + EXPECT_EQ(dec_col->get_element(i), src_col->get_element(i)); + } +} + +TEST_F(ColumnDecimalTest, insert_value_test) { + insert_value_test(column_decimal32_1.get()); + insert_value_test(column_decimal64_1.get()); + insert_value_test(column_decimal128_1.get()); + insert_value_test(column_decimal256_1.get()); +} + +TEST_F(ColumnDecimalTest, replace_column_data_test) { + _column_decimal_common_test_with_type("replace_column_data", + assert_column_vector_replace_column_data_callback); +} + +TEST_F(ColumnDecimalTest, replace_column_null_data_test) { + _column_decimal_common_test_with_type("replace_column_null_data", + assert_column_vector_replace_column_null_data_callback); +} + +void assert_sort_column_callback(const MutableColumns& load_cols, DataTypeSerDeSPtrs serders, + const std::string& res_file_path = "") { + std::vector limits = {0, 10, 100, 1000, 10000, 100000}; + for (auto orig_limit : limits) { + for (const auto& col : load_cols) { + size_t size = col->size(); + auto limit = orig_limit; + if (limit >= size) { + limit = 0; + } + IColumn::Permutation perm(size); + for (size_t i = 0; i < size; ++i) { + perm[i] = i; + } + EqualFlags flags(size, 1); + EqualRange range {0, size}; + ColumnWithSortDescription column_with_sort_desc(col.get(), + SortColumnDescription(0, 1, 0)); + ColumnSorter sorter(column_with_sort_desc, limit); + col->sort_column(&sorter, flags, perm, range, true); + } + } +} + +} // namespace doris::vectorized diff --git a/be/test/vec/columns/column_ip_test.cpp b/be/test/vec/columns/column_ip_test.cpp index 5f56763c5aff1e4..c7e93cb49d8be43 100644 --- a/be/test/vec/columns/column_ip_test.cpp +++ b/be/test/vec/columns/column_ip_test.cpp @@ -305,7 +305,10 @@ TEST_F(ColumnIPTest, HashTest) { load_data_from_csv(serde, ip_cols, data_files[0], ';', {1, 2}); // update_hashes_with_value - check_data(ip_cols, serde, ';', {1, 2}, data_files[0], + auto root_dir = std::string(getenv("ROOT")); + auto test_data_dir = root_dir + "/be/test/data/vec/columns"; + auto test_result_dir = root_dir + "/be/test/expected_result/vec/columns"; + check_data(test_result_dir + "/column_ip_update_hashes_with_value1.out", ip_cols, serde, assert_update_hashes_with_value_callback); // CrcHash std::vector pts = {PrimitiveType::TYPE_IPV4, PrimitiveType::TYPE_IPV6}; diff --git a/be/test/vec/columns/column_vector_test.cpp b/be/test/vec/columns/column_vector_test.cpp new file mode 100644 index 000000000000000..c7ed180efac0faf --- /dev/null +++ b/be/test/vec/columns/column_vector_test.cpp @@ -0,0 +1,549 @@ +// 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. + +#include +#include +#include + +#include "vec/columns/column.h" +#include "vec/columns/columns_number.h" +#include "vec/columns/common_column_test.h" +#include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_factory.hpp" + +namespace doris::vectorized { +class ColumnVectorTest : public CommonColumnTest { +protected: + std::string test_data_dir; + std::string test_result_dir; + void SetUp() override { + auto root_dir = std::string(getenv("ROOT")); + test_data_dir = root_dir + "/be/test/data/vec/columns"; + test_result_dir = root_dir + "/be/test/expected_result/vec/columns"; + + column_int8 = ColumnInt8::create(); + column_int16 = ColumnInt16::create(); + column_int32 = ColumnInt32::create(); + column_int64 = ColumnInt64::create(); + column_int128 = ColumnInt128::create(); + + column_uint8 = ColumnUInt8::create(); + column_uint16 = ColumnUInt16::create(); + column_uint32 = ColumnUInt32::create(); + column_uint64 = ColumnUInt64::create(); + + load_columns_data(); + } + DataTypePtr dt_int8 = + DataTypeFactory::instance().create_data_type(FieldType::OLAP_FIELD_TYPE_TINYINT, 0, 0); + DataTypePtr dt_int16 = + DataTypeFactory::instance().create_data_type(FieldType::OLAP_FIELD_TYPE_SMALLINT, 0, 0); + DataTypePtr dt_int32 = + DataTypeFactory::instance().create_data_type(FieldType::OLAP_FIELD_TYPE_INT, 0, 0); + DataTypePtr dt_int64 = + DataTypeFactory::instance().create_data_type(FieldType::OLAP_FIELD_TYPE_BIGINT, 0, 0); + DataTypePtr dt_int128 = + DataTypeFactory::instance().create_data_type(FieldType::OLAP_FIELD_TYPE_LARGEINT, 0, 0); + + DataTypePtr dt_uint8 = DataTypeFactory::instance().create_data_type(TypeIndex::UInt8); + DataTypePtr dt_uint16 = DataTypeFactory::instance().create_data_type(TypeIndex::UInt16); + DataTypePtr dt_uint32 = DataTypeFactory::instance().create_data_type(TypeIndex::UInt32); + DataTypePtr dt_uint64 = DataTypeFactory::instance().create_data_type(TypeIndex::UInt64); + + ColumnInt8::MutablePtr column_int8; + ColumnInt16::MutablePtr column_int16; + ColumnInt32::MutablePtr column_int32; + ColumnInt64::MutablePtr column_int64; + ColumnInt128::MutablePtr column_int128; + + ColumnUInt8::MutablePtr column_uint8; + ColumnUInt16::MutablePtr column_uint16; + ColumnUInt32::MutablePtr column_uint32; + ColumnUInt64::MutablePtr column_uint64; + + void load_columns_data() { + std::cout << "loading test dataset" << std::endl; + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int8->get_serde()}; + std::string data_file = test_data_dir + "/TINYINT.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_uint8->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint8->get_serde()}; + std::string data_file = test_data_dir + "/TINYINT_UNSIGNED.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int16->get_serde()}; + std::string data_file = test_data_dir + "/SMALLINT.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_uint16->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint16->get_serde()}; + std::string data_file = test_data_dir + "/SMALLINT_UNSIGNED.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int32->get_serde()}; + std::string data_file = test_data_dir + "/INT.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_uint32->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint32->get_serde()}; + std::string data_file = test_data_dir + "/INT_UNSIGNED.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int64->get_serde()}; + std::string data_file = test_data_dir + "/BIGINT.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_uint64->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint64->get_serde()}; + std::string data_file = test_data_dir + "/BIGINT_UNSIGNED.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int128->get_serde()}; + std::string data_file = test_data_dir + "/LARGEINT.csv"; + load_columns_data_from_file(columns, serde, ';', {0}, data_file); + } + std::cout << "loading test dataset done" << std::endl; + } + + void _common_test_all_types( + const std::string& function_name, + std::function + assert_callback) { + // insert from data csv and assert insert result + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int8->get_serde()}; + check_data(test_result_dir + "/column_int8_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int16->get_serde()}; + check_data(test_result_dir + "/column_int16_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int32->get_serde()}; + check_data(test_result_dir + "/column_int32_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int64->get_serde()}; + check_data(test_result_dir + "/column_int64_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_int128->get_serde()}; + check_data(test_result_dir + "/column_int128_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_uint8->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint8->get_serde()}; + check_data(test_result_dir + "/column_uint8_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_uint16->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint16->get_serde()}; + check_data(test_result_dir + "/column_uint16_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_uint32->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint32->get_serde()}; + check_data(test_result_dir + "/column_uint32_" + function_name + ".out", columns, serde, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_uint64->get_ptr()); + DataTypeSerDeSPtrs serde = {dt_uint64->get_serde()}; + check_data(test_result_dir + "/column_uint64_" + function_name + ".out", columns, serde, + assert_callback); + } + } + + void hash_common_test( + const std::string& function_name, + std::function + assert_callback) { + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int8->get_serde()}; + check_data(test_result_dir + "/column_int8_" + function_name + ".out", columns, serdes, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int16->get_serde()}; + check_data(test_result_dir + "/column_int16_" + function_name + ".out", columns, serdes, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int32->get_serde()}; + check_data(test_result_dir + "/column_int32_" + function_name + ".out", columns, serdes, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int64->get_serde()}; + check_data(test_result_dir + "/column_int64_" + function_name + ".out", columns, serdes, + assert_callback); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int128->get_serde()}; + check_data(test_result_dir + "/column_int128_" + function_name + ".out", columns, + serdes, assert_callback); + } + } + + template + void _column_vector_common_test(const std::string& function_name, T callback) { + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + callback((Int8)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int16->get_serde()}; + callback((Int16)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int32->get_serde()}; + callback((Int32)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int64->get_serde()}; + callback((Int64)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int128->get_serde()}; + callback((Int128)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_uint8->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_uint8->get_serde()}; + callback((UInt8)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_uint16->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_uint16->get_serde()}; + callback((UInt16)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_uint32->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_uint32->get_serde()}; + callback((UInt32)0, columns); + } + { + MutableColumns columns; + columns.push_back(column_uint64->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_uint64->get_serde()}; + callback((UInt64)0, columns); + } + } +}; + +TEST_F(ColumnVectorTest, get_data_at_test) { + _column_vector_common_test("get_data_at", assert_column_vector_get_data_at_callback); +} + +TEST_F(ColumnVectorTest, field_test) { + _column_vector_common_test("field", assert_column_vector_field_callback); +} +TEST_F(ColumnVectorTest, insert_from_test) { + // insert from data csv and assert insert result + _column_vector_common_test("insert_from", assert_column_vector_insert_from_callback); +} +TEST_F(ColumnVectorTest, insert_data_test) { + _column_vector_common_test("insert_data", assert_column_vector_insert_data_callback); +} +TEST_F(ColumnVectorTest, insert_many_vals_test) { + _column_vector_common_test("insert_many_vals", assert_column_vector_insert_many_vals_callback); +} +TEST_F(ColumnVectorTest, insert_many_from_test) { + _column_vector_common_test("insert_many_from", assert_column_vector_insert_many_from_callback); +} +TEST_F(ColumnVectorTest, insert_range_of_integer_test) { + _column_vector_common_test("insert_range_of_integer", + assert_column_vector_insert_range_of_integer_callback); +} +// void insert_date_column(const char* data_ptr, size_t num) { +// decimal, vector, nullable, PredicateColumnType +TEST_F(ColumnVectorTest, insert_many_fix_len_data_test) { + _column_vector_common_test("insert_many_fix_len_data", + assert_column_vector_insert_many_fix_len_data_callback); +} +TEST_F(ColumnVectorTest, insert_many_raw_data_test) { + _column_vector_common_test("insert_many_raw_data", + assert_column_vector_insert_many_raw_data_callback); +} +TEST_F(ColumnVectorTest, insert_default_test) { + _column_vector_common_test("insert_default", assert_column_vector_insert_default_callback); +} +TEST_F(ColumnVectorTest, insert_many_defaults_test) { + _column_vector_common_test("insert_many_defaults", + assert_column_vector_insert_many_defaults_callback); +} +TEST_F(ColumnVectorTest, ser_deser_test) { + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_int8}); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_int16}); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_int32}); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_int64}); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + ser_deserialize_with_arena_impl(columns, {dt_int128}); + } +} +TEST_F(ColumnVectorTest, ser_deser_vec_test) { + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + ser_deser_vec(columns, {dt_int8}); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + ser_deser_vec(columns, {dt_int16}); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + ser_deser_vec(columns, {dt_int32}); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + ser_deser_vec(columns, {dt_int64}); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + ser_deser_vec(columns, {dt_int128}); + } +} +TEST_F(ColumnVectorTest, update_xxHash_with_value_test) { + hash_common_test("update_xxHash_with_value", assert_update_xxHash_with_value_callback); +} +TEST_F(ColumnVectorTest, update_crc_with_value_test) { + hash_common_test("update_crc_with_value", assert_update_crc_with_value_callback); +} +TEST_F(ColumnVectorTest, update_sip_hash_with_value_test) { + hash_common_test("update_sip_hash_with_value", assert_update_siphashes_with_value_callback); +} +TEST_F(ColumnVectorTest, update_hashes_with_value_test) { + hash_common_test("update_hashes_with_value", assert_update_hashes_with_value_callback); +} +TEST_F(ColumnVectorTest, update_crcs_with_value_test) { + std::string function_name = "update_crcs_with_value"; + { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int8->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_TINYINT); + assert_update_crc_hashes_callback( + columns, serdes, pts, test_result_dir + "/column_int8_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_int16->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int16->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_SMALLINT); + assert_update_crc_hashes_callback( + columns, serdes, pts, test_result_dir + "/column_int16_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_int32->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int32->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_INT); + assert_update_crc_hashes_callback( + columns, serdes, pts, test_result_dir + "/column_int32_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_int64->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int64->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_BIGINT); + assert_update_crc_hashes_callback( + columns, serdes, pts, test_result_dir + "/column_int64_" + function_name + ".out"); + } + { + MutableColumns columns; + columns.push_back(column_int128->get_ptr()); + DataTypeSerDeSPtrs serdes = {dt_int128->get_serde()}; + std::vector pts(columns.size(), PrimitiveType::TYPE_LARGEINT); + assert_update_crc_hashes_callback( + columns, serdes, pts, test_result_dir + "/column_int128_" + function_name + ".out"); + } +} +template +void insert_value_test(ColumnVector* src_col) { + auto clone_col = src_col->clone_empty(); + auto* col = assert_cast*>(clone_col.get()); + for (size_t i = 0; i < src_col->size(); ++i) { + col->insert_value(src_col->get_element(i)); + } + for (size_t i = 0; i < src_col->size(); ++i) { + EXPECT_EQ(col->get_element(i), src_col->get_element(i)); + } +} + +TEST_F(ColumnVectorTest, insert_value_test) { + insert_value_test(column_int8.get()); + insert_value_test(column_int16.get()); + insert_value_test(column_int32.get()); + insert_value_test(column_int64.get()); + insert_value_test(column_int128.get()); + + insert_value_test(column_uint8.get()); + insert_value_test(column_uint16.get()); + insert_value_test(column_uint32.get()); + insert_value_test(column_uint64.get()); +} + +TEST_F(ColumnVectorTest, get_bool_test) { + _column_vector_common_test("get_bool", assert_column_vector_get_bool_callback); +} +TEST_F(ColumnVectorTest, get_int64_test) { + _column_vector_common_test("get_int", assert_column_vector_get_int64_callback); +} +TEST_F(ColumnVectorTest, insert_range_from_test) { + _column_vector_common_test("insert_range_from", + assert_column_vector_insert_range_from_callback); +} +TEST_F(ColumnVectorTest, insert_indices_from_test) { + _column_vector_common_test("insert_indices_from", + assert_column_vector_insert_indices_from_callback); +} + +TEST_F(ColumnVectorTest, pop_back_test) { + _column_vector_common_test("pop_back", assert_column_vector_pop_back_callback); +} + +TEST_F(ColumnVectorTest, filter_test) { + _column_vector_common_test("filter", assert_column_vector_filter_callback); +} +TEST_F(ColumnVectorTest, get_permutation_test) { + assert_column_permutations(*column_int8, dt_int8); + assert_column_permutations(*column_int16, dt_int16); + assert_column_permutations(*column_int32, dt_int32); + assert_column_permutations(*column_int64, dt_int64); + assert_column_permutations(*column_int128, dt_int128); +} + +TEST_F(ColumnVectorTest, permute_test) { + MutableColumns columns; + columns.push_back(column_int8->get_ptr()); + columns.push_back(column_int16->get_ptr()); + columns.push_back(column_int32->get_ptr()); + columns.push_back(column_int64->get_ptr()); + columns.push_back(column_int128->get_ptr()); + assert_permute(columns, 0); + assert_permute(columns, 1); + assert_permute(columns, column_int8->size()); + assert_permute(columns, UINT64_MAX); +} + +TEST_F(ColumnVectorTest, replicate_test) { + _column_vector_common_test("replicate", assert_column_vector_replicate_callback); +} + +TEST_F(ColumnVectorTest, replace_column_data_test) { + _column_vector_common_test("replace_column_data", + assert_column_vector_replace_column_data_callback); +} + +TEST_F(ColumnVectorTest, replace_column_null_data_test) { + _column_vector_common_test("replace_column_null_data", + assert_column_vector_replace_column_null_data_callback); +} + +} // namespace doris::vectorized \ No newline at end of file diff --git a/be/test/vec/columns/common_column_test.h b/be/test/vec/columns/common_column_test.h index b70ac660136216b..7b2ad35ee26b604 100644 --- a/be/test/vec/columns/common_column_test.h +++ b/be/test/vec/columns/common_column_test.h @@ -19,11 +19,16 @@ #include #include +#include #include #include #include +#include +#include #include "olap/schema.h" +#include "testutil/test_util.h" +#include "util/simd/bits.h" #include "vec/columns/column.h" #include "vec/columns/column_array.h" #include "vec/columns/column_map.h" @@ -43,7 +48,18 @@ // namespace doris::vectorized { -static bool gen_check_data_in_assert = true; +template +std::string join_ints(const std::vector& nums) { + if (nums.empty()) { + return "[]"; + } + + std::ostringstream oss; + oss << "["; + std::copy(nums.begin(), nums.end() - 1, std::ostream_iterator(oss, ",")); + oss << nums.back() << "]"; + return oss.str(); +} class CommonColumnTest : public ::testing::Test { protected: @@ -90,14 +106,14 @@ class CommonColumnTest : public ::testing::Test { //// this is very helpful function to check data in column against expected results according different function in assert function //// such as run regress tests - //// if gen_check_data_in_assert is true, we will generate a file for check data, otherwise we will read the file to check data + //// if FLAGS_gen_out is true, we will generate a file for check data, otherwise we will read the file to check data //// so the key point is we should how we write assert callback function to check data, /// and when check data is generated, we should check result to statisfy the semantic of the function - static void check_res_file(string function_name, std::vector>& res) { - string filename = "./res_" + function_name + ".csv"; - if (gen_check_data_in_assert) { - std::ofstream res_file(filename); - std::cout << "gen check data: " << res.size() << " with file: " << filename + static void check_res_file(const string& res_file_path, + std::vector>& res) { + if (FLAGS_gen_out) { + std::ofstream res_file(res_file_path); + std::cout << "gen check data: " << res.size() << " with file: " << res_file_path << std::endl; if (!res_file.is_open()) { throw std::ios_base::failure("Failed to open file."); @@ -117,11 +133,12 @@ class CommonColumnTest : public ::testing::Test { res_file.close(); } else { // we read generate file to check result - std::cout << "check data: " << res.size() << " with file: " << filename << std::endl; - std::ifstream file(filename); + std::cout << "check data: " << res.size() << " with file: " << res_file_path + << std::endl; + std::ifstream file(res_file_path); if (!file) { throw doris::Exception(ErrorCode::INVALID_ARGUMENT, "can not open the file: {} ", - filename); + res_file_path); } std::string line; @@ -229,6 +246,38 @@ class CommonColumnTest : public ::testing::Test { } ////================================================================================================================== + void load_columns_data_from_file(MutableColumns& columns, DataTypeSerDeSPtrs serders, + char col_spliter, std::set idxes, + const std::string& column_data_file) { + ASSERT_EQ(serders.size(), columns.size()); + // Load column data and expected data from CSV files + std::vector> res; + struct stat buff; + if (stat(column_data_file.c_str(), &buff) == 0) { + if (S_ISREG(buff.st_mode)) { + // file + load_data_from_csv(serders, columns, column_data_file, col_spliter, idxes); + } else if (S_ISDIR(buff.st_mode)) { + // dir + std::filesystem::path fs_path(column_data_file); + for (const auto& entry : std::filesystem::directory_iterator(fs_path)) { + std::string file_path = entry.path().string(); + std::cout << "load data from file: " << file_path << std::endl; + load_data_from_csv(serders, columns, file_path, col_spliter, idxes); + } + } + } + } + + void check_data(const std::string& res_file_path, const MutableColumns& columns, + DataTypeSerDeSPtrs serders, + std::function + assert_callback) { + ASSERT_EQ(serders.size(), columns.size()); + assert_callback(columns, serders, res_file_path); + } + void check_columns(MutableColumns& columns, DataTypeSerDeSPtrs serders, DataTypes dataTypes, char col_spliter, std::set idxes, const std::string& column_data_file, const std::string& check_data_file, MutableColumns& check_columns, @@ -1520,15 +1569,16 @@ class CommonColumnTest : public ::testing::Test { // Column Hash Interfaces: // update_hashes_with_value (size_t, size_t, Hashes &hashes) const : which inner just use xxhash for column data - static void assert_update_hashes_with_value_callback(MutableColumns& load_cols, - DataTypeSerDeSPtrs serders) { + static void assert_update_hashes_with_value_callback(const MutableColumns& load_cols, + DataTypeSerDeSPtrs serders, + const std::string& res_file_path = "") { // Create an empty column to verify `update_hashes_with_value` functionality // check update_hashes_with_value with different hashes std::vector> res; auto option = DataTypeSerDe::FormatOptions(); for (size_t i = 0; i < load_cols.size(); ++i) { - auto& source_column = load_cols[i]; + const auto& source_column = load_cols[i]; std::vector xx_hash_vals(source_column->size()); std::cout << "now we are in update_hashes_with_value column : " << load_cols[i]->get_name() << " for column size : " << source_column->size() @@ -1536,29 +1586,28 @@ class CommonColumnTest : public ::testing::Test { auto* __restrict xx_hashes = xx_hash_vals.data(); EXPECT_NO_FATAL_FAILURE(source_column->update_hashes_with_value(xx_hashes)); // check after update_hashes_with_value: 1 in selector present the load cols data is selected and data should be default value - auto ser_col = ColumnString::create(); - ser_col->reserve(source_column->size()); - VectorBufferWriter buffer_writer(*ser_col.get()); std::vector data; + std::ostringstream oss; + data.push_back("column: " + source_column->get_name() + - " with hashes: " + std::to_string(*xx_hashes) + - " with ptr: " + std::to_string(source_column->size())); + " with hashes: " + join_ints(xx_hash_vals)); res.push_back(data); } - check_res_file("update_hashes_with_value", res); + check_res_file(res_file_path.empty() ? "update_hashes_with_value" : res_file_path, res); } //virtual void //update_hashes (size_t, size_t, Hashes &hashes) const - static void assert_update_crc_hashes_callback(MutableColumns& load_cols, + static void assert_update_crc_hashes_callback(const MutableColumns& load_cols, DataTypeSerDeSPtrs serders, - std::vector pts) { + std::vector pts, + const std::string& res_file_path = "") { // Create an empty column to verify `update_hashes` functionality // check update_hashes with different hashes std::vector> res; auto option = DataTypeSerDe::FormatOptions(); for (size_t i = 0; i < load_cols.size(); ++i) { - auto& source_column = load_cols[i]; + const auto& source_column = load_cols[i]; std::vector crc_hash_vals(source_column->size()); std::cout << "now we are in update_hashes column : " << load_cols[i]->get_name() << " for column size : " << source_column->size() << std::endl; @@ -1567,14 +1616,12 @@ class CommonColumnTest : public ::testing::Test { // check after update_hashes: 1 in selector present the load cols data is selected and data should be default value auto ser_col = ColumnString::create(); ser_col->reserve(source_column->size()); - VectorBufferWriter buffer_writer(*ser_col.get()); std::vector data; data.push_back("column: " + source_column->get_name() + - " with hashes: " + std::to_string(*crc_hash_vals.data()) + - " with ptr: " + std::to_string(source_column->size())); + " with hashes: " + join_ints(crc_hash_vals)); res.push_back(data); } - check_res_file("update_crcs_hashes", res); + check_res_file(res_file_path.empty() ? "update_crcs_hashes" : res_file_path, res); } // column size changed calculation: @@ -1683,11 +1730,89 @@ class CommonColumnTest : public ::testing::Test { EXPECT_EQ(new_col->size(), expect_size); } + // virtual void + // update_hash_with_value(size_t n, SipHash& hash) + // siphash we still keep siphash for storge layer because we use it in + // EngineChecksumTask::_compute_checksum() and can not to remove it + static void assert_update_siphashes_with_value_callback(const MutableColumns& load_cols, + DataTypeSerDeSPtrs serders, + const std::string& res_file_path = "") { + // Create an empty column to verify `update_hashes` functionality + // check update_hashes with different hashes + std::vector> res; + auto option = DataTypeSerDe::FormatOptions(); + for (size_t i = 0; i < load_cols.size(); ++i) { + const auto& source_column = load_cols[i]; + SipHash hash; + LOG(INFO) << "now we are in update_hashes column : " << load_cols[i]->get_name() + << " for column size : " << source_column->size(); + for (size_t j = 0; j < source_column->size(); ++j) { + source_column->update_hash_with_value(j, hash); + } + auto ser_col = ColumnString::create(); + ser_col->reserve(source_column->size()); + VectorBufferWriter buffer_writer(*ser_col.get()); + std::vector data; + data.push_back("column: " + source_column->get_name() + + " with hashes: " + std::to_string(hash.get64()) + + " with ptr: " + std::to_string(source_column->size())); + res.push_back(data); + } + check_res_file(res_file_path.empty() ? "update_siphashes_hashes" : res_file_path, res); + } + + static void assert_update_xxHash_with_value_callback(const MutableColumns& load_cols, + DataTypeSerDeSPtrs serders, + const std::string& res_file_path = "") { + // Create an empty column to verify `update_hashes` functionality + // check update_hashes with different hashes + std::vector> res; + auto option = DataTypeSerDe::FormatOptions(); + for (size_t i = 0; i < load_cols.size(); ++i) { + const auto& source_column = load_cols[i]; + uint64_t hash = 0; + source_column->update_xxHash_with_value(0, source_column->size(), hash, nullptr); + auto ser_col = ColumnString::create(); + ser_col->reserve(source_column->size()); + VectorBufferWriter buffer_writer(*ser_col.get()); + std::vector data; + data.push_back("column: " + source_column->get_name() + + " with hashes: " + std::to_string(hash) + + " with ptr: " + std::to_string(source_column->size())); + res.push_back(data); + } + check_res_file(res_file_path.empty() ? "update_xxHash_with_value" : res_file_path, res); + } + + static void assert_update_crc_with_value_callback(const MutableColumns& load_cols, + DataTypeSerDeSPtrs serders, + const std::string& res_file_path = "") { + // Create an empty column to verify `update_hashes` functionality + // check update_hashes with different hashes + std::vector> res; + auto option = DataTypeSerDe::FormatOptions(); + for (size_t i = 0; i < load_cols.size(); ++i) { + const auto& source_column = load_cols[i]; + uint32_t hash = 0; + source_column->update_crc_with_value(0, source_column->size(), hash, nullptr); + auto ser_col = ColumnString::create(); + ser_col->reserve(source_column->size()); + VectorBufferWriter buffer_writer(*ser_col.get()); + std::vector data; + data.push_back("column: " + source_column->get_name() + + " with hashes: " + std::to_string(hash) + + " with ptr: " + std::to_string(source_column->size())); + res.push_back(data); + } + check_res_file(res_file_path.empty() ? "update_xxHash_with_value" : res_file_path, res); + } + //serialize and deserialize which usually used in AGG function: // serialize_value_into_arena, deserialize_and_insert_from_arena (called by AggregateFunctionDistinctMultipleGenericData, group_array_intersect, nested-types serder like: DataTypeArraySerDe::write_one_cell_to_jsonb) - void ser_deserialize_with_arena_impl(MutableColumns& columns, const DataTypes& data_types) { + void ser_deserialize_with_arena_impl(const MutableColumns& columns, + const DataTypes& data_types) { size_t rows = columns[0]->size(); - for (auto& column : columns) { + for (const auto& column : columns) { if (column->size() > rows) { std::cerr << "Column size mismatch: " << column->size() << " vs " << rows << std::endl; @@ -1856,7 +1981,7 @@ class CommonColumnTest : public ::testing::Test { check_res_file("filter_by_selector-" + col->get_name(), res); } - void assert_permutations_with_limit(const IColumn::Permutation& lhs, + void assert_permutations_with_limit(const IColumn& column, const IColumn::Permutation& lhs, const IColumn::Permutation& rhs, size_t limit) { std::cout << "lhs size: " << lhs.size() << " rhs size: " << rhs.size() << " limit: " << limit << std::endl; @@ -1865,7 +1990,8 @@ class CommonColumnTest : public ::testing::Test { } for (size_t i = 0; i < limit; ++i) { - ASSERT_EQ(lhs[i], rhs[i]) << "i: " << i << "limit: " << limit; + ASSERT_EQ(column.compare_at(lhs[i], rhs[i], column, -1), 0) + << "i: " << i << ", limit: " << limit; } } @@ -1950,24 +2076,639 @@ class CommonColumnTest : public ::testing::Test { } // step3. check the permutation result - assert_permutations_with_limit(actual_permutation, expected_permutation, limit); + assert_permutations_with_limit(column, actual_permutation, expected_permutation, limit); std::cout << "assertColumnPermutation done" << std::endl; } + void check_permute(const IColumn& column, const IColumn::Permutation& permutation, size_t limit, + size_t expected_size) { + auto res_col = column.permute(permutation, limit); + EXPECT_EQ(res_col->size(), expected_size); + for (size_t j = 0; j < expected_size; ++j) { + EXPECT_EQ(res_col->compare_at(j, permutation[j], column, -1), 0); + } + } // permute() // 1/ Key topN set read_orderby_key_reverse = true; SegmentIterator::next_batch will permute the column by the given permutation(which reverse the rows of current segment) // should check rows with the given permutation - void assert_permute(MutableColumns& cols, IColumn::Permutation& permutation, size_t num_rows) { - std::vector res_permuted; - for (auto& col : cols) { - res_permuted.emplace_back(col->permute(permutation, num_rows)); + void assert_permute(MutableColumns& cols, size_t num_rows) { + for (const auto& col : cols) { + size_t expected_size = num_rows ? std::min(col->size(), num_rows) : col->size(); + { + IColumn::Permutation permutation; + stable_get_column_permutation(*col, true, col->size(), -1, permutation); + check_permute(*col, permutation, num_rows, expected_size); + } + { + IColumn::Permutation permutation(col->size()); + std::iota(permutation.begin(), permutation.end(), + IColumn::Permutation::value_type(0)); + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(permutation.begin(), permutation.end(), g); + check_permute(*col, permutation, num_rows, expected_size); + } + } + } + + void assert_sort_internal_callback(MutableColumns& cols, size_t num_rows) { + for (const auto& col : cols) { + size_t num_rows = col->size(); + for (size_t cursor_rid = 0; cursor_rid < num_rows; ++cursor_rid) { + IColumn::Filter filter(num_rows); + for (size_t i = 0; i < num_rows; ++i) { + filter[i] = 0; + } + + std::vector cmp_res(num_rows, 0); + + col->compare_internal(cursor_rid, *col, 1, 1, cmp_res, filter.data()); + for (size_t i = 0; i < num_rows; ++i) { + if (i == cursor_rid) { + EXPECT_EQ(cmp_res[i], 1); + } else { + } + } + } } - // check the permutation result for rowsize - size_t res_rows = res_permuted[0]->size(); - for (auto& col : res_permuted) { - EXPECT_EQ(col->size(), res_rows); + } +}; +auto assert_column_vector_field_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + auto assert_col = source_column->clone_empty(); + for (size_t i = 0; i != src_size; ++i) { + Field f; + source_column->get(i, f); + assert_col->insert(f); + } + for (size_t i = 0; i != src_size; ++i) { + Field f; + assert_col->get(i, f); + ASSERT_EQ(f.get(), col_vec_src->get_element(i)); } } }; +auto assert_column_vector_get_data_at_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + const auto& col_raw_data = col_vec_src->get_data().data(); + auto src_size = source_column->size(); + for (size_t i = 0; i != src_size; ++i) { + auto str_value = source_column->get_data_at(i).to_string(); + ASSERT_EQ(str_value, std::string((const char*)(col_raw_data + i), sizeof(T))); + } + } +}; +auto assert_column_vector_insert_many_vals_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast*>(source_column.get()); + auto src_size = source_column->size(); + std::vector src_data_indices = {0, src_size, src_size - 1, (src_size + 1) >> 1}; + + auto test_func = [&](size_t clone_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast*>(target_column.get()); + for (auto pos = src_data_indices.begin(); pos < src_data_indices.end(); ++pos) { + if (*pos >= src_size) { + continue; + } + for (auto n : insert_vals_count) { + col_vec_target->resize(actual_clone_count); + col_vec_target->insert_many_vals(col_vec_src->get_element(*pos), n); + EXPECT_EQ(col_vec_target->size(), actual_clone_count + n); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + for (; i < col_vec_target->size(); ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(*pos)); + } + } + } + }; + test_func(0); + test_func(10); + } +}; + +auto assert_column_vector_insert_from_callback = [](auto x, const MutableColumns& load_cols) { + // Create an empty column to verify `insert_from` functionality + MutableColumns verify_columns; + for (const auto& col : load_cols) { + verify_columns.push_back(col->clone_empty()); + } + // Insert data from `load_cols` to `verify_columns` using `insert_from` + for (size_t i = 0; i < load_cols.size(); ++i) { + const auto& source_column = load_cols[i]; + auto& target_column = verify_columns[i]; + for (size_t j = 0; j < source_column->size(); ++j) { + target_column->insert_from(*source_column, j); + } + ASSERT_EQ(target_column->size(), source_column->size()); + for (size_t j = 0; j < target_column->size(); ++j) { + ASSERT_EQ(target_column->get_data_at(j), source_column->get_data_at(j)); + } + } +}; +auto assert_column_vector_insert_data_callback = [](auto x, const MutableColumns& load_cols) { + // Create an empty column to verify `insert_from` functionality + MutableColumns verify_columns; + for (const auto& col : load_cols) { + verify_columns.push_back(col->clone_empty()); + } + // Insert data from `load_cols` to `verify_columns` using `insert_from` + for (size_t i = 0; i < load_cols.size(); ++i) { + const auto& source_column = load_cols[i]; + auto& target_column = verify_columns[i]; + for (size_t j = 0; j < source_column->size(); ++j) { + const auto data_at = source_column->get_data_at(j); + target_column->insert_data(data_at.data, data_at.size); + } + ASSERT_EQ(target_column->size(), source_column->size()); + for (size_t j = 0; j < target_column->size(); ++j) { + ASSERT_EQ(target_column->get_data_at(j), source_column->get_data_at(j)); + } + } +}; +auto assert_column_vector_insert_many_from_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector src_data_indices = {0, src_size, src_size - 1, (src_size + 1) >> 1}; + + auto test_func = [&](size_t clone_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast(target_column.get()); + for (auto pos = src_data_indices.begin(); pos < src_data_indices.end(); ++pos) { + if (*pos >= src_size) { + continue; + } + for (auto n : insert_vals_count) { + col_vec_target->resize(actual_clone_count); + col_vec_target->insert_many_from(*source_column, *pos, n); + EXPECT_EQ(col_vec_target->size(), actual_clone_count + n); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + for (; i < col_vec_target->size(); ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(*pos)); + } + } + } + }; + test_func(0); + test_func(10); + } +}; + +auto assert_column_vector_insert_indices_from_callback = [](auto x, + const MutableColumns& load_cols) { + // Test case 1: Empty source column + // Test case 2: Empty indices array + // Test case 3: Normal case with multiple indices + // Select elements in different order + // Test case 4: Duplicate indices + + // Insert data from `load_cols` to `verify_columns` using `insert_indices_from` + for (const auto& source_column : load_cols) { + auto src_size = source_column->size(); + + // Test case 1: Empty target column + { + auto target_column = source_column->clone_empty(); + std::vector indices; + + // empty indices array + target_column->insert_indices_from(*source_column, indices.data(), indices.data()); + EXPECT_EQ(target_column->size(), 0); + } + { + auto target_column = source_column->clone_empty(); + // insert all elements from source column + std::vector indices(src_size); + std::iota(indices.begin(), indices.end(), 0); + target_column->insert_indices_from(*source_column, indices.data(), + indices.data() + src_size); + EXPECT_EQ(target_column->size(), src_size); + for (size_t j = 0; j < target_column->size(); ++j) { + EXPECT_EQ(target_column->get_data_at(j), source_column->get_data_at(j)); + } + } + { + // Normal case with random indices + auto target_column = source_column->clone_empty(); + std::vector indices(src_size); + std::iota(indices.begin(), indices.end(), 0); + std::random_device rd; + std::mt19937 g(rd()); + std::shuffle(indices.begin(), indices.end(), g); + target_column->insert_indices_from(*source_column, indices.data(), + indices.data() + indices.size()); + EXPECT_EQ(target_column->size(), indices.size()); + for (size_t j = 0; j < target_column->size(); ++j) { + EXPECT_EQ(target_column->get_data_at(j), source_column->get_data_at(indices[j])); + } + } + { + // Normal case with duplicate indices + auto target_column = source_column->clone_empty(); + std::vector indices = {0, uint32_t(source_column->size() - 1), + uint32_t((source_column->size() + 1) >> 1), + uint32_t(source_column->size() - 1), 0}; + target_column->insert_indices_from(*source_column, indices.data(), + indices.data() + indices.size()); + EXPECT_EQ(target_column->size(), indices.size()); + for (size_t j = 0; j < target_column->size(); ++j) { + EXPECT_EQ(target_column->get_data_at(j), source_column->get_data_at(indices[j])); + } + } + } +}; + +auto assert_column_vector_insert_range_of_integer_callback = [](auto x, + const MutableColumns& load_cols) { + using T = decltype(x); + MutableColumns verify_columns; + for (const auto& col : load_cols) { + verify_columns.push_back(col->clone()); + } + for (size_t i = 0; i < load_cols.size(); ++i) { + const auto& source_column = load_cols[i]; + auto& target_column = verify_columns[i]; + auto src_size = source_column->size(); + auto* col_vec_target = assert_cast*>(target_column.get()); + auto* col_vec_src = assert_cast*>(source_column.get()); + T begin {0}; + T end {11}; + col_vec_target->insert_range_of_integer(begin, end); + size_t j = 0; + for (; j < src_size; ++j) { + EXPECT_EQ(col_vec_target->get_element(j), col_vec_src->get_element(j)); + } + for (size_t k = 0; j < col_vec_target->size(); ++j, ++k) { + EXPECT_EQ(col_vec_target->get_element(j), begin + k); + } + } +}; +auto assert_column_vector_insert_many_fix_len_data_callback = [](auto x, + const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector src_data_indices = {0, src_size - 1, (src_size + 1) >> 1}; + + auto test_func = [&](size_t clone_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast(target_column.get()); + for (auto pos = src_data_indices.begin(); pos < src_data_indices.end(); ++pos) { + if (*pos >= src_size) { + continue; + } + for (auto n : insert_vals_count) { + col_vec_target->resize(actual_clone_count); + size_t actual_insert_count = std::min(n, src_size - *pos); + col_vec_target->insert_many_fix_len_data(source_column->get_data_at(*pos).data, + actual_insert_count); + auto target_size = col_vec_target->size(); + EXPECT_EQ(target_size, actual_clone_count + actual_insert_count); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + for (size_t j = *pos; i < target_size; ++i, ++j) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(j)); + } + } + } + }; + test_func(0); + test_func(10); + } +}; +auto assert_column_vector_insert_many_raw_data_callback = [](auto x, + const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector src_data_indices = {0, src_size - 1, (src_size + 1) >> 1}; + + auto test_func = [&](size_t clone_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast(target_column.get()); + for (auto pos = src_data_indices.begin(); pos < src_data_indices.end(); ++pos) { + if (*pos >= src_size) { + continue; + } + for (auto n : insert_vals_count) { + col_vec_target->resize(actual_clone_count); + size_t actual_insert_count = std::min(n, src_size - *pos); + col_vec_target->insert_many_raw_data(source_column->get_data_at(*pos).data, + actual_insert_count); + auto target_size = col_vec_target->size(); + EXPECT_EQ(target_size, actual_clone_count + actual_insert_count); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + for (size_t j = *pos; i < target_size; ++i, ++j) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(j)); + } + } + } + }; + test_func(0); + test_func(10); + } +}; +auto assert_column_vector_insert_default_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector src_data_indices = {0, src_size - 1, (src_size + 1) >> 1}; + + auto test_func = [&](size_t clone_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast(target_column.get()); + col_vec_target->insert_default(); + auto target_size = col_vec_target->size(); + EXPECT_EQ(target_size, actual_clone_count + 1); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + EXPECT_EQ(col_vec_target->get_element(i), T {}); + }; + test_func(0); + test_func(10); + } +}; +auto assert_column_vector_insert_many_defaults_callback = [](auto x, + const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + + auto test_func = [&](size_t clone_count) { + for (auto n : insert_vals_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast(target_column.get()); + col_vec_target->insert_many_defaults(n); + auto target_size = col_vec_target->size(); + EXPECT_EQ(target_size, actual_clone_count + n); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + for (; i < target_size; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), T {}); + } + } + }; + test_func(0); + test_func(10); + } +}; +auto assert_column_vector_get_bool_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto src_size = source_column->size(); + auto* col_vec_src = assert_cast(source_column.get()); + const auto& data = col_vec_src->get_data(); + for (size_t i = 0; i != src_size; ++i) { + EXPECT_EQ(col_vec_src->get_bool(i), (bool)data[i]); + } + } +}; +auto assert_column_vector_get_int64_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto src_size = source_column->size(); + auto* col_vec_src = assert_cast(source_column.get()); + const auto& data = col_vec_src->get_data(); + for (size_t i = 0; i != src_size; ++i) { + if constexpr (IsDecimalNumber) { + EXPECT_EQ(col_vec_src->get_int(i), + (Int64)(data[i].value * col_vec_src->get_scale())); + } else { + EXPECT_EQ(col_vec_src->get_int(i), (Int64)data[i]); + } + } + } +}; +auto assert_column_vector_insert_range_from_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector src_data_indices = {0, src_size - 1, (src_size + 1) >> 1}; + + auto test_func = [&](size_t clone_count) { + size_t actual_clone_count = std::min(clone_count, src_size); + auto target_column = source_column->clone_resized(actual_clone_count); + auto* col_vec_target = assert_cast(target_column.get()); + for (auto pos = src_data_indices.begin(); pos < src_data_indices.end(); ++pos) { + if (*pos >= src_size) { + continue; + } + for (auto n : insert_vals_count) { + col_vec_target->resize(actual_clone_count); + size_t actual_insert_count = std::min(n, src_size - *pos); + col_vec_target->insert_range_from(*source_column, *pos, actual_insert_count); + auto target_size = col_vec_target->size(); + EXPECT_EQ(target_size, actual_clone_count + actual_insert_count); + size_t i = 0; + for (; i < actual_clone_count; ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + for (size_t j = *pos; i < target_size; ++i, ++j) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(j)); + } + } + } + }; + test_func(0); + test_func(10); + } +}; +auto assert_column_vector_pop_back_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto src_size = source_column->size(); + auto* col_vec_src = assert_cast(source_column.get()); + std::vector pop_back_count = {0, src_size - 1, (src_size + 1) >> 1}; + for (auto n : pop_back_count) { + auto target_column = source_column->clone(); + target_column->pop_back(n); + EXPECT_EQ(target_column->size(), src_size - n); + auto* col_vec_target = assert_cast(target_column.get()); + for (size_t i = 0; i < target_column->size(); ++i) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + } + } +}; +auto assert_column_vector_filter_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto source_size = source_column->size(); + auto* col_vec_src = assert_cast(source_column.get()); + IColumn::Filter all_filtered(source_size, 0); + IColumn::Filter no_filtered(source_size, 1); + IColumn::Filter normal_filter(source_size, 1); + normal_filter[0] = 0; + normal_filter[source_size - 1] = 0; + normal_filter[source_size / 2] = 0; + std::vector filters = {&all_filtered, &no_filtered, &normal_filter}; + auto test_func = [&](const IColumn::Filter* filter) { + auto target_column = source_column->clone(); + const auto* filter_data = (const int8_t*)filter->data(); + auto expected_size = filter->size() - simd::count_zero_num(filter_data, filter->size()); + auto ptr = target_column->filter(*filter, source_column->size()); + const auto* col_vec_target_filtered = assert_cast(ptr.get()); + EXPECT_EQ(ptr->size(), expected_size); + for (size_t i = 0, find_pos = 0; i < expected_size; ++i, ++find_pos) { + find_pos = simd::find_byte(filter_data, find_pos, filter->size(), (int8_t)1); + EXPECT_TRUE(find_pos < filter->size()); + EXPECT_EQ(col_vec_target_filtered->get_element(i), + col_vec_src->get_element(find_pos)); + } + }; + for (const auto& filter : filters) { + test_func(filter); + } + } +}; +auto assert_column_vector_replicate_callback = [](auto x, const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + std::vector insert_vals_count = {0, 10, 1000}; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + srand((unsigned)time(nullptr)); + IColumn::Offsets offsets(src_size); + IColumn::Offsets counts(src_size); + size_t total_size = 0; + for (size_t i = 0; i < src_size; ++i) { + counts[i] = rand() % 10; + total_size += counts[i]; + offsets[i] = total_size; + } + auto target_column = source_column->replicate(offsets); + const auto* col_vec_target = assert_cast(target_column.get()); + EXPECT_EQ(target_column->size(), total_size); + size_t total_idx = 0; + for (size_t i = 0; i < src_size; ++i) { + for (size_t j = 0; j < counts[i]; ++j) { + EXPECT_EQ(col_vec_target->get_element(total_idx++), col_vec_src->get_element(i)); + } + } + } +}; +auto assert_column_vector_replace_column_data_callback = [](auto x, + const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector self_data_indices = {0, src_size - 1}; + std::vector other_data_indices = {src_size - 1, 0}; + + auto target_column = source_column->clone(); + auto* col_vec_target = assert_cast(target_column.get()); + for (size_t i = 0; i < self_data_indices.size(); ++i) { + if (self_data_indices[i] >= src_size || other_data_indices[i] >= src_size) { + continue; + } + target_column->replace_column_data(*source_column, other_data_indices[i], + self_data_indices[i]); + } + for (size_t i = 0; i < src_size; ++i) { + bool is_replaced = false; + for (size_t j = 0; j < self_data_indices.size(); ++j) { + if (self_data_indices[j] >= src_size || other_data_indices[j] >= src_size) { + continue; + } + if (i == self_data_indices[j]) { + EXPECT_EQ(col_vec_target->get_element(i), + col_vec_src->get_element(other_data_indices[j])); + is_replaced = true; + break; + } + } + if (!is_replaced) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + } + } +}; +auto assert_column_vector_replace_column_null_data_callback = [](auto x, + const MutableColumns& load_cols) { + using T = decltype(x); + using ColumnVecType = std::conditional_t, ColumnDecimal, ColumnVector>; + for (const auto& source_column : load_cols) { + auto* col_vec_src = assert_cast(source_column.get()); + auto src_size = source_column->size(); + std::vector null_map(src_size, 0); + std::vector null_val_indices = {0, src_size - 1, src_size / 2}; + for (auto n : null_val_indices) { + null_map[n] = 1; + } + + auto target_column = source_column->clone(); + auto* col_vec_target = assert_cast(target_column.get()); + target_column->replace_column_null_data(null_map.data()); + for (size_t i = 0; i < src_size; ++i) { + bool is_replaced = false; + for (size_t j = 0; j < null_val_indices.size(); ++j) { + if (null_map[i] == 1) { + EXPECT_EQ(col_vec_target->get_element(i), T {}); + is_replaced = true; + break; + } + } + if (!is_replaced) { + EXPECT_EQ(col_vec_target->get_element(i), col_vec_src->get_element(i)); + } + } + } +}; } // namespace doris::vectorized \ No newline at end of file diff --git a/run-be-ut.sh b/run-be-ut.sh index 96a97bd34f50e62..4ac0fcfb225fe1b 100755 --- a/run-be-ut.sh +++ b/run-be-ut.sh @@ -37,6 +37,7 @@ set +o posix ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" +export ROOT export DORIS_HOME="${ROOT}" . "${DORIS_HOME}/env.sh" @@ -49,6 +50,7 @@ Usage: $0 --clean clean and build ut --run build and run all ut --run --filter=xx build and run specified ut + --run --gen_out generate expected check data for test --coverage coverage after run ut -j build parallel -h print this help message @@ -69,7 +71,7 @@ Usage: $0 exit 1 } -if ! OPTS="$(getopt -n "$0" -o vhj:f: -l coverage,benchmark,run,clean,filter: -- "$@")"; then +if ! OPTS="$(getopt -n "$0" -o vhj:f: -l gen_out,coverage,benchmark,run,clean,filter: -- "$@")"; then usage fi @@ -80,6 +82,7 @@ RUN=0 DENABLE_CLANG_COVERAGE='OFF' BUILD_AZURE='ON' FILTER="" +GEN_OUT="" if [[ "$#" != 1 ]]; then while true; do case "$1" in @@ -95,6 +98,10 @@ if [[ "$#" != 1 ]]; then DENABLE_CLANG_COVERAGE='ON' shift ;; + --gen_out) + GEN_OUT='--gen_out' + shift + ;; -f | --filter) FILTER="--gtest_filter=$2" shift 2 @@ -471,7 +478,8 @@ if [[ -f "${test}" ]]; then echo "${cmd2}" eval "${cmd2}" else - "${test}" --gtest_output="xml:${GTEST_OUTPUT_DIR}/${file_name}.xml" --gtest_print_time=true "${FILTER}" + "${test}" --gtest_output="xml:${GTEST_OUTPUT_DIR}/${file_name}.xml" --gtest_print_time=true "${FILTER}" "${GEN_OUT}" + # gdb --args "${test}" --gtest_output="xml:${GTEST_OUTPUT_DIR}/${file_name}.xml" --gtest_print_time=true "${FILTER}" fi echo "=== Finished. Gtest output: ${GTEST_OUTPUT_DIR}" else