From 7a3c34084760a322a66f85d23cef95f5fd938c87 Mon Sep 17 00:00:00 2001 From: Sun Chenyang Date: Thu, 10 Jul 2025 17:28:38 +0800 Subject: [PATCH 1/2] branch-3.1: [enhance](variant) typed_paths_to sparse column (#52927) 1. support when the sub-columns in the specified variant are of a fixed type, these sub-columns can be included in sparse columns. 2. add many cases and ut branch-3.1: [fix](variant type) fix add variant column, index (#53092) [fix](variant) Fix metadata compatibility for FE (#53748) - In version 3.1, we used 'VariantType', which inherits from 'ScalarType', as the metadata storage for newly created variants, differing from the previously used 'ScalarType'. - To ensure compatibility with previous metadata, convert 'VariantType' to 'ScalarType' before use. fix [fix](variant) fix array contains null fix case fix --- be/src/olap/rowset/segment_v2/segment.cpp | 26 +- .../olap/rowset/segment_v2/segment_writer.cpp | 10 +- .../variant/variant_column_reader.cpp | 36 +- .../variant/variant_column_reader.h | 2 + .../variant/variant_column_writer_impl.cpp | 62 +- be/src/olap/tablet_meta.cpp | 4 + be/src/olap/tablet_schema.cpp | 77 + be/src/olap/tablet_schema.h | 10 + be/src/util/types.h | 13 + be/src/vec/columns/column_variant.cpp | 216 +- be/src/vec/columns/column_variant.h | 4 + be/src/vec/common/schema_util.cpp | 26 +- be/src/vec/common/schema_util.h | 28 +- be/src/vec/core/field.h | 7 + be/src/vec/data_types/data_type_variant.cpp | 7 +- .../serde/data_type_array_serde.cpp | 2 +- .../serde/data_type_datetimev2_serde.cpp | 20 +- .../serde/data_type_datetimev2_serde.h | 3 + .../serde/data_type_datev2_serde.cpp | 15 + .../data_types/serde/data_type_datev2_serde.h | 3 + .../serde/data_type_decimal_serde.cpp | 26 + .../serde/data_type_decimal_serde.h | 3 + .../data_types/serde/data_type_ipv4_serde.cpp | 15 + .../data_types/serde/data_type_ipv4_serde.h | 3 + .../data_types/serde/data_type_ipv6_serde.cpp | 14 + .../data_types/serde/data_type_ipv6_serde.h | 3 + .../serde/data_type_jsonb_serde.cpp | 2 +- .../serde/data_type_nullable_serde.cpp | 2 +- .../serde/data_type_number_serde.cpp | 3 +- .../data_types/serde/data_type_string_serde.h | 2 +- be/src/vec/exprs/vmatch_predicate.cpp | 1 + .../data_types/column_object_to_string.out | 10 +- .../column_object_to_string_batch.out | 10 +- .../column_object_to_string_with_buffer.out | 10 +- .../variant_column_writer_reader_test.cpp | 7 +- be/test/vec/columns/column_object_test.cpp | 1495 +++ be/test/vec/columns/column_variant_test.cpp | 62 +- .../vec/common/schema_util_rowset_test.cpp | 121 + be/test/vec/common/schema_util_test.cpp | 100 +- .../org/apache/doris/catalog/ScalarType.java | 14 + .../apache/doris/catalog/VariantField.java | 16 +- .../org/apache/doris/catalog/VariantType.java | 86 +- .../org/apache/doris/nereids/DorisParser.g4 | 10 +- fe/fe-core/src/main/cup/sql_parser.cup | 15 +- .../doris/alter/SchemaChangeHandler.java | 23 +- .../doris/analysis/InvertedIndexUtil.java | 10 + .../apache/doris/analysis/MVColumnItem.java | 7 - .../org/apache/doris/analysis/TypeDef.java | 29 + .../java/org/apache/doris/catalog/Column.java | 24 +- .../java/org/apache/doris/catalog/Env.java | 6 - .../java/org/apache/doris/catalog/Index.java | 9 +- .../org/apache/doris/catalog/OlapTable.java | 93 +- .../doris/common/util/PropertyAnalyzer.java | 17 + .../doris/datasource/InternalCatalog.java | 14 - .../glue/translator/ExpressionTranslator.java | 16 +- .../nereids/parser/LogicalPlanBuilder.java | 48 +- .../plans/commands/info/CreateTableInfo.java | 24 +- .../apache/doris/nereids/types/DataType.java | 5 +- .../doris/nereids/types/VariantField.java | 17 +- .../doris/nereids/types/VariantType.java | 48 +- .../org/apache/doris/qe/SessionVariable.java | 31 +- .../apache/doris/persist/ScalarTypeTest.java | 40 + gensrc/proto/olap_file.proto | 1 + gensrc/thrift/Descriptors.thrift | 1 + regression-test/data/variant_p0/load.out | 2 +- regression-test/data/variant_p0/nested2.out | 8 +- .../data/variant_p0/predefine/load.out | 95 +- .../predefine/predefined_typed_to_sparse.out | 75 + .../data/variant_p0/predefine/sql/q01.out | 2 +- .../test_all_prdefine_type_to_sparse.out | 8920 +++++++++++++++++ .../predefine/test_custom_analyzer.out | 43 + .../predefine/test_predefine_ddl.out | 11 + .../test_add_multi_var_mulit_indexes.out | 20 + .../data/variant_p0/tpch/sql/q01_trans.out | 8 +- .../data/variant_p0/tpch/sql/q05_trans.out | 4 +- .../data/variant_p0/tpch/sql/q06_trans.out | 2 +- .../data/variant_p0/tpch/sql/q08_trans.out | 4 +- .../data/variant_p0/tpch/sql/q09_trans.out | 304 +- .../data/variant_p0/tpch/sql/q10_trans.out | 24 +- .../data/variant_p0/tpch/sql/q14_trans.out | 2 +- .../test_array_inverted_index_profile.out | 6 - .../compaction/compaction_sparse_column.out | 32 +- .../test_compaction_extract_root.out | 9 +- ...reate_nestedtypes_with_schemachange.groovy | 2 +- .../test_variant_bloom_filter.groovy | 6 +- ...ariant_compaction_with_sparse_limit.groovy | 8 +- .../suites/function_p0/test_array_agg.groovy | 7 +- .../variant_github_events_new_p0/load.groovy | 53 +- .../load.groovy | 13 +- .../suites/variant_log_data_p2/load.groovy | 8 +- regression-test/suites/variant_p0/agg.groovy | 8 +- .../suites/variant_p0/column_name.groovy | 4 +- .../variant_p0/column_size_limit.groovy | 4 +- regression-test/suites/variant_p0/desc.groovy | 18 +- .../suites/variant_p0/nested.groovy | 2 +- .../suites/variant_p0/nested2.groovy | 3 +- .../variant_p0/predefine/delete_update.groovy | 8 +- .../predefine/insert_into_select.groovy | 2 + .../suites/variant_p0/predefine/load.groovy | 37 +- .../variant_p0/predefine/multi_var.groovy | 16 +- .../predefined_typed_to_sparse.groovy | 217 + .../test_all_prdefine_type_to_sparse.groovy | 391 + .../predefine/test_custom_analyzer.groovy | 174 + .../predefine/test_multi_index_file.groovy | 2 +- .../test_multi_index_nonCurrent.groovy | 14 +- .../test_prdefine_insert_into_select.groovy | 18 +- ...prdefine_typed_column_sparse_column.groovy | 6 +- .../predefine/test_predefine_ddl.groovy | 207 +- .../predefine/test_predefine_pattern.groovy | 11 +- .../test_predefine_schema_change.groovy | 6 +- .../test_predefine_type_index.groovy | 10 +- .../test_predefine_type_multi_index.groovy | 6 +- .../test_types_with_indexes_profile.groovy | 6 +- ...ariant_compaction_with_sparse_limit.groovy | 6 +- .../test_variant_is_null_expr.groovy | 9 +- .../predefine/variant_hirachinal.groovy | 3 +- .../predefine/variant_with_mow.groovy | 5 +- .../suites/variant_p0/rqg/fix_rqg1.groovy | 1 - .../suites/variant_p0/rqg/rqg7.sql | 12 +- .../schema_change/schema_change.groovy | 1 + .../test_add_multi_var_mulit_indexes.groovy | 98 + .../variant_p0/test_sub_path_pruning.groovy | 5 +- .../test_variant_float_double_index.groovy | 10 +- .../test_variant_is_null_expr.groovy | 5 +- .../suites/variant_p0/tpch/load.groovy | 6 +- .../suites/variant_p0/variant_with_mow.groovy | 3 +- .../variant_p0/with_index/bloom_filter.groovy | 4 +- ..._array_contains_with_inverted_index.groovy | 6 +- .../with_index/test_array_index_write.groovy | 4 +- .../test_array_inverted_index_profile.groovy | 3 +- .../variant_p0/with_index/var_index.groovy | 1 + .../compaction_sparse_column.groovy | 5 +- .../test_compaction_extract_root.groovy | 5 +- .../suites/variant_p1/predefine/load.groovy | 9 +- regression-test/suites/variant_p2/load.groovy | 8 +- 135 files changed, 13284 insertions(+), 827 deletions(-) create mode 100644 be/test/vec/columns/column_object_test.cpp create mode 100644 fe/fe-core/src/test/java/org/apache/doris/persist/ScalarTypeTest.java create mode 100644 regression-test/data/variant_p0/predefine/predefined_typed_to_sparse.out create mode 100644 regression-test/data/variant_p0/predefine/test_all_prdefine_type_to_sparse.out create mode 100644 regression-test/data/variant_p0/predefine/test_custom_analyzer.out create mode 100644 regression-test/data/variant_p0/predefine/test_predefine_ddl.out create mode 100644 regression-test/data/variant_p0/schema_change/test_add_multi_var_mulit_indexes.out create mode 100644 regression-test/suites/variant_p0/predefine/predefined_typed_to_sparse.groovy create mode 100644 regression-test/suites/variant_p0/predefine/test_all_prdefine_type_to_sparse.groovy create mode 100644 regression-test/suites/variant_p0/predefine/test_custom_analyzer.groovy create mode 100644 regression-test/suites/variant_p0/schema_change/test_add_multi_var_mulit_indexes.groovy diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp index d3cb4433f93d5b..85b9040abad43c 100644 --- a/be/src/olap/rowset/segment_v2/segment.cpp +++ b/be/src/olap/rowset/segment_v2/segment.cpp @@ -602,24 +602,44 @@ vectorized::DataTypePtr Segment::get_data_type_of(const TabletColumn& column, // Find the specific node within the variant structure using the relative path. const auto* node = variant_reader->get_reader_by_path(relative_path); + if (relative_path.get_path() == SPARSE_COLUMN_PATH) { + return vectorized::DataTypeFactory::instance().create_data_type(column); + } + // Case 1: Node not found for the given path within the variant reader. // If relative_path is empty, it means the original path pointed to the root // of the variant column itself. We should return the Variant type. if (node == nullptr || relative_path.empty()) { - return vectorized::DataTypeFactory::instance().create_data_type(column); + if (column.is_nested_subcolumn()) { + return vectorized::DataTypeFactory::instance().create_data_type(column); + } + return column.is_nullable() + ? vectorized::make_nullable(std::make_shared( + column.variant_max_subcolumns_count())) + : std::make_shared( + column.variant_max_subcolumns_count()); } bool exist_in_sparse = variant_reader->exist_in_sparse_column(relative_path); bool is_physical_leaf = node->children.empty(); + if (is_physical_leaf && column.is_nested_subcolumn()) { + return node->data.file_column_type; + } + // Condition to return the specific underlying type of the node: // 1. We are reading flat leaves (ignoring hierarchy). // 2. OR It's a leaf in the physical column structure AND it doesn't *also* exist // in the sparse column (meaning it's purely a materialized leaf). - if (read_flat_leaves || (is_physical_leaf && !exist_in_sparse)) { + if (read_flat_leaves || (is_physical_leaf && !exist_in_sparse && + !variant_reader->is_exceeded_sparse_column_limit())) { return node->data.file_column_type; } - return vectorized::DataTypeFactory::instance().create_data_type(column); + return column.is_nullable() + ? vectorized::make_nullable(std::make_shared( + column.variant_max_subcolumns_count())) + : std::make_shared( + column.variant_max_subcolumns_count()); } Status Segment::_create_column_readers_once(OlapReaderStatistics* stats) { diff --git a/be/src/olap/rowset/segment_v2/segment_writer.cpp b/be/src/olap/rowset/segment_v2/segment_writer.cpp index 0a9ff4d2b4b296..6bb3dd29d81876 100644 --- a/be/src/olap/rowset/segment_v2/segment_writer.cpp +++ b/be/src/olap/rowset/segment_v2/segment_writer.cpp @@ -772,9 +772,17 @@ Status SegmentWriter::append_block(const vectorized::Block* block, size_t row_po } return Status::OK(); } + if (block->columns() < _column_writers.size()) { + return Status::InternalError( + "block->columns() < _column_writers.size(), block->columns()=" + + std::to_string(block->columns()) + + ", _column_writers.size()=" + std::to_string(_column_writers.size()) + + ", _tablet_schema->dump_structure()=" + _tablet_schema->dump_structure()); + } CHECK(block->columns() >= _column_writers.size()) << ", block->columns()=" << block->columns() - << ", _column_writers.size()=" << _column_writers.size(); + << ", _column_writers.size()=" << _column_writers.size() + << ", _tablet_schema->dump_structure()=" << _tablet_schema->dump_structure(); // Row column should be filled here when it's a directly write from memtable // or it's schema change write(since column data type maybe changed, so we should reubild) if (_opts.write_type == DataWriteType::TYPE_DIRECT || diff --git a/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp b/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp index cdd8252a37eb90..0a3a1d6793e41b 100644 --- a/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/variant/variant_column_reader.cpp @@ -72,6 +72,12 @@ bool VariantColumnReader::exist_in_sparse_column( return existed_in_sparse_column || prefix_existed_in_sparse_column; } +bool VariantColumnReader::is_exceeded_sparse_column_limit() const { + return !_statistics->sparse_column_non_null_size.empty() && + _statistics->sparse_column_non_null_size.size() >= + config::variant_max_sparse_column_statistics_size; +} + int64_t VariantColumnReader::get_metadata_size() const { int64_t size = ColumnReader::get_metadata_size(); if (_statistics) { @@ -205,10 +211,16 @@ Status VariantColumnReader::_new_iterator_with_flat_leaves(ColumnIterator** iter RETURN_IF_ERROR(_create_sparse_merge_reader(iterator, opts, target_col, inner_iter)); return Status::OK(); } + + if (target_col.is_nested_subcolumn()) { + // using the sibling of the nested column to fill the target nested column + RETURN_IF_ERROR(_new_default_iter_with_same_nested(iterator, target_col)); + return Status::OK(); + } + // If the path is typed, it means the path is not a sparse column, so we can't read the sparse column // even if the sparse column size is reached limit - if (existed_in_sparse_column || - (exceeded_sparse_column_limit && !relative_path.get_is_typed())) { + if (existed_in_sparse_column || exceeded_sparse_column_limit) { // Sparse column exists or reached sparse size limit, read sparse column ColumnIterator* inner_iter; RETURN_IF_ERROR(_sparse_column_reader->new_iterator(&inner_iter, nullptr)); @@ -219,11 +231,7 @@ Status VariantColumnReader::_new_iterator_with_flat_leaves(ColumnIterator** iter const_cast(opts), target_col); return Status::OK(); } - if (target_col.is_nested_subcolumn()) { - // using the sibling of the nested column to fill the target nested column - RETURN_IF_ERROR(_new_default_iter_with_same_nested(iterator, target_col)); - return Status::OK(); - } + VLOG_DEBUG << "new_default_iter: " << target_col.path_info_ptr()->get_path(); std::unique_ptr it; RETURN_IF_ERROR(Segment::new_default_iterator(target_col, &it)); @@ -264,7 +272,7 @@ Status VariantColumnReader::new_iterator(ColumnIterator** iterator, const Tablet // Otherwise the prefix is not exist and the sparse column size is reached limit // which means the path maybe exist in sparse_column bool exceeded_sparse_column_limit = !_statistics->sparse_column_non_null_size.empty() && - _statistics->sparse_column_non_null_size.size() == + _statistics->sparse_column_non_null_size.size() >= config::variant_max_sparse_column_statistics_size; // For compaction operations, read flat leaves, otherwise read hierarchical data @@ -284,7 +292,7 @@ Status VariantColumnReader::new_iterator(ColumnIterator** iterator, const Tablet _statistics->sparse_column_non_null_size.end()) && _statistics->sparse_column_non_null_size.lower_bound(prefix)->first.starts_with(prefix); // if prefix exists in sparse column, read sparse column with hierarchical reader - if (prefix_existed_in_sparse_column) { + if (prefix_existed_in_sparse_column || exceeded_sparse_column_limit) { // Example {"b" : {"c":456,"e":7.111}} // b.c is sparse column, b.e is subcolumn, so b is both the prefix of sparse column and subcolumn return _create_hierarchical_reader(iterator, relative_path, node, root); @@ -317,9 +325,6 @@ Status VariantColumnReader::new_iterator(ColumnIterator** iterator, const Tablet RETURN_IF_ERROR(_create_hierarchical_reader(iterator, relative_path, node, root)); } } else { - if (exceeded_sparse_column_limit) { - return _create_hierarchical_reader(iterator, relative_path, nullptr, root); - } // Sparse column not exists and not reached stats limit, then the target path is not exist, get a default iterator std::unique_ptr iter; RETURN_IF_ERROR(Segment::new_default_iterator(*target_col, &iter)); @@ -444,11 +449,8 @@ void VariantColumnReader::get_subcolumns_types( std::unordered_map* subcolumns_types) const { for (const auto& subcolumn_reader : *_subcolumn_readers) { - // no need typed path and root path - if (!subcolumn_reader->path.get_is_typed() && !subcolumn_reader->path.empty()) { - auto& path_types = (*subcolumns_types)[subcolumn_reader->path]; - path_types.push_back(subcolumn_reader->data.file_column_type); - } + auto& path_types = (*subcolumns_types)[subcolumn_reader->path]; + path_types.push_back(subcolumn_reader->data.file_column_type); } } diff --git a/be/src/olap/rowset/segment_v2/variant/variant_column_reader.h b/be/src/olap/rowset/segment_v2/variant/variant_column_reader.h index cb13b63a2a160f..3577ce19f2084b 100644 --- a/be/src/olap/rowset/segment_v2/variant/variant_column_reader.h +++ b/be/src/olap/rowset/segment_v2/variant/variant_column_reader.h @@ -70,6 +70,8 @@ class VariantColumnReader : public ColumnReader { bool exist_in_sparse_column(const vectorized::PathInData& path) const; + bool is_exceeded_sparse_column_limit() const; + const SubcolumnColumnReaders* get_subcolumn_readers() const { return _subcolumn_readers.get(); } void get_subcolumns_types( diff --git a/be/src/olap/rowset/segment_v2/variant/variant_column_writer_impl.cpp b/be/src/olap/rowset/segment_v2/variant/variant_column_writer_impl.cpp index 94c4a9c3fc1065..12c345f10a6c30 100644 --- a/be/src/olap/rowset/segment_v2/variant/variant_column_writer_impl.cpp +++ b/be/src/olap/rowset/segment_v2/variant/variant_column_writer_impl.cpp @@ -76,11 +76,11 @@ Status _create_column_writer(uint32_t cid, const TabletColumn& column, IndexFileWriter* inverted_index_file_writer, std::unique_ptr* writer, TabletIndexes& subcolumn_indexes, ColumnWriterOptions* opt, - int64_t none_null_value_size) { + int64_t none_null_value_size, bool need_record_none_null_value_size) { _init_column_meta(opt->meta, cid, column, opt->compression_type); // no need to record none null value size for typed column or nested column, since it's compaction stage // will directly pick it as sub column - if (!column.path_info_ptr()->get_is_typed() && !column.path_info_ptr()->has_nested_part()) { + if (need_record_none_null_value_size) { // record none null value size for statistics opt->meta->set_none_null_size(none_null_value_size); } @@ -265,32 +265,22 @@ Status VariantColumnWriterImpl::_process_subcolumns(vectorized::ColumnVariant* p // create subcolumn writer int current_column_id = column_id++; TabletColumn tablet_column; - int64_t none_null_value_size = -1; - vectorized::ColumnPtr current_column; - vectorized::DataTypePtr current_type; + int64_t none_null_value_size = entry->data.get_non_null_value_size(); + vectorized::ColumnPtr current_column = entry->data.get_finalized_column_ptr()->get_ptr(); + vectorized::DataTypePtr current_type = entry->data.get_least_common_type(); if (auto current_path = entry->path.get_path(); _subcolumns_info.find(current_path) != _subcolumns_info.end()) { tablet_column = std::move(_subcolumns_info[current_path].column); - vectorized::DataTypePtr storage_type = - vectorized::DataTypeFactory::instance().create_data_type(tablet_column); - vectorized::DataTypePtr finalized_type = entry->data.get_least_common_type(); - current_column = entry->data.get_finalized_column_ptr()->get_ptr(); - if (!storage_type->equals(*finalized_type)) { - RETURN_IF_ERROR(vectorized::schema_util::cast_column( - {current_column, finalized_type, ""}, storage_type, ¤t_column)); - } _subcolumns_indexes[current_column_id] = std::move(_subcolumns_info[current_path].indexes); - const auto& null_data = assert_cast(*current_column) - .get_null_map_data(); - none_null_value_size = - simd::count_zero_num((int8_t*)null_data.data(), null_data.size()); - current_type = storage_type; + if (auto storage_type = + vectorized::DataTypeFactory::instance().create_data_type(tablet_column); + !storage_type->equals(*current_type)) { + return Status::InvalidArgument("Storage type {} is not equal to current type {}", + storage_type->get_name(), current_type->get_name()); + } } else { tablet_column = generate_column_info(entry); - none_null_value_size = entry->data.get_non_null_value_size(); - current_column = entry->data.get_finalized_column_ptr()->get_ptr(); - current_type = entry->data.get_least_common_type(); } ColumnWriterOptions opts; opts.meta = _opts.footer->add_columns(); @@ -300,10 +290,16 @@ Status VariantColumnWriterImpl::_process_subcolumns(vectorized::ColumnVariant* p opts.file_writer = _opts.file_writer; std::unique_ptr writer; vectorized::schema_util::inherit_column_attributes(*_tablet_column, tablet_column); + + bool need_record_none_null_value_size = + (!tablet_column.path_info_ptr()->get_is_typed() || + _tablet_column->variant_enable_typed_paths_to_sparse()) && + !tablet_column.path_info_ptr()->has_nested_part(); + RETURN_IF_ERROR(_create_column_writer( current_column_id, tablet_column, _opts.rowset_ctx->tablet_schema, _opts.index_file_writer, &writer, _subcolumns_indexes[current_column_id], &opts, - none_null_value_size)); + none_null_value_size, need_record_none_null_value_size)); _subcolumn_writers.push_back(std::move(writer)); _subcolumn_opts.push_back(opts); _subcolumn_opts[current_column_id - 1].meta->set_num_rows(num_rows); @@ -394,7 +390,10 @@ Status VariantColumnWriterImpl::finalize() { } } - RETURN_IF_ERROR(ptr->pick_subcolumns_to_sparse_column(_subcolumns_info)); + RETURN_IF_ERROR(ptr->convert_typed_path_to_storage_type(_subcolumns_info)); + + RETURN_IF_ERROR(ptr->pick_subcolumns_to_sparse_column( + _subcolumns_info, _tablet_column->variant_enable_typed_paths_to_sparse())); #ifndef NDEBUG ptr->check_consistency(); @@ -542,7 +541,7 @@ VariantSubcolumnWriter::VariantSubcolumnWriter(const ColumnWriterOptions& opts, // _tablet_column = column; _opts = opts; - _column = vectorized::ColumnVariant::create(true); + _column = vectorized::ColumnVariant::create(0); } Status VariantSubcolumnWriter::init() { @@ -575,34 +574,41 @@ Status VariantSubcolumnWriter::finalize() { const auto& parent_column = _opts.rowset_ctx->tablet_schema->column_by_uid(_tablet_column->parent_unique_id()); + TabletColumn flush_column; + + auto path = _tablet_column->path_info_ptr()->copy_pop_front().get_path(); + + TabletSchema::SubColumnInfo sub_column_info; if (ptr->get_subcolumns().get_root()->data.get_least_common_base_type_id() == PrimitiveType::INVALID_TYPE) { auto flush_type = vectorized::DataTypeFactory::instance().create_data_type( PrimitiveType::TYPE_TINYINT, true /* is_nullable */); ptr->ensure_root_node_type(flush_type); } - - TabletColumn flush_column = vectorized::schema_util::get_column_by_type( + flush_column = vectorized::schema_util::get_column_by_type( ptr->get_root_type(), _tablet_column->name(), vectorized::schema_util::ExtraInfo { .unique_id = -1, .parent_unique_id = _tablet_column->parent_unique_id(), .path_info = *_tablet_column->path_info_ptr()}); + int64_t none_null_value_size = ptr->get_subcolumns().get_root()->data.get_non_null_value_size(); + bool need_record_none_null_value_size = (!flush_column.path_info_ptr()->get_is_typed()) && + !flush_column.path_info_ptr()->has_nested_part(); ColumnWriterOptions opts = _opts; // refresh opts and get writer with flush column vectorized::schema_util::inherit_column_attributes(parent_column, flush_column); RETURN_IF_ERROR(_create_column_writer(0, flush_column, _opts.rowset_ctx->tablet_schema, _opts.index_file_writer, &_writer, _indexes, &opts, - none_null_value_size)); + none_null_value_size, need_record_none_null_value_size)); + _opts = opts; auto olap_data_convertor = std::make_unique(); int column_id = 0; RETURN_IF_ERROR(convert_and_write_column(olap_data_convertor.get(), flush_column, ptr->get_root_type(), _writer.get(), ptr->get_root()->get_ptr(), ptr->rows(), column_id)); - _is_finalized = true; return Status::OK(); } diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp index 5bae0decd992eb..a1c9436cbe8c37 100644 --- a/be/src/olap/tablet_meta.cpp +++ b/be/src/olap/tablet_meta.cpp @@ -471,6 +471,10 @@ void TabletMeta::init_column_from_tcolumn(uint32_t unique_id, const TColumn& tco column->set_pattern_type(PatternTypePB::MATCH_NAME_GLOB); } } + if (tcolumn.__isset.variant_enable_typed_paths_to_sparse) { + column->set_variant_enable_typed_paths_to_sparse( + tcolumn.variant_enable_typed_paths_to_sparse); + } } void TabletMeta::remove_rowset_delete_bitmap(const RowsetId& rowset_id, const Version& version) { diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index 23966ca48fc06b..277fa491953588 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -137,6 +137,79 @@ FieldType TabletColumn::get_field_type_by_type(PrimitiveType primitiveType) { } } +PrimitiveType TabletColumn::get_primitive_type_by_field_type(FieldType type) { + switch (type) { + case FieldType::OLAP_FIELD_TYPE_UNKNOWN: + return PrimitiveType::INVALID_TYPE; + case FieldType::OLAP_FIELD_TYPE_NONE: + return PrimitiveType::TYPE_NULL; + case FieldType::OLAP_FIELD_TYPE_BOOL: + return PrimitiveType::TYPE_BOOLEAN; + case FieldType::OLAP_FIELD_TYPE_TINYINT: + return PrimitiveType::TYPE_TINYINT; + case FieldType::OLAP_FIELD_TYPE_SMALLINT: + return PrimitiveType::TYPE_SMALLINT; + case FieldType::OLAP_FIELD_TYPE_INT: + return PrimitiveType::TYPE_INT; + case FieldType::OLAP_FIELD_TYPE_BIGINT: + return PrimitiveType::TYPE_BIGINT; + case FieldType::OLAP_FIELD_TYPE_LARGEINT: + return PrimitiveType::TYPE_LARGEINT; + case FieldType::OLAP_FIELD_TYPE_FLOAT: + return PrimitiveType::TYPE_FLOAT; + case FieldType::OLAP_FIELD_TYPE_DOUBLE: + return PrimitiveType::TYPE_DOUBLE; + case FieldType::OLAP_FIELD_TYPE_VARCHAR: + return PrimitiveType::TYPE_VARCHAR; + case FieldType::OLAP_FIELD_TYPE_STRING: + return PrimitiveType::TYPE_STRING; + case FieldType::OLAP_FIELD_TYPE_DATE: + return PrimitiveType::TYPE_DATE; + case FieldType::OLAP_FIELD_TYPE_DATETIME: + return PrimitiveType::TYPE_DATETIME; + case FieldType::OLAP_FIELD_TYPE_CHAR: + return PrimitiveType::TYPE_CHAR; + case FieldType::OLAP_FIELD_TYPE_STRUCT: + return PrimitiveType::TYPE_STRUCT; + case FieldType::OLAP_FIELD_TYPE_ARRAY: + return PrimitiveType::TYPE_ARRAY; + case FieldType::OLAP_FIELD_TYPE_MAP: + return PrimitiveType::TYPE_MAP; + case FieldType::OLAP_FIELD_TYPE_HLL: + return PrimitiveType::TYPE_HLL; + case FieldType::OLAP_FIELD_TYPE_BITMAP: + return PrimitiveType::TYPE_BITMAP; + case FieldType::OLAP_FIELD_TYPE_QUANTILE_STATE: + return PrimitiveType::TYPE_QUANTILE_STATE; + case FieldType::OLAP_FIELD_TYPE_DATEV2: + return PrimitiveType::TYPE_DATEV2; + case FieldType::OLAP_FIELD_TYPE_DATETIMEV2: + return PrimitiveType::TYPE_DATETIMEV2; + case FieldType::OLAP_FIELD_TYPE_TIMEV2: + return PrimitiveType::TYPE_TIMEV2; + case FieldType::OLAP_FIELD_TYPE_DECIMAL32: + return PrimitiveType::TYPE_DECIMAL32; + case FieldType::OLAP_FIELD_TYPE_DECIMAL64: + return PrimitiveType::TYPE_DECIMAL64; + case FieldType::OLAP_FIELD_TYPE_DECIMAL128I: + return PrimitiveType::TYPE_DECIMAL128I; + case FieldType::OLAP_FIELD_TYPE_DECIMAL256: + return PrimitiveType::TYPE_DECIMAL256; + case FieldType::OLAP_FIELD_TYPE_IPV4: + return PrimitiveType::TYPE_IPV4; + case FieldType::OLAP_FIELD_TYPE_IPV6: + return PrimitiveType::TYPE_IPV6; + case FieldType::OLAP_FIELD_TYPE_JSONB: + return PrimitiveType::TYPE_JSONB; + case FieldType::OLAP_FIELD_TYPE_VARIANT: + return PrimitiveType::TYPE_VARIANT; + case FieldType::OLAP_FIELD_TYPE_AGG_STATE: + return PrimitiveType::TYPE_AGG_STATE; + default: + return PrimitiveType::INVALID_TYPE; + } +} + FieldType TabletColumn::get_field_type_by_string(const std::string& type_str) { std::string upper_type_str = type_str; std::transform(type_str.begin(), type_str.end(), upper_type_str.begin(), @@ -617,6 +690,9 @@ void TabletColumn::init_from_pb(const ColumnPB& column) { if (column.has_pattern_type()) { _pattern_type = column.pattern_type(); } + if (column.has_variant_enable_typed_paths_to_sparse()) { + _variant_enable_typed_paths_to_sparse = column.variant_enable_typed_paths_to_sparse(); + } } TabletColumn TabletColumn::create_materialized_variant_column( @@ -701,6 +777,7 @@ void TabletColumn::to_schema_pb(ColumnPB* column) const { } column->set_variant_max_subcolumns_count(_variant_max_subcolumns_count); column->set_pattern_type(_pattern_type); + column->set_variant_enable_typed_paths_to_sparse(_variant_enable_typed_paths_to_sparse); } void TabletColumn::add_sub_column(TabletColumn& sub_column) { diff --git a/be/src/olap/tablet_schema.h b/be/src/olap/tablet_schema.h index a45561787fd6f4..feb5b70ec521c4 100644 --- a/be/src/olap/tablet_schema.h +++ b/be/src/olap/tablet_schema.h @@ -166,6 +166,7 @@ class TabletColumn : public MetadataAdder { static std::string get_string_by_aggregation_type(FieldAggregationMethod aggregation_type); static FieldType get_field_type_by_string(const std::string& str); static FieldType get_field_type_by_type(PrimitiveType type); + static PrimitiveType get_primitive_type_by_field_type(FieldType type); static FieldAggregationMethod get_aggregation_type_by_string(const std::string& str); static uint32_t get_field_length_by_type(TPrimitiveType::type type, uint32_t string_length); bool is_row_store_column() const; @@ -228,6 +229,14 @@ class TabletColumn : public MetadataAdder { } int32_t variant_max_subcolumns_count() const { return _variant_max_subcolumns_count; } + void set_variant_enable_typed_paths_to_sparse(bool variant_enable_typed_paths_to_sparse) { + _variant_enable_typed_paths_to_sparse = variant_enable_typed_paths_to_sparse; + } + + bool variant_enable_typed_paths_to_sparse() const { + return _variant_enable_typed_paths_to_sparse; + } + private: int32_t _unique_id = -1; std::string _col_name; @@ -279,6 +288,7 @@ class TabletColumn : public MetadataAdder { size_t _num_sparse_columns = 0; int32_t _variant_max_subcolumns_count = 0; PatternTypePB _pattern_type = PatternTypePB::MATCH_NAME_GLOB; + bool _variant_enable_typed_paths_to_sparse = false; }; bool operator==(const TabletColumn& a, const TabletColumn& b); diff --git a/be/src/util/types.h b/be/src/util/types.h index 7688dd60390855..4a26f28a83eef6 100644 --- a/be/src/util/types.h +++ b/be/src/util/types.h @@ -43,5 +43,18 @@ inline int128_t get_int128_from_unalign(const void* address) { memcpy(&value, address, sizeof(int128_t)); return value; } +struct PackedUInt128 { + // PackedInt128() : value(0) {} + PackedUInt128() = default; + + PackedUInt128(const unsigned __int128& value_) { value = value_; } + PackedUInt128& operator=(const unsigned __int128& value_) { + value = value_; + return *this; + } + PackedUInt128& operator=(const PackedUInt128& rhs) = default; + + uint128_t value; +} __attribute__((packed)); } // namespace doris diff --git a/be/src/vec/columns/column_variant.cpp b/be/src/vec/columns/column_variant.cpp index 8aa5421b27e74d..6ac1462b55f378 100644 --- a/be/src/vec/columns/column_variant.cpp +++ b/be/src/vec/columns/column_variant.cpp @@ -40,6 +40,7 @@ #include #include "common/compiler_util.h" // IWYU pragma: keep +#include "common/config.h" #include "common/exception.h" #include "common/logging.h" #include "common/status.h" @@ -878,73 +879,159 @@ void ColumnVariant::Subcolumn::serialize_to_sparse_column(ColumnString* key, std "Index ({}) for serialize to sparse column is out of range", row); } -const char* parse_binary_from_sparse_column(PrimitiveType type, const char* data, Field& res, +const char* parse_binary_from_sparse_column(FieldType type, const char* data, Field& res, FieldInfo& info_res) { - info_res.scalar_type_id = type; + info_res.scalar_type_id = TabletColumn::get_primitive_type_by_field_type(type); const char* end = data; switch (type) { - case PrimitiveType::TYPE_STRING: { - const size_t size = *reinterpret_cast(data); + case FieldType::OLAP_FIELD_TYPE_STRING: { + size_t size = *reinterpret_cast(data); data += sizeof(size_t); res = Field::create_field(String(data, size)); end = data + size; break; } - case PrimitiveType::TYPE_TINYINT: { - res = Field::create_field(*reinterpret_cast(data)); + case FieldType::OLAP_FIELD_TYPE_TINYINT: { + res = Field::create_field(Int8(*reinterpret_cast(data))); end = data + sizeof(Int8); break; } - case PrimitiveType::TYPE_SMALLINT: { - res = Field::create_field(*reinterpret_cast(data)); + case FieldType::OLAP_FIELD_TYPE_SMALLINT: { + res = Field::create_field(Int16(*reinterpret_cast(data))); end = data + sizeof(Int16); break; } - case PrimitiveType::TYPE_INT: { - res = Field::create_field(*reinterpret_cast(data)); + case FieldType::OLAP_FIELD_TYPE_INT: { + res = Field::create_field(Int32(*reinterpret_cast(data))); end = data + sizeof(Int32); break; } - case PrimitiveType::TYPE_BIGINT: { - res = Field::create_field(*reinterpret_cast(data)); + case FieldType::OLAP_FIELD_TYPE_BIGINT: { + res = Field::create_field(Int64(*reinterpret_cast(data))); end = data + sizeof(Int64); break; } - case PrimitiveType::TYPE_FLOAT: { - res = Field::create_field(*reinterpret_cast(data)); + case FieldType::OLAP_FIELD_TYPE_LARGEINT: { + res = Field::create_field( + Int128(reinterpret_cast(data)->value)); + end = data + sizeof(PackedInt128); + break; + } + case FieldType::OLAP_FIELD_TYPE_FLOAT: { + res = Field::create_field(Float32(*reinterpret_cast(data))); end = data + sizeof(Float32); break; } - case PrimitiveType::TYPE_DOUBLE: { - res = Field::create_field(*reinterpret_cast(data)); + case FieldType::OLAP_FIELD_TYPE_DOUBLE: { + res = Field::create_field(Float64(*reinterpret_cast(data))); end = data + sizeof(Float64); break; } - case PrimitiveType::TYPE_JSONB: { + case FieldType::OLAP_FIELD_TYPE_JSONB: { size_t size = *reinterpret_cast(data); data += sizeof(size_t); res = Field::create_field(JsonbField(data, size)); end = data + size; break; } - case PrimitiveType::INVALID_TYPE: { - res = Field(); - end = data; - break; - } - case PrimitiveType::TYPE_ARRAY: { + case FieldType::OLAP_FIELD_TYPE_ARRAY: { const size_t size = *reinterpret_cast(data); data += sizeof(size_t); res = Field::create_field(Array(size)); auto& array = res.get(); info_res.num_dimensions++; + FieldType nested_filed_type = FieldType::OLAP_FIELD_TYPE_NONE; for (size_t i = 0; i < size; ++i) { Field nested_field; const auto nested_type = - static_cast(*reinterpret_cast(data++)); + static_cast(*reinterpret_cast(data++)); data = parse_binary_from_sparse_column(nested_type, data, nested_field, info_res); array[i] = std::move(nested_field); + if (nested_type != FieldType::OLAP_FIELD_TYPE_NONE) { + nested_filed_type = nested_type; + } } + info_res.scalar_type_id = TabletColumn::get_primitive_type_by_field_type(nested_filed_type); + end = data; + break; + } + case FieldType::OLAP_FIELD_TYPE_IPV4: { + res = Field::create_field(IPv4(*reinterpret_cast(data))); + end = data + sizeof(IPv4); + break; + } + case FieldType::OLAP_FIELD_TYPE_IPV6: { + res = Field::create_field(reinterpret_cast(data)->value); + end = data + sizeof(PackedUInt128); + break; + } + case FieldType::OLAP_FIELD_TYPE_DATEV2: { + res = Field::create_field(*reinterpret_cast(data)); + end = data + sizeof(UInt32); + break; + } + case FieldType::OLAP_FIELD_TYPE_DATETIMEV2: { + const uint8_t scale = *reinterpret_cast(data); + data += sizeof(uint8_t); + res = Field::create_field(*reinterpret_cast(data)); + info_res.precision = -1; + info_res.scale = static_cast(scale); + end = data + sizeof(UInt64); + break; + } + case FieldType::OLAP_FIELD_TYPE_DECIMAL32: { + const uint8_t precision = *reinterpret_cast(data); + data += sizeof(uint8_t); + const uint8_t scale = *reinterpret_cast(data); + data += sizeof(uint8_t); + res = Field::create_field(Decimal32(*reinterpret_cast(data))); + info_res.precision = static_cast(precision); + info_res.scale = static_cast(scale); + end = data + sizeof(Int32); + break; + } + case FieldType::OLAP_FIELD_TYPE_DECIMAL64: { + const uint8_t precision = *reinterpret_cast(data); + data += sizeof(uint8_t); + const uint8_t scale = *reinterpret_cast(data); + data += sizeof(uint8_t); + res = Field::create_field(Decimal64(*reinterpret_cast(data))); + info_res.precision = static_cast(precision); + info_res.scale = static_cast(scale); + end = data + sizeof(Int64); + break; + } + case FieldType::OLAP_FIELD_TYPE_DECIMAL128I: { + const uint8_t precision = *reinterpret_cast(data); + data += sizeof(uint8_t); + const uint8_t scale = *reinterpret_cast(data); + data += sizeof(uint8_t); + res = Field::create_field( + Decimal128V3(reinterpret_cast(data)->value)); + info_res.precision = static_cast(precision); + info_res.scale = static_cast(scale); + end = data + sizeof(PackedInt128); + break; + } + case FieldType::OLAP_FIELD_TYPE_DECIMAL256: { + const uint8_t precision = *reinterpret_cast(data); + data += sizeof(uint8_t); + const uint8_t scale = *reinterpret_cast(data); + data += sizeof(uint8_t); + res = Field::create_field( + Decimal256(*reinterpret_cast(data))); + info_res.precision = static_cast(precision); + info_res.scale = static_cast(scale); + end = data + sizeof(wide::Int256); + break; + } + case FieldType::OLAP_FIELD_TYPE_BOOL: { + res = Field::create_field(*reinterpret_cast(data)); + end = data + sizeof(uint8_t); + break; + } + case FieldType::OLAP_FIELD_TYPE_NONE: { + res = Field(); end = data; break; } @@ -960,16 +1047,18 @@ std::pair ColumnVariant::deserialize_from_sparse_column(const const auto& data_ref = value->get_data_at(row); const char* data = data_ref.data; DCHECK(data_ref.size > 1); - const auto type = static_cast(*reinterpret_cast(data++)); + const FieldType type = static_cast(*reinterpret_cast(data++)); Field res; FieldInfo info_res = { - .scalar_type_id = type, + .scalar_type_id = TabletColumn::get_primitive_type_by_field_type(type), .have_nulls = false, .need_convert = false, .num_dimensions = 0, }; const char* end = parse_binary_from_sparse_column(type, data, res, info_res); - DCHECK_EQ(end - data_ref.data, data_ref.size); + DCHECK_EQ(end - data_ref.data, data_ref.size) + << "FieldType: " << (int)type << " data_ref.size: " << data_ref.size << " end: " << end + << " data: " << data; return {std::move(res), std::move(info_res)}; } @@ -1006,10 +1095,10 @@ void ColumnVariant::get(size_t n, Field& res) const { for (size_t i = offset; i != end; ++i) { const StringRef path_data = path->get_data_at(i); auto data = ColumnVariant::deserialize_from_sparse_column(value, i); - // TODO support decimal type or etc... - object.try_emplace(PathInData(path_data), FieldWithDataType(std::move(data.first), -1, -1, - data.second.scalar_type_id, - data.second.num_dimensions)); + object.try_emplace( + PathInData(path_data), + FieldWithDataType(std::move(data.first), data.second.precision, data.second.scale, + data.second.scalar_type_id, data.second.num_dimensions)); } if (object.empty()) { @@ -1078,14 +1167,14 @@ bool ColumnVariant::try_add_new_subcolumn(const PathInData& path) { if (subcolumns.get_root() == nullptr || path.empty()) { throw Exception(ErrorCode::INTERNAL_ERROR, "column object has no root or path is empty"); } - if (path.get_is_typed()) { - return add_sub_column(path, num_rows); - } - if (path.has_nested_part()) { + + if (path.get_is_typed() || path.has_nested_part()) { return add_sub_column(path, num_rows); } - if (!_max_subcolumns_count || - (subcolumns.size() - typed_path_count - nested_path_count) < _max_subcolumns_count + 1) { + + // 1 for root, nested_path_count for nested path + int subcolumns_size = subcolumns.size() - nested_path_count - 1; + if (!_max_subcolumns_count || subcolumns_size < _max_subcolumns_count) { return add_sub_column(path, num_rows); } @@ -1111,7 +1200,6 @@ void ColumnVariant::insert_range_from(const IColumn& src, size_t start, size_t l DCHECK(subcolumn != nullptr); subcolumn->insert_range_from(entry->data, start, length); } else { - CHECK(!entry->path.get_is_typed()); CHECK(!entry->path.has_nested_part()); src_path_and_subcoumn_for_sparse_column.emplace(entry->path.get_path(), entry->data); } @@ -1863,14 +1951,53 @@ void ColumnVariant::finalize(FinalizeMode mode) { ENABLE_CHECK_CONSISTENCY(this); } -Status ColumnVariant::pick_subcolumns_to_sparse_column( +Status ColumnVariant::convert_typed_path_to_storage_type( const std::unordered_map& typed_paths) { + for (auto&& entry : subcolumns) { + if (auto it = typed_paths.find(entry->path.get_path()); it != typed_paths.end()) { + CHECK(entry->data.is_finalized()); + vectorized::DataTypePtr storage_type = + vectorized::DataTypeFactory::instance().create_data_type(it->second.column); + vectorized::DataTypePtr finalized_type = entry->data.get_least_common_type(); + auto current_column = entry->data.get_finalized_column_ptr()->get_ptr(); + if (!storage_type->equals(*finalized_type)) { + RETURN_IF_ERROR(vectorized::schema_util::cast_column( + {current_column, finalized_type, ""}, storage_type, ¤t_column)); + } + VLOG_DEBUG << "convert " << entry->path.get_path() << " from type" + << entry->data.get_least_common_type()->get_name() << " to " + << storage_type->get_name(); + entry->data.data[0] = current_column; + entry->data.data_types[0] = storage_type; + entry->data.data_serdes[0] = Subcolumn::generate_data_serdes(storage_type, false); + entry->data.least_common_type = Subcolumn::LeastCommonType {storage_type, false}; + } + } + return Status::OK(); +} + +Status ColumnVariant::pick_subcolumns_to_sparse_column( + const std::unordered_map& typed_paths, + bool variant_enable_typed_paths_to_sparse) { DCHECK(_max_subcolumns_count >= 0) << "max subcolumns count is: " << _max_subcolumns_count; + // no need to pick subcolumns to sparse column, all subcolumns will be picked + if (_max_subcolumns_count == 0) { + return Status::OK(); + } + // root column must be exsit in subcolumns - bool need_pick_subcolumn_to_sparse_column = - (_max_subcolumns_count && (subcolumns.size() - typed_paths.size() - nested_path_count) > - _max_subcolumns_count + 1); + // nested path count is the count of nested columns + int64_t current_subcolumns_count = subcolumns.size() - 1 - nested_path_count; + + // 1000 count + // b : 1500 typed path + 700 subcolumns -> 1200 count () + if (!variant_enable_typed_paths_to_sparse) { + current_subcolumns_count -= typed_paths.size(); + } + + bool need_pick_subcolumn_to_sparse_column = current_subcolumns_count > _max_subcolumns_count; + if (!need_pick_subcolumn_to_sparse_column) { return Status::OK(); } @@ -1893,8 +2020,8 @@ Status ColumnVariant::pick_subcolumns_to_sparse_column( if (entry->data.is_root) { continue; } - // typed column or nested column will be picked as sub column and ignore none null value size - if (typed_paths.find(entry->path.get_path()) != typed_paths.end() || + if ((!variant_enable_typed_paths_to_sparse && + typed_paths.find(entry->path.get_path()) != typed_paths.end()) || entry->path.has_nested_part()) { VLOG_DEBUG << "pick " << entry->path.get_path() << " as typed column"; new_subcolumns.add(entry->path, entry->data); @@ -1928,7 +2055,6 @@ Status ColumnVariant::pick_subcolumns_to_sparse_column( } else if (none_null_value_sizes.find(entry->path.get_path()) != none_null_value_sizes.end()) { VLOG_DEBUG << "pick " << entry->path.get_path() << " as sparse column"; - CHECK(!entry->path.get_is_typed()); CHECK(!entry->path.has_nested_part()); remaing_subcolumns.emplace(entry->path.get_path(), entry->data); } diff --git a/be/src/vec/columns/column_variant.h b/be/src/vec/columns/column_variant.h index c1f7441bad9754..e5550db6210a31 100644 --- a/be/src/vec/columns/column_variant.h +++ b/be/src/vec/columns/column_variant.h @@ -577,6 +577,10 @@ class ColumnVariant final : public COWHelper { size_t row); Status pick_subcolumns_to_sparse_column( + const std::unordered_map& typed_paths, + bool variant_enable_typed_paths_to_sparse); + + Status convert_typed_path_to_storage_type( const std::unordered_map& typed_paths); void set_max_subcolumns_count(int32_t max_subcolumns_count) { diff --git a/be/src/vec/common/schema_util.cpp b/be/src/vec/common/schema_util.cpp index c160f4beaa8824..9cd8ae9ecd970c 100644 --- a/be/src/vec/common/schema_util.cpp +++ b/be/src/vec/common/schema_util.cpp @@ -281,7 +281,7 @@ void update_least_schema_internal(const std::map& subcolu TabletSchemaSPtr& common_schema, bool update_sparse_column, int32_t variant_col_unique_id, const std::map& typed_columns, - std::set* path_set = nullptr) { + std::set* path_set) { PathsInData tuple_paths; DataTypes tuple_types; CHECK(common_schema.use_count() == 1); @@ -857,6 +857,9 @@ Status get_compaction_typed_columns(const TabletSchemaSPtr& target, const TabletColumnPtr parent_column, TabletSchemaSPtr& output_schema, TabletSchema::PathsSetInfo& paths_set_info) { + if (parent_column->variant_enable_typed_paths_to_sparse()) { + return Status::OK(); + } for (const auto& path : typed_paths) { TabletSchema::SubColumnInfo sub_column_info; if (generate_sub_column_info(*target, parent_column->unique_id(), path, &sub_column_info)) { @@ -926,9 +929,18 @@ void get_compaction_subcolumns(TabletSchema::PathsSetInfo& paths_set_info, // 1. this path has no data type in segments // 2. this path is in sparse paths // 3. the sparse paths are too much - if (find_data_types == path_to_data_types.end() || find_data_types->second.empty() || - sparse_paths.find(std::string(subpath)) != sparse_paths.end() || - sparse_paths.size() >= config::variant_max_sparse_column_statistics_size) { + TabletSchema::SubColumnInfo sub_column_info; + if (parent_column->variant_enable_typed_paths_to_sparse() && + generate_sub_column_info(*target, parent_column->unique_id(), std::string(subpath), + &sub_column_info)) { + vectorized::schema_util::inherit_column_attributes(*parent_column, + sub_column_info.column); + output_schema->append_column(sub_column_info.column); + paths_set_info.subcolumn_indexes.emplace(subpath, std::move(sub_column_info.indexes)); + VLOG_DEBUG << "append typed column " << subpath; + } else if (find_data_types == path_to_data_types.end() || find_data_types->second.empty() || + sparse_paths.find(std::string(subpath)) != sparse_paths.end() || + sparse_paths.size() >= config::variant_max_sparse_column_statistics_size) { TabletColumn subcolumn; subcolumn.set_name(column_name); subcolumn.set_type(FieldType::OLAP_FIELD_TYPE_VARIANT); @@ -937,6 +949,8 @@ void get_compaction_subcolumns(TabletSchema::PathsSetInfo& paths_set_info, subcolumn.set_aggregation_method(parent_column->aggregation()); subcolumn.set_variant_max_subcolumns_count( parent_column->variant_max_subcolumns_count()); + subcolumn.set_variant_enable_typed_paths_to_sparse( + parent_column->variant_enable_typed_paths_to_sparse()); subcolumn.set_is_nullable(true); output_schema->append_column(subcolumn); VLOG_DEBUG << "append sub column " << subpath << " data type " @@ -992,7 +1006,6 @@ Status get_extended_compaction_schema(const std::vector& rowset RETURN_IF_ERROR(get_compaction_typed_columns( target, uid_to_variant_extended_info[column->unique_id()].typed_paths, column, output_schema, uid_to_paths_set_info[column->unique_id()])); - // 2. append nested columns RETURN_IF_ERROR(get_compaction_nested_columns( uid_to_variant_extended_info[column->unique_id()].nested_paths, @@ -1211,8 +1224,9 @@ bool generate_sub_column_info(const TabletSchema& schema, int32_t col_unique_id, to_column->set_name(parent_column.name_lower_case() + "." + path); to_column->set_type(from_column.type()); to_column->set_parent_unique_id(parent_column.unique_id()); + bool is_typed = parent_column.variant_enable_typed_paths_to_sparse() ? false : true; to_column->set_path_info( - PathInData(parent_column.name_lower_case() + "." + path, true)); + PathInData(parent_column.name_lower_case() + "." + path, is_typed)); to_column->set_aggregation_method(parent_column.aggregation()); to_column->set_is_nullable(true); to_column->set_precision(from_column.precision()); diff --git a/be/src/vec/common/schema_util.h b/be/src/vec/common/schema_util.h index c90794cf88eed5..60740f48dce0d1 100644 --- a/be/src/vec/common/schema_util.h +++ b/be/src/vec/common/schema_util.h @@ -114,11 +114,11 @@ Status get_least_common_schema(const std::vector& schemas, // with a speicified variant column's unique id void update_least_common_schema(const std::vector& schemas, TabletSchemaSPtr& common_schema, int32_t variant_col_unique_id, - std::unordered_set* path_set); + std::set* path_set); void update_least_sparse_column(const std::vector& schemas, TabletSchemaSPtr& common_schema, int32_t variant_col_unique_id, - const std::unordered_set& path_set); + const std::set& path_set); // inherit attributes like index/agg info from it's parent column void inherit_column_attributes(TabletSchemaSPtr& schema); @@ -185,4 +185,28 @@ bool inherit_index(const std::vector& parent_indexes, bool inherit_index(const std::vector& parent_indexes, TabletIndexes& sub_column_indexes, const segment_v2::ColumnMetaPB& column_pb); +void get_compaction_subcolumns(TabletSchema::PathsSetInfo& paths_set_info, + const TabletColumnPtr parent_column, const TabletSchemaSPtr& target, + const PathToDataTypes& path_to_data_types, + const std::unordered_set& sparse_paths, + TabletSchemaSPtr& output_schema); + +void update_least_schema_internal(const std::map& subcolumns_types, + TabletSchemaSPtr& common_schema, bool update_sparse_column, + int32_t variant_col_unique_id, + const std::map& typed_columns, + std::set* path_set = nullptr); + +Status get_compaction_typed_columns(const TabletSchemaSPtr& target, + const std::unordered_set& typed_paths, + const TabletColumnPtr parent_column, + TabletSchemaSPtr& output_schema, + TabletSchema::PathsSetInfo& paths_set_info); + +Status get_compaction_nested_columns( + const std::unordered_set& + nested_paths, + const PathToDataTypes& path_to_data_types, const TabletColumnPtr parent_column, + TabletSchemaSPtr& output_schema, TabletSchema::PathsSetInfo& paths_set_info); + } // namespace doris::vectorized::schema_util diff --git a/be/src/vec/core/field.h b/be/src/vec/core/field.h index 32a75114650da5..2a18120a6ce9b1 100644 --- a/be/src/vec/core/field.h +++ b/be/src/vec/core/field.h @@ -648,11 +648,18 @@ struct NearestFieldTypeImpl { using Type = Int128; }; +template <> +struct NearestFieldTypeImpl { + using Type = IPv6; +}; + template decltype(auto) cast_to_nearest_field_type(T&& x) { using U = NearestFieldType>; if constexpr (std::is_same_v>) { return U(x.value); + } else if constexpr (std::is_same_v>) { + return U(x.value); } else if constexpr (std::is_same_v, U>) { return std::forward(x); } else { diff --git a/be/src/vec/data_types/data_type_variant.cpp b/be/src/vec/data_types/data_type_variant.cpp index bcbf21cbf82727..12b85920e0e8dc 100644 --- a/be/src/vec/data_types/data_type_variant.cpp +++ b/be/src/vec/data_types/data_type_variant.cpp @@ -52,14 +52,9 @@ DataTypeVariant::DataTypeVariant(int32_t max_subcolumns_count) : _max_subcolumns_count(max_subcolumns_count) { name = fmt::format("Variant(max subcolumns count = {})", max_subcolumns_count); } + bool DataTypeVariant::equals(const IDataType& rhs) const { auto rhs_type = typeid_cast(&rhs); - if (rhs_type && _max_subcolumns_count != rhs_type->variant_max_subcolumns_count()) { - VLOG_DEBUG << "_max_subcolumns_count is" << _max_subcolumns_count - << "rhs_type->variant_max_subcolumns_count()" - << rhs_type->variant_max_subcolumns_count(); - return false; - } return rhs_type && _max_subcolumns_count == rhs_type->variant_max_subcolumns_count(); } diff --git a/be/src/vec/data_types/serde/data_type_array_serde.cpp b/be/src/vec/data_types/serde/data_type_array_serde.cpp index 2df9cd706ac337..04237aab1a6f9f 100644 --- a/be/src/vec/data_types/serde/data_type_array_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_array_serde.cpp @@ -429,7 +429,7 @@ Status DataTypeArraySerDe::read_column_from_pb(IColumn& column, const PValues& a void DataTypeArraySerDe::write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, int64_t row_num) const { - const auto type = static_cast(PrimitiveType::TYPE_ARRAY); + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_ARRAY); const size_t old_size = chars.size(); const size_t new_size = old_size + sizeof(uint8_t) + sizeof(size_t); chars.resize(new_size); diff --git a/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp b/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp index d627302e8a7765..40e185f00b8e72 100644 --- a/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_datetimev2_serde.cpp @@ -1208,6 +1208,25 @@ void DataTypeDateTimeV2SerDe::insert_column_last_value_multiple_times(IColumn& c UInt64 val = col.get_element(sz - 1); col.insert_many_vals(val, times); } + +void DataTypeDateTimeV2SerDe::write_one_cell_to_binary(const IColumn& src_column, + ColumnString::Chars& chars, + int64_t row_num) const { + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_DATETIMEV2); + const auto& data_ref = + assert_cast&>(src_column).get_data_at(row_num); + const uint8_t sc = static_cast(_scale); + + const size_t old_size = chars.size(); + const size_t new_size = old_size + sizeof(uint8_t) + sizeof(uint8_t) + data_ref.size; + chars.resize(new_size); + memcpy(chars.data() + old_size, reinterpret_cast(&type), sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t), reinterpret_cast(&sc), + sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t) + sizeof(uint8_t), data_ref.data, + data_ref.size); +} + // NOLINTEND(readability-function-cognitive-complexity) // NOLINTEND(readability-function-size) @@ -1260,5 +1279,4 @@ template Status DataTypeDateTimeV2SerDe::from_decimal_strict_mode_batch( const DataTypeDecimal256::ColumnType& decimal_col, IColumn& target_col) const; - } // namespace doris::vectorized diff --git a/be/src/vec/data_types/serde/data_type_datetimev2_serde.h b/be/src/vec/data_types/serde/data_type_datetimev2_serde.h index aa2c646bd3a39d..5f87a060cfbc19 100644 --- a/be/src/vec/data_types/serde/data_type_datetimev2_serde.h +++ b/be/src/vec/data_types/serde/data_type_datetimev2_serde.h @@ -101,6 +101,9 @@ class DataTypeDateTimeV2SerDe : public DataTypeNumberSerDe Status _write_column_to_mysql(const IColumn& column, MysqlRowBuffer& result, diff --git a/be/src/vec/data_types/serde/data_type_datev2_serde.cpp b/be/src/vec/data_types/serde/data_type_datev2_serde.cpp index 86f158ff38aecf..7f98343f039e48 100644 --- a/be/src/vec/data_types/serde/data_type_datev2_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_datev2_serde.cpp @@ -208,6 +208,21 @@ void DataTypeDateV2SerDe::insert_column_last_value_multiple_times(IColumn& colum col.insert_many_vals(val, times); } +void DataTypeDateV2SerDe::write_one_cell_to_binary(const IColumn& src_column, + ColumnString::Chars& chars, + int64_t row_num) const { + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_DATEV2); + const auto& data_ref = + assert_cast&>(src_column).get_data_at(row_num); + + const size_t old_size = chars.size(); + const size_t new_size = old_size + sizeof(uint8_t) + data_ref.size; + chars.resize(new_size); + + memcpy(chars.data() + old_size, reinterpret_cast(&type), sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t), data_ref.data, data_ref.size); +} + // NOLINTBEGIN(readability-function-size) // NOLINTBEGIN(readability-function-cognitive-complexity) Status DataTypeDateV2SerDe::from_string_batch(const ColumnString& col_str, ColumnNullable& col_res, diff --git a/be/src/vec/data_types/serde/data_type_datev2_serde.h b/be/src/vec/data_types/serde/data_type_datev2_serde.h index 73e3df5394de19..da89d83cc21c46 100644 --- a/be/src/vec/data_types/serde/data_type_datev2_serde.h +++ b/be/src/vec/data_types/serde/data_type_datev2_serde.h @@ -99,6 +99,9 @@ class DataTypeDateV2SerDe : public DataTypeNumberSerDe Status _write_column_to_mysql(const IColumn& column, MysqlRowBuffer& result, 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 70d2e9c8757c65..d72d47fc01bbb7 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 @@ -24,6 +24,7 @@ #include "arrow/type.h" #include "common/consts.h" +#include "olap/tablet_schema.h" #include "util/jsonb_document.h" #include "util/jsonb_writer.h" #include "vec/columns/column.h" @@ -548,6 +549,31 @@ void DataTypeDecimalSerDe::read_one_cell_from_jsonb(IColumn& column, } } +template +void DataTypeDecimalSerDe::write_one_cell_to_binary(const IColumn& src_column, + ColumnString::Chars& chars, + int64_t row_num) const { + const uint8_t type = (const uint8_t)TabletColumn::get_field_type_by_type(T); + const auto& data_ref = assert_cast&>(src_column).get_data_at(row_num); + const auto& prec = static_cast(precision); + const auto& sc = static_cast(scale); + + const size_t old_size = chars.size(); + // FieldType + precision + scale + value + const size_t new_size = + old_size + sizeof(uint8_t) + sizeof(uint8_t) + sizeof(uint8_t) + data_ref.size; + chars.resize(new_size); + + // FieldType + precision + scale + value + memcpy(chars.data() + old_size, reinterpret_cast(&type), sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t), reinterpret_cast(&prec), + sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t) + sizeof(uint8_t), + reinterpret_cast(&sc), sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t) + sizeof(uint8_t) + sizeof(uint8_t), + data_ref.data, data_ref.size); +} + template class DataTypeDecimalSerDe; template class DataTypeDecimalSerDe; template class DataTypeDecimalSerDe; diff --git a/be/src/vec/data_types/serde/data_type_decimal_serde.h b/be/src/vec/data_types/serde/data_type_decimal_serde.h index 8bdbccd28ca6f4..3cc2afc48484e7 100644 --- a/be/src/vec/data_types/serde/data_type_decimal_serde.h +++ b/be/src/vec/data_types/serde/data_type_decimal_serde.h @@ -112,6 +112,9 @@ class DataTypeDecimalSerDe : public DataTypeSerDe { void insert_column_last_value_multiple_times(IColumn& column, uint64_t times) const override; + void write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, + int64_t row_num) const override; + private: template Status _write_column_to_mysql(const IColumn& column, MysqlRowBuffer& result, diff --git a/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp b/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp index 463c91f6dcdff2..bf5d2cddbd5660 100644 --- a/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_ipv4_serde.cpp @@ -148,4 +148,19 @@ Status DataTypeIPv4SerDe::read_column_from_arrow(IColumn& column, const arrow::A col_data.insert(raw_data, raw_data + row_count); return Status::OK(); } + +void DataTypeIPv4SerDe::write_one_cell_to_binary(const IColumn& src_column, + ColumnString::Chars& chars, + int64_t row_num) const { + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_IPV4); + const auto& data_ref = assert_cast(src_column).get_data_at(row_num); + + const size_t old_size = chars.size(); + const size_t new_size = old_size + sizeof(uint8_t) + data_ref.size; + chars.resize(new_size); + + memcpy(chars.data() + old_size, reinterpret_cast(&type), sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t), data_ref.data, data_ref.size); +} + } // namespace doris::vectorized diff --git a/be/src/vec/data_types/serde/data_type_ipv4_serde.h b/be/src/vec/data_types/serde/data_type_ipv4_serde.h index 24cc66f464633c..f03e06ba18f7f3 100644 --- a/be/src/vec/data_types/serde/data_type_ipv4_serde.h +++ b/be/src/vec/data_types/serde/data_type_ipv4_serde.h @@ -59,6 +59,9 @@ class DataTypeIPv4SerDe : public DataTypeNumberSerDe { Status read_column_from_arrow(IColumn& column, const arrow::Array* arrow_array, int64_t start, int64_t end, const cctz::time_zone& ctz) const override; + void write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, + int64_t row_num) const override; + private: template Status _write_column_to_mysql(const IColumn& column, MysqlRowBuffer& result, diff --git a/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp b/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp index 656897f30950de..cc9ca2759731ce 100644 --- a/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_ipv6_serde.cpp @@ -250,4 +250,18 @@ Status DataTypeIPv6SerDe::write_column_to_orc(const std::string& timezone, const return Status::OK(); } +void DataTypeIPv6SerDe::write_one_cell_to_binary(const IColumn& src_column, + ColumnString::Chars& chars, + int64_t row_num) const { + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_IPV6); + const auto& data_ref = assert_cast(src_column).get_data_at(row_num); + + const size_t old_size = chars.size(); + const size_t new_size = old_size + sizeof(uint8_t) + data_ref.size; + chars.resize(new_size); + + memcpy(chars.data() + old_size, reinterpret_cast(&type), sizeof(uint8_t)); + memcpy(chars.data() + old_size + sizeof(uint8_t), data_ref.data, data_ref.size); +} + } // namespace doris::vectorized diff --git a/be/src/vec/data_types/serde/data_type_ipv6_serde.h b/be/src/vec/data_types/serde/data_type_ipv6_serde.h index 85e2f8167fb78d..9895b7539d55df 100644 --- a/be/src/vec/data_types/serde/data_type_ipv6_serde.h +++ b/be/src/vec/data_types/serde/data_type_ipv6_serde.h @@ -69,6 +69,9 @@ class DataTypeIPv6SerDe : public DataTypeNumberSerDe { void write_one_cell_to_jsonb(const IColumn& column, JsonbWriterT& result, Arena& mem_pool, int unique_id, int64_t row_num) const override; + void write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, + int64_t row_num) const override; + private: template Status _write_column_to_mysql(const IColumn& column, MysqlRowBuffer& result, diff --git a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp index 4d1a3d421b2691..447bf5fcaea10f 100644 --- a/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_jsonb_serde.cpp @@ -287,7 +287,7 @@ Status DataTypeJsonbSerDe::read_column_from_pb(IColumn& column, const PValues& a void DataTypeJsonbSerDe::write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, int64_t row_num) const { - const uint8_t type = static_cast(PrimitiveType::TYPE_JSONB); + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_JSONB); const auto& col = assert_cast(src_column); const auto& data_ref = col.get_data_at(row_num); size_t data_size = data_ref.size; diff --git a/be/src/vec/data_types/serde/data_type_nullable_serde.cpp b/be/src/vec/data_types/serde/data_type_nullable_serde.cpp index 387ab4f0159e3a..c684e10edea51c 100644 --- a/be/src/vec/data_types/serde/data_type_nullable_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_nullable_serde.cpp @@ -385,7 +385,7 @@ void DataTypeNullableSerDe::write_one_cell_to_binary(const IColumn& src_column, int64_t row_num) const { auto& col = assert_cast(src_column); if (col.is_null_at(row_num)) [[unlikely]] { - const uint8_t type = static_cast(PrimitiveType::INVALID_TYPE); + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_NONE); const size_t old_size = chars.size(); const size_t new_size = old_size + sizeof(uint8_t); chars.resize(new_size); diff --git a/be/src/vec/data_types/serde/data_type_number_serde.cpp b/be/src/vec/data_types/serde/data_type_number_serde.cpp index 5c2273c3f577a6..82a9eb4df47870 100644 --- a/be/src/vec/data_types/serde/data_type_number_serde.cpp +++ b/be/src/vec/data_types/serde/data_type_number_serde.cpp @@ -22,6 +22,7 @@ #include "common/exception.h" #include "common/status.h" #include "gutil/strings/numbers.h" +#include "olap/tablet_schema.h" #include "util/jsonb_document.h" #include "util/jsonb_writer.h" #include "util/mysql_global.h" @@ -664,7 +665,7 @@ template void DataTypeNumberSerDe::write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, int64_t row_num) const { - const auto type = static_cast(T); + const uint8_t type = (const uint8_t)TabletColumn::get_field_type_by_type(T); const auto& data_ref = assert_cast(src_column).get_data_at(row_num); const size_t old_size = chars.size(); diff --git a/be/src/vec/data_types/serde/data_type_string_serde.h b/be/src/vec/data_types/serde/data_type_string_serde.h index 7d0cf208c702b3..4119c7bd38c4eb 100644 --- a/be/src/vec/data_types/serde/data_type_string_serde.h +++ b/be/src/vec/data_types/serde/data_type_string_serde.h @@ -210,7 +210,7 @@ class DataTypeStringSerDeBase : public DataTypeSerDe { void write_one_cell_to_binary(const IColumn& src_column, ColumnString::Chars& chars, int64_t row_num) const override { - const uint8_t type = static_cast(PrimitiveType::TYPE_STRING); + const uint8_t type = static_cast(FieldType::OLAP_FIELD_TYPE_STRING); const auto& col = assert_cast(src_column); const auto& data_ref = col.get_data_at(row_num); const size_t data_size = data_ref.size; diff --git a/be/src/vec/exprs/vmatch_predicate.cpp b/be/src/vec/exprs/vmatch_predicate.cpp index cfa99cffe0ecc6..b1d68fcc6bdb2d 100644 --- a/be/src/vec/exprs/vmatch_predicate.cpp +++ b/be/src/vec/exprs/vmatch_predicate.cpp @@ -69,6 +69,7 @@ VMatchPredicate::VMatchPredicate(const TExprNode& node) : VExpr(node) { _inverted_index_ctx->lower_case = INVERTED_INDEX_PARSER_FALSE; } _inverted_index_ctx->stop_words = node.match_predicate.parser_stopwords; + _inverted_index_ctx->custom_analyzer = node.match_predicate.custom_analyzer; _analyzer = inverted_index::InvertedIndexAnalyzer::create_analyzer(_inverted_index_ctx.get()); _inverted_index_ctx->analyzer = _analyzer.get(); } diff --git a/be/test/expected_result/vec/data_types/column_object_to_string.out b/be/test/expected_result/vec/data_types/column_object_to_string.out index e301e6ecf6faa6..25e73c5530838e 100644 --- a/be/test/expected_result/vec/data_types/column_object_to_string.out +++ b/be/test/expected_result/vec/data_types/column_object_to_string.out @@ -9,8 +9,8 @@ variant in row: 0 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 8 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 9 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 10 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 11 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 12 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 13 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 14 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}} \ No newline at end of file +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 11 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 12 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 13 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 14 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}} \ No newline at end of file diff --git a/be/test/expected_result/vec/data_types/column_object_to_string_batch.out b/be/test/expected_result/vec/data_types/column_object_to_string_batch.out index e301e6ecf6faa6..25e73c5530838e 100644 --- a/be/test/expected_result/vec/data_types/column_object_to_string_batch.out +++ b/be/test/expected_result/vec/data_types/column_object_to_string_batch.out @@ -9,8 +9,8 @@ variant in row: 0 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 8 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 9 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 10 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 11 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 12 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 13 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 14 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}} \ No newline at end of file +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 11 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 12 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 13 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 14 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}} \ No newline at end of file diff --git a/be/test/expected_result/vec/data_types/column_object_to_string_with_buffer.out b/be/test/expected_result/vec/data_types/column_object_to_string_with_buffer.out index e301e6ecf6faa6..25e73c5530838e 100644 --- a/be/test/expected_result/vec/data_types/column_object_to_string_with_buffer.out +++ b/be/test/expected_result/vec/data_types/column_object_to_string_with_buffer.out @@ -9,8 +9,8 @@ variant in row: 0 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 8 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 9 {"v":{"a":20,"b":"str","b":{"d":[20, 20]},"c":[20, 20],"c":{"d":"str"},"d":{"d":[20, 20]},"e":"str","f":["str", "str"]}};variant in row: 10 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 11 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 12 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 13 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}};variant in row: 14 -{"v":{"a":20,"b":20,"b":{"d":["str", "str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str", "str"]},"e":"str","f":["str", "str"]}} \ No newline at end of file +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 11 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 12 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 13 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}};variant in row: 14 +{"v":{"a":20,"b":20,"b":{"d":["str","str"]},"c":[20, 20],"c":{"d":20},"d":{"d":["str","str"]},"e":"str","f":["str", "str"]}} \ No newline at end of file diff --git a/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp b/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp index bf78fdca759078..e40bec1f56ee77 100644 --- a/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp +++ b/be/test/olap/rowset/segment_v2/variant_column_writer_reader_test.cpp @@ -263,7 +263,7 @@ TEST_F(VariantColumnWriterReaderTest, test_write_data_normal) { st = it->init(column_iter_opts); EXPECT_TRUE(st.ok()) << st.msg(); - MutableColumnPtr new_column_object = ColumnObject::create(3); + MutableColumnPtr new_column_object = ColumnObject::create(3, false); size_t nrows = 1000; st = it->seek_to_ordinal(0); EXPECT_TRUE(st.ok()) << st.msg(); @@ -310,7 +310,7 @@ TEST_F(VariantColumnWriterReaderTest, test_write_data_normal) { row_ids.push_back(i); } } - new_column_object = ColumnObject::create(3); + new_column_object = ColumnObject::create(3, false); st = it->read_by_rowids(row_ids.data(), row_ids.size(), new_column_object); EXPECT_TRUE(st.ok()) << st.msg(); for (int i = 0; i < row_ids.size(); ++i) { @@ -320,7 +320,7 @@ TEST_F(VariantColumnWriterReaderTest, test_write_data_normal) { } auto read_to_column_object = [&](ColumnIterator* it) { - new_column_object = ColumnObject::create(3); + new_column_object = ColumnObject::create(3, false); nrows = 1000; st = it->seek_to_ordinal(0); EXPECT_TRUE(st.ok()) << st.msg(); @@ -448,6 +448,7 @@ TEST_F(VariantColumnWriterReaderTest, test_write_data_normal) { } EXPECT_TRUE(variant_stats->sparse_column_non_null_size.size() == config::variant_max_sparse_column_statistics_size); + EXPECT_TRUE(variant_column_reader->is_exceeded_sparse_column_limit()); delete (it1); ColumnIterator* it2; diff --git a/be/test/vec/columns/column_object_test.cpp b/be/test/vec/columns/column_object_test.cpp new file mode 100644 index 00000000000000..4b048e78e6f211 --- /dev/null +++ b/be/test/vec/columns/column_object_test.cpp @@ -0,0 +1,1495 @@ +// 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_object.h" + +#include +#include +#include +#include +#include +#include + +#include "common/cast_set.h" +#include "common/exception.h" +#include "runtime/jsonb_value.h" +#include "testutil/variant_util.h" +#include "vec/columns/common_column_test.h" +#include "vec/common/string_ref.h" +#include "vec/core/field.h" +#include "vec/core/types.h" +#include "vec/data_types/data_type_array.h" +#include "vec/data_types/data_type_factory.hpp" + +namespace doris::vectorized { + +class ColumnObjectTest : public ::testing::Test {}; + +void convert_field_to_rapidjson(const vectorized::Field& field, rapidjson::Value& target, + rapidjson::Document::AllocatorType& allocator) { + switch (field.get_type()) { + case vectorized::Field::Types::Null: + target.SetNull(); + break; + case vectorized::Field::Types::Int64: + target.SetInt64(field.get()); + break; + case vectorized::Field::Types::Float64: + target.SetDouble(field.get()); + break; + case vectorized::Field::Types::JSONB: { + const auto& val = field.get(); + JsonbValue* json_val = JsonbDocument::createValue(val.get_value(), val.get_size()); + convert_jsonb_to_rapidjson(*json_val, target, allocator); + break; + } + case vectorized::Field::Types::String: { + const String& val = field.get(); + target.SetString(val.data(), cast_set(val.size())); + break; + } + case vectorized::Field::Types::Array: { + const vectorized::Array& array = field.get(); + target.SetArray(); + for (const vectorized::Field& item : array) { + rapidjson::Value val; + convert_field_to_rapidjson(item, val, allocator); + target.PushBack(val, allocator); + } + break; + } + case vectorized::Field::Types::VariantMap: { + const vectorized::VariantMap& map = field.get(); + target.SetObject(); + for (const auto& item : map) { + if (item.second.is_null()) { + continue; + } + rapidjson::Value key; + key.SetString(item.first.get_path().data(), + cast_set(item.first.get_path().size())); + rapidjson::Value val; + convert_field_to_rapidjson(item.second, val, allocator); + if (val.IsNull() && item.first.empty()) { + // skip null value with empty key, indicate the null json value of root in variant map, + // usally padding in nested arrays + continue; + } + target.AddMember(key, val, allocator); + } + break; + } + default: + throw doris::Exception(ErrorCode::INTERNAL_ERROR, "unkown field type: {}", + field.get_type_name()); + break; + } +} + +void convert_variant_map_to_rapidjson(const vectorized::VariantMap& map, rapidjson::Value& target, + rapidjson::Document::AllocatorType& allocator) { + target.SetObject(); + for (const auto& item : map) { + if (item.second.is_null()) { + continue; + } + rapidjson::Value key; + key.SetString(item.first.get_path().data(), + cast_set(item.first.get_path().size())); + rapidjson::Value val; + convert_field_to_rapidjson(item.second, val, allocator); + if (val.IsNull() && item.first.empty()) { + // skip null value with empty key, indicate the null json value of root in variant map, + // usally padding in nested arrays + continue; + } + target.AddMember(key, val, allocator); + } +} + +void convert_array_to_rapidjson(const vectorized::Array& array, rapidjson::Value& target, + rapidjson::Document::AllocatorType& allocator) { + target.SetArray(); + for (const vectorized::Field& item : array) { + rapidjson::Value val; + convert_field_to_rapidjson(item, val, allocator); + target.PushBack(val, allocator); + } +} + +TEST(ColumnVariantTest, insert_try_insert) { + auto v = VariantUtil::construct_dst_varint_column(); + FieldInfo info; + info.scalar_type_id = TypeIndex::Nothing; + info.num_dimensions = 0; + PathInData path("v.f"); + auto sub = v->get_subcolumn(path); + Int64 value = 43000000; + + try { + sub->insert(value, info); + info.num_dimensions = 1; + sub->insert(value, info); + + info.num_dimensions = 2; + sub->insert(value, info); + } catch (const doris::Exception& e) { + std::cout << "encounter exception: " << e.what() << std::endl; + } +} + +TEST(ColumnVariantTest, basic_finalize) { + auto variant = VariantUtil::construct_basic_varint_column(); + // 4. finalize + EXPECT_TRUE(variant->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(variant->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(variant->size(), 10); + + // check finalized subcolumn + // 5 subcolumn + 1 root + EXPECT_EQ(variant->subcolumns.size(), 6); + for (const auto& column : variant->subcolumns) { + if (column->data.is_root) { + continue; + } + EXPECT_EQ(column->data.data.size(), 1); + } + + // check sparse column + const auto& offsets = variant->serialized_sparse_column_offsets(); + for (int row = 0; row < 5; ++row) { + EXPECT_EQ(offsets[row], 0); + } + for (int row = 5; row < 10; ++row) { + EXPECT_EQ(offsets[row] - offsets[row - 1], 3); + } +} + +TEST(ColumnVariantTest, basic_deserialize) { + auto variant = VariantUtil::construct_basic_varint_column(); + + // 4. finalize + EXPECT_TRUE(variant->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(variant->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(variant->size(), 10); + + const auto& [path, value] = variant->get_sparse_data_paths_and_values(); + const auto& offsets = variant->serialized_sparse_column_offsets(); + for (size_t row = 5; row < 10; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.b.d", 5)); + auto pair = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), 30); + + auto data2 = path->get_data_at(start); + auto pair2 = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data2, StringRef("v.c.d", 5)); + EXPECT_EQ(pair2.first.get(), 30); + + auto data3 = path->get_data_at(start); + auto pair3 = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + EXPECT_EQ(pair3.first.get(), "50"); + EXPECT_EQ(start, end); + } +} + +// test ColumnVariant with ColumnNothing using update_hash_with_value +TEST(ColumnVariantTest, updateHashValueWithColumnNothingTest) { + // Create a ColumnObject with a subcolumn that contains ColumnNothing + auto variant = ColumnObject::create(3, 3); + + // Create a subcolumn with ColumnNothing type + PathInData path("v.nothing"); + auto type = DataTypeFactory::instance().create_data_type(TypeIndex::Nothing); + auto column = type->create_column(); + column->insert_many_defaults(3); + variant->add_sub_column(path, std::move(column), type); + + // Finalize the variant column to ensure proper structure + // EXPECT_TRUE(variant->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + // EXPECT_TRUE(variant->pick_subcolumns_to_sparse_column({}).ok()); + EXPECT_EQ(variant->size(), 3); + + // Test update_hash_with_value with ColumnNothing + SipHash hash1, hash2, hash3; + + // Test that update_hash_with_value doesn't crash with ColumnNothing + EXPECT_NO_THROW(variant->update_hash_with_value(0, hash1)); + EXPECT_NO_THROW(variant->update_hash_with_value(1, hash2)); + EXPECT_NO_THROW(variant->update_hash_with_value(2, hash3)); + + // For ColumnNothing, the hash should be consistent since it doesn't contain actual data + // However, the hash might include structural information, so we just verify it doesn't crash + // and produces some hash value + EXPECT_NE(hash1.get64(), 0); + EXPECT_NE(hash2.get64(), 0); + EXPECT_NE(hash3.get64(), 0); + + // Test update_hashes_with_value with ColumnNothing + std::vector hashes(3, 0); + EXPECT_NO_THROW(variant->update_hashes_with_value(hashes.data())); + + // Verify that hashes are computed (non-zero) + EXPECT_NE(hashes[0], 0); + EXPECT_NE(hashes[1], 0); + EXPECT_NE(hashes[2], 0); + + // Test update_xxHash_with_value with ColumnNothing + uint64_t xxhash = 0; + EXPECT_NO_THROW(variant->update_xxHash_with_value(0, 3, xxhash, nullptr)); + EXPECT_NE(xxhash, 0); + + // Test update_crc_with_value with ColumnNothing + uint32_t crc_hash = 0; + EXPECT_NO_THROW(variant->update_crc_with_value(0, 3, crc_hash, nullptr)); + EXPECT_NE(crc_hash, 0); + + // Test with null map + std::vector null_map(3, 0); + null_map[1] = 1; // Mark second row as null + + std::vector hashes_with_null(3, 0); + EXPECT_NO_THROW(variant->update_hashes_with_value(hashes_with_null.data(), null_map.data())); + + uint64_t xxhash_with_null = 0; + EXPECT_NO_THROW(variant->update_xxHash_with_value(0, 3, xxhash_with_null, null_map.data())); + + uint32_t crc_hash_with_null = 0; + EXPECT_NO_THROW(variant->update_crc_with_value(0, 3, crc_hash_with_null, null_map.data())); +} + +TEST(ColumnVariantTest, basic_inset_range_from) { + auto src = VariantUtil::construct_basic_varint_column(); + EXPECT_TRUE(src->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(src->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(src->size(), 10); + + // dst is an empty column, has 5 subcolumn + 1 root + auto dst = VariantUtil::construct_dst_varint_column(); + + // subcolumn->subcolumn v.b v.f v.e + // subcolumn->sparse_column v.a v.c + // sparse_column->subcolumn v.b.d v.c.d + // sparse_column->sparse_column v.d.d + dst->insert_range_from(*src, 0, 10); + dst->finalize(); + EXPECT_EQ(dst->size(), 10); + + // 5 subcolumn + EXPECT_EQ(dst->subcolumns.size(), 6); + ColumnObject::Subcolumns dst_subcolumns = dst->subcolumns; + std::sort( + dst_subcolumns.begin(), dst_subcolumns.end(), + [](const auto& lhsItem, const auto& rhsItem) { return lhsItem->path < rhsItem->path; }); + + for (const auto& column : dst_subcolumns) { + if (column->data.is_root) { + continue; + } + EXPECT_EQ(column->data.data.size(), 1); + EXPECT_EQ(column->data.data[0]->size(), 10); + if (column->path.get_path().size() == 3) { + EXPECT_EQ(column->data.get_non_null_value_size(), 10); + } else { + EXPECT_EQ(column->path.get_path().size(), 5); + EXPECT_EQ(column->data.get_non_null_value_size(), 5); + for (size_t row = 0; row != 5; ++row) { + EXPECT_TRUE(column->data.data[0]->is_null_at(row)); + } + for (size_t row = 5; row != 10; ++row) { + EXPECT_EQ((*column->data.data[0])[row].get(), 30); + } + } + } + + // check sparse column + const auto& [path, value] = dst->get_sparse_data_paths_and_values(); + const auto& offsets = dst->serialized_sparse_column_offsets(); + + // v.a v.c + for (int row = 0; row < 5; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.a", 3)); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), 20); + + auto data2 = path->get_data_at(start); + EXPECT_EQ(data2, StringRef("v.c", 3)); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair2.first.get(), 20); + + EXPECT_EQ(start, end); + } + + // v.a v.c v.d.d + for (int row = 5; row < 10; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.a", 3)); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), 20); + + auto data2 = path->get_data_at(start); + EXPECT_EQ(data2, StringRef("v.c", 3)); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair2.first.get(), 20); + + auto data3 = path->get_data_at(start); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + auto pair3 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair3.first.get(), "50"); + + EXPECT_EQ(start, end); + } +} + +auto convert_to_jsonb_field(auto serde, auto& column) { + vectorized::DataTypeSerDe::FormatOptions options; + options.escape_char = '\\'; + auto tmp_col = ColumnString::create(); + VectorBufferWriter write_buffer(*tmp_col.get()); + EXPECT_TRUE(serde->serialize_column_to_json(column, 0, 1, write_buffer, options).ok()); + + write_buffer.commit(); + auto str_ref = tmp_col->get_data_at(0); + Slice data((char*)(str_ref.data), str_ref.size); + + auto jsonb_type = doris::vectorized::DataTypeFactory::instance().create_data_type( + TypeIndex::JSONB, false); + auto jsonb_serde = jsonb_type->get_serde(); + auto jsonb_column = jsonb_type->create_column(); + + DataTypeSerDe::FormatOptions format_options; + format_options.converted_from_string = true; + EXPECT_TRUE( + jsonb_serde->deserialize_one_cell_from_json(*jsonb_column, data, format_options).ok()); + auto res = jsonb_column->get_data_at(0); + return JsonbField(res.data, res.size); +} + +auto convert_string_to_jsonb_field(auto& column) { + auto str_ref = column.get_data_at(0); + Slice data((char*)(str_ref.data), str_ref.size); + + auto jsonb_type = doris::vectorized::DataTypeFactory::instance().create_data_type( + TypeIndex::JSONB, false); + auto jsonb_serde = jsonb_type->get_serde(); + auto jsonb_column = jsonb_type->create_column(); + DataTypeSerDe::FormatOptions format_options; + format_options.converted_from_string = true; + format_options.escape_char = '\\'; + + EXPECT_TRUE( + jsonb_serde->deserialize_one_cell_from_json(*jsonb_column, data, format_options).ok()); + auto res = jsonb_column->get_data_at(0); + return JsonbField(res.data, res.size); +} + +doris::vectorized::Field get_jsonb_field(std::string_view type) { + static std::unordered_map field_map; + if (field_map.empty()) { + DataTypePtr data_type_int = doris::vectorized::DataTypeFactory::instance().create_data_type( + TypeIndex::Int8, false); + DataTypePtr data_type_array_int = + std::make_shared(data_type_int); + auto array_column_int = data_type_array_int->create_column(); + array_column_int->insert(VariantUtil::get_field("array_int")); + auto array_serde_int = data_type_array_int->get_serde(); + field_map["array_int"] = convert_to_jsonb_field(array_serde_int, *array_column_int); + + DataTypePtr data_type_str = doris::vectorized::DataTypeFactory::instance().create_data_type( + TypeIndex::String, false); + DataTypePtr data_type_array_str = + std::make_shared(data_type_str); + auto array_column_str = data_type_array_str->create_column(); + array_column_str->insert(VariantUtil::get_field("array_str")); + auto array_serde_str = data_type_array_str->get_serde(); + field_map["array_str"] = convert_to_jsonb_field(array_serde_str, *array_column_str); + + auto column_int = data_type_int->create_column(); + column_int->insert(VariantUtil::get_field("int")); + auto serde_int = data_type_int->get_serde(); + field_map["int"] = convert_to_jsonb_field(serde_int, *column_int); + + // auto column_str = data_type_str->create_column(); + // column_str->insert(VariantUtil::get_field("string")); + // field_map["string"] = convert_string_to_jsonb_field(*column_str); + } + return field_map[type]; +} + +// std::string convert_jsonb_field_to_string(doris::vectorized::Field jsonb) { +// const auto& val = jsonb.get(); +// const JsonbValue* json_val = JsonbDocument::createValue(val.get_value(), val.get_size()); + +// rapidjson::Document doc; +// doc.SetObject(); +// rapidjson::Document::AllocatorType& allocator = doc.GetAllocator(); +// rapidjson::Value json_value; +// convert_jsonb_to_rapidjson(*json_val, json_value, allocator); +// doc.AddMember("value", json_value, allocator); +// rapidjson::StringBuffer buffer; +// rapidjson::PrettyWriter writer(buffer); +// doc.Accept(writer); +// return std::string(buffer.GetString()); +// } + +std::string convert_field_to_string(doris::vectorized::Field array) { + rapidjson::Document doc; + doc.SetObject(); + rapidjson::Document::AllocatorType& allocator = doc.GetAllocator(); + rapidjson::Value json_value; + // DataTypeSerDe::convert_field_to_rapidjson(array, json_value, allocator); + doc.AddMember("value", json_value, allocator); + rapidjson::StringBuffer buffer; + rapidjson::PrettyWriter writer(buffer); + doc.Accept(writer); + return std::string(buffer.GetString()); +} + +TEST(ColumnVariantTest, is_null_at) { + auto v = VariantUtil::construct_dst_varint_column(); + PathInData path("v.f"); + auto sub = v->get_subcolumn(path); + std::cout << sub->get_least_common_typeBase()->get_name() << std::endl; + EXPECT_TRUE(sub->is_null_at(0)); + + auto v1 = VariantUtil::construct_advanced_varint_column(); + PathInData path1("v.b.d"); + auto sub1 = v1->get_subcolumn(path1); + EXPECT_TRUE(sub1->is_null_at(2)); + EXPECT_ANY_THROW(sub1->is_null_at(16)); + vectorized::Field f; + EXPECT_ANY_THROW(sub1->get(16, f)); + std::cout << sub1->num_rows << std::endl; + EXPECT_NO_THROW(sub1->resize(sub1->num_rows)); + + auto [sparse_column_keys, sparse_column_values] = v1->get_sparse_data_paths_and_values(); + std::string_view pa("v.a"); + EXPECT_NO_THROW( + sub1->serialize_to_sparse_column(sparse_column_keys, pa, sparse_column_values, 2)); + EXPECT_ANY_THROW( + sub1->serialize_to_sparse_column(sparse_column_keys, pa, sparse_column_values, 16)); +} + +TEST(ColumnVariantTest, advanced_finalize) { + auto variant = VariantUtil::construct_advanced_varint_column(); + + // 4. finalize + EXPECT_TRUE(variant->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(variant->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(variant->size(), 15); + + // check finalized subcolumn + // 5 subcolumn + 1 root + EXPECT_EQ(variant->subcolumns.size(), 6); + for (const auto& column : variant->subcolumns) { + if (column->data.is_root) { + continue; + } + EXPECT_EQ(column->data.data.size(), 1); + } + + // check sparse column + const auto& offsets = variant->serialized_sparse_column_offsets(); + for (int row = 0; row < 5; ++row) { + EXPECT_EQ(offsets[row] - offsets[row - 1], 0); + } + for (int row = 5; row < 15; ++row) { + EXPECT_EQ(offsets[row] - offsets[row - 1], 3); + } + + { + // Test fill_path_column_from_sparse_data + auto map = std::make_unique(15, 0); + vectorized::ColumnObject::fill_path_column_from_sparse_data( + *variant->get_subcolumn({}) /*root*/, map.get(), StringRef {"array"}, + variant->get_sparse_column(), 0, 5); + vectorized::ColumnObject::fill_path_column_from_sparse_data( + *variant->get_subcolumn({}) /*root*/, map.get(), StringRef {"array"}, + variant->get_sparse_column(), 5, 15); + } +} + +TEST(ColumnVariantTest, advanced_deserialize) { + auto variant = VariantUtil::construct_advanced_varint_column(); + + // 4. finalize + EXPECT_TRUE(variant->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(variant->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(variant->size(), 15); + + const auto& [path, value] = variant->get_sparse_data_paths_and_values(); + const auto& offsets = variant->serialized_sparse_column_offsets(); + for (size_t row = 5; row < 10; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + auto pair = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data, StringRef("v.b.d", 5)); + EXPECT_EQ(convert_field_to_string(pair.first), + convert_field_to_string(get_jsonb_field("array_int"))); + + auto data2 = path->get_data_at(start); + auto pair2 = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data2, StringRef("v.c.d", 5)); + EXPECT_EQ(convert_field_to_string(pair2.first), + convert_field_to_string(VariantUtil::get_field("string"))); + + auto data3 = path->get_data_at(start); + auto pair3 = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + EXPECT_EQ(convert_field_to_string(pair3.first), + convert_field_to_string(get_jsonb_field("array_int"))); + EXPECT_EQ(start, end); + } + + for (size_t row = 10; row < 15; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + auto pair = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data, StringRef("v.b.d", 5)); + EXPECT_EQ(convert_field_to_string(pair.first), + convert_field_to_string(get_jsonb_field("array_str"))); + + auto data2 = path->get_data_at(start); + auto pair2 = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data2, StringRef("v.c.d", 5)); + EXPECT_EQ(convert_field_to_string(pair2.first), + convert_field_to_string(get_jsonb_field("int"))); + + auto data3 = path->get_data_at(start); + auto pair3 = variant->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + EXPECT_EQ(convert_field_to_string(pair3.first), + convert_field_to_string(get_jsonb_field("array_str"))); + EXPECT_EQ(start, end); + } +} + +TEST(ColumnVariantTest, advanced_insert_range_from) { + auto src = VariantUtil::construct_advanced_varint_column(); + EXPECT_TRUE(src->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(src->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(src->size(), 15); + + auto dst = VariantUtil::construct_dst_varint_column(); + + // subcolumn->subcolumn v.b v.f v.e + // subcolumn->sparse_column v.a v.c + // sparse_column->subcolumn v.b.d v.c.d + // sparse_column->sparse_column v.d.d + dst->insert_range_from(*src, 0, src->size()); + dst->finalize(); + EXPECT_EQ(dst->size(), 15); + + EXPECT_EQ(dst->subcolumns.size(), 6); + ColumnObject::Subcolumns dst_subcolumns = dst->subcolumns; + + std::sort( + dst_subcolumns.begin(), dst_subcolumns.end(), + [](const auto& lhsItem, const auto& rhsItem) { return lhsItem->path < rhsItem->path; }); + + // subcolumns + for (const auto& column : dst_subcolumns) { + if (column->data.is_root) { + continue; + } + EXPECT_EQ(column->data.data.size(), 1); + EXPECT_EQ(column->data.data[0]->size(), 15); + + if (column->path.get_path().size() == 3) { + EXPECT_EQ(column->data.get_non_null_value_size(), 15); + if (column->path.get_path() == "v.b") { + EXPECT_EQ(assert_cast(column->data.data_types[0].get()) + ->get_nested_type() + ->get_type_id(), + TypeIndex::JSONB); + } + } else if (column->path.get_path().size() == 5) { + EXPECT_EQ(column->data.get_non_null_value_size(), 10); + EXPECT_EQ(assert_cast(column->data.data_types[0].get()) + ->get_nested_type() + ->get_type_id(), + TypeIndex::JSONB); + for (size_t row = 0; row < 5; ++row) { + EXPECT_TRUE(column->data.data[0]->is_null_at(row)); + } + } + } + + // sparse columns + const auto& [path, value] = dst->get_sparse_data_paths_and_values(); + const auto& offsets = dst->serialized_sparse_column_offsets(); + + // v.a v.c + for (int row = 0; row < 5; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.a", 3)); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), 20); + + auto data2 = path->get_data_at(start); + EXPECT_EQ(data2, StringRef("v.c", 3)); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(convert_field_to_string(pair2.first), + convert_field_to_string(VariantUtil::get_field("array_int"))); + + EXPECT_EQ(start, end); + } + + for (int row = 5; row < 10; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data, StringRef("v.a", 3)); + EXPECT_EQ(pair.first.get(), 20); + + auto data2 = path->get_data_at(start); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data2, StringRef("v.c", 3)); + EXPECT_EQ(convert_field_to_string(pair2.first), + convert_field_to_string(VariantUtil::get_field("array_int"))); + + auto data3 = path->get_data_at(start); + auto pair3 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + EXPECT_EQ(convert_field_to_string(pair3.first), + convert_field_to_string(get_jsonb_field("array_int"))); + + EXPECT_EQ(start, end); + } + + for (int row = 10; row < 15; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data, StringRef("v.a", 3)); + EXPECT_EQ(pair.first.get(), 20); + + auto data2 = path->get_data_at(start); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data2, StringRef("v.c", 3)); + EXPECT_EQ(convert_field_to_string(pair2.first), + convert_field_to_string(VariantUtil::get_field("array_int"))); + + auto data3 = path->get_data_at(start); + auto pair3 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + EXPECT_EQ(convert_field_to_string(pair3.first), + convert_field_to_string(get_jsonb_field("array_str"))); + + EXPECT_EQ(start, end); + } +} + +TEST(ColumnVariantTest, empty_inset_range_from) { + auto src = VariantUtil::construct_varint_column_only_subcolumns(); + EXPECT_TRUE(src->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(src->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(src->size(), 6); + + // dst is an empty column + auto dst = ColumnObject::create(5); + + // subcolumn->subcolumn v.a v.b v.c v.f v.e + dst->insert_range_from(*src, 0, 6); + EXPECT_EQ(dst->size(), 6); + + // 5 subcolumn + EXPECT_EQ(dst->subcolumns.size(), 6); + + for (const auto& column : dst->subcolumns) { + if (column->data.is_root) { + EXPECT_EQ(column->data.data.size(), 1); + EXPECT_EQ(column->data.data[0]->size(), 6); + EXPECT_EQ(column->data.get_non_null_value_size(), 1); + continue; + } + EXPECT_EQ(column->data.data.size(), 1); + EXPECT_EQ(column->data.data[0]->size(), 6); + EXPECT_EQ(column->data.get_non_null_value_size(), 5); + } + + // empty sparse column + const auto& [path, value] = dst->get_sparse_data_paths_and_values(); + const auto& offsets = dst->serialized_sparse_column_offsets(); + EXPECT_EQ(offsets[4], offsets[-1]); + EXPECT_EQ(path->size(), value->size()); + + auto src_contains_seven_subcolumns = VariantUtil::construct_varint_column_more_subcolumns(); + + EXPECT_TRUE( + src_contains_seven_subcolumns->finalize(ColumnObject::FinalizeMode::WRITE_MODE).ok()); + EXPECT_TRUE(src_contains_seven_subcolumns->pick_subcolumns_to_sparse_column({}, false).ok()); + EXPECT_EQ(src_contains_seven_subcolumns->size(), 5); + + // subcolumn->subcolumn v.a v.b v.c v.f v.e + // add sprase columns v.s v.x v.y v.z + dst->insert_range_from(*src_contains_seven_subcolumns, 0, 5); + EXPECT_EQ(dst->size(), 11); + + // 5 subcolumn + EXPECT_EQ(dst->subcolumns.size(), 6); + + for (int row = 0; row < 6; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + EXPECT_EQ(start, end); + } + + // v.s v.x v.y v.z + for (int row = 6; row < 11; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data0 = path->get_data_at(start); + EXPECT_EQ(data0, StringRef("v.s", 3)); + auto pair0 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(convert_field_to_string(pair0.first), + convert_field_to_string(VariantUtil::get_field("string"))); + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.x", 3)); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), std::numeric_limits::max()); + + auto data2 = path->get_data_at(start); + EXPECT_EQ(data2, StringRef("v.y", 3)); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair2.first.get(), std::numeric_limits::max()); + + auto data3 = path->get_data_at(start); + EXPECT_EQ(data3, StringRef("v.z", 3)); + auto pair3 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair3.first.get(), + Int64(static_cast(std::numeric_limits::max()) + 1)); + + EXPECT_EQ(start, end); + } + + auto src_contains_subcoumns_and_sparse_columns = VariantUtil::construct_basic_varint_column(); + EXPECT_TRUE(src_contains_subcoumns_and_sparse_columns + ->finalize(ColumnObject::FinalizeMode::WRITE_MODE) + .ok()); + EXPECT_TRUE( + src_contains_subcoumns_and_sparse_columns->pick_subcolumns_to_sparse_column({}, false) + .ok()); + EXPECT_EQ(src_contains_subcoumns_and_sparse_columns->size(), 10); + + // subcolumn->subcolumn v.a v.b v.c v.f v.e + // add sprase columns v.s v.x v.y v.b.d v.c.d v.d.d + dst->insert_range_from(*src_contains_subcoumns_and_sparse_columns, 0, 10); + EXPECT_EQ(dst->size(), 21); + + // 5 subcolumn + EXPECT_EQ(dst->subcolumns.size(), 6); + + for (int row = 0; row < 6; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + EXPECT_EQ(start, end); + } + + // v.x v.y + for (int row = 6; row < 11; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data0 = path->get_data_at(start); + EXPECT_EQ(data0, StringRef("v.s", 3)); + auto pair0 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(convert_field_to_string(pair0.first), + convert_field_to_string(VariantUtil::get_field("string"))); + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.x", 3)); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), std::numeric_limits::max()); + + auto data2 = path->get_data_at(start); + EXPECT_EQ(data2, StringRef("v.y", 3)); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair2.first.get(), std::numeric_limits::max()); + + auto data3 = path->get_data_at(start); + EXPECT_EQ(data3, StringRef("v.z", 3)); + auto pair3 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair3.first.get(), + Int64(static_cast(std::numeric_limits::max()) + 1)); + + EXPECT_EQ(start, end); + } + + for (int row = 11; row < 16; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + EXPECT_EQ(start, end); + } + + //v.b.d v.c.d v.d.d + for (int row = 16; row < 21; ++row) { + size_t start = offsets[row - 1]; + size_t end = offsets[row]; + + auto data = path->get_data_at(start); + EXPECT_EQ(data, StringRef("v.b.d", 5)); + auto pair = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(pair.first.get(), 30); + + auto data2 = path->get_data_at(start); + auto pair2 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data2, StringRef("v.c.d", 5)); + EXPECT_EQ(pair2.first.get(), 30); + + auto data3 = path->get_data_at(start); + auto pair3 = dst->deserialize_from_sparse_column(value, start++); + EXPECT_EQ(data3, StringRef("v.d.d", 5)); + EXPECT_EQ(pair3.first.get(), "50"); + EXPECT_EQ(start, end); + } +} + +TEST(ColumnVariantTest, insert_null_to_decimal_column) { + ColumnObject::Subcolumn subcolumn(0, true /* is_nullable */, false /* is_root */); + Field null_field; + subcolumn.insert(null_field); + subcolumn.finalize(); + EXPECT_EQ(subcolumn.data.size(), 1); + EXPECT_EQ(subcolumn.data[0]->size(), 1); + EXPECT_EQ(subcolumn.data_types.size(), 1); + EXPECT_EQ(subcolumn.least_common_type.get_base_type_id(), TypeIndex::Nothing); + Field decimal_field(DecimalField(10, 2)); + subcolumn.insert(decimal_field); + subcolumn.finalize(); + EXPECT_EQ(subcolumn.get_non_null_value_size(), 1); + EXPECT_EQ(subcolumn.data.size(), 1); + EXPECT_EQ(subcolumn.data[0]->size(), 2); + EXPECT_EQ(subcolumn.data[0]->is_null_at(0), true); + EXPECT_EQ(subcolumn.data[0]->is_null_at(1), false); + EXPECT_EQ(subcolumn.data_types.size(), 1); + EXPECT_EQ(subcolumn.least_common_type.get_base_type_id(), TypeIndex::Decimal128V2); +} + +TEST(ColumnVariantTest, subcolumn_insert_range_from_test) { + ColumnObject::Subcolumn subcolumn(0, true /* is_nullable */, false /* is_root */); + Field int_field(20); + Field string_field("hello"); + Field array_int_field = Array(2); + auto& array_int = array_int_field.get(); + array_int[0] = int_field; + array_int[1] = int_field; + ColumnObject::Subcolumn subcolumn2(0, true /* is_nullable */, false /* is_root */); + subcolumn2.insert(array_int_field); + subcolumn2.finalize(); + + Field array_string_field = Array(2); + auto& array_string = array_string_field.get(); + array_string[0] = string_field; + array_string[1] = string_field; + ColumnObject::Subcolumn subcolumn3(0, true /* is_nullable */, false /* is_root */); + subcolumn3.insert(array_string_field); + subcolumn3.finalize(); + + subcolumn.insert_range_from(subcolumn2, 0, 1); + subcolumn.insert_range_from(subcolumn3, 0, 1); + subcolumn.finalize(); + EXPECT_EQ(subcolumn.data.size(), 1); + ColumnObject::Subcolumn subcolumn4(0, true /* is_nullable */, false /* is_root */); + subcolumn4.insert(int_field); + subcolumn4.finalize(); + + ColumnObject::Subcolumn subcolumn5(0, true /* is_nullable */, false /* is_root */); + subcolumn5.insert(string_field); + subcolumn5.finalize(); + + subcolumn.insert_range_from(subcolumn4, 0, 1); + subcolumn.insert_range_from(subcolumn5, 0, 1); + subcolumn.finalize(); + EXPECT_EQ(subcolumn.data.size(), 1); +} + +TEST(ColumnVariantTest, subcolumn_insert_range_fromtest_variant_field) { + std::vector fields; + fields.emplace_back( + VariantField(DecimalField(Decimal32(1234), 2), TypeIndex::Decimal32, 6, 2)); + fields.emplace_back( + VariantField(DecimalField(Decimal64(5678), 2), TypeIndex::Decimal64, 8, 2)); + fields.emplace_back(VariantField(DecimalField(Decimal128V2(91011), 2), + TypeIndex::Decimal128V2, 16, 2)); + fields.emplace_back(VariantField(DecimalField(Decimal128V3(121314), 2), + TypeIndex::Decimal128V3, 18, 2)); + fields.emplace_back(VariantField(DecimalField(Decimal256(151617), 2), + TypeIndex::Decimal256, 32, 2)); + Array arr_decimal32; + arr_decimal32.push_back(Field(VariantField(DecimalField(Decimal32(12345678), 2), + TypeIndex::Decimal32, 6, 2))); + arr_decimal32.push_back(Field(VariantField(DecimalField(Decimal32(87654321), 2), + TypeIndex::Decimal32, 6, 2))); + fields.emplace_back(VariantField(arr_decimal32, TypeIndex::Array)); + + Array arr_decimal64; + arr_decimal64.push_back(Field(VariantField( + DecimalField(Decimal64(123456789012345), 2), TypeIndex::Decimal64, 18, 2))); + arr_decimal64.push_back(Field(VariantField( + DecimalField(Decimal64(987654321098765), 2), TypeIndex::Decimal64, 18, 2))); + fields.emplace_back(VariantField(arr_decimal64, TypeIndex::Array)); + + Array arr_decimal128v2; + arr_decimal128v2.push_back( + Field(VariantField(DecimalField(Decimal128V2(1234567890), 2), + TypeIndex::Decimal128V2, 16, 2))); + arr_decimal128v2.push_back( + Field(VariantField(DecimalField(Decimal128V2(9876543210), 2), + TypeIndex::Decimal128V2, 16, 2))); + fields.emplace_back(VariantField(arr_decimal128v2, TypeIndex::Array)); + + Array arr_decimal128v3; + arr_decimal128v3.push_back( + Field(VariantField(DecimalField(Decimal128V3(1234567890), 2), + TypeIndex::Decimal128V3, 18, 2))); + arr_decimal128v3.push_back( + Field(VariantField(DecimalField(Decimal128V3(9876543210), 2), + TypeIndex::Decimal128V3, 18, 2))); + fields.emplace_back(VariantField(arr_decimal128v3, TypeIndex::Array)); + + Array arr_decimal256; + arr_decimal256.push_back(Field(VariantField(DecimalField(Decimal256(1234567890), 2), + TypeIndex::Decimal256, 32, 2))); + arr_decimal256.push_back(Field(VariantField(DecimalField(Decimal256(9876543210), 2), + TypeIndex::Decimal256, 32, 2))); + fields.emplace_back(VariantField(arr_decimal256, TypeIndex::Array)); + + std::random_device rd; + std::mt19937 g(rd()); + for (int i = 0; i < 10000; i++) { + std::vector fields_copy; + fields_copy.emplace_back(Field::Types::Null); + fields_copy.emplace_back(Field::Types::Null); + std::shuffle(fields.begin(), fields.end(), g); + fields_copy.emplace_back(fields[0]); + fields_copy.emplace_back(fields[0]); + std::shuffle(fields_copy.begin(), fields_copy.end(), g); + auto subcolumn = ColumnObject::Subcolumn(0, true, false); + for (const auto& field : fields_copy) { + auto subcolumn_tmp = ColumnObject::Subcolumn(0, true, false); + subcolumn_tmp.insert(field); + subcolumn.insert_range_from(subcolumn_tmp, 0, 1); + } + subcolumn.finalize(); + EXPECT_EQ(subcolumn.data.size(), 1); + EXPECT_EQ(subcolumn.data[0]->size(), 4); + auto& variant_field = fields[0].get(); + EXPECT_EQ(remove_nullable(subcolumn.get_least_common_type())->get_type_id(), + variant_field.get_type_id()); + } +} + +TEST(ColumnVariantTest, subcolumn_insert_range_from_test_advanced) { + std::vector fields; + + fields.emplace_back(Field::Types::Null); + + fields.emplace_back(Int8(100)); + + fields.emplace_back(Int16(10000)); + + fields.emplace_back(Int32(1000000000)); + + fields.emplace_back(Int64(922337203685477588)); + + fields.emplace_back(Float32(3.14159f)); + + fields.emplace_back(Float64(3.14159265359)); + + fields.emplace_back(String("hello world")); + + Array arr_int8; + arr_int8.push_back(Field(Int8(1))); + arr_int8.push_back(Field(Int8(2))); + fields.emplace_back(arr_int8); + + Array arr_int16; + arr_int16.push_back(Field(Int16(12323))); + arr_int16.push_back(Field(Int16(23232))); + fields.emplace_back(arr_int16); + + Array arr_int32; + arr_int32.push_back(Field(Int32(123232323))); + arr_int32.push_back(Field(Int32(232323232))); + fields.emplace_back(arr_int32); + + Array arr_int64; + arr_int64.push_back(Field(Int64(1232323232323232323))); + arr_int64.push_back(Field(Int64(2323232323232323232))); + fields.emplace_back(arr_int64); + + Array arr_float32; + arr_float32.push_back(Field(Float32(1.1f))); + arr_float32.push_back(Field(Float32(2.2f))); + fields.emplace_back(arr_float32); + + Array arr_float; + arr_float.push_back(Field(Float64(1.1))); + arr_float.push_back(Field(Float64(2.2))); + fields.emplace_back(arr_float); + + Array arr_string; + arr_string.push_back(Field(String("one"))); + arr_string.push_back(Field(String("two"))); + fields.emplace_back(arr_string); + + std::random_device rd; + std::mt19937 g(rd()); + + for (int i = 0; i < 10000; i++) { + std::shuffle(fields.begin(), fields.end(), g); + auto subcolumn = ColumnObject::Subcolumn(0, true, false); + + for (const auto& field : fields) { + auto subcolumn_tmp = ColumnObject::Subcolumn(0, true, false); + subcolumn_tmp.insert(field); + subcolumn.insert_range_from(subcolumn_tmp, 0, 1); + } + + subcolumn.finalize(); + EXPECT_EQ(subcolumn.data.size(), 1); + // std::cout << "least common type: " << subcolumn.get_least_common_type()->get_name() << std::endl; + EXPECT_EQ(subcolumn.get_least_common_base_type_id(), TypeIndex::JSONB); + + for (const auto& field : fields) { + subcolumn.insert(field); + } + EXPECT_EQ(subcolumn.get_least_common_base_type_id(), TypeIndex::JSONB); + + if (i % 1000 == 0) { + std::cout << "insert count " << i << std::endl; + } + } +} + +TEST(ColumnVariantTest, test_serialize_to_sparse_column_and_deserialize) { + Field decimal32_field = VariantField(DecimalField(Decimal32(1234567890), 2), + TypeIndex::Decimal32, 6, 2); + Field decimal64_field = VariantField(DecimalField(Decimal64(1234567890), 3), + TypeIndex::Decimal64, 16, 3); + Field decimal128v3_field = VariantField(DecimalField(Decimal128V3(1234567890), 4), + TypeIndex::Decimal128V3, 28, 4); + Field decimal256_field = VariantField(DecimalField(Decimal256(1234567890), 5), + TypeIndex::Decimal256, 56, 5); + + ColumnObject::Subcolumn decimal32_subcolumn(0, true, false); + decimal32_subcolumn.insert(decimal32_field); + ColumnObject::Subcolumn decimal64_subcolumn(0, true, false); + decimal64_subcolumn.insert(decimal64_field); + ColumnObject::Subcolumn decimal128v3_subcolumn(0, true, false); + decimal128v3_subcolumn.insert(decimal128v3_field); + ColumnObject::Subcolumn decimal256_subcolumn(0, true, false); + decimal256_subcolumn.insert(decimal256_field); + + auto serialized_sparse_column = ColumnMap::create( + ColumnString::create(), ColumnString::create(), ColumnArray::ColumnOffsets::create()); + auto& column_map = assert_cast(*serialized_sparse_column); + auto& sparse_column_keys = assert_cast(column_map.get_keys()); + auto& sparse_column_values = assert_cast(column_map.get_values()); + + decimal32_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "decimal32", + &sparse_column_values, 0); + decimal64_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "decimal64", + &sparse_column_values, 0); + decimal128v3_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "decimal128v3", + &sparse_column_values, 0); + decimal256_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "decimal256", + &sparse_column_values, 0); + + auto column_object = ColumnObject::create(0); + const auto& [field, field_info] = + column_object->deserialize_from_sparse_column(&sparse_column_values, 0); + EXPECT_EQ(field_info.scalar_type_id, TypeIndex::Decimal32); + EXPECT_EQ(field_info.have_nulls, false); + EXPECT_EQ(field_info.need_convert, false); + EXPECT_EQ(field_info.num_dimensions, 0); + EXPECT_EQ(field_info.scale, 2); + + const auto& [field2, field_info2] = + column_object->deserialize_from_sparse_column(&sparse_column_values, 1); + EXPECT_EQ(field_info2.scalar_type_id, TypeIndex::Decimal64); + EXPECT_EQ(field_info2.have_nulls, false); + EXPECT_EQ(field_info2.need_convert, false); + EXPECT_EQ(field_info2.num_dimensions, 0); + EXPECT_EQ(field_info2.scale, 3); + + const auto& [field3, field_info3] = + column_object->deserialize_from_sparse_column(&sparse_column_values, 2); + EXPECT_EQ(field_info3.scalar_type_id, TypeIndex::Decimal128V3); + EXPECT_EQ(field_info3.have_nulls, false); + EXPECT_EQ(field_info3.need_convert, false); + EXPECT_EQ(field_info3.num_dimensions, 0); + EXPECT_EQ(field_info3.scale, 4); + + const auto& [field4, field_info4] = + column_object->deserialize_from_sparse_column(&sparse_column_values, 3); + EXPECT_EQ(field_info4.scalar_type_id, TypeIndex::Decimal256); + EXPECT_EQ(field_info4.have_nulls, false); + EXPECT_EQ(field_info4.need_convert, false); + EXPECT_EQ(field_info4.num_dimensions, 0); + EXPECT_EQ(field_info4.scale, 5); + + decimal32_subcolumn.insert(field, field_info); + decimal32_subcolumn.finalize(); + EXPECT_EQ(decimal32_subcolumn.data.size(), 1); + EXPECT_EQ(decimal32_subcolumn.data[0]->size(), 2); + auto tmp_col = ColumnString::create(); + VectorBufferWriter write_buffer(*tmp_col.get()); + decimal32_subcolumn.serialize_text_json(0, write_buffer); + write_buffer.commit(); + EXPECT_EQ(tmp_col->get_data_at(0), StringRef("12345678.9", 11)); + decimal32_subcolumn.serialize_text_json(1, write_buffer); + write_buffer.commit(); + EXPECT_EQ(tmp_col->get_data_at(1), StringRef("12345678.9", 11)); + + decimal64_subcolumn.insert(field2, field_info2); + decimal64_subcolumn.finalize(); + EXPECT_EQ(decimal64_subcolumn.data.size(), 1); + EXPECT_EQ(decimal64_subcolumn.data[0]->size(), 2); + auto tmp_col2 = ColumnString::create(); + VectorBufferWriter write_buffer2(*tmp_col2.get()); + decimal64_subcolumn.serialize_text_json(0, write_buffer2); + write_buffer2.commit(); + EXPECT_EQ(tmp_col2->get_data_at(0), StringRef("1234567.890", 11)); + decimal64_subcolumn.serialize_text_json(1, write_buffer2); + write_buffer2.commit(); + EXPECT_EQ(tmp_col2->get_data_at(1), StringRef("1234567.890", 11)); + + decimal128v3_subcolumn.insert(field3, field_info3); + decimal128v3_subcolumn.finalize(); + EXPECT_EQ(decimal128v3_subcolumn.data.size(), 1); + EXPECT_EQ(decimal128v3_subcolumn.data[0]->size(), 2); + auto tmp_col3 = ColumnString::create(); + VectorBufferWriter write_buffer3(*tmp_col3.get()); + decimal128v3_subcolumn.serialize_text_json(0, write_buffer3); + write_buffer3.commit(); + EXPECT_EQ(tmp_col3->get_data_at(0), StringRef("123456.7890", 11)); + decimal128v3_subcolumn.serialize_text_json(1, write_buffer3); + write_buffer3.commit(); + EXPECT_EQ(tmp_col3->get_data_at(1), StringRef("123456.7890", 11)); + + decimal256_subcolumn.insert(field4, field_info4); + decimal256_subcolumn.finalize(); + EXPECT_EQ(decimal256_subcolumn.data.size(), 1); + EXPECT_EQ(decimal256_subcolumn.data[0]->size(), 2); + auto tmp_col4 = ColumnString::create(); + VectorBufferWriter write_buffer4(*tmp_col4.get()); + decimal256_subcolumn.serialize_text_json(0, write_buffer4); + write_buffer4.commit(); + EXPECT_EQ(tmp_col4->get_data_at(0), StringRef("12345.67890", 11)); + decimal256_subcolumn.serialize_text_json(1, write_buffer4); + write_buffer4.commit(); + EXPECT_EQ(tmp_col4->get_data_at(1), StringRef("12345.67890", 11)); + + Field string_ipv4_field("192.168.1.1"); + Field string_ipv6_field("2001:db8:85a3:85a2:85a1:8a2e:370:7334"); + Field string_date_field("2021-01-01"); + Field string_datetime_field("2021-01-01 02:09:10"); + + vectorized::DataTypePtr data_type_string = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::String, + true, 0, 0); + vectorized::DataTypePtr data_type_ipv4 = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::IPv4, + true, 0, 0); + vectorized::DataTypePtr data_type_ipv6 = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::IPv6, + true, 0, 0); + vectorized::DataTypePtr data_type_date = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::DateV2, + true, 0, 0); + vectorized::DataTypePtr data_type_datetime = + vectorized::DataTypeFactory::instance().create_data_type( + vectorized::TypeIndex::DateTimeV2, true, 0, 6); + + ColumnPtr column_string_ipv4 = data_type_string->create_column(); + ColumnPtr column_string_ipv6 = data_type_string->create_column(); + ColumnPtr column_string_date = data_type_string->create_column(); + ColumnPtr column_string_datetime = data_type_string->create_column(); + + auto column_nullable_ipv4 = assert_cast(*column_string_ipv4->assume_mutable()); + auto column_nullable_ipv6 = assert_cast(*column_string_ipv6->assume_mutable()); + auto column_nullable_date = assert_cast(*column_string_date->assume_mutable()); + auto column_nullable_datetime = + assert_cast(*column_string_datetime->assume_mutable()); + + column_nullable_ipv4.insert(string_ipv4_field); + column_nullable_ipv6.insert(string_ipv6_field); + column_nullable_date.insert(string_date_field); + column_nullable_datetime.insert(string_datetime_field); + + vectorized::ColumnPtr expected_ipv4; + auto status = schema_util::cast_column({column_string_ipv4, data_type_string, ""}, + data_type_ipv4, &expected_ipv4); + EXPECT_TRUE(status.ok()); + vectorized::ColumnPtr expected_ipv6; + status = schema_util::cast_column({column_string_ipv6, data_type_string, ""}, data_type_ipv6, + &expected_ipv6); + EXPECT_TRUE(status.ok()); + vectorized::ColumnPtr expected_date; + status = schema_util::cast_column({column_string_date, data_type_string, ""}, data_type_date, + &expected_date); + EXPECT_TRUE(status.ok()); + vectorized::ColumnPtr expected_datetime; + status = schema_util::cast_column({column_string_datetime, data_type_string, ""}, + data_type_datetime, &expected_datetime); + EXPECT_TRUE(status.ok()); + + ColumnObject::Subcolumn ipv4_subcolumn(expected_ipv4->assume_mutable(), data_type_ipv4, true, + false); + ColumnObject::Subcolumn ipv6_subcolumn(expected_ipv6->assume_mutable(), data_type_ipv6, true, + false); + ColumnObject::Subcolumn date_subcolumn(expected_date->assume_mutable(), data_type_date, true, + false); + ColumnObject::Subcolumn datetime_subcolumn(expected_datetime->assume_mutable(), + data_type_datetime, true, false); + + ipv4_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "ipv4", &sparse_column_values, + 0); + ipv6_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "ipv6", &sparse_column_values, + 0); + date_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "date", &sparse_column_values, + 0); + datetime_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "datetime", + &sparse_column_values, 0); + + auto column_object2 = ColumnObject::create(0); + const auto& [field5, field_info5] = + column_object2->deserialize_from_sparse_column(&sparse_column_values, 4); + EXPECT_EQ(field_info5.scalar_type_id, TypeIndex::IPv4); + EXPECT_EQ(field_info5.have_nulls, false); + EXPECT_EQ(field_info5.need_convert, false); + EXPECT_EQ(field_info5.num_dimensions, 0); + + const auto& [field6, field_info6] = + column_object2->deserialize_from_sparse_column(&sparse_column_values, 5); + EXPECT_EQ(field_info6.scalar_type_id, TypeIndex::IPv6); + EXPECT_EQ(field_info6.have_nulls, false); + EXPECT_EQ(field_info6.need_convert, false); + EXPECT_EQ(field_info6.num_dimensions, 0); + + const auto& [field7, field_info7] = + column_object2->deserialize_from_sparse_column(&sparse_column_values, 6); + EXPECT_EQ(field_info7.scalar_type_id, TypeIndex::DateV2); + EXPECT_EQ(field_info7.have_nulls, false); + EXPECT_EQ(field_info7.need_convert, false); + EXPECT_EQ(field_info7.num_dimensions, 0); + + const auto& [field8, field_info8] = + column_object2->deserialize_from_sparse_column(&sparse_column_values, 7); + EXPECT_EQ(field_info8.scalar_type_id, TypeIndex::DateTimeV2); + EXPECT_EQ(field_info8.have_nulls, false); + EXPECT_EQ(field_info8.need_convert, false); + EXPECT_EQ(field_info8.num_dimensions, 0); + EXPECT_EQ(field_info8.scale, 6); + + ipv4_subcolumn.insert(field5, field_info5); + ipv4_subcolumn.finalize(); + EXPECT_EQ(ipv4_subcolumn.data.size(), 1); + EXPECT_EQ(ipv4_subcolumn.data[0]->size(), 2); + auto tmp_col5 = ColumnString::create(); + VectorBufferWriter write_buffer5(*tmp_col5.get()); + ipv4_subcolumn.serialize_text_json(0, write_buffer5); + write_buffer5.commit(); + EXPECT_EQ(tmp_col5->get_data_at(0), StringRef("\"192.168.1.1\"", 13)); + ipv4_subcolumn.serialize_text_json(1, write_buffer5); + write_buffer5.commit(); + EXPECT_EQ(tmp_col5->get_data_at(1), StringRef("\"192.168.1.1\"", 13)); + + ipv6_subcolumn.insert(field6, field_info6); + ipv6_subcolumn.finalize(); + EXPECT_EQ(ipv6_subcolumn.data.size(), 1); + EXPECT_EQ(ipv6_subcolumn.data[0]->size(), 2); + auto tmp_col6 = ColumnString::create(); + VectorBufferWriter write_buffer6(*tmp_col6.get()); + ipv6_subcolumn.serialize_text_json(0, write_buffer6); + write_buffer6.commit(); + EXPECT_EQ(tmp_col6->get_data_at(0), StringRef("\"2001:db8:85a3:85a2:85a1:8a2e:370:7334\"", 39)); + ipv6_subcolumn.serialize_text_json(1, write_buffer6); + write_buffer6.commit(); + EXPECT_EQ(tmp_col6->get_data_at(1), StringRef("\"2001:db8:85a3:85a2:85a1:8a2e:370:7334\"", 39)); + + date_subcolumn.insert(field7, field_info7); + date_subcolumn.finalize(); + EXPECT_EQ(date_subcolumn.data.size(), 1); + EXPECT_EQ(date_subcolumn.data[0]->size(), 2); + auto tmp_col7 = ColumnString::create(); + VectorBufferWriter write_buffer7(*tmp_col7.get()); + date_subcolumn.serialize_text_json(0, write_buffer7); + write_buffer7.commit(); + EXPECT_EQ(tmp_col7->get_data_at(0), StringRef("\"2021-01-01\"", 12)); + date_subcolumn.serialize_text_json(1, write_buffer7); + write_buffer7.commit(); + EXPECT_EQ(tmp_col7->get_data_at(1), StringRef("\"2021-01-01\"", 12)); + + datetime_subcolumn.insert(field8, field_info8); + datetime_subcolumn.finalize(); + EXPECT_EQ(datetime_subcolumn.data.size(), 1); + EXPECT_EQ(datetime_subcolumn.data[0]->size(), 2); + auto tmp_col8 = ColumnString::create(); + VectorBufferWriter write_buffer8(*tmp_col8.get()); + datetime_subcolumn.serialize_text_json(0, write_buffer8); + write_buffer8.commit(); + EXPECT_EQ(tmp_col8->get_data_at(0), StringRef("\"2021-01-01 02:09:10\"", 21)); + datetime_subcolumn.serialize_text_json(1, write_buffer8); + write_buffer8.commit(); + EXPECT_EQ(tmp_col8->get_data_at(1), StringRef("\"2021-01-01 02:09:10\"", 21)); + + Field largeint_field = 1289; + Field true_field = 1; + + vectorized::DataTypePtr data_type_int = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::Int32, + true, 0, 0); + vectorized::DataTypePtr data_type_bool = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::UInt8, + true, 0, 0); + vectorized::DataTypePtr data_type_largeint = + vectorized::DataTypeFactory::instance().create_data_type(vectorized::TypeIndex::Int128, + true, 0, 0); + + ColumnPtr column_int_largeint = data_type_int->create_column(); + ColumnPtr column_int_bool = data_type_int->create_column(); + + auto column_nullable_int_largeint = + assert_cast(*column_int_largeint->assume_mutable()); + auto column_nullable_int_bool = + assert_cast(*column_int_bool->assume_mutable()); + + column_nullable_int_largeint.insert(largeint_field); + column_nullable_int_bool.insert(true_field); + + vectorized::ColumnPtr expected_largeint; + status = schema_util::cast_column({column_int_largeint, data_type_int, ""}, data_type_largeint, + &expected_largeint); + EXPECT_TRUE(status.ok()); + + vectorized::ColumnPtr expected_bool; + status = schema_util::cast_column({column_int_bool, data_type_int, ""}, data_type_bool, + &expected_bool); + EXPECT_TRUE(status.ok()); + + ColumnObject::Subcolumn largeint_subcolumn(expected_largeint->assume_mutable(), + data_type_largeint, true, false); + ColumnObject::Subcolumn bool_subcolumn(expected_bool->assume_mutable(), data_type_bool, true, + false); + + largeint_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "largeint", + &sparse_column_values, 0); + bool_subcolumn.serialize_to_sparse_column(&sparse_column_keys, "bool", &sparse_column_values, + 0); + + auto column_object3 = ColumnObject::create(0); + const auto& [field9, field_info9] = + column_object3->deserialize_from_sparse_column(&sparse_column_values, 8); + EXPECT_EQ(field_info9.scalar_type_id, TypeIndex::Int128); + EXPECT_EQ(field_info9.have_nulls, false); + EXPECT_EQ(field_info9.need_convert, false); + EXPECT_EQ(field_info9.num_dimensions, 0); + + const auto& [field10, field_info10] = + column_object3->deserialize_from_sparse_column(&sparse_column_values, 9); + EXPECT_EQ(field_info10.scalar_type_id, TypeIndex::UInt8); + EXPECT_EQ(field_info10.have_nulls, false); + EXPECT_EQ(field_info10.need_convert, false); + EXPECT_EQ(field_info10.num_dimensions, 0); + + largeint_subcolumn.insert(field9, field_info9); + largeint_subcolumn.finalize(); + EXPECT_EQ(largeint_subcolumn.data.size(), 1); + EXPECT_EQ(largeint_subcolumn.data[0]->size(), 2); + auto tmp_col9 = ColumnString::create(); + VectorBufferWriter write_buffer9(*tmp_col9.get()); + largeint_subcolumn.serialize_text_json(0, write_buffer9); + write_buffer9.commit(); + EXPECT_EQ(tmp_col9->get_data_at(0), StringRef("1289", 4)); + largeint_subcolumn.serialize_text_json(1, write_buffer9); + write_buffer9.commit(); + EXPECT_EQ(tmp_col9->get_data_at(1), StringRef("1289", 4)); + + bool_subcolumn.insert(field10, field_info10); + bool_subcolumn.finalize(); + EXPECT_EQ(bool_subcolumn.data.size(), 1); + EXPECT_EQ(bool_subcolumn.data[0]->size(), 2); + auto tmp_col10 = ColumnString::create(); + VectorBufferWriter write_buffer10(*tmp_col10.get()); + bool_subcolumn.serialize_text_json(0, write_buffer10); + write_buffer10.commit(); + EXPECT_EQ(tmp_col10->get_data_at(0), StringRef("1", 1)); + bool_subcolumn.serialize_text_json(1, write_buffer10); + write_buffer10.commit(); + EXPECT_EQ(tmp_col10->get_data_at(1), StringRef("1", 1)); +} + +TEST(ColumnVariantTest, test_array_field_contains_null_field) { + ColumnObject::Subcolumn subcolumn(0, true /* is_nullable */, false /* is_root */); + Field null_field = Field(); + Field int_field = Field(1); + Field array_field = Array(2); + auto& array = array_field.get(); + array[0] = int_field; + array[1] = null_field; + subcolumn.insert(array_field); + subcolumn.finalize(); + EXPECT_EQ(subcolumn.data.size(), 1); + EXPECT_EQ(subcolumn.data[0]->size(), 1); + + auto serialized_sparse_column = ColumnMap::create( + ColumnString::create(), ColumnString::create(), ColumnArray::ColumnOffsets::create()); + auto& column_map = assert_cast(*serialized_sparse_column); + auto& sparse_column_keys = assert_cast(column_map.get_keys()); + auto& sparse_column_values = assert_cast(column_map.get_values()); + subcolumn.serialize_to_sparse_column(&sparse_column_keys, "array", &sparse_column_values, 0); + + auto column_object3 = ColumnObject::create(0); + const auto& [field, field_info] = + column_object3->deserialize_from_sparse_column(&sparse_column_values, 0); + EXPECT_EQ(field.get().size(), 2); + EXPECT_EQ(field.get()[0].get(), int_field); + EXPECT_EQ(field.get()[1].get(), null_field); + EXPECT_EQ(field_info.scalar_type_id, TypeIndex::Int8); +} + +} // namespace doris::vectorized diff --git a/be/test/vec/columns/column_variant_test.cpp b/be/test/vec/columns/column_variant_test.cpp index d1d78458c4312d..01eda5ba3648c7 100644 --- a/be/test/vec/columns/column_variant_test.cpp +++ b/be/test/vec/columns/column_variant_test.cpp @@ -3492,7 +3492,8 @@ TEST_F(ColumnObjectTest, subcolumn_operations_coverage) { memcpy(binary_data.data(), &str_size, sizeof(size_t)); memcpy(binary_data.data() + sizeof(size_t), test_str.data(), test_str.size()); const char* data = binary_data.data(); - parse_binary_from_sparse_column(TypeIndex::String, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_STRING, data, res, + field_info); EXPECT_EQ(res.get(), "test_data"); } @@ -3500,28 +3501,31 @@ TEST_F(ColumnObjectTest, subcolumn_operations_coverage) { { Int8 int8_val = 42; const char* data = reinterpret_cast(&int8_val); - parse_binary_from_sparse_column(TypeIndex::Int8, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_TINYINT, data, res, + field_info); EXPECT_EQ(res.get(), 42); } { Int16 int16_val = 12345; const char* data = reinterpret_cast(&int16_val); - parse_binary_from_sparse_column(TypeIndex::Int16, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_SMALLINT, data, res, + field_info); EXPECT_EQ(res.get(), 12345); } { Int32 int32_val = 123456789; const char* data = reinterpret_cast(&int32_val); - parse_binary_from_sparse_column(TypeIndex::Int32, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_INT, data, res, field_info); EXPECT_EQ(res.get(), 123456789); } { Int64 int64_val = 1234567890123456789LL; const char* data = reinterpret_cast(&int64_val); - parse_binary_from_sparse_column(TypeIndex::Int64, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_BIGINT, data, res, + field_info); EXPECT_EQ(res.get(), 1234567890123456789LL); } @@ -3529,14 +3533,16 @@ TEST_F(ColumnObjectTest, subcolumn_operations_coverage) { { Float32 float32_val = 3.1415901f; const char* data = reinterpret_cast(&float32_val); - parse_binary_from_sparse_column(TypeIndex::Float32, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_FLOAT, data, res, + field_info); EXPECT_FLOAT_EQ(res.get(), 0); } { Float64 float64_val = 3.141592653589793; const char* data = reinterpret_cast(&float64_val); - parse_binary_from_sparse_column(TypeIndex::Float64, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_DOUBLE, data, res, + field_info); EXPECT_DOUBLE_EQ(res.get(), 3.141592653589793); } @@ -3549,14 +3555,8 @@ TEST_F(ColumnObjectTest, subcolumn_operations_coverage) { memcpy(binary_data.data(), &json_size, sizeof(size_t)); memcpy(binary_data.data() + sizeof(size_t), json_str.data(), json_str.size()); const char* data = binary_data.data(); - parse_binary_from_sparse_column(TypeIndex::JSONB, data, res, field_info); - } - - // Test Nothing type - { - const char* data = nullptr; - parse_binary_from_sparse_column(TypeIndex::Nothing, data, res, field_info); - EXPECT_TRUE(res.is_null()); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_JSONB, data, res, + field_info); } // Test Array type @@ -3571,48 +3571,24 @@ TEST_F(ColumnObjectTest, subcolumn_operations_coverage) { data_ptr += sizeof(size_t); // Write first element (Int32) - *data_ptr++ = static_cast(TypeIndex::Int32); + *data_ptr++ = static_cast(FieldType::OLAP_FIELD_TYPE_INT); Int32 val1 = 42; memcpy(data_ptr, &val1, sizeof(Int32)); data_ptr += sizeof(Int32); // Write second element (Int32) - *data_ptr++ = static_cast(TypeIndex::Int32); + *data_ptr++ = static_cast(FieldType::OLAP_FIELD_TYPE_INT); Int32 val2 = 43; memcpy(data_ptr, &val2, sizeof(Int32)); const char* data = binary_data.data(); - parse_binary_from_sparse_column(TypeIndex::Array, data, res, field_info); + parse_binary_from_sparse_column(FieldType::OLAP_FIELD_TYPE_ARRAY, data, res, + field_info); const Array& array = res.get(); EXPECT_EQ(array.size(), 2); EXPECT_EQ(array[0].get(), 42); EXPECT_EQ(array[1].get(), 43); } - - // Test unsupported types - these should throw exceptions - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::UInt8, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::UInt16, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::UInt32, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::UInt64, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::Date, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::DateTime, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::Decimal32, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::Decimal64, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::Decimal128V2, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::Tuple, nullptr, res, field_info)); - EXPECT_ANY_THROW(parse_binary_from_sparse_column(TypeIndex::Map, nullptr, res, field_info)); - EXPECT_ANY_THROW( - parse_binary_from_sparse_column(TypeIndex::VARIANT, nullptr, res, field_info)); } // Test add_sub_column diff --git a/be/test/vec/common/schema_util_rowset_test.cpp b/be/test/vec/common/schema_util_rowset_test.cpp index a7a604ca0e515b..6833fc8627a6f7 100644 --- a/be/test/vec/common/schema_util_rowset_test.cpp +++ b/be/test/vec/common/schema_util_rowset_test.cpp @@ -535,3 +535,124 @@ TEST_F(SchemaUtilRowsetTest, some_test_for_subcolumn_writer) { // write null data EXPECT_TRUE(variant_subcolumn_writer->write_data().ok()); } + +TEST_F(SchemaUtilRowsetTest, typed_path_to_sparse_column) { + all_path_stats.clear(); + // 1.create tablet schema + TabletSchemaPB schema_pb; + construct_column(schema_pb.add_column(), 0, "INT", "key", true); + construct_column(schema_pb.add_column(), 1, "VARIANT", "v1"); + construct_column(schema_pb.add_column(), 2, "STRING", "v2"); + construct_column(schema_pb.add_column(), 3, "VARIANT", "v3"); + construct_column(schema_pb.add_column(), 4, "INT", "v4"); + TabletSchemaSPtr tablet_schema = std::make_shared(); + tablet_schema->init_from_pb(schema_pb); + + // 2. create tablet + TabletMetaSharedPtr tablet_meta(new TabletMeta(tablet_schema)); + _tablet = std::make_shared(*_engine_ref, tablet_meta, _data_dir.get()); + EXPECT_TRUE(_tablet->init().ok()); + EXPECT_TRUE(io::global_local_filesystem()->create_directory(_tablet->tablet_path()).ok()); + + // 3. create rowset + std::vector rowsets; + for (int i = 0; i < 5; i++) { + const auto& res = RowsetFactory::create_rowset_writer( + *_engine_ref, + rowset_writer_context(_data_dir, tablet_schema, _tablet->tablet_path()), false); + EXPECT_TRUE(res.has_value()) << res.error(); + const auto& rowset_writer = res.value(); + auto rowset = create_rowset(rowset_writer, tablet_schema); + EXPECT_TRUE(_tablet->add_rowset(rowset).ok()); + rowsets.push_back(rowset); + } + + std::unordered_map path_stats; + for (const auto& rowset : rowsets) { + auto st = schema_util::aggregate_path_to_stats(rowset, &path_stats); + EXPECT_TRUE(st.ok()) << st.msg(); + } + + for (const auto& [uid, path_stats] : path_stats) { + for (const auto& [path, size] : path_stats) { + EXPECT_EQ(all_path_stats[uid][path], size); + } + } + + // 4. get compaction schema + TabletSchemaSPtr compaction_schema = tablet_schema; + auto st = schema_util::get_compaction_schema(rowsets, compaction_schema); + + for (const auto& column : compaction_schema->columns()) { + if (column->is_extracted_column()) { + EXPECT_FALSE(column->is_variant_type()); + } + } + EXPECT_TRUE(st.ok()) << st.msg(); + + // 5. check compaction schema + std::unordered_map> compaction_schema_map; + for (const auto& column : compaction_schema->columns()) { + if (column->parent_unique_id() > 0) { + compaction_schema_map[column->parent_unique_id()].push_back(column->name()); + } + } + for (auto& [uid, paths] : compaction_schema_map) { + EXPECT_EQ(paths.size(), 4); + std::sort(paths.begin(), paths.end()); + EXPECT_TRUE(paths[0].ends_with("__DORIS_VARIANT_SPARSE__")); + EXPECT_TRUE(paths[1].ends_with("key0")); + EXPECT_TRUE(paths[2].ends_with("key1")); + EXPECT_TRUE(paths[3].ends_with("key2")); + } + + // 6.compaction for output rs + // create input rowset reader + vector input_rs_readers; + for (auto& rowset : rowsets) { + RowsetReaderSharedPtr rs_reader; + ASSERT_TRUE(rowset->create_reader(&rs_reader).ok()); + input_rs_readers.push_back(std::move(rs_reader)); + } + + auto sc = schema_util::calculate_variant_extended_schema(rowsets, tablet_schema); + std::cout << sc->columns().size() << std::endl; + + // create output rowset writer + auto create_rowset_writer_context = [this](TabletSchemaSPtr tablet_schema, + const SegmentsOverlapPB& overlap, + uint32_t max_rows_per_segment, Version version) { + static int64_t inc_id = 1000; + RowsetWriterContext rowset_writer_context; + RowsetId rowset_id; + rowset_id.init(inc_id); + rowset_writer_context.rowset_id = rowset_id; + rowset_writer_context.rowset_type = BETA_ROWSET; + rowset_writer_context.rowset_state = VISIBLE; + rowset_writer_context.tablet_schema = tablet_schema; + rowset_writer_context.tablet_path = _absolute_dir + "/../"; + rowset_writer_context.version = version; + rowset_writer_context.segments_overlap = overlap; + rowset_writer_context.max_rows_per_segment = max_rows_per_segment; + inc_id++; + return rowset_writer_context; + }; + auto writer_context = create_rowset_writer_context(tablet_schema, NONOVERLAPPING, 3456, + {0, rowsets.back()->end_version()}); + auto res_ = RowsetFactory::create_rowset_writer(*_engine_ref, writer_context, true); + ASSERT_TRUE(res_.has_value()) << res_.error(); + auto output_rs_writer = std::move(res_).value(); + Merger::Statistics stats; + RowIdConversion rowid_conversion; + stats.rowid_conversion = &rowid_conversion; + auto s = Merger::vertical_merge_rowsets(_tablet, ReaderType::READER_BASE_COMPACTION, + *tablet_schema, input_rs_readers, + output_rs_writer.get(), 100, 5, &stats); + ASSERT_TRUE(s.ok()) << s; + RowsetSharedPtr out_rowset; + EXPECT_EQ(Status::OK(), output_rs_writer->build(out_rowset)); + ASSERT_TRUE(out_rowset); + + // 7. check output rowset + EXPECT_TRUE(schema_util::check_path_stats(rowsets, out_rowset, _tablet).ok()); +} diff --git a/be/test/vec/common/schema_util_test.cpp b/be/test/vec/common/schema_util_test.cpp index 9214daae31c816..1835d037ecfcde 100644 --- a/be/test/vec/common/schema_util_test.cpp +++ b/be/test/vec/common/schema_util_test.cpp @@ -20,15 +20,17 @@ #include #include +#include "olap/rowset/beta_rowset.h" #include "olap/rowset/rowset_fwd.h" #include "olap/rowset/segment_v2/variant/variant_column_writer_impl.h" #include "testutil/variant_util.h" #include "vec/columns/column_nothing.h" #include "vec/columns/column_object.h" -#include "vec/common/schema_util.cpp" +#include "vec/common/schema_util.h" #include "vec/data_types/data_type_array.h" #include "vec/data_types/data_type_date_time.h" #include "vec/data_types/data_type_decimal.h" +#include "vec/data_types/data_type_ipv4.h" #include "vec/data_types/data_type_nothing.h" #include "vec/data_types/data_type_time_v2.h" #include "vec/data_types/data_type_variant.h" @@ -1791,3 +1793,99 @@ TEST_F(SchemaUtilTest, get_compaction_subcolumns) { EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_VARIANT); } } + +TEST_F(SchemaUtilTest, get_compaction_subcolumns_advanced) { + TabletColumn variant; + variant.set_unique_id(30); + variant.set_variant_max_subcolumns_count(3); + variant.set_aggregation_method(FieldAggregationMethod::OLAP_FIELD_AGGREGATION_NONE); + variant.set_variant_enable_typed_paths_to_sparse(true); + TabletColumn subcolumn; + subcolumn.set_name("c"); + subcolumn.set_type(FieldType::OLAP_FIELD_TYPE_DATEV2); + variant.add_sub_column(subcolumn); + TabletColumn subcolumn2; + subcolumn2.set_name("d"); + subcolumn2.set_type(FieldType::OLAP_FIELD_TYPE_DATEV2); + variant.add_sub_column(subcolumn2); + + TabletSchemaSPtr schema = std::make_shared(); + schema->append_column(variant); + + TabletColumnPtr parent_column = std::make_shared(variant); + + TabletSchema::PathsSetInfo paths_set_info; + paths_set_info.sub_path_set.insert("a"); + paths_set_info.sub_path_set.insert("b"); + paths_set_info.sub_path_set.insert("c"); + paths_set_info.sub_path_set.insert("d"); + doris::vectorized::schema_util::PathToDataTypes path_to_data_types; + std::unordered_set sparse_paths; + TabletSchemaSPtr output_schema = std::make_shared(); + + schema_util::get_compaction_subcolumns(paths_set_info, parent_column, schema, + path_to_data_types, sparse_paths, output_schema); + EXPECT_EQ(output_schema->num_columns(), 4); + for (const auto& column : output_schema->columns()) { + if (column->name().ends_with("a") || column->name().ends_with("b")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_VARIANT); + } else if (column->name().ends_with("c") || column->name().ends_with("d")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_DATEV2); + } + } + + output_schema = std::make_shared(); + path_to_data_types.clear(); + path_to_data_types[vectorized::PathInData("a")] = { + std::make_shared()}; + path_to_data_types[vectorized::PathInData("b")] = { + std::make_shared()}; + schema_util::get_compaction_subcolumns(paths_set_info, parent_column, schema, + path_to_data_types, sparse_paths, output_schema); + EXPECT_EQ(output_schema->num_columns(), 4); + bool found_int = false, found_str = false; + for (const auto& column : output_schema->columns()) { + if (column->name().ends_with("a")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_INT); + found_int = true; + } else if (column->name().ends_with("b")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_STRING); + found_str = true; + } else if (column->name().ends_with("c") || column->name().ends_with("d")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_DATEV2); + } + } + EXPECT_TRUE(found_int && found_str); + + output_schema = std::make_shared(); + sparse_paths.insert("a"); + schema_util::get_compaction_subcolumns(paths_set_info, parent_column, schema, + path_to_data_types, sparse_paths, output_schema); + EXPECT_EQ(output_schema->num_columns(), 4); + for (const auto& column : output_schema->columns()) { + if (column->name().ends_with("a")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_VARIANT); + } else if (column->name().ends_with("b")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_STRING); + } else if (column->name().ends_with("c") || column->name().ends_with("d")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_DATEV2); + } + } + + output_schema = std::make_shared(); + sparse_paths.clear(); + + for (int i = 0; i < config::variant_max_sparse_column_statistics_size + 1; ++i) { + sparse_paths.insert("dummy" + std::to_string(i)); + } + schema_util::get_compaction_subcolumns(paths_set_info, parent_column, schema, + path_to_data_types, sparse_paths, output_schema); + EXPECT_EQ(output_schema->num_columns(), 4); + for (const auto& column : output_schema->columns()) { + if (column->name().ends_with("a") || column->name().ends_with("b")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_VARIANT); + } else if (column->name().ends_with("c") || column->name().ends_with("d")) { + EXPECT_EQ(column->type(), FieldType::OLAP_FIELD_TYPE_DATEV2); + } + } +} diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java index 51f8f9ce33f2ce..7bd49d2624352e 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -1213,4 +1213,18 @@ public int hashCode() { result = 31 * result + scale; return result; } + + public int getVariantMaxSubcolumnsCount() { + if (this instanceof VariantType) { + return ((VariantType) this).getVariantMaxSubcolumnsCount(); + } + return 0; + } + + public boolean getVariantEnableTypedPathsToSparse() { + if (this instanceof VariantType) { + return ((VariantType) this).getEnableTypedPathsToSparse(); + } + return false; + } } diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantField.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantField.java index f300916d77d3bf..52d5e60b7437a4 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantField.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantField.java @@ -67,15 +67,15 @@ public TPatternType getPatternType() { } public String toSql(int depth) { - String typeSql; - if (depth < Type.MAX_NESTING_DEPTH) { - typeSql = type.toSql(depth + 1); - } else { - typeSql = "..."; + StringBuilder sb = new StringBuilder(); + if (patternType == TPatternType.MATCH_NAME) { + sb.append(patternType.toString()).append(" "); } - StringBuilder sb = new StringBuilder(patternType.toString() + " '"); - if (type != null) { - sb.append(pattern).append("':").append(typeSql); + + sb.append("'").append(pattern).append("'"); + sb.append(":").append(type.toSql(depth + 1)); + if (!comment.isEmpty()) { + sb.append(" COMMENT '").append(comment).append("'"); } return sb.toString(); } diff --git a/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java b/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java index a173cf8aa5074c..29342d73ca7c25 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java +++ b/fe/fe-common/src/main/java/org/apache/doris/catalog/VariantType.java @@ -19,7 +19,6 @@ import org.apache.doris.thrift.TTypeDesc; -import com.google.common.base.Joiner; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -29,7 +28,9 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; public class VariantType extends ScalarType { private static final Logger LOG = LogManager.getLogger(VariantType.class); @@ -40,11 +41,18 @@ public class VariantType extends ScalarType { private final ArrayList predefinedFields; @SerializedName(value = "variantMaxSubcolumnsCount") - private int variantMaxSubcolumnsCount; + private int variantMaxSubcolumnsCount = 0; + + @SerializedName(value = "enableTypedPathsToSparse") + private boolean enableTypedPathsToSparse = false; + + private Map properties = Maps.newHashMap(); public VariantType() { super(PrimitiveType.VARIANT); this.predefinedFields = Lists.newArrayList(); + this.variantMaxSubcolumnsCount = 0; + this.enableTypedPathsToSparse = false; } public VariantType(ArrayList fields) { @@ -56,19 +64,67 @@ public VariantType(ArrayList fields) { } } + public VariantType(Map properties) { + super(PrimitiveType.VARIANT); + this.predefinedFields = Lists.newArrayList(); + this.properties = properties; + } + + public VariantType(ArrayList fields, Map properties) { + super(PrimitiveType.VARIANT); + Preconditions.checkNotNull(fields); + this.predefinedFields = fields; + for (VariantField predefinedField : this.predefinedFields) { + fieldMap.put(predefinedField.getPattern(), predefinedField); + } + this.properties = properties; + } + + public VariantType(ArrayList fields, int variantMaxSubcolumnsCount, + boolean enableTypedPathsToSparse) { + super(PrimitiveType.VARIANT); + Preconditions.checkNotNull(fields); + this.predefinedFields = fields; + for (VariantField predefinedField : this.predefinedFields) { + fieldMap.put(predefinedField.getPattern(), predefinedField); + } + this.variantMaxSubcolumnsCount = variantMaxSubcolumnsCount; + this.enableTypedPathsToSparse = enableTypedPathsToSparse; + } + @Override public String toSql(int depth) { - if (predefinedFields.isEmpty()) { + if (predefinedFields.isEmpty() && variantMaxSubcolumnsCount == 0) { return "variant"; } - if (depth >= MAX_NESTING_DEPTH) { - return "variant<...>"; + StringBuilder sb = new StringBuilder(); + sb.append("variant"); + sb.append("<"); + if (!predefinedFields.isEmpty()) { + sb.append(predefinedFields.stream() + .map(variantField -> variantField.toSql(depth)).collect(Collectors.joining(","))); + if (variantMaxSubcolumnsCount == 0 && !enableTypedPathsToSparse) { + sb.append(">"); + return sb.toString(); + } else { + sb.append(","); + } + } + + sb.append("PROPERTIES ("); + if (variantMaxSubcolumnsCount != 0) { + sb.append("\"variant_max_subcolumns_count\" = \"") + .append(String.valueOf(variantMaxSubcolumnsCount)).append("\""); + } + if (variantMaxSubcolumnsCount != 0 && enableTypedPathsToSparse) { + sb.append(","); } - ArrayList fieldsSql = Lists.newArrayList(); - for (VariantField f : predefinedFields) { - fieldsSql.add(f.toSql(depth + 1)); + if (enableTypedPathsToSparse) { + sb.append("\"variant_enable_typed_paths_to_sparse\" = \"") + .append(String.valueOf(enableTypedPathsToSparse)).append("\""); } - return String.format("variant<%s>", Joiner.on(",").join(fieldsSql)); + sb.append(")>"); + return sb.toString(); } public ArrayList getPredefinedFields() { @@ -120,4 +176,16 @@ public void setVariantMaxSubcolumnsCount(int variantMaxSubcolumnsCount) { public int getVariantMaxSubcolumnsCount() { return variantMaxSubcolumnsCount; } + + public boolean getEnableTypedPathsToSparse() { + return enableTypedPathsToSparse; + } + + public Map getProperties() { + return properties; + } + + public void setEnableTypedPathsToSparse(boolean enableTypedPathsToSparse) { + this.enableTypedPathsToSparse = enableTypedPathsToSparse; + } } diff --git a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 index db8843a5905c46..bf34640be0051a 100644 --- a/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 +++ b/fe/fe-core/src/main/antlr4/org/apache/doris/nereids/DorisParser.g4 @@ -1707,7 +1707,7 @@ dataType : complex=ARRAY LT dataType GT #complexDataType | complex=MAP LT dataType COMMA dataType GT #complexDataType | complex=STRUCT LT complexColTypeList GT #complexDataType - | VARIANT LT variantSubColTypeList GT #variantPredefinedFields + | complex=variantTypeDefinitions #variantPredefinedFields | AGG_STATE LT functionNameIdentifier LEFT_PAREN dataTypes+=dataTypeWithNullable (COMMA dataTypes+=dataTypeWithNullable)* RIGHT_PAREN GT #aggStateDataType @@ -1746,7 +1746,6 @@ primitiveColType | type=DECIMALV3 | type=IPV4 | type=IPV6 - | type=VARIANT | type=ALL ; @@ -1758,6 +1757,13 @@ complexColType : identifier COLON dataType commentSpec? ; +variantTypeDefinitions + : VARIANT LT variantSubColTypeList COMMA properties=propertyClause GT #variantWithFieldsAndProps + | VARIANT LT variantSubColTypeList GT #variantWithOnlyFields + | VARIANT LT properties=propertyClause GT #variantWithOnlyProps + | VARIANT #variant + ; + variantSubColTypeList : variantSubColType (COMMA variantSubColType)* ; diff --git a/fe/fe-core/src/main/cup/sql_parser.cup b/fe/fe-core/src/main/cup/sql_parser.cup index 830f0e4008076e..6d61c8591fb889 100644 --- a/fe/fe-core/src/main/cup/sql_parser.cup +++ b/fe/fe-core/src/main/cup/sql_parser.cup @@ -853,7 +853,7 @@ nonterminal List workload_policy_condition_list, conditio nonterminal List workload_policy_action_list, opt_actions, actions; nonterminal Map key_value_map, opt_key_value_map, opt_key_value_map_in_paren, opt_properties, - opt_ext_properties, opt_enable_feature_properties, properties; + opt_ext_properties, opt_enable_feature_properties, properties, type_opt_properties; nonterminal ColumnDef column_definition; nonterminal IndexDef index_definition; nonterminal ArrayList column_definition_list; @@ -3135,6 +3135,13 @@ key_value_map ::= :} ; +type_opt_properties ::= + COMMA opt_properties:type_properties + {: RESULT = type_properties; :} + | /* empty */ + {: RESULT = Maps.newHashMap(); :} + ; + opt_properties ::= {: RESULT = Maps.newHashMap(); @@ -5273,8 +5280,10 @@ type ::= {: RESULT = new MapType(key_type,value_type); :} | KW_STRUCT LESSTHAN struct_field_list:fields GREATERTHAN {: RESULT = new StructType(fields); :} - | KW_VARIANT LESSTHAN variant_field_list:fields GREATERTHAN - {: RESULT = new VariantType(fields); :} + | KW_VARIANT LESSTHAN variant_field_list:fields type_opt_properties:prop GREATERTHAN + {: RESULT = new VariantType(fields, prop); :} + | KW_VARIANT LESSTHAN properties:prop GREATERTHAN + {: RESULT = new VariantType(prop); :} | KW_CHAR LPAREN INTEGER_LITERAL:len RPAREN {: ScalarType type = ScalarType.createCharType(len.intValue()); RESULT = type; diff --git a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java index 024e7e16cc58fb..140a0b511b35c6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java +++ b/fe/fe-core/src/main/java/org/apache/doris/alter/SchemaChangeHandler.java @@ -66,7 +66,6 @@ import org.apache.doris.catalog.Tablet; import org.apache.doris.catalog.TabletMeta; import org.apache.doris.catalog.Type; -import org.apache.doris.catalog.VariantType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.Config; import org.apache.doris.common.DdlException; @@ -688,8 +687,9 @@ private boolean processModifyColumn(ModifyColumnClause alterClause, OlapTable ol if (modColumn.getChildren().size() > 0 || oriColumn.getChildren().size() > 0) { throw new DdlException("Can not modify variant column with children"); } - VariantType scType = (VariantType) type; - scType.setVariantMaxSubcolumnsCount(olapTable.getVariantMaxSubcolumnsCount()); + if (modColumn.getVariantMaxSubcolumnsCount() != oriColumn.getVariantMaxSubcolumnsCount()) { + throw new DdlException("Can not modify variant column property variant max subcolumns count"); + } } if (!modColumn.equals(oriColumn) && oriColumn.isAutoInc() != modColumn.isAutoInc()) { @@ -1037,11 +1037,6 @@ private boolean addColumnInternal(OlapTable olapTable, Column newColumn, ColumnP lightSchemaChange = false; } - Type type = newColumn.getType(); - if (type.isVariantType()) { - VariantType scType = (VariantType) type; - scType.setVariantMaxSubcolumnsCount(olapTable.getVariantMaxSubcolumnsCount()); - } // check if the new column already exist in base schema. // do not support adding new column which already exist in base schema. List baseSchema = olapTable.getBaseSchema(true); @@ -1074,6 +1069,16 @@ private boolean addColumnInternal(OlapTable olapTable, Column newColumn, ColumnP throw new DdlException("Not supporting alter table add generated columns."); } + if (newColumn.getType().isVariantType() && olapTable.hasVariantColumns()) { + Pair res = olapTable.getMinMaxVariantSubcolumnsCount(); + int currentCount = newColumn.getVariantMaxSubcolumnsCount(); + if ((currentCount == 0 && (res.key() != 0 || res.value() != 0)) + || (currentCount > 0 && (res.key() == 0 && res.value() == 0))) { + throw new DdlException("The variant_max_subcolumns_count must either be 0 in all columns" + + " or greater than 0 in all columns"); + } + } + /* * add new column to indexes. * UNIQUE: @@ -2778,7 +2783,7 @@ private boolean checkDuplicateIndexes(List indexes, IndexDef indexDef, Se .compareTo(TInvertedIndexFileStorageFormat.V2) >= 0) { String columnName = indexDef.getColumns().get(0); Column column = olapTable.getColumn(columnName); - if (column != null && column.getType().isStringType()) { + if (column != null && (column.getType().isStringType() || column.getType().isVariantType())) { boolean isExistingIndexAnalyzer = index.isAnalyzedInvertedIndex(); boolean isNewIndexAnalyzer = indexDef.isAnalyzedInvertedIndex(); if (isExistingIndexAnalyzer == isNewIndexAnalyzer) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java index c1c8a90fd93db2..149e1e0b592e0c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InvertedIndexUtil.java @@ -83,6 +83,16 @@ public static String getInvertedIndexFieldPattern(Map properties return fieldPattern != null ? fieldPattern : ""; } + public static boolean getInvertedIndexSupportPhrase(Map properties) { + String supportPhrase = properties == null ? null : properties.get(INVERTED_INDEX_SUPPORT_PHRASE_KEY); + return supportPhrase != null ? Boolean.parseBoolean(supportPhrase) : true; + } + + public static String getCustomAnalyzer(Map properties) { + String customAnalyzer = properties == null ? null : properties.get(INVERTED_INDEX_CUSTOM_ANALYZER_KEY); + return customAnalyzer != null ? customAnalyzer : ""; + } + public static String getInvertedIndexParserMode(Map properties) { String mode = properties == null ? null : properties.get(INVERTED_INDEX_PARSER_MODE_KEY); // default is "none" if not set diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/MVColumnItem.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/MVColumnItem.java index ee21e0dd7ffaa7..d915d741590c1a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/MVColumnItem.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/MVColumnItem.java @@ -25,7 +25,6 @@ import org.apache.doris.catalog.ScalarType; import org.apache.doris.catalog.Table; import org.apache.doris.catalog.Type; -import org.apache.doris.catalog.VariantType; import org.apache.doris.common.AnalysisException; import org.apache.doris.common.DdlException; @@ -195,12 +194,6 @@ public Column toMVColumn(OlapTable olapTable) throws DdlException { result.setIsAllowNull(defineExpr.isNullable()); } } - if (result.getType().isVariantType()) { - VariantType variantType = (VariantType) this.getType(); - if (variantType.getVariantMaxSubcolumnsCount() != olapTable.getVariantMaxSubcolumnsCount()) { - throw new DdlException("MVColumnItem variantType is error"); - } - } result.setName(name); result.setAggregationType(aggregationType, isAggregationTypeImplicit); result.setDefineExpr(defineExpr); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java index 9bde8edf015453..f77fc72f44e7a4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/TypeDef.java @@ -27,7 +27,10 @@ import org.apache.doris.catalog.StructField; import org.apache.doris.catalog.StructType; import org.apache.doris.catalog.Type; +import org.apache.doris.catalog.VariantType; import org.apache.doris.common.AnalysisException; +import org.apache.doris.common.util.PropertyAnalyzer; +import org.apache.doris.qe.ConnectContext; import org.apache.doris.qe.SessionVariable; import org.apache.doris.thrift.TColumnDesc; import org.apache.doris.thrift.TPrimitiveType; @@ -333,6 +336,32 @@ private void analyzeScalarType(ScalarType scalarType) } break; } + case VARIANT: { + // Configure VariantType parameters by merging session variables with user-specified properties. + // Supported properties: variant_max_subcolumns_count, variant_enable_typed_paths_to_sparse + VariantType variantType = (VariantType) scalarType; + int variantMaxSubcolumnsCount = ConnectContext.get() == null ? 0 : + ConnectContext.get().getSessionVariable().getGlobalVariantMaxSubcolumnsCount(); + boolean enableTypedPathsToSparse = ConnectContext.get() == null ? false : + ConnectContext.get().getSessionVariable().getGlobalEnableTypedPathsToSparse(); + try { + variantMaxSubcolumnsCount = PropertyAnalyzer + .analyzeVariantMaxSubcolumnsCount(variantType.getProperties(), variantMaxSubcolumnsCount); + enableTypedPathsToSparse = PropertyAnalyzer + .analyzeEnableTypedPathsToSparse(variantType.getProperties(), enableTypedPathsToSparse); + } catch (org.apache.doris.common.AnalysisException e) { + throw new AnalysisException(e.getMessage()); + } + variantType.setVariantMaxSubcolumnsCount(variantMaxSubcolumnsCount); + variantType.setEnableTypedPathsToSparse(enableTypedPathsToSparse); + + if (!variantType.getProperties().isEmpty()) { + throw new AnalysisException("variant type only support for " + + PropertyAnalyzer.PROPERTIES_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE + + " and " + PropertyAnalyzer.PROPERTIES_VARIANT_MAX_SUBCOLUMNS_COUNT); + } + break; + } case INVALID_TYPE: throw new AnalysisException("Invalid type."); default: break; diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java index 82ad2dd1dfe70b..ffa2a7837fecc7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java @@ -348,7 +348,7 @@ public void createChildrenColumn(Type type, Column column) { c.setIsAllowNull(field.getContainsNull()); column.addChildrenColumn(c); } - } else if (type.isVariantType()) { + } else if (type.isVariantType() && type instanceof VariantType) { // variant may contain predefined structured fields ArrayList fields = ((VariantType) type).getPredefinedFields(); for (VariantField field : fields) { @@ -517,6 +517,14 @@ public int getScale() { return type instanceof ScalarType ? ((ScalarType) type).getScalarScale() : -1; } + public int getVariantMaxSubcolumnsCount() { + return type.isVariantType() ? ((ScalarType) type).getVariantMaxSubcolumnsCount() : -1; + } + + public boolean getVariantEnableTypedPathsToSparse() { + return type.isVariantType() ? ((ScalarType) type).getVariantEnableTypedPathsToSparse() : false; + } + public AggregateType getAggregationType() { return this.aggregationType; } @@ -562,6 +570,10 @@ public void setFieldPatternType(TPatternType type) { fieldPatternType = type; } + public TPatternType getFieldPatternType() { + return fieldPatternType; + } + public String getDefaultValue() { return this.defaultValue; } @@ -632,12 +644,9 @@ public TColumn toThrift() { tColumnType.setLen(this.getStrLen()); tColumnType.setPrecision(this.getPrecision()); tColumnType.setScale(this.getScale()); + tColumnType.setVariantMaxSubcolumnsCount(this.getVariantMaxSubcolumnsCount()); tColumnType.setIndexLen(this.getOlapColumnIndexSize()); - if (this.getType().isVariantType()) { - VariantType variantType = (VariantType) this.getType(); - tColumnType.setVariantMaxSubcolumnsCount(variantType.getVariantMaxSubcolumnsCount()); - } tColumn.setColumnType(tColumnType); if (null != this.aggregationType) { @@ -667,6 +676,7 @@ public TColumn toThrift() { tColumn.setBeExecVersion(Config.be_exec_version); } tColumn.setClusterKeyId(this.clusterKeyId); + tColumn.setVariantEnableTypedPathsToSparse(this.getVariantEnableTypedPathsToSparse()); // ATTN: // Currently, this `toThrift()` method is only used from CreateReplicaTask. // And CreateReplicaTask does not need `defineExpr` field. @@ -881,8 +891,8 @@ public OlapFile.ColumnPB toPb(Set bfColumns, List indexes) throws builder.addChildrenColumns(c.toPb(Sets.newHashSet(), Lists.newArrayList())); } } else if (this.type.isVariantType()) { - VariantType variantType = (VariantType) this.getType(); - builder.setVariantMaxSubcolumnsCount(variantType.getVariantMaxSubcolumnsCount()); + builder.setVariantMaxSubcolumnsCount(this.getVariantMaxSubcolumnsCount()); + builder.setVariantEnableTypedPathsToSparse(this.getVariantEnableTypedPathsToSparse()); // variant may contain predefined structured fields addChildren(builder); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index f1f70adad4e48d..fd014114f4bb97 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -3870,12 +3870,6 @@ private static void addOlapTablePropertyInfo(OlapTable olapTable, StringBuilder sb.append(olapTable.variantEnableFlattenNested()).append("\""); } - // variant max subcolumns count - if (olapTable.getVariantMaxSubcolumnsCount() != 0) { - sb.append(",\n\"").append(PropertyAnalyzer.PROPERTIES_VARIANT_MAX_SUBCOLUMNS_COUNT).append("\" = \""); - sb.append(olapTable.getVariantMaxSubcolumnsCount()).append("\""); - } - // binlog if (Config.enable_feature_binlog) { BinlogConfig binlogConfig = olapTable.getBinlogConfig(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Index.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Index.java index 8dd587ced88956..f25eb2ce6cfb43 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Index.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Index.java @@ -173,7 +173,14 @@ public String getInvertedIndexParserStopwords() { return InvertedIndexUtil.getInvertedIndexParserStopwords(properties); } - // Whether the index can be changed in light mode + public String getInvertedIndexFieldPattern() { + return InvertedIndexUtil.getInvertedIndexFieldPattern(properties); + } + + public boolean getInvertedIndexSupportPhrase() { + return InvertedIndexUtil.getInvertedIndexSupportPhrase(properties); + } + public boolean isLightIndexChangeSupported() { return indexType == IndexDef.IndexType.INVERTED; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index 457f1b9a67362a..957653df7395f3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -84,6 +84,7 @@ import org.apache.doris.thrift.TNodeInfo; import org.apache.doris.thrift.TOlapTable; import org.apache.doris.thrift.TPaloNodesInfo; +import org.apache.doris.thrift.TPatternType; import org.apache.doris.thrift.TPrimitiveType; import org.apache.doris.thrift.TSortType; import org.apache.doris.thrift.TStorageFormat; @@ -2504,26 +2505,6 @@ public Boolean variantEnableFlattenNested() { return false; } - public void setVariantMaxSubcolumnsCount(int maxSubcoumnsCount) { - List columns = getBaseSchema(true); - boolean hasVariantType = false; - for (Column column : columns) { - Type type = column.getType(); - if (type.isVariantType()) { - hasVariantType = true; - VariantType scType = (VariantType) type; - scType.setVariantMaxSubcolumnsCount(maxSubcoumnsCount); - } - } - if (hasVariantType) { - getOrCreatTableProperty().setVariantMaxSubcolumnsCount(maxSubcoumnsCount); - } - } - - public int getVariantMaxSubcolumnsCount() { - return getOrCreatTableProperty().getVariantMaxSubcolumnsCount(); - } - public int getBaseSchemaVersion() { MaterializedIndexMeta baseIndexMeta = indexIdToMeta.get(baseIndexId); return baseIndexMeta.getSchemaVersion(); @@ -3602,4 +3583,76 @@ protected void addIndexIdToMetaForUnitTest(long id, MaterializedIndexMeta meta) protected void addIndexNameToIdForUnitTest(String name, long id) { indexNameToId.put(name, id); } + + public Pair getMinMaxVariantSubcolumnsCount() { + int minVariantSubcolumnsCount = Integer.MAX_VALUE; + int maxVariantSubcolumnsCount = -1; + for (Column column : getBaseSchema()) { + if (column.getType().isVariantType()) { + minVariantSubcolumnsCount = + Math.min(minVariantSubcolumnsCount, column.getVariantMaxSubcolumnsCount()); + maxVariantSubcolumnsCount = + Math.max(maxVariantSubcolumnsCount, column.getVariantMaxSubcolumnsCount()); + } + } + return Pair.of(minVariantSubcolumnsCount, maxVariantSubcolumnsCount); + } + + public Index getInvertedIndex(Column column, List subPath) { + List invertedIndexes = new ArrayList<>(); + for (Index index : indexes.getIndexes()) { + if (index.getIndexType() == IndexDef.IndexType.INVERTED) { + List columns = index.getColumns(); + if (columns != null && !columns.isEmpty() && column.getName().equals(columns.get(0))) { + invertedIndexes.add(index); + } + } + } + + if (subPath == null || subPath.isEmpty()) { + return invertedIndexes.size() == 1 ? invertedIndexes.get(0) + : invertedIndexes.stream().filter(Index::isAnalyzedInvertedIndex).findFirst().orElse(null); + } + + // subPath is not empty, means it is a variant column, find the field pattern from children + String subPathString = String.join(".", subPath); + String fieldPattern = ""; + for (Column child : column.getChildren()) { + String childName = child.getName(); + if (child.getFieldPatternType() == TPatternType.MATCH_NAME_GLOB) { + try { + java.nio.file.PathMatcher matcher = java.nio.file.FileSystems.getDefault() + .getPathMatcher("glob:" + childName); + if (matcher.matches(java.nio.file.Paths.get(subPathString))) { + fieldPattern = childName; + } + } catch (Exception e) { + continue; + } + } else if (child.getFieldPatternType() == TPatternType.MATCH_NAME) { + if (childName.equals(subPathString)) { + fieldPattern = childName; + } + } + } + + List invertedIndexesWithFieldPattern = new ArrayList<>(); + for (Index index : indexes.getIndexes()) { + if (index.getIndexType() == IndexDef.IndexType.INVERTED) { + List columns = index.getColumns(); + if (columns != null && !columns.isEmpty() && column.getName().equals(columns.get(0)) + && fieldPattern.equals(index.getInvertedIndexFieldPattern())) { + invertedIndexesWithFieldPattern.add(index); + } + } + } + if (invertedIndexesWithFieldPattern.isEmpty()) { + return invertedIndexes.size() == 1 ? invertedIndexes.get(0) + : invertedIndexes.stream().filter(Index::isAnalyzedInvertedIndex).findFirst().orElse(null); + } else { + return invertedIndexesWithFieldPattern.size() == 1 ? invertedIndexesWithFieldPattern.get(0) + : invertedIndexesWithFieldPattern.stream() + .filter(Index::isAnalyzedInvertedIndex).findFirst().orElse(null); + } + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java index 2ba7bdbc730606..071916a804b4e3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/PropertyAnalyzer.java @@ -250,6 +250,8 @@ public class PropertyAnalyzer { public static final String PROPERTIES_VARIANT_MAX_SUBCOLUMNS_COUNT = "variant_max_subcolumns_count"; public static final int VARIANT_MAX_SUBCOLUMNS_COUNT_DEFAULT_VALUE = 0; + public static final String PROPERTIES_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE = "variant_enable_typed_paths_to_sparse"; + public enum RewriteType { PUT, // always put property REPLACE, // replace if exists property @@ -1852,4 +1854,19 @@ public static int analyzeVariantMaxSubcolumnsCount(Map propertie } return maxSubcoumnsCount; } + + public static boolean analyzeEnableTypedPathsToSparse(Map properties, + boolean defaultValue) throws AnalysisException { + boolean enableTypedPathsToSparse = defaultValue; + if (properties != null && properties.containsKey(PROPERTIES_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE)) { + String enableTypedPathsToSparseStr = properties.get(PROPERTIES_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE); + try { + enableTypedPathsToSparse = Boolean.parseBoolean(enableTypedPathsToSparseStr); + } catch (Exception e) { + throw new AnalysisException("variant_enable_typed_paths_to_sparse must be `true` or `false`"); + } + properties.remove(PROPERTIES_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE); + } + return enableTypedPathsToSparse; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java index fa05c1556d7653..b59791259e32b4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java @@ -1441,10 +1441,6 @@ public PartitionPersistInfo addPartition(Database db, String tableName, AddParti properties.put(PropertyAnalyzer.PROPERTIES_VARIANT_ENABLE_FLATTEN_NESTED, olapTable.variantEnableFlattenNested().toString()); } - if (!properties.containsKey(PropertyAnalyzer.PROPERTIES_VARIANT_MAX_SUBCOLUMNS_COUNT)) { - properties.put(PropertyAnalyzer.PROPERTIES_VARIANT_MAX_SUBCOLUMNS_COUNT, - Integer.toString(olapTable.getVariantMaxSubcolumnsCount())); - } if (!properties.containsKey(PropertyAnalyzer.PROPERTIES_ENABLE_SINGLE_REPLICA_COMPACTION)) { properties.put(PropertyAnalyzer.PROPERTIES_ENABLE_SINGLE_REPLICA_COMPACTION, olapTable.enableSingleReplicaCompaction().toString()); @@ -2879,16 +2875,6 @@ private boolean createOlapTable(Database db, CreateTableStmt stmt) throws UserEx } Preconditions.checkNotNull(versionInfo); - int variantMaxSubcolumnsCount = ConnectContext.get() == null ? 0 : ConnectContext.get() - .getSessionVariable().getGlobalVariantMaxSubcolumnsCount(); - try { - variantMaxSubcolumnsCount = PropertyAnalyzer - .analyzeVariantMaxSubcolumnsCount(properties, variantMaxSubcolumnsCount); - } catch (AnalysisException e) { - throw new DdlException(e.getMessage()); - } - olapTable.setVariantMaxSubcolumnsCount(variantMaxSubcolumnsCount); - // a set to record every new tablet created when create table // if failed in any step, use this set to do clear things Set tabletIdSet = new HashSet<>(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java index 0580cbc53cd027..6e35bc3f9d7cc7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java @@ -31,7 +31,6 @@ import org.apache.doris.analysis.FunctionCallExpr; import org.apache.doris.analysis.FunctionName; import org.apache.doris.analysis.FunctionParams; -import org.apache.doris.analysis.IndexDef; import org.apache.doris.analysis.IsNullPredicate; import org.apache.doris.analysis.LambdaFunctionCallExpr; import org.apache.doris.analysis.LambdaFunctionExpr; @@ -211,7 +210,6 @@ public Expr visitElementAt(ElementAt elementAt, PlanTranslatorContext context) { @Override public Expr visitMatch(Match match, PlanTranslatorContext context) { - Index invertedIndex = null; // Get the first slot from match's left expr SlotReference slot = match.getInputSlots().stream() .findFirst() @@ -229,20 +227,10 @@ public Expr visitMatch(Match match, PlanTranslatorContext context) { throw new AnalysisException("SlotReference in Match failed to get OlapTable, SQL is " + match.toSql()); } - List indexes = olapTbl.getIndexes(); - if (indexes != null) { - for (Index index : indexes) { - if (index.getIndexType() == IndexDef.IndexType.INVERTED) { - List columns = index.getColumns(); - if (columns != null && !columns.isEmpty() && column.getName().equals(columns.get(0))) { - invertedIndex = index; - break; - } - } - } - } + Index invertedIndex = olapTbl.getInvertedIndex(column, slot.getSubPath()); MatchPredicate.Operator op = match.op(); + MatchPredicate matchPredicate = new MatchPredicate(op, match.left().accept(this, context), match.right().accept(this, context), match.getDataType().toCatalogDataType(), NullableMode.DEPEND_ON_ARGUMENT, invertedIndex); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java index 695cc716ef7b59..263b06db8d00f4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java @@ -60,6 +60,7 @@ import org.apache.doris.common.FeConstants; import org.apache.doris.common.Pair; import org.apache.doris.common.UserException; +import org.apache.doris.common.util.PropertyAnalyzer; import org.apache.doris.datasource.InternalCatalog; import org.apache.doris.dictionary.LayoutType; import org.apache.doris.job.common.IntervalUnit; @@ -451,9 +452,14 @@ import org.apache.doris.nereids.DorisParser.UseDatabaseContext; import org.apache.doris.nereids.DorisParser.UserIdentifyContext; import org.apache.doris.nereids.DorisParser.UserVariableContext; +import org.apache.doris.nereids.DorisParser.VariantContext; import org.apache.doris.nereids.DorisParser.VariantPredefinedFieldsContext; import org.apache.doris.nereids.DorisParser.VariantSubColTypeContext; import org.apache.doris.nereids.DorisParser.VariantSubColTypeListContext; +import org.apache.doris.nereids.DorisParser.VariantTypeDefinitionsContext; +import org.apache.doris.nereids.DorisParser.VariantWithFieldsAndPropsContext; +import org.apache.doris.nereids.DorisParser.VariantWithOnlyFieldsContext; +import org.apache.doris.nereids.DorisParser.VariantWithOnlyPropsContext; import org.apache.doris.nereids.DorisParser.WhereClauseContext; import org.apache.doris.nereids.DorisParser.WindowFrameContext; import org.apache.doris.nereids.DorisParser.WindowSpecContext; @@ -1030,6 +1036,7 @@ import org.apache.doris.statistics.AnalysisInfo; import org.apache.doris.system.NodeType; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; @@ -4597,7 +4604,46 @@ public DataType visitPrimitiveDataType(PrimitiveDataTypeContext ctx) { @Override public DataType visitVariantPredefinedFields(VariantPredefinedFieldsContext ctx) { - return new VariantType(visitVariantSubColTypeList(ctx.variantSubColTypeList())); + VariantTypeDefinitionsContext variantDef = ctx.complex; + + List fields = Lists.newArrayList(); + Map properties = Maps.newHashMap(); + if (variantDef instanceof VariantWithFieldsAndPropsContext) { + VariantWithFieldsAndPropsContext withBoth = (VariantWithFieldsAndPropsContext) variantDef; + fields = visitVariantSubColTypeList(withBoth.variantSubColTypeList()); + properties = Maps.newHashMap(visitPropertyClause(withBoth.properties)); + } else if (variantDef instanceof VariantWithOnlyFieldsContext) { + VariantWithOnlyFieldsContext withFields = (VariantWithOnlyFieldsContext) variantDef; + fields = visitVariantSubColTypeList(withFields.variantSubColTypeList()); + } else if (variantDef instanceof VariantWithOnlyPropsContext) { + VariantWithOnlyPropsContext withProps = (VariantWithOnlyPropsContext) variantDef; + properties = Maps.newHashMap(visitPropertyClause(withProps.properties)); + } else { + Preconditions.checkState(variantDef instanceof VariantContext, + "Unsupported variant definition: " + variantDef.getText()); + } + + int variantMaxSubcolumnsCount = ConnectContext.get() == null ? 0 : + ConnectContext.get().getSessionVariable().getGlobalVariantMaxSubcolumnsCount(); + boolean enableTypedPathsToSparse = ConnectContext.get() == null ? false : + ConnectContext.get().getSessionVariable().getGlobalEnableTypedPathsToSparse(); + + try { + variantMaxSubcolumnsCount = PropertyAnalyzer + .analyzeVariantMaxSubcolumnsCount(properties, variantMaxSubcolumnsCount); + enableTypedPathsToSparse = PropertyAnalyzer + .analyzeEnableTypedPathsToSparse(properties, enableTypedPathsToSparse); + } catch (org.apache.doris.common.AnalysisException e) { + throw new NotSupportedException(e.getMessage()); + } + + if (!properties.isEmpty()) { + throw new NotSupportedException("only support for " + + PropertyAnalyzer.PROPERTIES_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE + + " and " + PropertyAnalyzer.PROPERTIES_VARIANT_MAX_SUBCOLUMNS_COUNT); + } + + return new VariantType(fields, variantMaxSubcolumnsCount, enableTypedPathsToSparse); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java index c24a20cffbf1a1..989be8e4ebdf34 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/commands/info/CreateTableInfo.java @@ -338,17 +338,35 @@ public void validate(ConnectContext ctx) { Preconditions.checkState(!Strings.isNullOrEmpty(ctlName), "catalog name is null or empty"); Preconditions.checkState(!Strings.isNullOrEmpty(dbName), "database name is null or empty"); - //check datev1 and decimalv2 + //check datatype: datev1, decimalv2, variant + boolean allZero = false; + boolean allPositive = false; for (ColumnDefinition columnDef : columns) { String columnNameUpperCase = columnDef.getName().toUpperCase(); if (columnNameUpperCase.startsWith("__DORIS_")) { throw new AnalysisException( "Disable to create table column with name start with __DORIS_: " + columnNameUpperCase); } - if (columnDef.getType().isVariantType() && columnNameUpperCase.indexOf('.') != -1) { - throw new AnalysisException( + if (columnDef.getType().isVariantType()) { + if (columnNameUpperCase.indexOf('.') != -1) { + throw new AnalysisException( "Disable to create table of `VARIANT` type column named with a `.` character: " + columnNameUpperCase); + } + VariantType variantType = (VariantType) columnDef.getType(); + if (variantType.getVariantMaxSubcolumnsCount() == 0) { + allZero = true; + if (allPositive) { + throw new AnalysisException("The variant_max_subcolumns_count must either be 0" + + " in all columns, or greater than 0 in all columns"); + } + } else { + allPositive = true; + if (allZero) { + throw new AnalysisException("The variant_max_subcolumns_count must either be 0" + + " in all columns, or greater than 0 in all columns"); + } + } } if (columnDef.getType().isDateType() && Config.disable_datev1) { throw new AnalysisException( diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java index af78f4037380e6..83de55b3fb3ab1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java @@ -449,7 +449,8 @@ public static DataType fromCatalogType(Type type) { cf.getComment() == null ? "" : cf.getComment(), cf.getPatternType().toString())) .collect(ImmutableList.toImmutableList()); return new VariantType(variantFields, - ((org.apache.doris.catalog.VariantType) type).getVariantMaxSubcolumnsCount()); + ((org.apache.doris.catalog.VariantType) type).getVariantMaxSubcolumnsCount(), + ((org.apache.doris.catalog.VariantType) type).getEnableTypedPathsToSparse()); } return new VariantType(0); } else { @@ -1061,7 +1062,7 @@ private static void validateScalarType(ScalarType scalarType) { validateNestedType(scalarType, fieldType); if (!fieldPatterns.add(field.getPattern())) { throw new AnalysisException("Duplicate field name " + field.getPattern() - + " in struct " + scalarType.toSql()); + + " in variant " + scalarType.toSql()); } } break; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantField.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantField.java index 232e7416f3eca7..03909d8aaf336f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantField.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantField.java @@ -72,9 +72,22 @@ public org.apache.doris.catalog.VariantField toCatalogDataType() { pattern, dataType.toCatalogDataType(), comment, patternType); } + /** + * Convert this VariantField to SQL string representation. + * @return SQL string representation of this VariantField + */ public String toSql() { - return pattern + ":" + dataType.toSql() - + (comment.isEmpty() ? "" : " COMMENT " + comment); + StringBuilder sb = new StringBuilder(); + if (patternType == TPatternType.MATCH_NAME) { + sb.append(patternType.toString()).append(" "); + } + + sb.append("'").append(pattern).append("'"); + sb.append(":").append(dataType.toSql()); + if (!comment.isEmpty()) { + sb.append(" COMMENT '").append(comment).append("'"); + } + return sb.toString(); } public VariantField conversion() { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java index 951161aa7753b4..f30a328b5db2d8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/VariantType.java @@ -44,6 +44,8 @@ public class VariantType extends PrimitiveType { private int variantMaxSubcolumnsCount = 0; + private boolean enableTypedPathsToSparse = false; + private final List predefinedFields; // No predefined fields @@ -59,23 +61,24 @@ public VariantType(List fields) { this.predefinedFields = ImmutableList.copyOf(Objects.requireNonNull(fields, "fields should not be null")); } - public VariantType(List fields, int variantMaxSubcolumnsCount) { + public VariantType(List fields, int variantMaxSubcolumnsCount, boolean enableTypedPathsToSparse) { this.predefinedFields = ImmutableList.copyOf(Objects.requireNonNull(fields, "fields should not be null")); this.variantMaxSubcolumnsCount = variantMaxSubcolumnsCount; + this.enableTypedPathsToSparse = enableTypedPathsToSparse; } @Override public DataType conversion() { return new VariantType(predefinedFields.stream().map(VariantField::conversion) - .collect(Collectors.toList()), variantMaxSubcolumnsCount); + .collect(Collectors.toList()), variantMaxSubcolumnsCount, + enableTypedPathsToSparse); } @Override public Type toCatalogDataType() { org.apache.doris.catalog.VariantType type = new org.apache.doris.catalog.VariantType(predefinedFields.stream() .map(VariantField::toCatalogDataType) - .collect(Collectors.toCollection(ArrayList::new))); - type.setVariantMaxSubcolumnsCount(variantMaxSubcolumnsCount); + .collect(Collectors.toCollection(ArrayList::new)), variantMaxSubcolumnsCount, enableTypedPathsToSparse); return type; } @@ -86,10 +89,36 @@ public boolean acceptsType(DataType other) { @Override public String toSql() { - if (predefinedFields.isEmpty()) { - return "VARIANT"; + if (predefinedFields.isEmpty() && variantMaxSubcolumnsCount == 0) { + return "variant"; + } + StringBuilder sb = new StringBuilder(); + sb.append("variant"); + sb.append("<"); + if (!predefinedFields.isEmpty()) { + sb.append(predefinedFields.stream().map(VariantField::toSql).collect(Collectors.joining(","))); + if (variantMaxSubcolumnsCount == 0 && !enableTypedPathsToSparse) { + sb.append(">"); + return sb.toString(); + } else { + sb.append(","); + } + } + + sb.append("PROPERTIES ("); + if (variantMaxSubcolumnsCount != 0) { + sb.append("\"variant_max_subcolumns_count\" = \"") + .append(String.valueOf(variantMaxSubcolumnsCount)).append("\","); } - return "VARIANT<" + predefinedFields.stream().map(VariantField::toSql).collect(Collectors.joining(",")) + ">"; + if (variantMaxSubcolumnsCount != 0 && enableTypedPathsToSparse) { + sb.append(","); + } + if (enableTypedPathsToSparse) { + sb.append("\"variant_enable_typed_paths_to_sparse\" = \"") + .append(String.valueOf(enableTypedPathsToSparse)).append("\""); + } + sb.append(")>"); + return sb.toString(); } @Override @@ -102,6 +131,7 @@ public boolean equals(Object o) { } VariantType other = (VariantType) o; return this.variantMaxSubcolumnsCount == other.variantMaxSubcolumnsCount + && this.enableTypedPathsToSparse == other.enableTypedPathsToSparse && Objects.equals(predefinedFields, other.predefinedFields); } @@ -123,4 +153,8 @@ public String toString() { public List getPredefinedFields() { return predefinedFields; } + + public int getVariantMaxSubcolumnsCount() { + return variantMaxSubcolumnsCount; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java index a02c19facaf8e9..2dc1d5957e9a8d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/SessionVariable.java @@ -741,6 +741,9 @@ public class SessionVariable implements Serializable, Writable { public static final String GLOBAL_VARIANT_SUBCOLUMNS_COUNT = "global_variant_max_subcolumns_count"; + public static final String GLOBAL_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE = + "global_variant_enable_typed_paths_to_sparse"; + public static final String ENABLE_TEXT_VALIDATE_UTF8 = "enable_text_validate_utf8"; public static final String ENABLE_SQL_CONVERTOR_FEATURES = "enable_sql_convertor_features"; @@ -2698,6 +2701,21 @@ public void setDetailShapePlanNodes(String detailShapePlanNodes) { }) public boolean skipCheckingAcidVersionFile = false; + @VariableMgr.VarAttr( + name = GLOBAL_VARIANT_SUBCOLUMNS_COUNT, + needForward = true, + checker = "checkGlobalVariantMaxSubcolumnsCount", + fuzzy = true + ) + public int globalVariantMaxSubcolumnsCount = 2048; + + @VariableMgr.VarAttr( + name = GLOBAL_VARIANT_ENABLE_TYPED_PATHS_TO_SPARSE, + needForward = true, + fuzzy = true + ) + public boolean globalEnableTypedPathsToSparse = false; + @VariableMgr.VarAttr(name = ENABLE_SQL_CONVERTOR_FEATURES, needForward = true, checker = "checkSqlConvertorFeatures", description = { @@ -2750,14 +2768,6 @@ public void setDetailShapePlanNodes(String detailShapePlanNodes) { }, checker = "checkSkewRewriteJoinSaltExplodeFactor") public int skewRewriteJoinSaltExplodeFactor = 0; - @VariableMgr.VarAttr( - name = GLOBAL_VARIANT_SUBCOLUMNS_COUNT, - needForward = true, - checker = "checkGlobalVariantMaxSubcolumnsCount", - fuzzy = true - ) - public int globalVariantMaxSubcolumnsCount = 2048; - public void setEnableEsParallelScroll(boolean enableESParallelScroll) { this.enableESParallelScroll = enableESParallelScroll; } @@ -2796,6 +2806,7 @@ public void initFuzzyModeVariables() { int maxBytes = 10 * 1024 * 1024; this.exchangeMultiBlocksByteSize = minBytes + (int) (random.nextDouble() * (maxBytes - minBytes)); this.globalVariantMaxSubcolumnsCount = random.nextInt(10); + this.globalEnableTypedPathsToSparse = random.nextBoolean(); int randomInt = random.nextInt(4); if (randomInt % 2 == 0) { this.rewriteOrToInPredicateThreshold = 100000; @@ -5098,6 +5109,10 @@ public void setEnableAddIndexForNewData(boolean enableAddIndexForNewData) { this.enableAddIndexForNewData = enableAddIndexForNewData; } + public boolean getGlobalEnableTypedPathsToSparse() { + return globalEnableTypedPathsToSparse; + } + public static boolean enableStrictCast() { if (ConnectContext.get() != null) { return ConnectContext.get().getSessionVariable().enableStrictCast; diff --git a/fe/fe-core/src/test/java/org/apache/doris/persist/ScalarTypeTest.java b/fe/fe-core/src/test/java/org/apache/doris/persist/ScalarTypeTest.java new file mode 100644 index 00000000000000..b1f2039e356348 --- /dev/null +++ b/fe/fe-core/src/test/java/org/apache/doris/persist/ScalarTypeTest.java @@ -0,0 +1,40 @@ +// 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. + +package org.apache.doris.persist; + +import org.apache.doris.catalog.PrimitiveType; +import org.apache.doris.catalog.ScalarType; +import org.apache.doris.catalog.VariantType; +import org.apache.doris.persist.gson.GsonUtils; + +import org.junit.Assert; +import org.junit.Test; + +public class ScalarTypeTest { + @Test + public void testScalarType() { + ScalarType scalarType = new ScalarType(PrimitiveType.VARIANT); + String json = GsonUtils.GSON.toJson(scalarType); + System.out.println(json); + ScalarType scalarType2 = GsonUtils.GSON.fromJson(json, ScalarType.class); + Assert.assertFalse(scalarType2 instanceof VariantType); + Assert.assertEquals(scalarType.getPrimitiveType(), scalarType2.getPrimitiveType()); + Assert.assertEquals(scalarType.getVariantMaxSubcolumnsCount(), 0); + Assert.assertEquals(scalarType.getVariantEnableTypedPathsToSparse(), false); + } +} diff --git a/gensrc/proto/olap_file.proto b/gensrc/proto/olap_file.proto index 5040f5ded88fdd..2c375818799973 100644 --- a/gensrc/proto/olap_file.proto +++ b/gensrc/proto/olap_file.proto @@ -351,6 +351,7 @@ message ColumnPB { optional int32 be_exec_version = 24; optional int32 variant_max_subcolumns_count = 25 [default = 0]; optional PatternTypePB pattern_type = 26; + optional bool variant_enable_typed_paths_to_sparse = 27 [default = false]; // this field is only used during flexible partial update load optional bool is_on_update_current_timestamp = 28 [default = false]; } diff --git a/gensrc/thrift/Descriptors.thrift b/gensrc/thrift/Descriptors.thrift index 08ba828176a005..f5ef1233c3e53d 100644 --- a/gensrc/thrift/Descriptors.thrift +++ b/gensrc/thrift/Descriptors.thrift @@ -49,6 +49,7 @@ struct TColumn { 19: optional i32 cluster_key_id = -1 20: optional i32 be_exec_version = -1 21: optional TPatternType pattern_type + 22: optional bool variant_enable_typed_paths_to_sparse = false 23: optional bool is_on_update_current_timestamp = false } diff --git a/regression-test/data/variant_p0/load.out b/regression-test/data/variant_p0/load.out index e7521c37987a1f..c4efac93716fc3 100644 --- a/regression-test/data/variant_p0/load.out +++ b/regression-test/data/variant_p0/load.out @@ -224,7 +224,7 @@ [123] -- !sql_25 -- -50000 55000.000000010754 6150000 +50000 55000.00000000543 6150000 -- !sql_26 -- 5000 diff --git a/regression-test/data/variant_p0/nested2.out b/regression-test/data/variant_p0/nested2.out index 357f76927e714d..fcae06ff00d17c 100644 --- a/regression-test/data/variant_p0/nested2.out +++ b/regression-test/data/variant_p0/nested2.out @@ -1,7 +1,7 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !sql_desc_1 -- k bigint Yes true \N -v variant Yes false \N NONE +v variant Yes false \N NONE v.nested.a array Yes false \N NONE v.nested.b array Yes false \N NONE v.nested.c array Yes false \N NONE @@ -50,7 +50,7 @@ v.nested.c array Yes false \N NONE -- !sql_desc_2 -- k bigint Yes true \N -v variant Yes false \N NONE +v variant Yes false \N NONE v.nested.a array Yes false \N NONE v.nested.b array Yes false \N NONE v.nested.c array Yes false \N NONE @@ -169,7 +169,7 @@ v.nested.c array Yes false \N NONE -- !sql_desc_4 -- k bigint Yes true \N -v variant Yes false \N NONE +v variant Yes false \N NONE v.nested.a array Yes false \N NONE v.nested.b array Yes false \N NONE v.nested.c array Yes false \N NONE @@ -218,7 +218,7 @@ v.nested.c array Yes false \N NONE -- !sql_desc_5 -- k bigint Yes true \N -v variant Yes false \N NONE +v variant Yes false \N NONE v.nested.a array Yes false \N NONE v.nested.b array Yes false \N NONE v.nested.c array Yes false \N NONE diff --git a/regression-test/data/variant_p0/predefine/load.out b/regression-test/data/variant_p0/predefine/load.out index ed7c3ad7c8463b..794eb0176fb2f9 100644 --- a/regression-test/data/variant_p0/predefine/load.out +++ b/regression-test/data/variant_p0/predefine/load.out @@ -13,19 +13,6 @@ 11 4 {"a":{"b":{"c":678910,"d":33.222}}} 12 3 {"dcm":789.123000000,"dt":"2025-01-01 11:11:11","ip":"127.0.0.1"} --- !sql -- -id bigint No true \N -type varchar(30) Yes false \N NONE -v1 variant Yes false \N NONE -v1.a.b.c int Yes false \N NONE -v1.a.b.d double Yes false \N NONE -v1.dcm decimal(38,9) Yes false \N NONE -v1.dt datetime Yes false \N NONE -v1.ip ipv4 Yes false \N NONE -v1.ss text Yes false \N NONE -v1.xxx smallint Yes false \N NONE -v1.yyy double Yes false \N NONE - -- !sql -- 127.0.0.1 127.0.0.1 @@ -72,18 +59,6 @@ v1.yyy double Yes false \N NONE 10 1 {"a":{"b":{"c":123456,"d":11.111}},"dcm":123.456000000,"dt":"2021-01-01 00:00:00","ip":"127.0.0.1","ss":"199991111"} 12 3 {"dcm":789.123000000,"dt":"2025-01-01 11:11:11","ip":"127.0.0.1"} --- !sql -- -id bigint No true \N -v1 variant Yes false \N NONE -v1.PREDEFINE_COL1 smallint Yes false \N NONE -v1.PREDEFINE_COL2 double Yes false \N NONE -v1.PREDEFINE_COL3 text Yes false \N NONE -v1.PREDEFINE_COL4 text Yes false \N NONE -v1.predefine_col1 smallint Yes false \N NONE -v1.predefine_col2 double Yes false \N NONE -v1.predefine_col3 text Yes false \N NONE -v1.predefine_col4 text Yes false \N NONE - -- !sql -- 1 {"predefine_col1":1024} 2 {"predefine_col2":1.11111} @@ -100,59 +75,11 @@ v1.predefine_col4 text Yes false \N NONE 3 {"array_datetimev2":["2021-01-01 00:00:00", "2022-01-01 00:00:00", "2023-01-01 00:00:00"],"array_int":[1, 2, 3],"array_string":["a", "b", "c"],"boolean_":1,"date_":"2022-01-01","decimal_":219911111111.011121933,"float_":1.111111111,"ipv4_":"127.0.0.1","varchar_":"world hello"} 4 {"array_datetimev2":["2021-01-01 00:00:00", "2022-01-01 00:00:00", "2023-01-01 00:00:00"],"array_int":[1, 2, 3],"array_string":["a", "b", "c"],"ext_1":1.111111,"ext_2":"this is an extra field","ext_3":[1, 2, 3],"float_":1.111111111,"ipv4_":"127.0.0.1","varchar_":"world hello"} --- !sql -- -id bigint No true \N -v1 variant,MATCH_NAME_GLOB 'array_string':array,MATCH_NAME_GLOB 'array_decimal':array,MATCH_NAME_GLOB 'array_datetime':array,MATCH_NAME_GLOB 'array_datetimev2':array,MATCH_NAME_GLOB 'array_date':array,MATCH_NAME_GLOB 'array_datev2':array,MATCH_NAME_GLOB 'array_ipv4':array,MATCH_NAME_GLOB 'array_ipv6':array,MATCH_NAME_GLOB 'array_float':array,MATCH_NAME_GLOB 'array_boolean':array,MATCH_NAME_GLOB 'int_':int,MATCH_NAME_GLOB 'string_':text,MATCH_NAME_GLOB 'decimal_':decimalv3(26,9),MATCH_NAME_GLOB 'datetime_':datetimev2(0),MATCH_NAME_GLOB 'datetimev2_':datetimev2(6),MATCH_NAME_GLOB 'date_':datev2,MATCH_NAME_GLOB 'datev2_':datev2,MATCH_NAME_GLOB 'ipv4_':ipv4,MATCH_NAME_GLOB 'ipv6_':ipv6,MATCH_NAME_GLOB 'float_':decimalv3(26,9),MATCH_NAME_GLOB 'boolean_':boolean,MATCH_NAME_GLOB 'varchar_':text> Yes false \N NONE -v1.array_boolean array Yes false \N NONE -v1.array_date array Yes false \N NONE -v1.array_datetime array Yes false \N NONE -v1.array_datetimev2 array Yes false \N NONE -v1.array_datev2 array Yes false \N NONE -v1.array_decimal array Yes false \N NONE -v1.array_float array Yes false \N NONE -v1.array_int array Yes false \N NONE -v1.array_ipv4 array Yes false \N NONE -v1.array_ipv6 array Yes false \N NONE -v1.array_string array Yes false \N NONE -v1.boolean_ boolean Yes false \N NONE -v1.date_ date Yes false \N NONE -v1.datetime_ datetime Yes false \N NONE -v1.datetimev2_ datetime Yes false \N NONE -v1.datev2_ date Yes false \N NONE -v1.decimal_ decimal(26,9) Yes false \N NONE -v1.ext_1 double Yes false \N NONE -v1.ext_2 text Yes false \N NONE -v1.ext_3 array Yes false \N NONE -v1.float_ decimal(26,9) Yes false \N NONE -v1.int_ int Yes false \N NONE -v1.ipv4_ ipv4 Yes false \N NONE -v1.ipv6_ ipv6 Yes false \N NONE -v1.string_ text Yes false \N NONE -v1.varchar_ text Yes false \N NONE - -- !sql -- 101 {"a":1} {"dcm":1111111.000000000} \N 102 {"a":1} {"dcm":1111111.000000000} {"dcm":1111111.000000000} 103 {"a":1} {"dcm":1111111.000000000} {"dt":"2021-01-01 11:11:11"} --- !sql -- -id bigint No true \N -v1 variant Yes false \N NONE -v2 variant Yes false \N NONE -v3 variant Yes false \N NONE -v1.PREDEFINE_COL1 smallint Yes false \N NONE -v1.PREDEFINE_COL2 double Yes false \N NONE -v1.PREDEFINE_COL3 text Yes false \N NONE -v1.PREDEFINE_COL4 text Yes false \N NONE -v1.a tinyint Yes false \N NONE -v1.predefine_col1 smallint Yes false \N NONE -v1.predefine_col2 double Yes false \N NONE -v1.predefine_col3 text Yes false \N NONE -v1.predefine_col4 text Yes false \N NONE -v2.dcm decimal(38,9) Yes false \N NONE -v3.dcm decimal(38,9) Yes false \N NONE -v3.dt datetime Yes false \N NONE - -- !sql -- 1 {"nested":[{"a":123,"b":"456"}]} 1 {"nested":[{"a":123,"b":"456"}]} @@ -168,16 +95,22 @@ v3.dt datetime Yes false \N NONE [{"a":123,"b":"456"}] -- !sql -- -[123] -[123] -[123] -[123] -[123] +\N +\N +\N +\N +\N -- !sql -- -id bigint No true \N -v variant Yes false \N NONE -v.auto_type json Yes false \N NONE +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} +{"auto_type":"jsonb"} -- !sql_arr_null_1 -- 3 {"array_decimal":[null, 2.200000000, 3.300000000, 4.400000000]} diff --git a/regression-test/data/variant_p0/predefine/predefined_typed_to_sparse.out b/regression-test/data/variant_p0/predefine/predefined_typed_to_sparse.out new file mode 100644 index 00000000000000..9c681be5c17b89 --- /dev/null +++ b/regression-test/data/variant_p0/predefine/predefined_typed_to_sparse.out @@ -0,0 +1,75 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +1 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +52 {"array_decimal_2":[1217297.486087340, 366003851280257.752431218, 8973145984227.655768002],"array_ipv6_2":["f99b:f60a:9223:5049:8b1c:45d7:45f5:b4fd", "72d2:77aa:e0bb:d7f7:592b:f462:d72:c5be"],"char_1":"Generate it nested test.","date_1":"2025-12-14","datetime_1":"2024-01-22 13:11:14","datetimev2_1":"2026-02-03 02:27:24.073783","datev2_2":"2023-09-21","decimal_2":77374.884509513,"int_1":22039,"ipv4_2":"201.126.28.227","ipv6_1":"6cd7:b2f:737d:6caa:5727:33bb:ee5d:63d2","largeint_1":764894823616784426248703058599238663,"metadata":{"priority":3,"processed_by":"nqgjfwint","valid":0},"string_1":"Example field process data object.","string_1_nested":{"context":{"session_id":"gmugrfcxxkmw","source_ip":"227.97.148.155","timestamp":"2026-06-11 09:35:49.398754"},"message":"Is object log to process.","status_code":"30289"}} +81 {"array_decimal_1":[6993835366877.197970529, 692486181822.904938989, 57800977.779873991],"array_ipv6_1":["3e5e::d3c6:9b00", "497c:a15f:93d4:6487:fb8a:922a:116:382c"],"char_1":"Of nested generate.","date_1":"2025-02-17","datetime_2":"2025-07-19 14:19:28","datetimev2_2":"2026-08-01 13:51:16.663655","datev2_2":"2023-07-01","decimal_1":71167668339089076.027343245,"int_2":-4330,"ipv4_1":"59.119.122.122","ipv6_1":"71:9f6f:498f:6114:4dbc:9317:d188:846a","largeint_1":999275976602,"string_1_nested":{"context":{"session_id":"csswaakndsqv","source_ip":"142.174.127.131","timestamp":"2026-05-28 18:37:16.559456"},"message":"Json code of code.","status_code":"56746"},"string_2":"Status key status example a short it."} +186 {"array_decimal_2":[343096599140599.876400678, 7831434.851857885],"array_ipv6_2":["6628:ec19:f0fb:9c28::2108:e7c0", "d1e6:a9b1:960b:fb6a:2af9:5510:7ef7:4f28"],"char_2":"Process generate string log is.","date_2":"2026-01-17","datetime_2":"2025-06-24 10:18:55","datetimev2_1":"2025-01-11 15:17:37.482750","datev2_1":"2026-01-30","decimal_1":42741395319382677.318175638,"int_1":30470,"int_nested":{"level1_num_1":95377,"level1_num_2":74730},"ipv4_2":"14.45.131.14","ipv6_2":"6c40:ada4:83e7:4436::","largeint_2":1972321546770399093377808800275591213,"string_1":"The it code of to field.","string_2_nested":{"context":{"session_id":"opvsllcaalta","source_ip":"136.15.57.180","timestamp":"2023-05-13 15:40:32.911831"},"message":"In nested string.","status_code":"41918"}} +475 {"array_decimal_2":[88211.795496743, 69626003842.211054548],"array_ipv6_2":["5284:d12a:d199:af4a:e22b:a147:dea5:ec29", "8d50:3ef:2583:17ab:ee3f:72af:e90a:ee54", "89b8:b2d5:6c9c:271f:6175::3d94"],"char_2":"Random generate key in sample.","date_2":"2026-11-29","datetime_2":"2025-03-02 23:14:03","datetimev2_1":"2026-08-02 18:57:45.077150","datev2_1":"2023-11-04","decimal_2":-4280.446032481,"int_1":69203,"int_nested":{"level1_num_1":42164,"level1_num_2":73701},"ipv4_2":"180.182.39.98","ipv6_1":"56dc:6910:4d3a:241:bdc9:7c63:54ac:957b","largeint_2":7116719144922,"string_1":"Object is data message nested.","string_2_nested":{"context":{"session_id":"zboqencwghbp","source_ip":"99.67.120.47","timestamp":"2025-08-13 21:26:42.588013"},"message":"And message in.","status_code":"87131"}} +505 {"array_decimal_1":[601.234546799, 262143833.424900595],"array_ipv6_1":["5379:e655:ffb4:ff93:f993:1b00:5e9:f7bb", "dd6c:a85b:84da:1de9:2919:9e55:c9a0:aa26", "6e07:b5fc:c994:9a63:732f:41c9:8ca2:16d7"],"char_2":"Message random a code generate.","date_1":"2025-03-31","datetime_1":"2027-02-04 18:34:24","datetimev2_1":"2024-01-23 16:23:45.625302","datev2_1":"2025-05-28","decimal_2":80073776.516113260,"int_1":42447,"ipv4_1":"150.214.32.106","ipv6_2":"da18:1fbc:dadd:53f4:8e5b:25fc::","largeint_1":6381994961717802432931228,"string_1_nested":{"context":{"session_id":"wipdivqnpntk","source_ip":"10.52.81.99","timestamp":"2024-05-14 15:00:11.320701"},"message":"Key to message generate json.","status_code":"-4652"},"string_2":"Log it message and data value field log."} +598 {"array_decimal_2":[-90235911041.078404692, 87024.785161188, 7.453107283],"array_ipv6_1":["749b:b007:43a7:bcaf:2ef2:bfe5:2b69:aea8", "b60:5636:2b04:70a3:d901:db26:7966:5cb0", "9d56:4380:83b0:17c:5840:aa25:f2f6:db95"],"char_2":"Field status generate generate short.","date_1":"2026-01-08","datetime_2":"2023-09-28 00:51:10","datetimev2_2":"2023-12-02 20:35:49.472295","datev2_1":"2026-01-04","decimal_2":26.144007845,"int_2":77401,"int_nested":{"level1_num_1":97684,"level1_num_2":86484},"ipv4_2":"72.138.200.25","ipv6_2":"d898:2c91:3541:8bfa:dfe4:fa22:f301:a92","largeint_2":4375114360934695506121925213,"string_2":"String data nested to example generate.","string_2_nested":{"context":{"session_id":"vkxemvohrpze","source_ip":"217.56.193.118","timestamp":"2025-12-03 03:27:28.639440"},"message":"Key status test json of in is a.","status_code":"73350"}} +659 {"array_decimal_2":[676292444331501.791295286],"array_ipv6_2":["aa75:5e74:ae2:9d05:6320:bc1a:9fa8:c22", "ab6a:1d10:f690:1229:44e6:6724:7fc0:f4c3", "9add:9146:91fb:3af0:39fb:e8e0:50a:af54"],"char_1":"Level short data the.","date_1":"2026-04-18","datetime_2":"2027-03-24 07:05:37","datetimev2_1":"2024-03-09 21:58:53.536163","datev2_2":"2023-08-29","decimal_2":375096233442620.402021458,"int_1":49010,"ipv4_1":"76.205.28.41","ipv6_1":"3e38:7813:6474:60e1:c245:8391:5d3a:6bf3","largeint_2":8,"metadata":{"priority":4,"processed_by":"jovrgftdi","valid":1},"string_1_nested":{"context":{"session_id":"jiizftwrqbgo","source_ip":"106.142.112.230","timestamp":"2026-03-25 19:54:02.914284"},"message":"Key code in.","status_code":"89497"},"string_2":"Of string code example sample value in."} +668 {"array_decimal_1":[345.581519531],"array_ipv6_2":["bd7c:4ea0:c3f2:8242:a917:b6f9:f1c4:81fc"],"char_1":"Message the field.","date_2":"2023-06-04","datetime_2":"2023-07-26 09:51:00","datetimev2_2":"2023-08-06 12:59:06.782257","datev2_2":"2026-02-10","decimal_1":71704608.366887325,"int_1":3839,"ipv4_1":"237.141.96.142","ipv6_2":"f65:d104:f442:90f8:962b:ac7f:70ef:47fc","largeint_1":73701028754393574400404888160807216,"string_2":"Test status status to a.","string_2_nested":{"context":{"session_id":"gzfrmskyhvgk","source_ip":"62.167.211.183","timestamp":"2026-10-08 06:36:46.788298"},"message":"And json data in key.","status_code":"86739"}} +789 {"array_decimal_2":[461419171.666216999, 3746898066419.821429238, 742451.192408462],"array_ipv6_1":["6287:3753:3cc4:4759:4ff2:13ee:20aa:d7e7", "1cdf:2c95:a45a:b2aa:787b:bf1f:70c2:1121"],"char_1":"Key sample process.","date_2":"2024-11-17","datetime_1":"2026-04-22 16:03:35","datetimev2_2":"2024-06-21 13:12:07.539485","datev2_2":"2024-01-25","decimal_2":8933959111.376668859,"int_1":25966,"int_nested":{"level1_num_1":91219,"level1_num_2":4608},"ipv4_1":"121.174.189.99","ipv6_2":"8ab:accb:ad63:bc97:84f9:4c8b:137e:efaf","largeint_2":269951187241728368326988938317,"string_1":"In sample to.","string_2_nested":{"context":{"session_id":"jxxteoxxdrzu","source_ip":"100.16.34.59","timestamp":"2026-05-28 23:42:50.962876"},"message":"Data generate status and generate process sample example.","status_code":"37776"}} + +-- !sql -- +1 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +52 {"array_decimal_2":[1217297.486087340, 366003851280257.752431218, 8973145984227.655768002],"array_ipv6_2":["f99b:f60a:9223:5049:8b1c:45d7:45f5:b4fd", "72d2:77aa:e0bb:d7f7:592b:f462:d72:c5be"],"char_1":"Generate it nested test.","date_1":"2025-12-14","datetime_1":"2024-01-22 13:11:14","datetimev2_1":"2026-02-03 02:27:24.073783","datev2_2":"2023-09-21","decimal_2":77374.884509513,"int_1":22039,"ipv4_2":"201.126.28.227","ipv6_1":"6cd7:b2f:737d:6caa:5727:33bb:ee5d:63d2","largeint_1":764894823616784426248703058599238663,"metadata":{"priority":3,"processed_by":"nqgjfwint","valid":0},"string_1":"Example field process data object.","string_1_nested":{"context":{"session_id":"gmugrfcxxkmw","source_ip":"227.97.148.155","timestamp":"2026-06-11 09:35:49.398754"},"message":"Is object log to process.","status_code":"30289"}} +81 {"array_decimal_1":[6993835366877.197970529, 692486181822.904938989, 57800977.779873991],"array_ipv6_1":["3e5e::d3c6:9b00", "497c:a15f:93d4:6487:fb8a:922a:116:382c"],"char_1":"Of nested generate.","date_1":"2025-02-17","datetime_2":"2025-07-19 14:19:28","datetimev2_2":"2026-08-01 13:51:16.663655","datev2_2":"2023-07-01","decimal_1":71167668339089076.027343245,"int_2":-4330,"ipv4_1":"59.119.122.122","ipv6_1":"71:9f6f:498f:6114:4dbc:9317:d188:846a","largeint_1":999275976602,"string_1_nested":{"context":{"session_id":"csswaakndsqv","source_ip":"142.174.127.131","timestamp":"2026-05-28 18:37:16.559456"},"message":"Json code of code.","status_code":"56746"},"string_2":"Status key status example a short it."} +186 {"array_decimal_2":[343096599140599.876400678, 7831434.851857885],"array_ipv6_2":["6628:ec19:f0fb:9c28::2108:e7c0", "d1e6:a9b1:960b:fb6a:2af9:5510:7ef7:4f28"],"char_2":"Process generate string log is.","date_2":"2026-01-17","datetime_2":"2025-06-24 10:18:55","datetimev2_1":"2025-01-11 15:17:37.482750","datev2_1":"2026-01-30","decimal_1":42741395319382677.318175638,"int_1":30470,"int_nested":{"level1_num_1":95377,"level1_num_2":74730},"ipv4_2":"14.45.131.14","ipv6_2":"6c40:ada4:83e7:4436::","largeint_2":1972321546770399093377808800275591213,"string_1":"The it code of to field.","string_2_nested":{"context":{"session_id":"opvsllcaalta","source_ip":"136.15.57.180","timestamp":"2023-05-13 15:40:32.911831"},"message":"In nested string.","status_code":"41918"}} +475 {"array_decimal_2":[88211.795496743, 69626003842.211054548],"array_ipv6_2":["5284:d12a:d199:af4a:e22b:a147:dea5:ec29", "8d50:3ef:2583:17ab:ee3f:72af:e90a:ee54", "89b8:b2d5:6c9c:271f:6175::3d94"],"char_2":"Random generate key in sample.","date_2":"2026-11-29","datetime_2":"2025-03-02 23:14:03","datetimev2_1":"2026-08-02 18:57:45.077150","datev2_1":"2023-11-04","decimal_2":-4280.446032481,"int_1":69203,"int_nested":{"level1_num_1":42164,"level1_num_2":73701},"ipv4_2":"180.182.39.98","ipv6_1":"56dc:6910:4d3a:241:bdc9:7c63:54ac:957b","largeint_2":7116719144922,"string_1":"Object is data message nested.","string_2_nested":{"context":{"session_id":"zboqencwghbp","source_ip":"99.67.120.47","timestamp":"2025-08-13 21:26:42.588013"},"message":"And message in.","status_code":"87131"}} +505 {"array_decimal_1":[601.234546799, 262143833.424900595],"array_ipv6_1":["5379:e655:ffb4:ff93:f993:1b00:5e9:f7bb", "dd6c:a85b:84da:1de9:2919:9e55:c9a0:aa26", "6e07:b5fc:c994:9a63:732f:41c9:8ca2:16d7"],"char_2":"Message random a code generate.","date_1":"2025-03-31","datetime_1":"2027-02-04 18:34:24","datetimev2_1":"2024-01-23 16:23:45.625302","datev2_1":"2025-05-28","decimal_2":80073776.516113260,"int_1":42447,"ipv4_1":"150.214.32.106","ipv6_2":"da18:1fbc:dadd:53f4:8e5b:25fc::","largeint_1":6381994961717802432931228,"string_1_nested":{"context":{"session_id":"wipdivqnpntk","source_ip":"10.52.81.99","timestamp":"2024-05-14 15:00:11.320701"},"message":"Key to message generate json.","status_code":"-4652"},"string_2":"Log it message and data value field log."} +598 {"array_decimal_2":[-90235911041.078404692, 87024.785161188, 7.453107283],"array_ipv6_1":["749b:b007:43a7:bcaf:2ef2:bfe5:2b69:aea8", "b60:5636:2b04:70a3:d901:db26:7966:5cb0", "9d56:4380:83b0:17c:5840:aa25:f2f6:db95"],"char_2":"Field status generate generate short.","date_1":"2026-01-08","datetime_2":"2023-09-28 00:51:10","datetimev2_2":"2023-12-02 20:35:49.472295","datev2_1":"2026-01-04","decimal_2":26.144007845,"int_2":77401,"int_nested":{"level1_num_1":97684,"level1_num_2":86484},"ipv4_2":"72.138.200.25","ipv6_2":"d898:2c91:3541:8bfa:dfe4:fa22:f301:a92","largeint_2":4375114360934695506121925213,"string_2":"String data nested to example generate.","string_2_nested":{"context":{"session_id":"vkxemvohrpze","source_ip":"217.56.193.118","timestamp":"2025-12-03 03:27:28.639440"},"message":"Key status test json of in is a.","status_code":"73350"}} +659 {"array_decimal_2":[676292444331501.791295286],"array_ipv6_2":["aa75:5e74:ae2:9d05:6320:bc1a:9fa8:c22", "ab6a:1d10:f690:1229:44e6:6724:7fc0:f4c3", "9add:9146:91fb:3af0:39fb:e8e0:50a:af54"],"char_1":"Level short data the.","date_1":"2026-04-18","datetime_2":"2027-03-24 07:05:37","datetimev2_1":"2024-03-09 21:58:53.536163","datev2_2":"2023-08-29","decimal_2":375096233442620.402021458,"int_1":49010,"ipv4_1":"76.205.28.41","ipv6_1":"3e38:7813:6474:60e1:c245:8391:5d3a:6bf3","largeint_2":8,"metadata":{"priority":4,"processed_by":"jovrgftdi","valid":1},"string_1_nested":{"context":{"session_id":"jiizftwrqbgo","source_ip":"106.142.112.230","timestamp":"2026-03-25 19:54:02.914284"},"message":"Key code in.","status_code":"89497"},"string_2":"Of string code example sample value in."} +668 {"array_decimal_1":[345.581519531],"array_ipv6_2":["bd7c:4ea0:c3f2:8242:a917:b6f9:f1c4:81fc"],"char_1":"Message the field.","date_2":"2023-06-04","datetime_2":"2023-07-26 09:51:00","datetimev2_2":"2023-08-06 12:59:06.782257","datev2_2":"2026-02-10","decimal_1":71704608.366887325,"int_1":3839,"ipv4_1":"237.141.96.142","ipv6_2":"f65:d104:f442:90f8:962b:ac7f:70ef:47fc","largeint_1":73701028754393574400404888160807216,"string_2":"Test status status to a.","string_2_nested":{"context":{"session_id":"gzfrmskyhvgk","source_ip":"62.167.211.183","timestamp":"2026-10-08 06:36:46.788298"},"message":"And json data in key.","status_code":"86739"}} +789 {"array_decimal_2":[461419171.666216999, 3746898066419.821429238, 742451.192408462],"array_ipv6_1":["6287:3753:3cc4:4759:4ff2:13ee:20aa:d7e7", "1cdf:2c95:a45a:b2aa:787b:bf1f:70c2:1121"],"char_1":"Key sample process.","date_2":"2024-11-17","datetime_1":"2026-04-22 16:03:35","datetimev2_2":"2024-06-21 13:12:07.539485","datev2_2":"2024-01-25","decimal_2":8933959111.376668859,"int_1":25966,"int_nested":{"level1_num_1":91219,"level1_num_2":4608},"ipv4_1":"121.174.189.99","ipv6_2":"8ab:accb:ad63:bc97:84f9:4c8b:137e:efaf","largeint_2":269951187241728368326988938317,"string_1":"In sample to.","string_2_nested":{"context":{"session_id":"jxxteoxxdrzu","source_ip":"100.16.34.59","timestamp":"2026-05-28 23:42:50.962876"},"message":"Data generate status and generate process sample example.","status_code":"37776"}} + +-- !sql -- +{"array_decimal_1":"decimal128i","array_ipv6_1":"ipv6","char_1":"string","date_1":"datev2","datetime_1":"datetimev2","datetimev2_1":"datetimev2","datev2_1":"datev2","decimal_1":"decimal128i","int_1":"int","int_nested.level1_num_1":"int","int_nested.level1_num_2":"int","ipv4_1":"ipv4","ipv6_1":"ipv6","largeint_1":"largeint","string_1":"string","string_1_nested.message":"string","string_1_nested.metadata.source":"string","string_1_nested.metadata.timestamp":"string"} + +-- !sql -- +1 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +2 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +3 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +4 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +5 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +6 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +7 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +8 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +9 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} + +-- !sql -- +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text + +-- !sql -- +{"array_decimal_1":"decimal128i","array_ipv6_1":"ipv6","char_1":"string","date_1":"datev2","datetime_1":"datetimev2","datetimev2_1":"datetimev2","datev2_1":"datev2","decimal_1":"decimal128i","int_1":"int","int_nested.level1_num_1":"int","int_nested.level1_num_2":"int","ipv4_1":"ipv4","ipv6_1":"ipv6","largeint_1":"largeint","string_1":"string","string_1_nested.message":"string","string_1_nested.metadata.source":"string","string_1_nested.metadata.timestamp":"string"} + +-- !sql -- +1 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +2 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +3 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +4 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +5 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +6 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +7 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +8 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} +9 {"array_decimal_1":[12345678901234567.123456789, 987.654321000],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334", "::1"],"char_1":"short text","date_1":"2023-10-27","datetime_1":"2023-10-27 10:30:00","datetimev2_1":"2023-10-27 10:30:00.123456","datev2_1":"2023-10-28","decimal_1":12345.678900000,"int_1":42,"int_nested":{"level1_num_1":1011111,"level1_num_2":102},"ipv4_1":"192.168.1.1","ipv6_1":"::1","largeint_1":12345678901234567890123456789012345678,"string_1":"This is a sample string.","string_1_nested":{"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}}} + +-- !sql -- +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text +[12345678901234567.123456789, 987.654321000] ["2001:db8:85a3::8a2e:370:7334", "::1"] 42 {"level1_num_1":1011111,"level1_num_2":102} This is a sample string. {"message":"Hello from nested object","metadata":{"source":"generator","timestamp":"2023-10-27T12:00:00Z"}} 12345.678900000 2023-10-27 10:30:00 2023-10-27 10:30:00.123456 2023-10-27 2023-10-28 192.168.1.1 ::1 12345678901234567890123456789012345678 short text + diff --git a/regression-test/data/variant_p0/predefine/sql/q01.out b/regression-test/data/variant_p0/predefine/sql/q01.out index 26fd5d82dc63d5..06bdeab796f478 100644 --- a/regression-test/data/variant_p0/predefine/sql/q01.out +++ b/regression-test/data/variant_p0/predefine/sql/q01.out @@ -4,7 +4,7 @@ -- !q01_2 -- id bigint No true \N -v1 variant,MATCH_NAME_GLOB 'array_string':array,MATCH_NAME_GLOB 'array_decimal':array,MATCH_NAME_GLOB 'array_datetime':array,MATCH_NAME_GLOB 'array_datetimev2':array,MATCH_NAME_GLOB 'array_date':array,MATCH_NAME_GLOB 'array_datev2':array,MATCH_NAME_GLOB 'array_ipv4':array,MATCH_NAME_GLOB 'array_ipv6':array,MATCH_NAME_GLOB 'array_float':array,MATCH_NAME_GLOB 'array_boolean':array,MATCH_NAME_GLOB 'int_':int,MATCH_NAME_GLOB 'string_':text,MATCH_NAME_GLOB 'decimal_':decimalv3(26,9),MATCH_NAME_GLOB 'datetime_':datetimev2(0),MATCH_NAME_GLOB 'datetimev2_':datetimev2(6),MATCH_NAME_GLOB 'date_':datev2,MATCH_NAME_GLOB 'datev2_':datev2,MATCH_NAME_GLOB 'ipv4_':ipv4,MATCH_NAME_GLOB 'ipv6_':ipv6,MATCH_NAME_GLOB 'float_':decimalv3(26,9),MATCH_NAME_GLOB 'boolean_':boolean,MATCH_NAME_GLOB 'varchar_':text> Yes false \N NONE +v1 variant<'array_int':array,'array_string':array,'array_decimal':array,'array_datetime':array,'array_datetimev2':array,'array_date':array,'array_datev2':array,'array_ipv4':array,'array_ipv6':array,'array_float':array,'array_boolean':array,'int_':int,'string_':text,'decimal_':decimalv3(26,9),'datetime_':datetimev2(0),'datetimev2_':datetimev2(6),'date_':datev2,'datev2_':datev2,'ipv4_':ipv4,'ipv6_':ipv6,'float_':decimalv3(26,9),'boolean_':boolean,'varchar_':text,PROPERTIES ("variant_max_subcolumns_count" = "6")> Yes false \N NONE v1.array_boolean array Yes false \N NONE v1.array_date array Yes false \N NONE v1.array_datetime array Yes false \N NONE diff --git a/regression-test/data/variant_p0/predefine/test_all_prdefine_type_to_sparse.out b/regression-test/data/variant_p0/predefine/test_all_prdefine_type_to_sparse.out new file mode 100644 index 00000000000000..25d76de4a1d196 --- /dev/null +++ b/regression-test/data/variant_p0/predefine/test_all_prdefine_type_to_sparse.out @@ -0,0 +1,8920 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +{"array_bigint_1":"bigint","array_boolean_1":"bool","array_char_1":"string","array_date_1":"datev2","array_datetime_1":"datetimev2","array_decimal128_1":"decimal128i","array_decimal256_1":"null","array_decimal32_1":"decimal32","array_decimal64_1":"decimal64","array_double_1":"double","array_float_1":"float","array_int_1":"int","array_ipv4_1":"ipv4","array_ipv6_1":"ipv6","array_largeint_1":"largeint","array_smallint_1":"smallint","array_string_1":"string","array_tinyint_1":"tinyint","bigint_1":"bigint","boolean_1":"bool","char_1":"string","date_1":"datev2","datetime_1":"datetimev2","decimal128_1":"decimal128i","decimal32_1":"decimal32","decimal64_1":"decimal64","double_1":"double","float_1":"float","int_1":"int","ipv4_1":"ipv4","ipv6_1":"ipv6","largeint_1":"largeint","other_1":"string","smallint_1":"smallint","string_1":"string","tinyint_1":"tinyint"} + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.other_1 text Yes false \N NONE +var.tinyint_1 tinyint Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.tinyint_1 tinyint Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.smallint_1 smallint Yes false \N NONE +var.tinyint_1 tinyint Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.smallint_1 smallint Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.int_1 int Yes false \N NONE +var.smallint_1 smallint Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.int_1 int Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.bigint_1 bigint Yes false \N NONE +var.int_1 int Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.bigint_1 bigint Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.bigint_1 bigint Yes false \N NONE +var.largeint_1 largeint Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.largeint_1 largeint Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.char_1 text Yes false \N NONE +var.largeint_1 largeint Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.char_1 text Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.char_1 text Yes false \N NONE +var.string_1 text Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.string_1 text Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.float_1 float Yes false \N NONE +var.string_1 text Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.string_1 text Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.double_1 double Yes false \N NONE +var.string_1 text Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.double_1 double Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal32_1 decimal(8,2) Yes false \N NONE +var.double_1 double Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal32_1 decimal(8,2) Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal32_1 decimal(8,2) Yes false \N NONE +var.decimal64_1 decimal(16,9) Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal64_1 decimal(16,9) Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal128_1 decimal(36,9) Yes false \N NONE +var.decimal64_1 decimal(16,9) Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal128_1 decimal(36,9) Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal128_1 decimal(36,9) Yes false \N NONE +var.decimal256_1 unknown type: UNSUPPORTED_TYPE Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.decimal128_1 decimal(36,9) Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.datetime_1 datetime Yes false \N NONE +var.decimal128_1 decimal(36,9) Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.datetime_1 datetime Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.date_1 date Yes false \N NONE +var.datetime_1 datetime Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.date_1 date Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.date_1 date Yes false \N NONE +var.ipv4_1 ipv4 Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.ipv4_1 ipv4 Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.ipv4_1 ipv4 Yes false \N NONE +var.ipv6_1 ipv6 Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.ipv6_1 ipv6 Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_boolean_1 array Yes false \N NONE +var.ipv6_1 ipv6 Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.ipv6_1 ipv6 Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_tinyint_1 array Yes false \N NONE +var.ipv6_1 ipv6 Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_tinyint_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_smallint_1 array Yes false \N NONE +var.array_tinyint_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_smallint_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_int_1 array Yes false \N NONE +var.array_smallint_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_int_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_bigint_1 array Yes false \N NONE +var.array_int_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_bigint_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_bigint_1 array Yes false \N NONE +var.array_largeint_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_largeint_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_char_1 array Yes false \N NONE +var.array_largeint_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_char_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_char_1 array Yes false \N NONE +var.array_string_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_string_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_float_1 array Yes false \N NONE +var.array_string_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_float_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_double_1 array Yes false \N NONE +var.array_float_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_double_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal32_1 array Yes false \N NONE +var.array_double_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal32_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal32_1 array Yes false \N NONE +var.array_decimal64_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal64_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal128_1 array Yes false \N NONE +var.array_decimal64_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal128_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal128_1 array Yes false \N NONE +var.array_decimal256_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_decimal256_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_datetime_1 array Yes false \N NONE +var.array_decimal256_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_datetime_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_datetime_1":["2021-01-01 00:00:00"]} +{"array_datetime_1":["2021-01-01 00:00:01"]} +{"array_datetime_1":["2021-01-01 00:00:02"]} +{"array_datetime_1":["2021-01-01 00:00:03"]} +{"array_datetime_1":["2021-01-01 00:00:04"]} +{"array_datetime_1":["2021-01-01 00:00:05"]} +{"array_datetime_1":["2021-01-01 00:00:06"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_date_1 array Yes false \N NONE +var.array_datetime_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_date_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_datetime_1":["2021-01-01 00:00:00"]} +{"array_datetime_1":["2021-01-01 00:00:01"]} +{"array_datetime_1":["2021-01-01 00:00:02"]} +{"array_datetime_1":["2021-01-01 00:00:03"]} +{"array_datetime_1":["2021-01-01 00:00:04"]} +{"array_datetime_1":["2021-01-01 00:00:05"]} +{"array_datetime_1":["2021-01-01 00:00:06"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_date_1":["2021-01-01"]} +{"array_date_1":["2021-01-02"]} +{"array_date_1":["2021-01-03"]} +{"array_date_1":["2021-01-04"]} +{"array_date_1":["2021-01-05"]} +{"array_date_1":["2021-01-06"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_date_1 array Yes false \N NONE +var.array_ipv4_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_ipv4_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_datetime_1":["2021-01-01 00:00:00"]} +{"array_datetime_1":["2021-01-01 00:00:01"]} +{"array_datetime_1":["2021-01-01 00:00:02"]} +{"array_datetime_1":["2021-01-01 00:00:03"]} +{"array_datetime_1":["2021-01-01 00:00:04"]} +{"array_datetime_1":["2021-01-01 00:00:05"]} +{"array_datetime_1":["2021-01-01 00:00:06"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_date_1":["2021-01-01"]} +{"array_date_1":["2021-01-02"]} +{"array_date_1":["2021-01-03"]} +{"array_date_1":["2021-01-04"]} +{"array_date_1":["2021-01-05"]} +{"array_date_1":["2021-01-06"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_ipv4_1":["192.168.1.1"]} +{"array_ipv4_1":["192.168.1.2"]} +{"array_ipv4_1":["192.168.1.3"]} +{"array_ipv4_1":["192.168.1.4"]} +{"array_ipv4_1":["192.168.1.5"]} +{"array_ipv4_1":["192.168.1.6"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_ipv4_1 array Yes false \N NONE +var.array_ipv6_1 array Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_ipv6_1 array Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_datetime_1":["2021-01-01 00:00:00"]} +{"array_datetime_1":["2021-01-01 00:00:01"]} +{"array_datetime_1":["2021-01-01 00:00:02"]} +{"array_datetime_1":["2021-01-01 00:00:03"]} +{"array_datetime_1":["2021-01-01 00:00:04"]} +{"array_datetime_1":["2021-01-01 00:00:05"]} +{"array_datetime_1":["2021-01-01 00:00:06"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_date_1":["2021-01-01"]} +{"array_date_1":["2021-01-02"]} +{"array_date_1":["2021-01-03"]} +{"array_date_1":["2021-01-04"]} +{"array_date_1":["2021-01-05"]} +{"array_date_1":["2021-01-06"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_ipv4_1":["192.168.1.1"]} +{"array_ipv4_1":["192.168.1.2"]} +{"array_ipv4_1":["192.168.1.3"]} +{"array_ipv4_1":["192.168.1.4"]} +{"array_ipv4_1":["192.168.1.5"]} +{"array_ipv4_1":["192.168.1.6"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7335"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7336"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7337"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7338"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7339"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733a"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733b"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733c"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733d"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733e"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} + +-- !sql_compaction_before -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.array_ipv6_1 array Yes false \N NONE +var.other_1 text Yes false \N NONE + +-- !sql_compaction_after -- +id bigint No true \N +var variant<'boolean_*':boolean,'tinyint_*':tinyint,'smallint_*':smallint,'int_*':int,'bigint_*':bigint,'largeint_*':largeint,'char_*':text,'string_*':text,'float_*':float,'double_*':double,'decimal32_*':decimalv3(8,2),'decimal64_*':decimalv3(16,9),'decimal128_*':decimalv3(36,9),'decimal256_*':decimalv3(70,60),'datetime_*':datetimev2(0),'date_*':datev2,'ipv4_*':ipv4,'ipv6_*':ipv6,'array_boolean_*':array,'array_tinyint_*':array,'array_smallint_*':array,'array_int_*':array,'array_bigint_*':array,'array_largeint_*':array,'array_char_*':array,'array_string_*':array,'array_float_*':array,'array_double_*':array,'array_decimal32_*':array,'array_decimal64_*':array,'array_decimal128_*':array,'array_decimal256_*':array,'array_datetime_*':array,'array_date_*':array,'array_ipv4_*':array,'array_ipv6_*':array,PROPERTIES ("variant_max_subcolumns_count" = "1","variant_enable_typed_paths_to_sparse" = "true")> No false \N NONE +var.other_1 text Yes false \N NONE + +-- !sql -- +{"array_bigint_1":[1, null],"array_boolean_1":[1],"array_char_1":["1"],"array_date_1":["2021-01-01"],"array_datetime_1":["2021-01-01 00:00:00"],"array_decimal128_1":[1.120000000],"array_decimal256_1":[null],"array_decimal32_1":[1.12],"array_decimal64_1":[1.120000000],"array_double_1":[1.12],"array_float_1":[1.12],"array_int_1":[1, null],"array_ipv4_1":["192.168.1.1"],"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"],"array_largeint_1":[1, null],"array_smallint_1":[1, null],"array_string_1":["1"],"array_tinyint_1":[1, null],"bigint_1":1,"boolean_1":1,"char_1":"1","date_1":"2021-01-01","datetime_1":"2021-01-01 00:00:00","decimal128_1":1.120000000,"decimal32_1":1.12,"decimal64_1":1.120000000,"double_1":1.12,"float_1":1.12,"int_1":1,"ipv4_1":"192.168.1.1","ipv6_1":"2001:db8:85a3::8a2e:370:7334","largeint_1":1,"other_1":"1","smallint_1":1,"string_1":"1","tinyint_1":1} +{"other_1":"1"} +{"tinyint_1":1} +{"tinyint_1":2} +{"smallint_1":1} +{"smallint_1":2} +{"smallint_1":3} +{"int_1":1} +{"int_1":2} +{"int_1":3} +{"int_1":4} +{"bigint_1":1} +{"bigint_1":2} +{"bigint_1":3} +{"bigint_1":4} +{"bigint_1":5} +{"largeint_1":1} +{"largeint_1":2} +{"largeint_1":3} +{"largeint_1":4} +{"largeint_1":5} +{"largeint_1":6} +{"char_1":"1"} +{"char_1":"2"} +{"char_1":"3"} +{"char_1":"4"} +{"char_1":"5"} +{"char_1":"6"} +{"char_1":"7"} +{"string_1":"1"} +{"string_1":"2"} +{"string_1":"3"} +{"string_1":"4"} +{"string_1":"5"} +{"string_1":"6"} +{"string_1":"7"} +{"string_1":"8"} +{"float_1":1.12} +{"float_1":2.12} +{"float_1":3.12} +{"float_1":4.12} +{"float_1":5.12} +{"float_1":6.12} +{"float_1":7.12} +{"float_1":8.12} +{"double_1":1.12} +{"double_1":2.12} +{"double_1":3.12} +{"double_1":4.12} +{"double_1":5.12} +{"double_1":6.12} +{"double_1":7.12} +{"double_1":8.12} +{"double_1":9.12} +{"decimal32_1":1.12} +{"decimal32_1":2.12} +{"decimal32_1":3.12} +{"decimal32_1":4.12} +{"decimal32_1":5.12} +{"decimal32_1":6.12} +{"decimal32_1":7.12} +{"decimal32_1":8.12} +{"decimal32_1":9.12} +{"decimal32_1":10.12} +{"decimal64_1":1.120000000} +{"decimal64_1":2.120000000} +{"decimal64_1":3.120000000} +{"decimal64_1":4.120000000} +{"decimal64_1":5.120000000} +{"decimal64_1":6.120000000} +{"decimal64_1":7.120000000} +{"decimal64_1":8.120000000} +{"decimal64_1":9.120000000} +{"decimal64_1":10.120000000} +{"decimal64_1":11.120000000} +{"decimal128_1":1.120000000} +{"decimal128_1":2.120000000} +{"decimal128_1":3.120000000} +{"decimal128_1":4.120000000} +{"decimal128_1":5.120000000} +{"decimal128_1":6.120000000} +{"decimal128_1":7.120000000} +{"decimal128_1":8.120000000} +{"decimal128_1":9.120000000} +{"decimal128_1":10.120000000} +{"decimal128_1":11.120000000} +{"decimal128_1":12.120000000} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{} +{"datetime_1":"2021-01-01 00:00:00"} +{"datetime_1":"2021-01-01 00:00:01"} +{"datetime_1":"2021-01-01 00:00:02"} +{"datetime_1":"2021-01-01 00:00:03"} +{"datetime_1":"2021-01-01 00:00:04"} +{"datetime_1":"2021-01-01 00:00:05"} +{"datetime_1":"2021-01-01 00:00:06"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"datetime_1":"2021-01-01 00:00:09"} +{"datetime_1":"2021-01-01 00:00:10"} +{"datetime_1":"2021-01-01 00:00:07"} +{"datetime_1":"2021-01-01 00:00:08"} +{"date_1":"2021-01-01"} +{"date_1":"2021-01-02"} +{"date_1":"2021-01-03"} +{"date_1":"2021-01-04"} +{"date_1":"2021-01-05"} +{"date_1":"2021-01-06"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"date_1":"2021-01-07"} +{"date_1":"2021-01-08"} +{"date_1":"2021-01-09"} +{"date_1":"2021-01-10"} +{"ipv4_1":"192.168.1.1"} +{"ipv4_1":"192.168.1.2"} +{"ipv4_1":"192.168.1.3"} +{"ipv4_1":"192.168.1.4"} +{"ipv4_1":"192.168.1.5"} +{"ipv4_1":"192.168.1.6"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.7"} +{"ipv4_1":"192.168.1.8"} +{"ipv4_1":"192.168.1.9"} +{"ipv4_1":"192.168.1.10"} +{"ipv4_1":"192.168.1.11"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7334"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7335"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7336"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7337"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7338"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7339"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733a"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733b"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733c"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733d"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733e"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7341"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:733f"} +{"ipv6_1":"2001:db8:85a3::8a2e:370:7340"} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_boolean_1":[1]} +{"array_boolean_1":[0]} +{"array_tinyint_1":[1]} +{"array_tinyint_1":[2]} +{"array_tinyint_1":[3]} +{"array_tinyint_1":[4]} +{"array_tinyint_1":[5]} +{"array_tinyint_1":[6]} +{"array_tinyint_1":[7]} +{"array_tinyint_1":[8]} +{"array_tinyint_1":[9]} +{"array_tinyint_1":[10]} +{"array_tinyint_1":[11]} +{"array_tinyint_1":[12]} +{"array_tinyint_1":[13]} +{"array_tinyint_1":[14]} +{"array_tinyint_1":[15]} +{"array_tinyint_1":[16]} +{"array_tinyint_1":[17]} +{"array_tinyint_1":[18]} +{"array_smallint_1":[1]} +{"array_smallint_1":[2, null]} +{"array_smallint_1":[3]} +{"array_smallint_1":[4]} +{"array_smallint_1":[5]} +{"array_smallint_1":[6]} +{"array_smallint_1":[7]} +{"array_smallint_1":[8]} +{"array_smallint_1":[9]} +{"array_smallint_1":[10]} +{"array_smallint_1":[11]} +{"array_smallint_1":[12]} +{"array_smallint_1":[13]} +{"array_smallint_1":[14]} +{"array_smallint_1":[15]} +{"array_smallint_1":[16]} +{"array_smallint_1":[17]} +{"array_smallint_1":[18]} +{"array_smallint_1":[19]} +{"array_int_1":[1]} +{"array_int_1":[2]} +{"array_int_1":[3]} +{"array_int_1":[4]} +{"array_int_1":[5]} +{"array_int_1":[6]} +{"array_int_1":[7]} +{"array_int_1":[8]} +{"array_int_1":[9]} +{"array_int_1":[10]} +{"array_int_1":[11]} +{"array_int_1":[12]} +{"array_int_1":[13]} +{"array_int_1":[14]} +{"array_int_1":[15]} +{"array_int_1":[16]} +{"array_int_1":[17]} +{"array_int_1":[18]} +{"array_int_1":[19]} +{"array_int_1":[20]} +{"array_bigint_1":[1]} +{"array_bigint_1":[2]} +{"array_bigint_1":[3]} +{"array_bigint_1":[4]} +{"array_bigint_1":[5]} +{"array_bigint_1":[6]} +{"array_bigint_1":[7]} +{"array_bigint_1":[8]} +{"array_bigint_1":[9]} +{"array_bigint_1":[10]} +{"array_bigint_1":[11]} +{"array_bigint_1":[12]} +{"array_bigint_1":[13]} +{"array_bigint_1":[14]} +{"array_bigint_1":[15]} +{"array_bigint_1":[16]} +{"array_bigint_1":[17]} +{"array_bigint_1":[18]} +{"array_bigint_1":[19]} +{"array_bigint_1":[20]} +{"array_bigint_1":[21]} +{"array_largeint_1":[1, null]} +{"array_largeint_1":[2]} +{"array_largeint_1":[3]} +{"array_largeint_1":[4]} +{"array_largeint_1":[5]} +{"array_largeint_1":[6]} +{"array_largeint_1":[7]} +{"array_largeint_1":[8]} +{"array_largeint_1":[9]} +{"array_largeint_1":[10]} +{"array_largeint_1":[11]} +{"array_largeint_1":[12]} +{"array_largeint_1":[13]} +{"array_largeint_1":[14]} +{"array_largeint_1":[15]} +{"array_largeint_1":[16]} +{"array_largeint_1":[17]} +{"array_largeint_1":[18]} +{"array_largeint_1":[19]} +{"array_largeint_1":[20]} +{"array_largeint_1":[21]} +{"array_largeint_1":[22]} +{"array_char_1":["1"]} +{"array_char_1":["2"]} +{"array_char_1":["3"]} +{"array_char_1":["4"]} +{"array_char_1":["5"]} +{"array_char_1":["6"]} +{"array_char_1":["7"]} +{"array_char_1":["8"]} +{"array_char_1":["9"]} +{"array_char_1":["10"]} +{"array_char_1":["11"]} +{"array_char_1":["12"]} +{"array_char_1":["13"]} +{"array_char_1":["14"]} +{"array_char_1":["15"]} +{"array_char_1":["16"]} +{"array_char_1":["17"]} +{"array_char_1":["18"]} +{"array_char_1":["19"]} +{"array_char_1":["20"]} +{"array_char_1":["21"]} +{"array_char_1":["22"]} +{"array_char_1":["23"]} +{"array_string_1":["1"]} +{"array_string_1":["2"]} +{"array_string_1":["3"]} +{"array_string_1":["4"]} +{"array_string_1":["5"]} +{"array_string_1":["6"]} +{"array_string_1":["7"]} +{"array_string_1":["8"]} +{"array_string_1":["9"]} +{"array_string_1":["10"]} +{"array_string_1":["11"]} +{"array_string_1":["12"]} +{"array_string_1":["13"]} +{"array_string_1":["14"]} +{"array_string_1":["15"]} +{"array_string_1":["16"]} +{"array_string_1":["17"]} +{"array_string_1":["18"]} +{"array_string_1":["19"]} +{"array_string_1":["20"]} +{"array_string_1":["21"]} +{"array_string_1":["22"]} +{"array_string_1":["23"]} +{"array_string_1":["24"]} +{"array_float_1":[1.12]} +{"array_float_1":[2.12]} +{"array_float_1":[3.12]} +{"array_float_1":[4.12]} +{"array_float_1":[5.12]} +{"array_float_1":[6.12]} +{"array_float_1":[7.12]} +{"array_float_1":[8.12]} +{"array_float_1":[9.12]} +{"array_float_1":[10.12]} +{"array_float_1":[11.12]} +{"array_float_1":[12.12]} +{"array_float_1":[13.12]} +{"array_float_1":[14.12]} +{"array_float_1":[15.12]} +{"array_float_1":[16.12]} +{"array_float_1":[17.12]} +{"array_float_1":[18.12]} +{"array_float_1":[19.12]} +{"array_float_1":[20.12]} +{"array_float_1":[21.12]} +{"array_float_1":[22.12]} +{"array_float_1":[23.12]} +{"array_float_1":[24.12]} +{"array_float_1":[25.12]} +{"array_double_1":[1.12]} +{"array_double_1":[2.12]} +{"array_double_1":[3.12]} +{"array_double_1":[4.12]} +{"array_double_1":[5.12]} +{"array_double_1":[6.12]} +{"array_double_1":[7.12]} +{"array_double_1":[8.12]} +{"array_double_1":[9.12]} +{"array_double_1":[10.12]} +{"array_double_1":[11.12]} +{"array_double_1":[12.12]} +{"array_double_1":[13.12]} +{"array_double_1":[14.12]} +{"array_double_1":[15.12]} +{"array_double_1":[16.12]} +{"array_double_1":[17.12]} +{"array_double_1":[18.12]} +{"array_double_1":[19.12]} +{"array_double_1":[20.12]} +{"array_double_1":[21.12]} +{"array_double_1":[22.12]} +{"array_double_1":[23.12]} +{"array_double_1":[24.12]} +{"array_double_1":[25.12]} +{"array_double_1":[26.12]} +{"array_decimal32_1":[1.12]} +{"array_decimal32_1":[2.12]} +{"array_decimal32_1":[3.12]} +{"array_decimal32_1":[4.12]} +{"array_decimal32_1":[5.12]} +{"array_decimal32_1":[6.12]} +{"array_decimal32_1":[7.12]} +{"array_decimal32_1":[8.12]} +{"array_decimal32_1":[9.12]} +{"array_decimal32_1":[10.12]} +{"array_decimal32_1":[11.12]} +{"array_decimal32_1":[12.12]} +{"array_decimal32_1":[13.12]} +{"array_decimal32_1":[14.12]} +{"array_decimal32_1":[15.12]} +{"array_decimal32_1":[16.12]} +{"array_decimal32_1":[17.12]} +{"array_decimal32_1":[18.12]} +{"array_decimal32_1":[19.12]} +{"array_decimal32_1":[20.12]} +{"array_decimal32_1":[21.12]} +{"array_decimal32_1":[22.12]} +{"array_decimal32_1":[23.12]} +{"array_decimal32_1":[24.12]} +{"array_decimal32_1":[25.12]} +{"array_decimal32_1":[26.12]} +{"array_decimal32_1":[27.12]} +{"array_decimal64_1":[1.120000000]} +{"array_decimal64_1":[2.120000000]} +{"array_decimal64_1":[3.120000000]} +{"array_decimal64_1":[4.120000000]} +{"array_decimal64_1":[5.120000000]} +{"array_decimal64_1":[6.120000000]} +{"array_decimal64_1":[7.120000000]} +{"array_decimal64_1":[8.120000000]} +{"array_decimal64_1":[9.120000000]} +{"array_decimal64_1":[10.120000000]} +{"array_decimal64_1":[11.120000000]} +{"array_decimal64_1":[12.120000000]} +{"array_decimal64_1":[13.120000000]} +{"array_decimal64_1":[14.120000000]} +{"array_decimal64_1":[15.120000000]} +{"array_decimal64_1":[16.120000000]} +{"array_decimal64_1":[17.120000000]} +{"array_decimal64_1":[18.120000000]} +{"array_decimal64_1":[19.120000000]} +{"array_decimal64_1":[20.120000000]} +{"array_decimal64_1":[21.120000000]} +{"array_decimal64_1":[22.120000000]} +{"array_decimal64_1":[23.120000000]} +{"array_decimal64_1":[24.120000000]} +{"array_decimal64_1":[25.120000000]} +{"array_decimal64_1":[26.120000000]} +{"array_decimal64_1":[27.120000000]} +{"array_decimal64_1":[28.120000000]} +{"array_decimal128_1":[1.120000000]} +{"array_decimal128_1":[2.120000000]} +{"array_decimal128_1":[3.120000000]} +{"array_decimal128_1":[4.120000000]} +{"array_decimal128_1":[5.120000000]} +{"array_decimal128_1":[6.120000000]} +{"array_decimal128_1":[7.120000000]} +{"array_decimal128_1":[8.120000000]} +{"array_decimal128_1":[9.120000000]} +{"array_decimal128_1":[10.120000000]} +{"array_decimal128_1":[11.120000000]} +{"array_decimal128_1":[12.120000000]} +{"array_decimal128_1":[13.120000000]} +{"array_decimal128_1":[14.120000000]} +{"array_decimal128_1":[15.120000000]} +{"array_decimal128_1":[16.120000000]} +{"array_decimal128_1":[17.120000000]} +{"array_decimal128_1":[18.120000000]} +{"array_decimal128_1":[19.120000000]} +{"array_decimal128_1":[20.120000000]} +{"array_decimal128_1":[21.120000000]} +{"array_decimal128_1":[22.120000000]} +{"array_decimal128_1":[23.120000000]} +{"array_decimal128_1":[24.120000000]} +{"array_decimal128_1":[25.120000000]} +{"array_decimal128_1":[26.120000000]} +{"array_decimal128_1":[27.120000000]} +{"array_decimal128_1":[28.120000000]} +{"array_decimal128_1":[29.120000000]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_decimal256_1":[null]} +{"array_datetime_1":["2021-01-01 00:00:00"]} +{"array_datetime_1":["2021-01-01 00:00:01"]} +{"array_datetime_1":["2021-01-01 00:00:02"]} +{"array_datetime_1":["2021-01-01 00:00:03"]} +{"array_datetime_1":["2021-01-01 00:00:04"]} +{"array_datetime_1":["2021-01-01 00:00:05"]} +{"array_datetime_1":["2021-01-01 00:00:06"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_datetime_1":["2021-01-01 00:00:07"]} +{"array_datetime_1":["2021-01-01 00:00:08"]} +{"array_datetime_1":["2021-01-01 00:00:09"]} +{"array_datetime_1":["2021-01-01 00:00:10"]} +{"array_date_1":["2021-01-01"]} +{"array_date_1":["2021-01-02"]} +{"array_date_1":["2021-01-03"]} +{"array_date_1":["2021-01-04"]} +{"array_date_1":["2021-01-05"]} +{"array_date_1":["2021-01-06"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_date_1":["2021-01-09"]} +{"array_date_1":["2021-01-10"]} +{"array_date_1":["2021-01-07"]} +{"array_date_1":["2021-01-08"]} +{"array_ipv4_1":["192.168.1.1"]} +{"array_ipv4_1":["192.168.1.2"]} +{"array_ipv4_1":["192.168.1.3"]} +{"array_ipv4_1":["192.168.1.4"]} +{"array_ipv4_1":["192.168.1.5"]} +{"array_ipv4_1":["192.168.1.6"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv4_1":["192.168.1.10"]} +{"array_ipv4_1":["192.168.1.7"]} +{"array_ipv4_1":["192.168.1.8"]} +{"array_ipv4_1":["192.168.1.9"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7334"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7335"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7336"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7337"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7338"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7339"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733a"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733b"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733c"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733d"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733e"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7341"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:733f"]} +{"array_ipv6_1":["2001:db8:85a3::8a2e:370:7340"]} +{"other_1":"1"} +{"other_1":"2"} +{"other_1":"3"} +{"other_1":"4"} +{"other_1":"5"} +{"other_1":"6"} +{"other_1":"7"} +{"other_1":"8"} +{"other_1":"9"} +{"other_1":"10"} +{"other_1":"11"} +{"other_1":"12"} +{"other_1":"13"} +{"other_1":"14"} +{"other_1":"15"} +{"other_1":"16"} +{"other_1":"17"} +{"other_1":"18"} +{"other_1":"19"} +{"other_1":"20"} +{"other_1":"21"} +{"other_1":"22"} +{"other_1":"23"} +{"other_1":"24"} +{"other_1":"25"} +{"other_1":"26"} +{"other_1":"27"} +{"other_1":"28"} +{"other_1":"29"} +{"other_1":"30"} +{"other_1":"31"} +{"other_1":"32"} +{"other_1":"33"} +{"other_1":"34"} +{"other_1":"35"} + diff --git a/regression-test/data/variant_p0/predefine/test_custom_analyzer.out b/regression-test/data/variant_p0/predefine/test_custom_analyzer.out new file mode 100644 index 00000000000000..0698c95a0c222d --- /dev/null +++ b/regression-test/data/variant_p0/predefine/test_custom_analyzer.out @@ -0,0 +1,43 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !tokenize_sql -- +[{\n "token": "србија херцеговина щучин гурзуф ψ4 босна"\n }] + +-- !tokenize_sql -- +[{\n "token": "wasted…again"\n }] + +-- !tokenize_sql -- +[{\n "token": "♯p-complete"\n }] + +-- !tokenize_sql -- +[{\n "token": "a∴a∴"\n }] + +-- !tokenize_sql -- +[{\n "token": "rx j1242−11"\n }] + +-- !tokenize_sql -- +[{\n "token": "1080º avalanche"\n }] + +-- !tokenize_sql -- +[{\n "token": "clayfighter"\n }, {\n "token": "63"\n }] + +-- !tokenize_sql -- +[{\n "token": "β"\n }, {\n "token": "carbon"\n }, {\n "token": "nitride"\n }] + +-- !tokenize_sql -- +[{\n "token": "ǁuǁe"\n }, {\n "token": "language"\n }] + +-- !sql -- +1 abcDEF + +-- !sql -- +2 中国人民 + +-- !sql -- +3 ǁŨǁe Language + +-- !sql -- +3 Wikipedia;Miscellaneous-Jj102786 / 3tle Born Oct 27th 1986 @ Blytheville, Arkansas @ 9:14pm 23 yrs of age male,white Cucassion American raised Religion:Pentocostal,Church of God + +-- !sql -- +4 1080º Avalanche + diff --git a/regression-test/data/variant_p0/predefine/test_predefine_ddl.out b/regression-test/data/variant_p0/predefine/test_predefine_ddl.out new file mode 100644 index 00000000000000..617122ab75fbc9 --- /dev/null +++ b/regression-test/data/variant_p0/predefine/test_predefine_ddl.out @@ -0,0 +1,11 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +id bigint Yes true \N +var variant Yes false \N NONE + +-- !sql -- +id bigint Yes true \N +var variant Yes false \N NONE +var2 variant Yes false \N NONE +var3 variant Yes false \N NONE + diff --git a/regression-test/data/variant_p0/schema_change/test_add_multi_var_mulit_indexes.out b/regression-test/data/variant_p0/schema_change/test_add_multi_var_mulit_indexes.out new file mode 100644 index 00000000000000..b13717a0a2f2f9 --- /dev/null +++ b/regression-test/data/variant_p0/schema_change/test_add_multi_var_mulit_indexes.out @@ -0,0 +1,20 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +0 {"a":12345,"b":2} \N \N +1 {"a":12345,"b":2} {"a":"12345","b":"3"} \N +2 {"a":12345,"b":2} {"a":"56789","b":"3"} {"a":12345,"b":2} +3 {"a":12345,"b":2} {"a":"12345","b":"2"} {"a":56789,"b":2} +4 {"a":12345,"b":2} {"a":"56789","b":"2"} {"a":12345,"b":3} + +-- !sql -- +1 {"a":12345,"b":2} {"a":"12345","b":"3"} \N +3 {"a":12345,"b":2} {"a":"12345","b":"2"} {"a":56789,"b":2} + +-- !sql -- +3 {"a":12345,"b":2} {"a":"12345","b":"2"} {"a":56789,"b":2} +4 {"a":12345,"b":2} {"a":"56789","b":"2"} {"a":12345,"b":3} + +-- !sql -- +2 {"a":12345,"b":2} {"a":"56789","b":"3"} {"a":12345,"b":2} +3 {"a":12345,"b":2} {"a":"12345","b":"2"} {"a":56789,"b":2} + diff --git a/regression-test/data/variant_p0/tpch/sql/q01_trans.out b/regression-test/data/variant_p0/tpch/sql/q01_trans.out index c5d260caf13775..f0672f2a8904b6 100644 --- a/regression-test/data/variant_p0/tpch/sql/q01_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q01_trans.out @@ -1,7 +1,7 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !q01_trans -- -A F 3774200.0 5.320753880689995E9 5.054096266682795E9 5.256751331449231E9 25.537587116854997 36002.123829014105 0.05014459706338475 147790 -N F 95257.0 1.3373779584000006E8 1.2713237265119994E8 1.3228629122944497E8 25.30066401062417 35521.32691633468 0.04939442231075703 3765 -N O 7459297.0 1.0512270008900036E10 9.986238338384706E9 1.0385578376585476E10 25.545537671232875 36000.92468801382 0.05009595890410998 292000 -R F 3785523.0 5.337950526470003E9 5.071818532942003E9 5.274405503049376E9 25.5259438574251 35994.02921403095 0.04998927856182775 148301 +A F 3774200.0 5.32075388069E9 5.054096266682786E9 5.256751331449226E9 25.537587116854997 36002.12382901414 0.0501445970633986 147790 +N F 95257.0 1.3373779584E8 1.2713237265120004E8 1.3228629122944503E8 25.30066401062417 35521.32691633466 0.04939442231075693 3765 +N O 7459297.0 1.0512270008900019E10 9.986238338384691E9 1.0385578376585459E10 25.545537671232875 36000.924688013765 0.050095958904099 292000 +R F 3785523.0 5.33795052647E9 5.071818532941994E9 5.274405503049363E9 25.5259438574251 35994.029214030925 0.04998927856184158 148301 diff --git a/regression-test/data/variant_p0/tpch/sql/q05_trans.out b/regression-test/data/variant_p0/tpch/sql/q05_trans.out index 7eb16fd3e9637f..49b518cfbcc351 100644 --- a/regression-test/data/variant_p0/tpch/sql/q05_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q05_trans.out @@ -3,6 +3,6 @@ CHINA 7822103.0 INDIA 6376121.508500004 JAPAN 6000077.218400001 -INDONESIA 5580475.402700002 -VIETNAM 4497840.546600001 +INDONESIA 5580475.402700004 +VIETNAM 4497840.5466 diff --git a/regression-test/data/variant_p0/tpch/sql/q06_trans.out b/regression-test/data/variant_p0/tpch/sql/q06_trans.out index 174241a7cd2579..3eca67aac6c8df 100644 --- a/regression-test/data/variant_p0/tpch/sql/q06_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q06_trans.out @@ -1,4 +1,4 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !q06_trans -- -1.1803420253399998E7 +1.1803420253400007E7 diff --git a/regression-test/data/variant_p0/tpch/sql/q08_trans.out b/regression-test/data/variant_p0/tpch/sql/q08_trans.out index b248362fce448c..b30301747492e6 100644 --- a/regression-test/data/variant_p0/tpch/sql/q08_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q08_trans.out @@ -1,5 +1,5 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !q08_trans -- -1995 0.028648741305617544 -1996 0.01825027910796215 +1995 0.028648741305617547 +1996 0.018250279107962147 diff --git a/regression-test/data/variant_p0/tpch/sql/q09_trans.out b/regression-test/data/variant_p0/tpch/sql/q09_trans.out index 807b50ef4e7b21..ba5905bfac2a33 100644 --- a/regression-test/data/variant_p0/tpch/sql/q09_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q09_trans.out @@ -1,178 +1,178 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !q09_trans -- -ALGERIA 1998 2321785.3682000004 +ALGERIA 1998 2321785.3681999994 ALGERIA 1997 3685016.8589 -ALGERIA 1996 4276597.4252999965 -ALGERIA 1995 4418370.4153999975 -ALGERIA 1994 3864849.952099998 -ALGERIA 1993 3541051.386499998 +ALGERIA 1996 4276597.4253 +ALGERIA 1995 4418370.415399999 +ALGERIA 1994 3864849.952100001 +ALGERIA 1993 3541051.3865 ALGERIA 1992 4310013.348199998 -ARGENTINA 1998 2685983.8005 +ARGENTINA 1998 2685983.800500001 ARGENTINA 1997 4242147.8124 -ARGENTINA 1996 3907867.0103000016 -ARGENTINA 1995 4605921.501099999 -ARGENTINA 1994 3542096.1564 -ARGENTINA 1993 3949965.9387999987 -ARGENTINA 1992 4521180.4695 -BRAZIL 1998 2778730.393099999 -BRAZIL 1997 4642037.468700003 -BRAZIL 1996 4530304.603400001 -BRAZIL 1995 4502344.865700001 -BRAZIL 1994 4875806.501500003 -BRAZIL 1993 4687478.6531 +ARGENTINA 1996 3907867.0102999993 +ARGENTINA 1995 4605921.5011 +ARGENTINA 1994 3542096.1563999997 +ARGENTINA 1993 3949965.938799999 +ARGENTINA 1992 4521180.469500001 +BRAZIL 1998 2778730.3931 +BRAZIL 1997 4642037.4687 +BRAZIL 1996 4530304.603399999 +BRAZIL 1995 4502344.865699999 +BRAZIL 1994 4875806.5015 +BRAZIL 1993 4687478.653100001 BRAZIL 1992 5035200.046399999 CANADA 1998 2194509.0465 -CANADA 1997 3482197.9520999985 -CANADA 1996 3712231.281399999 -CANADA 1995 4014814.847599998 -CANADA 1994 4145304.485499999 -CANADA 1993 3787069.604499998 -CANADA 1992 4168009.420099999 -CHINA 1998 3398578.0001000008 -CHINA 1997 6358959.3338 -CHINA 1996 6435158.322900003 -CHINA 1995 6174776.211300001 +CANADA 1997 3482197.9521000003 +CANADA 1996 3712231.2814 +CANADA 1995 4014814.8476000004 +CANADA 1994 4145304.4854999995 +CANADA 1993 3787069.6044999994 +CANADA 1992 4168009.4200999993 +CHINA 1998 3398578.000099999 +CHINA 1997 6358959.333799998 +CHINA 1996 6435158.322899998 +CHINA 1995 6174776.211299999 CHINA 1994 6385751.081199998 -CHINA 1993 5765034.119399997 -CHINA 1992 6324034.237900005 -EGYPT 1998 2333148.3334000004 -EGYPT 1997 3661244.2730999994 -EGYPT 1996 3765371.2367999996 -EGYPT 1995 4094744.292499998 -EGYPT 1994 3566508.081800001 -EGYPT 1993 3725283.7747000013 -EGYPT 1992 3373762.333499999 +CHINA 1993 5765034.1194 +CHINA 1992 6324034.237900001 +EGYPT 1998 2333148.3334 +EGYPT 1997 3661244.2731 +EGYPT 1996 3765371.2368000015 +EGYPT 1995 4094744.2925000004 +EGYPT 1994 3566508.0818 +EGYPT 1993 3725283.7747 +EGYPT 1992 3373762.3335000006 ETHIOPIA 1998 1953927.2682 -ETHIOPIA 1997 3285786.3266000007 -ETHIOPIA 1996 3525028.7952 -ETHIOPIA 1995 3781674.8910999987 -ETHIOPIA 1994 3037409.435999999 +ETHIOPIA 1997 3285786.3266000003 +ETHIOPIA 1996 3525028.7951999996 +ETHIOPIA 1995 3781674.8910999997 +ETHIOPIA 1994 3037409.4359999998 ETHIOPIA 1993 3008978.2677000007 -ETHIOPIA 1992 2721203.235500001 -FRANCE 1998 2604373.8804999986 -FRANCE 1997 3982872.0488000023 -FRANCE 1996 3622479.2412999994 -FRANCE 1995 4479939.702 -FRANCE 1994 3531013.1981000025 -FRANCE 1993 4086437.3101999997 -FRANCE 1992 3637792.1333 -GERMANY 1998 3291023.2964999974 -GERMANY 1997 5139337.344300003 -GERMANY 1996 4799810.457699999 -GERMANY 1995 5405785.797800004 -GERMANY 1994 4555556.459199997 -GERMANY 1993 4428195.101900002 +ETHIOPIA 1992 2721203.235499999 +FRANCE 1998 2604373.8805 +FRANCE 1997 3982872.0488 +FRANCE 1996 3622479.2413 +FRANCE 1995 4479939.7020000005 +FRANCE 1994 3531013.198099999 +FRANCE 1993 4086437.310200001 +FRANCE 1992 3637792.133300001 +GERMANY 1998 3291023.2965 +GERMANY 1997 5139337.344300002 +GERMANY 1996 4799810.457700001 +GERMANY 1995 5405785.797800001 +GERMANY 1994 4555556.459199998 +GERMANY 1993 4428195.1019 GERMANY 1992 4656148.420400001 -INDIA 1998 2591288.187399999 -INDIA 1997 5159562.7033 -INDIA 1996 5307258.304900003 -INDIA 1995 5148208.790199999 -INDIA 1994 5164001.958200001 -INDIA 1993 4321398.438800003 -INDIA 1992 5297703.693499999 -INDONESIA 1998 3094900.159700001 -INDONESIA 1997 5719773.035799999 -INDONESIA 1996 6037238.599300002 -INDONESIA 1995 5266783.489899999 -INDONESIA 1994 5470762.872900001 -INDONESIA 1993 6189826.661299997 -INDONESIA 1992 4414623.154899998 -IRAN 1998 3214864.120900001 -IRAN 1997 3688049.0690999986 -IRAN 1996 3621649.2246999983 -IRAN 1995 4420783.4205 -IRAN 1994 4373984.652300001 -IRAN 1993 3731301.7814000007 +INDIA 1998 2591288.1874 +INDIA 1997 5159562.703300001 +INDIA 1996 5307258.304900002 +INDIA 1995 5148208.790200002 +INDIA 1994 5164001.9582 +INDIA 1993 4321398.4388 +INDIA 1992 5297703.6935 +INDONESIA 1998 3094900.1596999997 +INDONESIA 1997 5719773.035800001 +INDONESIA 1996 6037238.599300001 +INDONESIA 1995 5266783.489900001 +INDONESIA 1994 5470762.8729 +INDONESIA 1993 6189826.661299999 +INDONESIA 1992 4414623.154899999 +IRAN 1998 3214864.1208999995 +IRAN 1997 3688049.0691 +IRAN 1996 3621649.224699999 +IRAN 1995 4420783.420499999 +IRAN 1994 4373984.6523 +IRAN 1993 3731301.7813999997 IRAN 1992 4417133.366199998 -IRAQ 1998 2338859.4098999994 -IRAQ 1997 3622681.5642999993 -IRAQ 1996 4762291.872199997 -IRAQ 1995 4558092.735900002 -IRAQ 1994 4951604.169899996 -IRAQ 1993 3830077.991100002 -IRAQ 1992 3938636.4873999986 -JAPAN 1998 1849535.0802000004 -JAPAN 1997 4068688.8536999994 -JAPAN 1996 4044774.7597000017 -JAPAN 1995 4793005.802699999 -JAPAN 1994 4114717.056800001 +IRAQ 1998 2338859.4099000003 +IRAQ 1997 3622681.5643 +IRAQ 1996 4762291.8722 +IRAQ 1995 4558092.735899999 +IRAQ 1994 4951604.1699 +IRAQ 1993 3830077.9910999993 +IRAQ 1992 3938636.487399999 +JAPAN 1998 1849535.0801999997 +JAPAN 1997 4068688.853700001 +JAPAN 1996 4044774.759699999 +JAPAN 1995 4793005.8027 +JAPAN 1994 4114717.056799999 JAPAN 1993 3614468.7485000007 -JAPAN 1992 4266694.470000001 -JORDAN 1998 1811488.0718999994 -JORDAN 1997 2951297.867800001 -JORDAN 1996 3302528.3067000005 -JORDAN 1995 3221813.9990000012 -JORDAN 1994 2417892.092100001 -JORDAN 1993 3107641.7661000015 -JORDAN 1992 3316379.0585000003 -KENYA 1998 2579075.4189999984 -KENYA 1997 2929194.231699999 -KENYA 1996 3569129.5618999996 -KENYA 1995 3542889.108699999 -KENYA 1994 3983095.399400002 -KENYA 1993 3713988.970799999 +JAPAN 1992 4266694.469999999 +JORDAN 1998 1811488.0718999999 +JORDAN 1997 2951297.867799999 +JORDAN 1996 3302528.3067 +JORDAN 1995 3221813.999 +JORDAN 1994 2417892.0921 +JORDAN 1993 3107641.7660999987 +JORDAN 1992 3316379.0584999993 +KENYA 1998 2579075.4189999993 +KENYA 1997 2929194.2316999994 +KENYA 1996 3569129.5619 +KENYA 1995 3542889.1086999993 +KENYA 1994 3983095.3993999995 +KENYA 1993 3713988.9708000002 KENYA 1992 3304641.8340000007 -MOROCCO 1998 1815334.818000001 +MOROCCO 1998 1815334.818 MOROCCO 1997 3693214.8447000002 -MOROCCO 1996 4116175.923 -MOROCCO 1995 3515127.140199998 -MOROCCO 1994 4003072.111999998 -MOROCCO 1993 3599199.6679000016 +MOROCCO 1996 4116175.923000001 +MOROCCO 1995 3515127.1401999984 +MOROCCO 1994 4003072.111999999 +MOROCCO 1993 3599199.6679000007 MOROCCO 1992 3958335.4223999996 MOZAMBIQUE 1998 1620428.7346 -MOZAMBIQUE 1997 2802166.647299999 -MOZAMBIQUE 1996 2409955.1754999985 +MOZAMBIQUE 1997 2802166.6472999994 +MOZAMBIQUE 1996 2409955.1755 MOZAMBIQUE 1995 2771602.6274 -MOZAMBIQUE 1994 2548226.215799999 -MOZAMBIQUE 1993 2843748.905299998 +MOZAMBIQUE 1994 2548226.2157999994 +MOZAMBIQUE 1993 2843748.9053 MOZAMBIQUE 1992 2556501.0943000014 -PERU 1998 2036430.3602 -PERU 1997 4064142.409099999 -PERU 1996 4068678.5671000006 -PERU 1995 4657694.841199998 -PERU 1994 4731959.465500002 -PERU 1993 4144006.660999999 -PERU 1992 3754635.007800001 -ROMANIA 1998 1992773.6811 +PERU 1998 2036430.3601999995 +PERU 1997 4064142.4091 +PERU 1996 4068678.5670999996 +PERU 1995 4657694.8412 +PERU 1994 4731959.465500001 +PERU 1993 4144006.6610000012 +PERU 1992 3754635.0078 +ROMANIA 1998 1992773.6811000002 ROMANIA 1997 2854639.868 -ROMANIA 1996 3139337.3029000005 +ROMANIA 1996 3139337.3028999986 ROMANIA 1995 3222153.3776 -ROMANIA 1994 3222844.319000001 -ROMANIA 1993 3488994.0287999976 -ROMANIA 1992 3029274.4420000007 -RUSSIA 1998 2339865.6635000003 +ROMANIA 1994 3222844.319 +ROMANIA 1993 3488994.028800001 +ROMANIA 1992 3029274.442 +RUSSIA 1998 2339865.6634999993 RUSSIA 1997 4153619.5424000006 -RUSSIA 1996 3772067.4041000023 -RUSSIA 1995 4704988.860700001 +RUSSIA 1996 3772067.4040999995 +RUSSIA 1995 4704988.8607 RUSSIA 1994 4479082.8694 -RUSSIA 1993 4767719.979100001 +RUSSIA 1993 4767719.979099998 RUSSIA 1992 4533465.559 -SAUDI ARABIA 1998 3386948.9564000014 -SAUDI ARABIA 1997 5425980.3373 -SAUDI ARABIA 1996 5227607.167700001 -SAUDI ARABIA 1995 4506731.641100001 -SAUDI ARABIA 1994 4698658.742499998 -SAUDI ARABIA 1993 5493626.528499995 -SAUDI ARABIA 1992 4573560.014999997 -UNITED KINGDOM 1998 2252021.5136999995 -UNITED KINGDOM 1997 4343926.802599999 -UNITED KINGDOM 1996 4189476.3064999986 -UNITED KINGDOM 1995 4469569.8829 -UNITED KINGDOM 1994 4410094.626399997 -UNITED KINGDOM 1993 4054677.104999997 -UNITED KINGDOM 1992 3978688.8831000007 -UNITED STATES 1998 2238771.558099999 -UNITED STATES 1997 4135581.5733999996 -UNITED STATES 1996 3624013.266 -UNITED STATES 1995 3892244.517199999 -UNITED STATES 1994 3289224.113800001 -UNITED STATES 1993 3626170.2027999996 -UNITED STATES 1992 3993973.499699999 -VIETNAM 1998 1924313.4862000004 -VIETNAM 1997 3436195.370900001 +SAUDI ARABIA 1998 3386948.9563999986 +SAUDI ARABIA 1997 5425980.337300001 +SAUDI ARABIA 1996 5227607.167700002 +SAUDI ARABIA 1995 4506731.6411000015 +SAUDI ARABIA 1994 4698658.742499999 +SAUDI ARABIA 1993 5493626.528499998 +SAUDI ARABIA 1992 4573560.015000001 +UNITED KINGDOM 1998 2252021.5137000005 +UNITED KINGDOM 1997 4343926.802599998 +UNITED KINGDOM 1996 4189476.3065000013 +UNITED KINGDOM 1995 4469569.882899999 +UNITED KINGDOM 1994 4410094.6263999995 +UNITED KINGDOM 1993 4054677.1050000014 +UNITED KINGDOM 1992 3978688.8830999993 +UNITED STATES 1998 2238771.5580999996 +UNITED STATES 1997 4135581.5734000015 +UNITED STATES 1996 3624013.2660000008 +UNITED STATES 1995 3892244.5171999983 +UNITED STATES 1994 3289224.1138000013 +UNITED STATES 1993 3626170.2028000006 +UNITED STATES 1992 3993973.4997000014 +VIETNAM 1998 1924313.4862000002 +VIETNAM 1997 3436195.3708999995 VIETNAM 1996 4017288.8926999997 -VIETNAM 1995 3644054.137200001 -VIETNAM 1994 4141277.6664999984 -VIETNAM 1993 2556114.1693 -VIETNAM 1992 4090524.4905000003 +VIETNAM 1995 3644054.137199999 +VIETNAM 1994 4141277.6665000003 +VIETNAM 1993 2556114.1692999993 +VIETNAM 1992 4090524.4904999994 diff --git a/regression-test/data/variant_p0/tpch/sql/q10_trans.out b/regression-test/data/variant_p0/tpch/sql/q10_trans.out index d99b59521e3aa6..f8559914070094 100644 --- a/regression-test/data/variant_p0/tpch/sql/q10_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q10_trans.out @@ -1,23 +1,23 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !q10_trans -- -8242 Customer#000008242 622786.7296999999 6322.09 ETHIOPIA P2n4nJhy,UqSo2s43YfSvYJDZ6lk 15-792-676-1184 slyly regular packages haggle carefully ironic ideas. courts are furiously. furiously unusual theodolites cajole. i +8242 Customer#000008242 622786.7297 6322.09 ETHIOPIA P2n4nJhy,UqSo2s43YfSvYJDZ6lk 15-792-676-1184 slyly regular packages haggle carefully ironic ideas. courts are furiously. furiously unusual theodolites cajole. i 7714 Customer#000007714 557400.3053 9799.98 IRAN SnnIGB,SkmnWpX3 20-922-418-6024 arhorses according to the blithely express re -11032 Customer#000011032 512500.9641 8496.93 UNITED KINGDOM WIKHC7K3Cn7156iNOyfVG3cZ7YqkgsR,Ly 33-102-772-3533 posits-- furiously ironic accounts are again -2455 Customer#000002455 481592.40530000004 2070.99 GERMANY RVn1ZSRtLqPlJLIZxvpmsbgC02 17-946-225-9977 al asymptotes. finally ironic accounts cajole furiously. permanently unusual theodolites aro -12106 Customer#000012106 479414.21330000006 5342.11 UNITED STATES wth3twOmu6vy 34-905-346-4472 ly after the blithely regular foxes. accounts haggle carefully alongside of the blithely even ideas. -8530 Customer#000008530 457855.9467 9734.95 MOROCCO GMQyte94oDM7eD7exnkj 4hH9yq3 25-736-932-5850 slyly asymptotes. quickly final deposits in -13984 Customer#000013984 446316.5104000001 3482.28 IRAN qZXwuapCHvxbX 20-981-264-2952 y unusual courts could wake furiously -1966 Customer#000001966 444059.03819999995 1937.72 ALGERIA jPv1 UHra5JLALR5Isci5u0636RoAu7t vH 10-973-269-8886 the blithely even accounts. final deposits cajole around the blithely final packages. +11032 Customer#000011032 512500.9640999999 8496.93 UNITED KINGDOM WIKHC7K3Cn7156iNOyfVG3cZ7YqkgsR,Ly 33-102-772-3533 posits-- furiously ironic accounts are again +2455 Customer#000002455 481592.4053 2070.99 GERMANY RVn1ZSRtLqPlJLIZxvpmsbgC02 17-946-225-9977 al asymptotes. finally ironic accounts cajole furiously. permanently unusual theodolites aro +12106 Customer#000012106 479414.21329999994 5342.11 UNITED STATES wth3twOmu6vy 34-905-346-4472 ly after the blithely regular foxes. accounts haggle carefully alongside of the blithely even ideas. +8530 Customer#000008530 457855.94670000003 9734.95 MOROCCO GMQyte94oDM7eD7exnkj 4hH9yq3 25-736-932-5850 slyly asymptotes. quickly final deposits in +13984 Customer#000013984 446316.5104 3482.28 IRAN qZXwuapCHvxbX 20-981-264-2952 y unusual courts could wake furiously +1966 Customer#000001966 444059.0382 1937.72 ALGERIA jPv1 UHra5JLALR5Isci5u0636RoAu7t vH 10-973-269-8886 the blithely even accounts. final deposits cajole around the blithely final packages. 11026 Customer#000011026 417913.4142 7738.76 ALGERIA XorIktoJOAEJkpNNMx 10-184-163-4632 ly even dolphins eat along the blithely even instructions. express attainments cajole slyly. busy dolphins in -8501 Customer#000008501 412797.51 6906.7 ARGENTINA 776af4rOa mZ66hczs 11-317-552-5840 y final deposits after the fluffily even accounts are slyly final, regular +8501 Customer#000008501 412797.51000000007 6906.7 ARGENTINA 776af4rOa mZ66hczs 11-317-552-5840 y final deposits after the fluffily even accounts are slyly final, regular 1565 Customer#000001565 412506.0062 1820.03 BRAZIL EWQO5Ck,nMuHVQimqL8dLrixRP6QKveXcz9QgorW 12-402-178-2007 ously regular accounts wake slyly ironic idea -14398 Customer#000014398 408575.36000000004 -602.24 UNITED STATES GWRCgIPHajtU21vICVvbJJerFu2cUk 34-814-111-5424 s. blithely even accounts cajole blithely. even foxes doubt-- +14398 Customer#000014398 408575.36 -602.24 UNITED STATES GWRCgIPHajtU21vICVvbJJerFu2cUk 34-814-111-5424 s. blithely even accounts cajole blithely. even foxes doubt-- 1465 Customer#000001465 405055.34569999995 9365.93 INDIA tDRaTC7UgFbBX7VF6cVXYQA0 18-807-487-1074 s lose blithely ironic, regular packages. regular, final foxes haggle c -12595 Customer#000012595 401402.23909999995 -6.92 INDIA LmeaX5cR,w9NqKugl yRm98 18-186-132-3352 o the busy accounts. blithely special gifts maintain a -961 Customer#000000961 401198.17370000004 6963.68 JAPAN 5,81YDLFuRR47KKzv8GXdmi3zyP37PlPn 22-989-463-6089 e final requests: busily final accounts believe a +12595 Customer#000012595 401402.2391 -6.92 INDIA LmeaX5cR,w9NqKugl yRm98 18-186-132-3352 o the busy accounts. blithely special gifts maintain a +961 Customer#000000961 401198.1737 6963.68 JAPAN 5,81YDLFuRR47KKzv8GXdmi3zyP37PlPn 22-989-463-6089 e final requests: busily final accounts believe a 14299 Customer#000014299 400968.3751 6595.97 RUSSIA 7lFczTya0iM1bhEWT 32-156-618-1224 carefully regular requests. quickly ironic accounts against the ru 623 Customer#000000623 399883.42569999996 7887.6 INDONESIA HXiFb9oWlgqZXrJPUCEJ6zZIPxAM4m6 19-113-202-7085 requests. dolphins above the busily regular dependencies cajole after 9151 Customer#000009151 396562.0295 5691.95 IRAQ 7gIdRdaxB91EVdyx8DyPjShpMD 21-834-147-4906 ajole fluffily. furiously regular accounts are special, silent account 14819 Customer#000014819 396271.10360000003 7308.39 FRANCE w8StIbymUXmLCcUag6sx6LUIp8E3pA,Ux 16-769-398-7926 ss, final asymptotes use furiously slyly ironic dependencies. special, express dugouts according to the dep -13478 Customer#000013478 395513.13580000005 -778.11 KENYA 9VIsvIeZrJpC6OOdYheMC2vdtq8Ai0Rt 24-983-202-8240 r theodolites. slyly unusual pinto beans sleep fluffily against the asymptotes. quickly r +13478 Customer#000013478 395513.1358 -778.11 KENYA 9VIsvIeZrJpC6OOdYheMC2vdtq8Ai0Rt 24-983-202-8240 r theodolites. slyly unusual pinto beans sleep fluffily against the asymptotes. quickly r diff --git a/regression-test/data/variant_p0/tpch/sql/q14_trans.out b/regression-test/data/variant_p0/tpch/sql/q14_trans.out index 24dca0ac819ef3..a8212ceb6d5175 100644 --- a/regression-test/data/variant_p0/tpch/sql/q14_trans.out +++ b/regression-test/data/variant_p0/tpch/sql/q14_trans.out @@ -1,4 +1,4 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !q14_trans -- -16.28385568900598 +16.28385568900597 diff --git a/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out b/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out index d2e04cd5b957c0..5b2b843c2525d6 100644 --- a/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out +++ b/regression-test/data/variant_p0/with_index/test_array_inverted_index_profile.out @@ -5,15 +5,9 @@ -- !sql2 -- 2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y", "z"] --- !sql -- -2019-01-01 d93d942d985a8fb7547c72dada8d332f ["v", "w", "x", "y", "z"] - -- !sql3 -- 2017-01-01 d93d942d985a8fb7547c72dada8d332e ["m", "n", "o", "p", "q", "r", "s", "t", "u"] --- !sql -- -2017-01-01 d93d942d985a8fb7547c72dada8d332e ["m", "n", "o", "p", "q", "r", "s", "t", "u"] - -- !sql4 -- -- !sql5 -- diff --git a/regression-test/data/variant_p1/compaction/compaction_sparse_column.out b/regression-test/data/variant_p1/compaction/compaction_sparse_column.out index b060cb9f57ca4c..014f134741a241 100644 --- a/regression-test/data/variant_p1/compaction/compaction_sparse_column.out +++ b/regression-test/data/variant_p1/compaction/compaction_sparse_column.out @@ -1,21 +1,21 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !select_b_bfcompact -- -12292 +12286 -- !select_xxxx_bfcompact -- -12291 +12285 -- !select_point_bfcompact -- 3 -- !select_1_bfcompact -- -4096 +4094 -- !select_2_bfcompact -- -4096 +4094 -- !select_3_bfcompact -- -4096 +4094 -- !select_4_bfcompact -- 1 @@ -36,34 +36,34 @@ 1 -- !select_4_1_bfcompact -- -4096 +4094 -- !select_5_1_bfcompact -- -4096 +4094 -- !select_6_1_bfcompact -- -4096 +4094 -- !select_all_bfcompact -- 3 1234 \N ddddd 1 \N -- !select_b -- -12292 +12286 -- !select_xxxx -- -12291 +12285 -- !select_point -- 3 -- !select_1 -- -4096 +4094 -- !select_2 -- -4096 +4094 -- !select_3 -- -4096 +4094 -- !select_4 -- 1 @@ -84,13 +84,13 @@ 1 -- !select_4_1 -- -4096 +4094 -- !select_5_1 -- -4096 +4094 -- !select_6_1 -- -4096 +4094 -- !select_all -- 3 1234 \N ddddd 1 \N diff --git a/regression-test/data/variant_p1/compaction/test_compaction_extract_root.out b/regression-test/data/variant_p1/compaction/test_compaction_extract_root.out index 5d16b15d26ab1d..9ad5a7a3be7c6f 100644 --- a/regression-test/data/variant_p1/compaction/test_compaction_extract_root.out +++ b/regression-test/data/variant_p1/compaction/test_compaction_extract_root.out @@ -1,18 +1,15 @@ -- This file is automatically generated. You should know what you did if you want to edit this --- !select_b_1 -- -24582 - -- !select_b_2 -- -12288 +12282 -- !select_1_bfcompact -- {"code":2,"state":"open"} -- !select_b_3 -- -24588 +24569 -- !select_b_4 -- -12288 +12282 -- !select_1 -- {"code":2,"state":"open"} diff --git a/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.groovy b/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.groovy index 26db35cbbe04bc..481fa68481c364 100644 --- a/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.groovy +++ b/regression-test/suites/datatype_p0/nested_types/ddl/create_nestedtypes_with_schemachange.groovy @@ -75,7 +75,7 @@ suite("create_nestedtypes_with_schemachange", "p0") { col3 array $null_define, col4 map $null_define, col5 struct $null_define, - col6 variant $null_define + col6 variant $null_define ) /* mow */ UNIQUE KEY(col0) DISTRIBUTED BY HASH(col0) BUCKETS 4 PROPERTIES ( diff --git a/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy b/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy index 65f0c7e081f3b7..927a57d375d43e 100644 --- a/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy +++ b/regression-test/suites/fault_injection_p0/test_variant_bloom_filter.groovy @@ -55,11 +55,13 @@ suite("test_variant_bloom_filter", "nonConcurrent") { sql """ CREATE TABLE IF NOT EXISTS ${index_table} ( k bigint, - v variant + v variant< + properties("variant_max_subcolumns_count" = "9999") + > ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 1 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "bloom_filter_columns" = "v", "variant_max_subcolumns_count" = "9999"); + properties("replication_num" = "1", "disable_auto_compaction" = "false", "bloom_filter_columns" = "v"); """ load_json_data.call(index_table, """${getS3Url() + '/regression/gharchive.m/2015-01-01-0.json'}""") load_json_data.call(index_table, """${getS3Url() + '/regression/gharchive.m/2015-01-01-0.json'}""") diff --git a/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy b/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy index 7bd4fd215f1085..6e3d6a12ce8a43 100644 --- a/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy +++ b/regression-test/suites/fault_injection_p0/test_variant_compaction_with_sparse_limit.groovy @@ -52,18 +52,18 @@ suite("test_compaction_variant_with_sparse_limit", "nonConcurrent") { } def create_table = { tableName, buckets="auto", key_type="DUPLICATE" -> sql "DROP TABLE IF EXISTS ${tableName}" - def var_def = "variant" + def var_def = "variant " if (key_type == "AGGREGATE") { - var_def = "variant replace" + var_def = "variant replace" } sql """ CREATE TABLE IF NOT EXISTS ${tableName} ( k bigint, - v ${var_def} + v ${var_def} ) ${key_type} KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS ${buckets} - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "true"); """ } def key_types = ["DUPLICATE", "UNIQUE", "AGGREGATE"] diff --git a/regression-test/suites/function_p0/test_array_agg.groovy b/regression-test/suites/function_p0/test_array_agg.groovy index e89ea83be95206..43241084f3c6b0 100644 --- a/regression-test/suites/function_p0/test_array_agg.groovy +++ b/regression-test/suites/function_p0/test_array_agg.groovy @@ -18,7 +18,12 @@ suite("test_array_agg", "p0") { sql """ set enable_nereids_planner=true;""" sql """ set enable_fallback_to_original_planner=false;""" - def tableName = "array_agg_table" + def tableName = "test_variant_array_function" + + + def count = new Random().nextInt(1) + 1 + sql """ set global_variant_max_subcolumns_count=${count};""" + sql """ drop table if exists ${tableName}; """ diff --git a/regression-test/suites/variant_github_events_new_p0/load.groovy b/regression-test/suites/variant_github_events_new_p0/load.groovy index 9a67162ea5767d..e2ae7162b64924 100644 --- a/regression-test/suites/variant_github_events_new_p0/load.groovy +++ b/regression-test/suites/variant_github_events_new_p0/load.groovy @@ -44,13 +44,15 @@ suite("regression_test_variant_github_events_p0", "p0"){ } } } + int max_subcolumns_count = Math.floor(Math.random() * 50) + 1 + boolean enable_typed_paths_to_sparse = new Random().nextBoolean() def table_name = "github_events" sql """DROP TABLE IF EXISTS ${table_name}""" table_name = "github_events" sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, - v variant<'payload.pull_request.head.repo.topics' : array>, + v variant<'payload.pull_request.head.repo.topics' : array, properties("variant_max_subcolumns_count" = "${max_subcolumns_count}", "variant_enable_typed_paths_to_sparse" = "${enable_typed_paths_to_sparse}")>, INDEX idx_var(v) USING INVERTED COMMENT '' ) DUPLICATE KEY(`k`) @@ -136,7 +138,7 @@ suite("regression_test_variant_github_events_p0", "p0"){ } } } - sql """ALTER TABLE github_events ADD COLUMN v2 variant DEFAULT NULL""" + sql """ALTER TABLE github_events ADD COLUMN v2 variant DEFAULT NULL""" for(int t = 0; t <= 10; t += 1){ long k = 9223372036854775107 + t sql """INSERT INTO github_events VALUES (${k}, '{"aaaa" : 1234, "bbbb" : "11ssss"}', '{"xxxx" : 1234, "yyyy" : [1.111]}')""" @@ -149,30 +151,33 @@ suite("regression_test_variant_github_events_p0", "p0"){ trigger_and_wait_compaction("github_events", "full") // query and filterd by inverted index - profile("test_profile_1") { - sql """ set enable_common_expr_pushdown = true; """ - sql """ set enable_common_expr_pushdown_for_inverted_index = true; """ - sql """ set enable_pipeline_x_engine = true;""" - sql """ set enable_profile = true;""" - sql """ set profile_level = 2;""" - run { - qt_sql_inv """/* test_profile_1 */ - select count() from github_events where arrays_overlap(cast(v['payload']['pull_request']['head']['repo']['topics'] as array), ['javascript', 'css'] ) - """ - } - - check { profileString, exception -> - log.info(profileString) - // Use a regular expression to match the numeric value inside parentheses after "RowsInvertedIndexFiltered:" - def matcher = (profileString =~ /RowsInvertedIndexFiltered:\s+[^\(]+\((\d+)\)/) - def total = 0 - while (matcher.find()) { - total += matcher.group(1).toInteger() + if (!enable_typed_paths_to_sparse) { + profile("test_profile_1") { + sql """ set enable_common_expr_pushdown = true; """ + sql """ set enable_common_expr_pushdown_for_inverted_index = true; """ + sql """ set enable_pipeline_x_engine = true;""" + sql """ set enable_profile = true;""" + sql """ set profile_level = 2;""" + run { + qt_sql_inv """/* test_profile_1 */ + select count() from github_events where arrays_overlap(cast(v['payload']['pull_request']['head']['repo']['topics'] as array), ['javascript', 'css'] ) + """ } - // Assert that the sum of all matched numbers equals 67677 - assertEquals(67677, total) - } + + check { profileString, exception -> + log.info(profileString) + // Use a regular expression to match the numeric value inside parentheses after "RowsInvertedIndexFiltered:" + def matcher = (profileString =~ /RowsInvertedIndexFiltered:\s+[^\(]+\((\d+)\)/) + def total = 0 + while (matcher.find()) { + total += matcher.group(1).toInteger() + } + // Assert that the sum of all matched numbers equals 67677 + assertEquals(67677, total) + } + } } + sql """ set enable_common_expr_pushdown = true; """ sql """ set enable_common_expr_pushdown_for_inverted_index = true; """ qt_sql_inv """select count() from github_events where arrays_overlap(cast(v['payload']['pull_request']['head']['repo']['topics'] as array), ['javascript', 'css'] )""" diff --git a/regression-test/suites/variant_github_events_nonConcurrent_p2/load.groovy b/regression-test/suites/variant_github_events_nonConcurrent_p2/load.groovy index 10358f081634c1..aa86b7ce2d32e4 100644 --- a/regression-test/suites/variant_github_events_nonConcurrent_p2/load.groovy +++ b/regression-test/suites/variant_github_events_nonConcurrent_p2/load.groovy @@ -76,12 +76,12 @@ suite("regression_test_variant_github_events_p2", "nonConcurrent,p2"){ sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, - v variant + v variant -- INDEX idx_var(v) USING INVERTED PROPERTIES("parser" = "english") COMMENT '' ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 4 - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_enable_flatten_nested" = "true", "variant_max_subcolumns_count" = "${rand_subcolumns_count}", "inverted_index_storage_format"= "v2"); + properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_enable_flatten_nested" = "true", "inverted_index_storage_format"= "v2"); """ // 2015 load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2015-01-01-0.json'}""") @@ -97,6 +97,11 @@ suite("regression_test_variant_github_events_p2", "nonConcurrent,p2"){ // 2022 load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-16.json'}""") load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-10.json'}""") + + sql """ ALTER TABLE github_events ADD INDEX idx_var2 (`v`) USING INVERTED """ + wait_for_latest_op_on_table_finish("github_events", timeout) + + // 2022 load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-22.json'}""") load_json_data.call(table_name, """${getS3Url() + '/regression/gharchive.m/2022-11-07-23.json'}""") @@ -132,11 +137,11 @@ suite("regression_test_variant_github_events_p2", "nonConcurrent,p2"){ sql """ CREATE TABLE IF NOT EXISTS github_events2 ( k bigint, - v variant not null + v variant not null ) UNIQUE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 4 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_enable_flatten_nested" = "true", "bloom_filter_columns" = "v", "variant_max_subcolumns_count" = "${rand_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_enable_flatten_nested" = "true", "bloom_filter_columns" = "v"); """ sql """insert into github_events2 select * from github_events order by k""" sql """select v['payload']['commits'] from github_events order by k ;""" diff --git a/regression-test/suites/variant_log_data_p2/load.groovy b/regression-test/suites/variant_log_data_p2/load.groovy index f1fa6caf17b075..33c21abea7d49b 100644 --- a/regression-test/suites/variant_log_data_p2/load.groovy +++ b/regression-test/suites/variant_log_data_p2/load.groovy @@ -73,21 +73,21 @@ suite("regression_test_variant_logdata", "nonConcurrent,p2"){ // sql "set enable_two_phase_read_opt = false;" // no sparse columns load_json_data.call(table_name, """${getS3Url() + '/regression/load/logdata.json'}""") - qt_sql_32 """ select json_extract(v, "\$.json.parseFailed") from logdata where json_extract(v, "\$.json.parseFailed") != 'null' order by k limit 1;""" + qt_sql_32 """ select json_extract(v, "\$.json.parseFailed") from logdata where cast(json_extract(v, "\$.json.parseFailed") as string) != 'null' order by k limit 1;""" qt_sql_32_1 """select cast(v['json']['parseFailed'] as string) from logdata where cast(v['json']['parseFailed'] as string) is not null and k = 162 limit 1;""" sql "truncate table ${table_name}" // 0.95 default ratio load_json_data.call(table_name, """${getS3Url() + '/regression/load/logdata.json'}""") - qt_sql_33 """ select json_extract(v,"\$.json.parseFailed") from logdata where json_extract(v,"\$.json.parseFailed") != 'null' order by k limit 1;""" + qt_sql_33 """ select json_extract(v,"\$.json.parseFailed") from logdata where cast(json_extract(v,"\$.json.parseFailed") as string) != 'null' order by k limit 1;""" qt_sql_33_1 """select cast(v['json']['parseFailed'] as string) from logdata where cast(v['json']['parseFailed'] as string) is not null and k = 162 limit 1;""" sql "truncate table ${table_name}" // always sparse column load_json_data.call(table_name, """${getS3Url() + '/regression/load/logdata.json'}""") - qt_sql_34 """ select json_extract(v, "\$.json.parseFailed") from logdata where json_extract(v,"\$.json.parseFailed") != 'null' order by k limit 1;""" + qt_sql_34 """ select json_extract(v, "\$.json.parseFailed") from logdata where cast(json_extract(v,"\$.json.parseFailed") as string) != 'null' order by k limit 1;""" sql "truncate table ${table_name}" - qt_sql_35 """select json_extract(v,"\$.json.parseFailed") from logdata where k = 162 and json_extract(v,"\$.json.parseFailed") != 'null';""" + qt_sql_35 """select json_extract(v,"\$.json.parseFailed") from logdata where k = 162 and cast(json_extract(v,"\$.json.parseFailed") as string) != 'null';""" qt_sql_35_1 """select cast(v['json']['parseFailed'] as string) from logdata where cast(v['json']['parseFailed'] as string) is not null and k = 162 limit 1;""" // TODO add test case that some certain columns are materialized in some file while others are not materilized(sparse) // unique table diff --git a/regression-test/suites/variant_p0/agg.groovy b/regression-test/suites/variant_p0/agg.groovy index 209789189dc211..97999a122fffd0 100644 --- a/regression-test/suites/variant_p0/agg.groovy +++ b/regression-test/suites/variant_p0/agg.groovy @@ -18,10 +18,10 @@ suite("regression_test_variant_agg"){ sql """DROP TABLE IF EXISTS var_agg""" - int max_subcolumns_count = Math.floor(Math.random() * 10) - def var = "variant replace" + int max_subcolumns_count = Math.floor(Math.random() * 10) + 1 + def var = "variant replace" if (max_subcolumns_count % 2 == 0) { - var = "variant <'d' : int, 'b.f' : int, 'xxxx' : string, 'point' : bigint> replace" + var = "variant <'d' : int, 'b.f' : int, 'xxxx' : string, 'point' : bigint, properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\")> replace" } sql """ CREATE TABLE IF NOT EXISTS var_agg ( @@ -31,7 +31,7 @@ suite("regression_test_variant_agg"){ ) AGGREGATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 4 - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "true"); """ sql """insert into var_agg values (1, '[1]', 1),(1, '{"a" : 1}', 1);""" sql """insert into var_agg values (2, '[2]', 2),(1, '{"a" : [[[1]]]}', 2);""" diff --git a/regression-test/suites/variant_p0/column_name.groovy b/regression-test/suites/variant_p0/column_name.groovy index 27132ce3f54d7a..be4c3cbfb5e5cf 100644 --- a/regression-test/suites/variant_p0/column_name.groovy +++ b/regression-test/suites/variant_p0/column_name.groovy @@ -22,11 +22,11 @@ suite("regression_test_variant_column_name", "variant_type"){ sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, - v variant + v variant ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 1 - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "true"); """ sql """insert into ${table_name} values (1, '{"中文" : "中文", "\\\u4E2C\\\u6587": "unicode"}')""" diff --git a/regression-test/suites/variant_p0/column_size_limit.groovy b/regression-test/suites/variant_p0/column_size_limit.groovy index 153cb1a2b1e1cf..bf9739af42050e 100644 --- a/regression-test/suites/variant_p0/column_size_limit.groovy +++ b/regression-test/suites/variant_p0/column_size_limit.groovy @@ -22,11 +22,11 @@ suite("regression_test_variant_column_limit"){ sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, - v variant + v variant ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 1 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "0"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ def jsonBuilder = new JsonBuilder() def root = jsonBuilder { diff --git a/regression-test/suites/variant_p0/desc.groovy b/regression-test/suites/variant_p0/desc.groovy index d86860ecf8f676..35c4549889cac8 100644 --- a/regression-test/suites/variant_p0/desc.groovy +++ b/regression-test/suites/variant_p0/desc.groovy @@ -19,10 +19,8 @@ suite("regression_test_variant_desc", "p0"){ // if (isCloudMode()) { // return // } - def count = "0" - if (new Random().nextInt(100) < 50) { - count = "1000" - } + sql """ set global_variant_enable_typed_paths_to_sparse = false """ + sql """ set global_variant_max_subcolumns_count = 0 """ def load_json_data = {table_name, file_name -> // load the json data @@ -61,7 +59,7 @@ suite("regression_test_variant_desc", "p0"){ ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS ${buckets} - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ } @@ -80,7 +78,7 @@ suite("regression_test_variant_desc", "p0"){ PARTITION p3 VALUES LESS THAN (100000) ) DISTRIBUTED BY HASH(k) BUCKETS ${buckets} - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ } @@ -170,7 +168,7 @@ suite("regression_test_variant_desc", "p0"){ ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 5 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ sql """ insert into ${table_name} values (0, '{"a": 1123, "b" : [123, {"xx" : 1}], "c" : {"c" : 456, "d" : null, "e" : 7.111}, "zzz" : null, "oooo" : {"akakaka" : null, "xxxx" : {"xxx" : 123}}}', '{"a": 11245, "xxxx" : "kaana"}', '{"a": 11245, "b" : [123, {"xx" : 1}], "c" : {"c" : 456, "d" : null, "e" : 7.111}}')""" sql "select * from ${table_name} limit 1" @@ -187,7 +185,7 @@ suite("regression_test_variant_desc", "p0"){ ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 5 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ sql """ insert into ${table_name} values (0, '{"a": 1123, "b" : [123, {"xx" : 1}], "c" : {"c" : 456, "d" : null, "e" : 7.111}, "zzz" : null, "oooo" : {"akakaka" : null, "xxxx" : {"xxx" : 123}}}')""" sql "select * from ${table_name} limit 1" @@ -230,7 +228,7 @@ suite("regression_test_variant_desc", "p0"){ ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 5 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ sql """ insert into ${table_name} values (0, '{"名字" : "jack", "!@#^&*()": "11111", "金额" : 200, "画像" : {"地址" : "北京", "\\\u4E2C\\\u6587": "unicode"}}')""" sql """set describe_extend_variant_column = true""" @@ -246,7 +244,7 @@ suite("regression_test_variant_desc", "p0"){ ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 5 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ sql """ insert into ${table_name} values (0, '{}')""" sql """ insert into ${table_name} values (0, '100')""" diff --git a/regression-test/suites/variant_p0/nested.groovy b/regression-test/suites/variant_p0/nested.groovy index 497873a23cbf0c..2d1293706cab73 100644 --- a/regression-test/suites/variant_p0/nested.groovy +++ b/regression-test/suites/variant_p0/nested.groovy @@ -94,7 +94,7 @@ parallel_pipeline_task_num=7,profile_level=1,enable_pipeline_engine=true,enable_ qt_sql """select * from var_nested where v['k2'] = 'some' and array_contains(cast(v['nested1']['nested2']['a'] as array), 10) order by k limit 1;""" // type change case - sql """INSERT INTO var_nested SELECT *, '{"k1":"1", "k2": 1.1, "k3" : [1234.0], "k4" : 1.10000, "k5" : [["123"]], "nested1" : {"nested2" : [{"a" : "10", "b" : "1.1", "c" : 1111.111}]}}' FROM numbers("number" = "8000") where number > 7000 limit 100;""" + sql """INSERT INTO var_nested SELECT *, '{"k1":"1", "k2": 1.1, "k3" : [1234.0], "k4" : 1.10000, "k5" : [["123"]], "nested1" : {"nested2" : [{"a" : 10, "b" : 1.1, "c" : "1111"}]}}' FROM numbers("number" = "8000") where number > 7000 limit 100;""" qt_sql """select * from var_nested where v['k2'] = 'what' and array_contains(cast(v['nested1']['nested2']['a'] as array), 10) order by k limit 1;""" trigger_and_wait_compaction("var_nested", "full") qt_sql """select * from var_nested where v['k2'] = 'nested' and array_contains(cast(v['nested1']['nested2']['a'] as array), 10) order by k limit 1;""" diff --git a/regression-test/suites/variant_p0/nested2.groovy b/regression-test/suites/variant_p0/nested2.groovy index 8d48fcfce9b1c0..9ea89c63c69af2 100644 --- a/regression-test/suites/variant_p0/nested2.groovy +++ b/regression-test/suites/variant_p0/nested2.groovy @@ -19,7 +19,8 @@ suite("variant_nested_type_conflict", "p0"){ try { - + sql """ set global_variant_max_subcolumns_count = 10""" + sql """ set global_variant_enable_typed_paths_to_sparse = false""" def table_name = "var_nested_type_conflict" sql "DROP TABLE IF EXISTS ${table_name}" sql """set describe_extend_variant_column = true""" diff --git a/regression-test/suites/variant_p0/predefine/delete_update.groovy b/regression-test/suites/variant_p0/predefine/delete_update.groovy index 8257f4b2119078..bd1c917862bb9a 100644 --- a/regression-test/suites/variant_p0/predefine/delete_update.groovy +++ b/regression-test/suites/variant_p0/predefine/delete_update.groovy @@ -21,8 +21,8 @@ suite("regression_test_variant_predefine_delete_and_update", "variant_type"){ // MOR def table_name = "var_delete_update" sql "DROP TABLE IF EXISTS ${table_name}" - int max_subcolumns_count = Math.floor(Math.random() * 5) + 1 - def var = "variant <'a' : largeint, 'b' : array, 'c' : double, 'd' : text>" + int max_subcolumns_count = Math.floor(Math.random() * 5) + 1 + def var = "variant <'a' : largeint, 'b' : array, 'c' : double, 'd' : text, properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\")>" sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, @@ -30,7 +30,7 @@ suite("regression_test_variant_predefine_delete_and_update", "variant_type"){ ) UNIQUE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 3 - properties("replication_num" = "1", "enable_unique_key_merge_on_write" = "false", "variant_enable_flatten_nested" = "false", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "enable_unique_key_merge_on_write" = "false", "variant_enable_flatten_nested" = "false", "disable_auto_compaction" = "true"); """ // test mor table @@ -57,7 +57,7 @@ suite("regression_test_variant_predefine_delete_and_update", "variant_type"){ ) UNIQUE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 4 - properties("replication_num" = "1", "enable_unique_key_merge_on_write" = "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "enable_unique_key_merge_on_write" = "true", "disable_auto_compaction" = "true"); """ sql "insert into var_delete_update_mow select k, cast(v as string), cast(v as string) from var_delete_update" sql "delete from ${table_name} where k = 1" diff --git a/regression-test/suites/variant_p0/predefine/insert_into_select.groovy b/regression-test/suites/variant_p0/predefine/insert_into_select.groovy index 4d92d2822dca87..5e7ecd68abb3ef 100644 --- a/regression-test/suites/variant_p0/predefine/insert_into_select.groovy +++ b/regression-test/suites/variant_p0/predefine/insert_into_select.groovy @@ -17,6 +17,8 @@ suite("regression_test_variant_predefine_insert_into_select", "variant_type"){ def table_name = "insert_into_select" + def max_subcolumns_count = new Random().nextInt(5) + 1 + sql "set global_variant_max_subcolumns_count = ${max_subcolumns_count}" sql "DROP TABLE IF EXISTS ${table_name}_var" sql "DROP TABLE IF EXISTS ${table_name}_str" sql """ diff --git a/regression-test/suites/variant_p0/predefine/load.groovy b/regression-test/suites/variant_p0/predefine/load.groovy index 1a00eb6324089f..4e993cd79c2499 100644 --- a/regression-test/suites/variant_p0/predefine/load.groovy +++ b/regression-test/suites/variant_p0/predefine/load.groovy @@ -17,10 +17,11 @@ suite("regression_test_variant_predefine_schema", "p0"){ sql """DROP TABLE IF EXISTS test_predefine""" - def count = "0" + def count = new Random().nextInt(10) + 1; if (new Random().nextInt(100) < 50) { count = "1000" } + sql """ set global_variant_max_subcolumns_count = ${count} """ sql """ CREATE TABLE `test_predefine` ( `id` bigint NOT NULL, @@ -28,7 +29,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ `v1` variant<'a.b.c':int,'ss':string,'dcm':decimal(38, 9),'dt':datetime,'ip':ipv4,'a.b.d':double> NULL, INDEX idx_var_sub(`v1`) USING INVERTED PROPERTIES("parser" = "english") ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 3 - PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "variant_max_subcolumns_count" = "${count}"); + PROPERTIES ( "replication_allocation" = "tag.location.default: 1"); """ sql """insert into test_predefine values(1, '1', '{"a" : {"b" : {"c" : "123456", "d" : "11.111"}}, "ss" : 199991111, "dcm" : 123.456, "dt" : "2021-01-01 00:00:00", "ip" : "127.0.0.1"}')""" @@ -44,8 +45,6 @@ suite("regression_test_variant_predefine_schema", "p0"){ sql """insert into test_predefine values(12, '3', '{"dcm" : 789.123, "dt" : "2025-01-01 11:11:11.1", "ip" : "127.0.0.1"}')""" sql """insert into test_predefine values(11, '4', '{"a" : {"b" : {"c" : "678910", "d" : "33.222"}}}')""" qt_sql """select * from test_predefine order by id""" - sql """set describe_extend_variant_column = true""" - qt_sql "desc test_predefine" qt_sql """select cast(v1['ip'] as ipv4) from test_predefine where cast(v1['ip'] as ipv4) = '127.0.0.1';""" qt_sql """select cast(v1['dcm'] as decimal) from test_predefine where cast(v1['dcm'] as decimal) = '123.456';""" @@ -62,7 +61,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ `v1` variant NULL, INDEX idx_var_sub(`v1`) USING INVERTED PROPERTIES("parser" = "english") ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 2 - PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "variant_enable_flatten_nested" = "true", "variant_max_subcolumns_count" = "0"); + PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "variant_enable_flatten_nested" = "true"); """ sql """insert into test_predefine1 values(1, '{"predefine_col1" : 1024}')""" sql """insert into test_predefine1 values(2, '{"predefine_col2" : 1.11111}')""" @@ -74,7 +73,6 @@ suite("regression_test_variant_predefine_schema", "p0"){ sql """insert into test_predefine1 values(7, '{"PREDEFINE_COL3" : "11111.00000"}')""" sql """insert into test_predefine1 values(8, '{"PREDEFINE_COL4" : "2020-01-01-01"}')""" sql """select * from test_predefine1 order by id limit 1""" - qt_sql """desc test_predefine1""" qt_sql """select * from test_predefine1 order by id""" @@ -106,10 +104,11 @@ suite("regression_test_variant_predefine_schema", "p0"){ 'ipv6_':ipv6, 'float_':decimalv3(26,9), 'boolean_':boolean, - 'varchar_': text + 'varchar_': text, + properties("variant_max_subcolumns_count" = "6", "variant_enable_typed_paths_to_sparse" = "false") > NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 2 - PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "variant_max_subcolumns_count" = "${count}"); + PROPERTIES ( "replication_allocation" = "tag.location.default: 1"); """ def json1 = """ { @@ -198,7 +197,6 @@ suite("regression_test_variant_predefine_schema", "p0"){ sql "insert into test_predefine2 values(4, '${json4}')" qt_sql """select * from test_predefine2 order by id""" - qt_sql """ desc test_predefine2 """ for (int i = 10; i < 100; i++) { sql "insert into test_predefine2 values(${i}, '${json4}')" @@ -215,7 +213,6 @@ suite("regression_test_variant_predefine_schema", "p0"){ sql """insert into test_predefine1 values(103, '{"a" :1}', '{"dcm": 1111111}', '{"dt": "2021-01-01 11:11:11"}');""" qt_sql """select * from test_predefine1 where id >= 100 order by id""" // 3. drop column - qt_sql "desc test_predefine1" sql "alter table test_predefine1 drop column v3" sql "DROP TABLE IF EXISTS test_predefine3" @@ -223,7 +220,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ `id` bigint NOT NULL, `v` variant<'nested.a':string> NULL) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 - PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "variant_enable_flatten_nested" = "true", "variant_max_subcolumns_count" = "0");""" + PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "variant_enable_flatten_nested" = "false", "disable_auto_compaction" = "true");""" // test alter nested no effect at present sql "truncate table test_predefine3" @@ -249,7 +246,8 @@ suite("regression_test_variant_predefine_schema", "p0"){ sql """insert into test_predefine3 values (1, '{"auto_type" : 256}')""" sql """insert into test_predefine3 values (1, '{"auto_type" : 12345}')""" sql """insert into test_predefine3 values (1, '{"auto_type" : 1.0}')""" - qt_sql """desc test_predefine3""" + trigger_and_wait_compaction("test_predefine3", "full") + qt_sql """select variant_type(v) from test_predefine3""" // test array sql "DROP TABLE IF EXISTS region_insert" @@ -274,8 +272,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", - "group_commit_data_bytes" = "134217728", - "variant_max_subcolumns_count" = "${count}" + "group_commit_data_bytes" = "134217728" ); """ sql """ @@ -293,8 +290,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "min_load_replica_num" = "-1", - "bloom_filter_columns" = "var", - "variant_max_subcolumns_count" = "${count}" + "bloom_filter_columns" = "var" ); """ @@ -311,8 +307,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ DISTRIBUTED BY HASH(`k`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", - "min_load_replica_num" = "-1", - "variant_max_subcolumns_count" = "0" + "min_load_replica_num" = "-1" ); """ sql """insert into test_array_with_nulls values(3, '{"array_decimal" : [null, 2.2, 3.3, 4.4]}')""" @@ -336,8 +331,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ DISTRIBUTED BY HASH(`k`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", - "min_load_replica_num" = "-1", - "variant_max_subcolumns_count" = "0" + "min_load_replica_num" = "-1" ); """ sql """insert into test_variant_type values(1, '{"dcm" : 1.1, "db" : 2.2, "dt" : "2021-01-01 00:00:00", "a.b.c" : [1, 2, 3]}')""" @@ -354,8 +348,7 @@ suite("regression_test_variant_predefine_schema", "p0"){ DISTRIBUTED BY HASH(`k`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", - "min_load_replica_num" = "-1", - "variant_max_subcolumns_count" = "0" + "min_load_replica_num" = "-1" ); """ sql """insert into test_variant_type_not_null values(1, '{"dcm" : 1.1, "db" : 2.2, "dt" : "2021-01-01 00:00:00", "a.b.c" : [1, 2, 3]}')""" diff --git a/regression-test/suites/variant_p0/predefine/multi_var.groovy b/regression-test/suites/variant_p0/predefine/multi_var.groovy index 411b826ef5087a..77292f1107caa7 100644 --- a/regression-test/suites/variant_p0/predefine/multi_var.groovy +++ b/regression-test/suites/variant_p0/predefine/multi_var.groovy @@ -18,23 +18,29 @@ suite("regression_test_variant_predefine_multi_var", "variant_type"){ int max_subcolumns_count = Math.floor(Math.random() * 7) + 1 def table_name = "multi_variants" + boolean enable_typed_paths_to_sparse = new Random().nextBoolean() + sql "set global_variant_enable_typed_paths_to_sparse = ${enable_typed_paths_to_sparse}" sql "DROP TABLE IF EXISTS ${table_name}" sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, - v variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double>, + v variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double, + properties("variant_max_subcolumns_count" = "${max_subcolumns_count}", "variant_enable_typed_paths_to_sparse" = "${enable_typed_paths_to_sparse}") + >, ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 4 - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "true"); """ sql """INSERT INTO ${table_name} SELECT *, '{"k1":1, "k2": "hello world", "k3" : [1234], "k4" : 1.10000, "k5" : [[123]]}' FROM numbers("number" = "101")""" sql """INSERT INTO ${table_name} SELECT *, '{"k7":123, "k8": "elden ring", "k9" : 1.1112, "k10" : [1.12], "k11" : ["moon"]}' FROM numbers("number" = "203") where number > 100""" sql """INSERT INTO ${table_name} SELECT *, '{"k7":123, "k8": "elden ring", "k9" : 1.1112, "k10" : [1.12], "k11" : ["moon"]}' FROM numbers("number" = "411") where number > 200""" trigger_and_wait_compaction(table_name, "cumulative") - sql "alter table ${table_name} add column v2 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double> default null" + sql """alter table ${table_name} add column v2 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double default null, + properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\", \"variant_enable_typed_paths_to_sparse\" = \"${enable_typed_paths_to_sparse}\")> default null""" sql """INSERT INTO ${table_name} select k, v, v from ${table_name}""" - sql "alter table ${table_name} add column v3 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double> default null" + sql """alter table ${table_name} add column v3 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double default null, + properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\", \"variant_enable_typed_paths_to_sparse\" = \"${enable_typed_paths_to_sparse}\")> default null""" sql """INSERT INTO ${table_name} select k, v, v, v from ${table_name}""" sql "alter table ${table_name} add column ss string default null" sql """INSERT INTO ${table_name} select k, v, v, v, v from ${table_name}""" @@ -44,7 +50,7 @@ suite("regression_test_variant_predefine_multi_var", "variant_type"){ qt_sql """select cast(v["k1"] as tinyint), cast(v2["k2"] as text), cast(v3["k3"] as string), cast(v["k7"] as tinyint), cast(v2["k8"] as text), cast(v3["k9"] as double) from ${table_name} where k > 200 order by k, 1, 2, 3, 4, 5, 6 limit 10""" qt_sql """select cast(v["k1"] as tinyint), cast(v2["k2"] as text), cast(v3["k3"] as string), cast(v["k7"] as tinyint), cast(v2["k8"] as text), cast(v3["k9"] as double) from ${table_name} where k > 300 order by k, 1, 2, 3, 4, 5, 6 limit 10""" - sql "alter table ${table_name} add column v4 variant default null" + sql "alter table ${table_name} add column v4 variant default null" for (int i = 0; i < 20; i++) { sql """insert into ${table_name} values (1, '{"a" : 1}', '{"a" : 1}', '{"a" : 1}', '{"a" : 1}', '{"a" : 1}')""" } diff --git a/regression-test/suites/variant_p0/predefine/predefined_typed_to_sparse.groovy b/regression-test/suites/variant_p0/predefine/predefined_typed_to_sparse.groovy new file mode 100644 index 00000000000000..cdd888ae0fcc4b --- /dev/null +++ b/regression-test/suites/variant_p0/predefine/predefined_typed_to_sparse.groovy @@ -0,0 +1,217 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +suite("test_predefine_typed_to_sparse", "p0"){ + sql """ set enable_common_expr_pushdown = true """ + def count = new Random().nextInt(10) + 1 + + def load_json_data = {table_name, file_name -> + // load the json data + streamLoad { + table "${table_name}" + + // set http request header params + set 'read_json_by_line', 'true' + set 'format', 'json' + set 'max_filter_ratio', '0.1' + set 'memtable_on_sink_node', 'true' + file file_name // import json file + time 10000 // limit inflight 10s + + // if declared a check callback, the default check condition will ignore. + // So you must check all condition + + check { result, exception, startTime, endTime -> + if (exception != null) { + throw exception + } + logger.info("Stream load ${file_name} result: ${result}".toString()) + def json = parseJson(result) + assertEquals("success", json.Status.toLowerCase()) + // assertEquals(json.NumberTotalRows, json.NumberLoadedRows + json.NumberUnselectedRows) + assertTrue(json.NumberLoadedRows > 0 && json.LoadBytes > 0) + } + } + } + + def tableName = "test_predefine_typed_to_sparse" + sql "DROP TABLE IF EXISTS ${tableName}" + sql """ + CREATE TABLE ${tableName} ( + `id` bigint NOT NULL, + `var` variant < + 'array_decimal_*':array, + 'array_ipv6_*':array, + 'int_*':int, + 'string_*':string, + 'decimal_*':decimalv3(26,9), + 'datetime_*':datetime, + 'datetimev2_*':datetimev2(6), + 'date_*':date, + 'datev2_*':datev2, + 'ipv4_*':ipv4, + 'ipv6_*':ipv6, + 'largeint_*':largeint, + 'char_*': text, + properties ( + "variant_enable_typed_paths_to_sparse" = "true", + "variant_max_subcolumns_count" = "${count}" + ) + > NOT NULL, + INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="array_decimal_*") COMMENT '', + INDEX idx_a_c (var) USING INVERTED PROPERTIES("field_pattern"="array_ipv6_*") COMMENT '', + INDEX idx_a_d (var) USING INVERTED PROPERTIES("field_pattern"="int_*") COMMENT '', + INDEX idx_a_e (var) USING INVERTED PROPERTIES("field_pattern"="string_*", "parser"="english", "support_phrase" = "true") COMMENT '', + INDEX idx_a_f (var) USING INVERTED PROPERTIES("field_pattern"="decimal_*") COMMENT '', + INDEX idx_a_g (var) USING INVERTED PROPERTIES("field_pattern"="datetime_*") COMMENT '', + INDEX idx_a_h (var) USING INVERTED PROPERTIES("field_pattern"="datetimev2_*") COMMENT '', + INDEX idx_a_i (var) USING INVERTED PROPERTIES("field_pattern"="date_*") COMMENT '', + INDEX idx_a_j (var) USING INVERTED PROPERTIES("field_pattern"="datev2_*") COMMENT '', + INDEX idx_a_k (var) USING INVERTED PROPERTIES("field_pattern"="ipv4_*") COMMENT '', + INDEX idx_a_l (var) USING INVERTED PROPERTIES("field_pattern"="ipv6_*") COMMENT '', + INDEX idx_a_m (var) USING INVERTED PROPERTIES("field_pattern"="largeint_*") COMMENT '', + INDEX idx_a_n (var) USING INVERTED PROPERTIES("field_pattern"="char_*") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true") + + """ + + sql """ + INSERT INTO ${tableName} (`id`, `var`) VALUES + ( + 1, + '{ + "array_decimal_1": ["12345678901234567.123456789", "987.654321"], + "array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7334", "::1"], + "int_1": 42, + "int_nested": { + "level1_num_1": 1011111, + "level1_num_2": 102 + }, + "string_1": "This is a sample string.", + "string_1_nested": { + "message": "Hello from nested object", + "metadata": { + "timestamp": "2023-10-27T12:00:00Z", + "source": "generator" + } + }, + "decimal_1": 12345.6789, + "datetime_1": "2023-10-27 10:30:00", + "datetimev2_1": "2023-10-27 10:30:00.123456", + "date_1": "2023-10-27", + "datev2_1": "2023-10-28", + "ipv4_1": "192.168.1.1", + "ipv6_1": "::1", + "largeint_1": "12345678901234567890123456789012345678", + "char_1": "short text" + }' + ); + """ + for (int i = 1; i < 10; i++) { + load_json_data.call(tableName, getS3Url() + "/regression/variant/schema_tmpt${i}.json") + } + + qt_sql """ select * from ${tableName} order by id limit 10 """ + + trigger_and_wait_compaction(tableName, "cumulative") + + qt_sql """ select * from ${tableName} order by id limit 10""" + + sql "DROP TABLE IF EXISTS ${tableName}" + sql """ + CREATE TABLE ${tableName} ( + `id` bigint NOT NULL, + `var` variant < + 'array_decimal_*':array, + 'array_ipv6_*':array, + 'int_*':int, + 'string_*':string, + 'decimal_*':decimalv3(26,9), + 'datetime_*':datetime, + 'datetimev2_*':datetimev2(6), + 'date_*':date, + 'datev2_*':datev2, + 'ipv4_*':ipv4, + 'ipv6_*':ipv6, + 'largeint_*':largeint, + 'char_*': text, + properties ( + "variant_enable_typed_paths_to_sparse" = "true", + "variant_max_subcolumns_count" = "5" + ) + > NOT NULL, + INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="array_decimal_*") COMMENT '', + INDEX idx_a_c (var) USING INVERTED PROPERTIES("field_pattern"="array_ipv6_*") COMMENT '', + INDEX idx_a_d (var) USING INVERTED PROPERTIES("field_pattern"="int_*") COMMENT '', + INDEX idx_a_e (var) USING INVERTED PROPERTIES("field_pattern"="string_*", "parser"="english", "support_phrase" = "true") COMMENT '', + INDEX idx_a_f (var) USING INVERTED PROPERTIES("field_pattern"="decimal_*") COMMENT '', + INDEX idx_a_g (var) USING INVERTED PROPERTIES("field_pattern"="datetime_*") COMMENT '', + INDEX idx_a_h (var) USING INVERTED PROPERTIES("field_pattern"="datetimev2_*") COMMENT '', + INDEX idx_a_i (var) USING INVERTED PROPERTIES("field_pattern"="date_*") COMMENT '', + INDEX idx_a_j (var) USING INVERTED PROPERTIES("field_pattern"="datev2_*") COMMENT '', + INDEX idx_a_k (var) USING INVERTED PROPERTIES("field_pattern"="ipv4_*") COMMENT '', + INDEX idx_a_l (var) USING INVERTED PROPERTIES("field_pattern"="ipv6_*") COMMENT '', + INDEX idx_a_m (var) USING INVERTED PROPERTIES("field_pattern"="largeint_*") COMMENT '', + INDEX idx_a_n (var) USING INVERTED PROPERTIES("field_pattern"="char_*") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true") + """ + + for (int i = 1; i < 10; i++) { + sql """ + INSERT INTO ${tableName} (`id`, `var`) VALUES + ( + ${i}, + '{ + "array_decimal_1": ["12345678901234567.123456789", "987.654321"], + "array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7334", "::1"], + "int_1": 42, + "int_nested": { + "level1_num_1": 1011111, + "level1_num_2": 102 + }, + "string_1": "This is a sample string.", + "string_1_nested": { + "message": "Hello from nested object", + "metadata": { + "timestamp": "2023-10-27T12:00:00Z", + "source": "generator" + } + }, + "decimal_1": 12345.6789, + "datetime_1": "2023-10-27 10:30:00", + "datetimev2_1": "2023-10-27 10:30:00.123456", + "date_1": "2023-10-27", + "datev2_1": "2023-10-28", + "ipv4_1": "192.168.1.1", + "ipv6_1": "::1", + "largeint_1": "12345678901234567890123456789012345678", + "char_1": "short text" + }' + ); + """ + } + + qt_sql """ select variant_type(var) from ${tableName} limit 1""" + qt_sql """ select * from ${tableName} order by id limit 10 """ + qt_sql """ select var['array_decimal_1'], var['array_ipv6_1'], var['int_1'], var['int_nested'], var['string_1'], var['string_1_nested'], var['decimal_1'], var['datetime_1'], var['datetimev2_1'], var['date_1'], var['datev2_1'], var['ipv4_1'], var['ipv6_1'], var['largeint_1'], var['char_1'] from ${tableName} order by id """ + + trigger_and_wait_compaction(tableName, "cumulative") + + qt_sql """ select variant_type(var) from ${tableName} limit 1""" + qt_sql """ select * from ${tableName} order by id limit 10""" + qt_sql """ select var['array_decimal_1'], var['array_ipv6_1'], var['int_1'], var['int_nested'], var['string_1'], var['string_1_nested'], var['decimal_1'], var['datetime_1'], var['datetimev2_1'], var['date_1'], var['datev2_1'], var['ipv4_1'], var['ipv6_1'], var['largeint_1'], var['char_1'] from ${tableName} order by id """ + +} \ No newline at end of file diff --git a/regression-test/suites/variant_p0/predefine/test_all_prdefine_type_to_sparse.groovy b/regression-test/suites/variant_p0/predefine/test_all_prdefine_type_to_sparse.groovy new file mode 100644 index 00000000000000..32644622fcb237 --- /dev/null +++ b/regression-test/suites/variant_p0/predefine/test_all_prdefine_type_to_sparse.groovy @@ -0,0 +1,391 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_all_prdefine_type_to_sparse", "p0"){ + + sql """ set describe_extend_variant_column = true """ + + def tableName = "test_all_prdefine_type_to_sparse" + sql "set enable_decimal256 = true" + sql "DROP TABLE IF EXISTS ${tableName}" + sql """ + CREATE TABLE ${tableName} ( + `id` bigint NOT NULL, + `var` variant < + 'boolean_*':boolean, + 'tinyint_*':tinyint, + 'smallint_*':smallint, + 'int_*':int, + 'bigint_*':bigint, + 'largeint_*':largeint, + 'char_*': text, + 'string_*':string, + 'float_*':float, + 'double_*':double, + 'decimal32_*':decimalv3(8,2), + 'decimal64_*':decimalv3(16,9), + 'decimal128_*':decimalv3(36,9), + 'decimal256_*':decimalv3(70,60), + 'datetime_*':datetime, + 'date_*':date, + 'ipv4_*':ipv4, + 'ipv6_*':ipv6, + 'array_boolean_*':array, + 'array_tinyint_*':array, + 'array_smallint_*':array, + 'array_int_*':array, + 'array_bigint_*':array, + 'array_largeint_*':array, + 'array_char_*':array, + 'array_string_*':array, + 'array_float_*':array, + 'array_double_*':array, + 'array_decimal32_*':array, + 'array_decimal64_*':array, + 'array_decimal128_*':array, + 'array_decimal256_*':array, + 'array_datetime_*':array, + 'array_date_*':array, + 'array_ipv4_*':array, + 'array_ipv6_*':array, + properties ( + "variant_enable_typed_paths_to_sparse" = "true", + "variant_max_subcolumns_count" = "1" + ) + > NOT NULL + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true") + + """ + + sql """ + INSERT INTO ${tableName} VALUES + (0, + '{ + "boolean_1": true, + "tinyint_1": 1, + "smallint_1": 1, + "int_1": 1, + "bigint_1": 1, + "largeint_1": 1, + "char_1": "1", + "string_1": "1", + "float_1": 1.12, + "double_1": 1.12, + "decimal32_1": 1.12, + "decimal64_1": 1.12, + "decimal128_1": 1.12, + "decimal256_1": 1.12, + "datetime_1": "2021-01-01 00:00:00", + "date_1": "2021-01-01", + "ipv4_1": "192.168.1.1", + "ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7334", + "array_boolean_1": [true], + "array_tinyint_1": [1, null], + "array_smallint_1": [1, null], + "array_int_1": [1, null], + "array_bigint_1": [1, null], + "array_largeint_1": [1, null], + "array_char_1": ["1"], + "array_string_1": ["1"], + "array_float_1": [1.12], + "array_double_1": [1.12], + "array_decimal32_1": [1.12], + "array_decimal64_1": [1.12], + "array_decimal128_1": [1.12], + "array_decimal256_1": [1.12], + "array_datetime_1": ["2021-01-01 00:00:00"], + "array_date_1": ["2021-01-01"], + "array_ipv4_1": ["192.168.1.1"], + "array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"], + "other_1": "1" + }' + ), + (1, + '{"other_1": "1"}' + ); + """ + + qt_sql """ select variant_type(var) from ${tableName} limit 1""" + qt_sql """ select var from ${tableName} order by id """ + + + def check_table = { + def before_result = sql """ select var from ${tableName} order by id """ + log.info("before_result: ${before_result}") + qt_sql_compaction_before """ desc ${tableName} """ + + trigger_and_wait_compaction(tableName, "full") + + def after_result = sql """ select var from ${tableName} order by id """ + log.info("after_result: ${after_result}") + assertTrue(before_result.toString() == after_result.toString()) + + qt_sql_compaction_after """ desc ${tableName} """ + qt_sql """ select var from ${tableName} order by id """ + } + + sql """ insert into ${tableName} values (2, '{"tinyint_1": 1}'),(3, '{"tinyint_1": 2}'); """ + + check_table(); + + sql """ insert into ${tableName} values (4, '{"smallint_1": 1}'),(5, '{"smallint_1": 2}'),(6, '{"smallint_1": 3}'); """ + + check_table(); + + sql """ insert into ${tableName} values (7, '{"int_1": 1}'),(8, '{"int_1": 2}'),(9, '{"int_1": 3}'),(10, '{"int_1": 4}'); """ + + check_table(); + + sql """ insert into ${tableName} values (11, '{"bigint_1": 1}'),(12, '{"bigint_1": 2}'),(13, '{"bigint_1": 3}'),(14, '{"bigint_1": 4}'),(15, '{"bigint_1": 5}'); """ + + check_table(); + + sql """ insert into ${tableName} values (16, '{"largeint_1": 1}'),(17, '{"largeint_1": 2}'),(18, '{"largeint_1": 3}'),(19, '{"largeint_1": 4}'),(20, '{"largeint_1": 5}'),(21, '{"largeint_1": 6}'); """ + + check_table(); + + sql """ insert into ${tableName} values (22, '{"char_1": "1"}'),(23, '{"char_1": "2"}'),(24, '{"char_1": "3"}'),(25, '{"char_1": "4"}'),(26, '{"char_1": "5"}'),(27, '{"char_1": "6"}'),(28, '{"char_1": "7"}'); """ + + check_table(); + + sql """ insert into ${tableName} values (29, '{"string_1": "1"}'),(30, '{"string_1": "2"}'),(31, '{"string_1": "3"}'),(32, '{"string_1": "4"}'),(33, '{"string_1": "5"}'), + (34, '{"string_1": "6"}'),(35, '{"string_1": "7"}'),(36, '{"string_1": "8"}'); """ + + check_table(); + + sql """ insert into ${tableName} values (37, '{"float_1": 1.12}'),(38, '{"float_1": 2.12}'),(39, '{"float_1": 3.12}'),(40, '{"float_1": 4.12}'),(41, '{"float_1": 5.12}'), + (42, '{"float_1": 6.12}'),(43, '{"float_1": 7.12}'),(44, '{"float_1": 8.12}'); """ + + check_table(); + + sql """ insert into ${tableName} values (45, '{"double_1": 1.12}'),(46, '{"double_1": 2.12}'),(47, '{"double_1": 3.12}'),(48, '{"double_1": 4.12}'),(49, '{"double_1": 5.12}'), + (50, '{"double_1": 6.12}'),(51, '{"double_1": 7.12}'),(52, '{"double_1": 8.12}'),(53, '{"double_1": 9.12}'); """ + + check_table(); + + sql """ insert into ${tableName} values (54, '{"decimal32_1": 1.12}'),(55, '{"decimal32_1": 2.12}'),(56, '{"decimal32_1": 3.12}'),(57, '{"decimal32_1": 4.12}'),(58, '{"decimal32_1": 5.12}'), + (59, '{"decimal32_1": 6.12}'),(60, '{"decimal32_1": 7.12}'),(61, '{"decimal32_1": 8.12}'),(62, '{"decimal32_1": 9.12}'),(63, '{"decimal32_1": 10.12}'); """ + + check_table(); + + sql """ insert into ${tableName} values (64, '{"decimal64_1": 1.12}'),(65, '{"decimal64_1": 2.12}'),(66, '{"decimal64_1": 3.12}'),(67, '{"decimal64_1": 4.12}'),(68, '{"decimal64_1": 5.12}'), + (69, '{"decimal64_1": 6.12}'),(70, '{"decimal64_1": 7.12}'),(71, '{"decimal64_1": 8.12}'),(72, '{"decimal64_1": 9.12}'),(73, '{"decimal64_1": 10.12}'),(74, '{"decimal64_1": 11.12}'); """ + + check_table(); + + sql """ insert into ${tableName} values (75, '{"decimal128_1": 1.12}'),(76, '{"decimal128_1": 2.12}'),(77, '{"decimal128_1": 3.12}'),(78, '{"decimal128_1": 4.12}'),(79, '{"decimal128_1": 5.12}'), + (80, '{"decimal128_1": 6.12}'),(81, '{"decimal128_1": 7.12}'),(82, '{"decimal128_1": 8.12}'),(83, '{"decimal128_1": 9.12}'),(84, '{"decimal128_1": 10.12}'),(85, '{"decimal128_1": 11.12}'), + (86, '{"decimal128_1": 12.12}'); """ + + check_table(); + + sql """ insert into ${tableName} values (87, '{"decimal256_1": 1.12}'),(88, '{"decimal256_1": 2.12}'),(89, '{"decimal256_1": 3.12}'),(90, '{"decimal256_1": 4.12}'),(91, '{"decimal256_1": 5.12}'), + (92, '{"decimal256_1": 6.12}'),(93, '{"decimal256_1": 7.12}'),(94, '{"decimal256_1": 8.12}'),(95, '{"decimal256_1": 9.12}'),(96, '{"decimal256_1": 10.12}'),(97, '{"decimal256_1": 11.12}'), + (98, '{"decimal256_1": 12.12}'),(99, '{"decimal256_1": 13.12}'); """ + + check_table(); + + sql """ insert into ${tableName} values (100, '{"datetime_1": "2021-01-01 00:00:00"}'),(101, '{"datetime_1": "2021-01-01 00:00:01"}'),(102, '{"datetime_1": "2021-01-01 00:00:02"}'), + (103, '{"datetime_1": "2021-01-01 00:00:03"}'),(104, '{"datetime_1": "2021-01-01 00:00:04"}'),(105, '{"datetime_1": "2021-01-01 00:00:05"}'),(106, '{"datetime_1": "2021-01-01 00:00:06"}'), + (107, '{"datetime_1": "2021-01-01 00:00:07"}'),(108, '{"datetime_1": "2021-01-01 00:00:08"}'),(109, '{"datetime_1": "2021-01-01 00:00:09"}'),(110, '{"datetime_1": "2021-01-01 00:00:10"}'), + (111, '{"datetime_1": "2021-01-01 00:00:07"}'),(112, '{"datetime_1": "2021-01-01 00:00:08"}'); """ + + check_table(); + + sql """ insert into ${tableName} values (113, '{"date_1": "2021-01-01"}'),(114, '{"date_1": "2021-01-02"}'),(115, '{"date_1": "2021-01-03"}'),(116, '{"date_1": "2021-01-04"}'), + (117, '{"date_1": "2021-01-05"}'),(118, '{"date_1": "2021-01-06"}'),(119, '{"date_1": "2021-01-07"}'),(120, '{"date_1": "2021-01-08"}'),(121, '{"date_1": "2021-01-09"}'),(122, '{"date_1": "2021-01-10"}'), + (123, '{"date_1": "2021-01-07"}'),(124, '{"date_1": "2021-01-08"}'),(125, '{"date_1": "2021-01-09"}'),(126, '{"date_1": "2021-01-10"}'); """ + + check_table(); + + sql """ insert into ${tableName} values (127, '{"ipv4_1": "192.168.1.1"}'),(128, '{"ipv4_1": "192.168.1.2"}'),(129, '{"ipv4_1": "192.168.1.3"}'),(130, '{"ipv4_1": "192.168.1.4"}'), + (131, '{"ipv4_1": "192.168.1.5"}'),(132, '{"ipv4_1": "192.168.1.6"}'),(133, '{"ipv4_1": "192.168.1.7"}'),(134, '{"ipv4_1": "192.168.1.8"}'),(135, '{"ipv4_1": "192.168.1.9"}'),(136, '{"ipv4_1": "192.168.1.10"}'), + (137, '{"ipv4_1": "192.168.1.7"}'),(138, '{"ipv4_1": "192.168.1.8"}'),(139, '{"ipv4_1": "192.168.1.9"}'),(140, '{"ipv4_1": "192.168.1.10"}'),(141, '{"ipv4_1": "192.168.1.11"}'); """ + + check_table(); + + sql """ insert into ${tableName} values (142, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7334"}'),(143, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7335"}'), + (144, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7336"}'),(145, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7337"}'),(146, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7338"}'), + (147, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7339"}'),(148, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733a"}'),(149, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733b"}'), + (150, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733c"}'),(151, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733d"}'),(152, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733e"}'), + (153, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733f"}'),(154, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7340"}'),(155, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7341"}'), + (156, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:733f"}'),(157, '{"ipv6_1": "2001:0db8:85a3:0000:0000:8a2e:0370:7340"}'); """ + + check_table(); + + sql """ insert into ${tableName} values (158, '{"array_boolean_1": [true]}'),(159, '{"array_boolean_1": [false]}'),(160, '{"array_boolean_1": [true]}'),(161, '{"array_boolean_1": [false]}'), + (162, '{"array_boolean_1": [true]}'),(163, '{"array_boolean_1": [false]}'),(164, '{"array_boolean_1": [true]}'),(165, '{"array_boolean_1": [false]}'),(166, '{"array_boolean_1": [true]}'),(167, '{"array_boolean_1": [false]}'), + (168, '{"array_boolean_1": [true]}'),(169, '{"array_boolean_1": [false]}'),(170, '{"array_boolean_1": [true]}'),(171, '{"array_boolean_1": [false]}'),(172, '{"array_boolean_1": [true]}'),(173, '{"array_boolean_1": [false]}');""" + + check_table(); + + sql """ insert into ${tableName} values (174, '{"array_tinyint_1": [1]}'),(175, '{"array_tinyint_1": [2]}'),(176, '{"array_tinyint_1": [3]}'),(177, '{"array_tinyint_1": [4]}'), + (178, '{"array_tinyint_1": [5]}'),(179, '{"array_tinyint_1": [6]}'),(180, '{"array_tinyint_1": [7]}'),(181, '{"array_tinyint_1": [8]}'),(182, '{"array_tinyint_1": [9]}'),(183, '{"array_tinyint_1": [10]}'), + (184, '{"array_tinyint_1": [11]}'),(185, '{"array_tinyint_1": [12]}'),(186, '{"array_tinyint_1": [13]}'),(187, '{"array_tinyint_1": [14]}'),(188, '{"array_tinyint_1": [15]}'),(189, '{"array_tinyint_1": [16]}'), + (190, '{"array_tinyint_1": [17]}'),(191, '{"array_tinyint_1": [18]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (192, '{"array_smallint_1": [1]}'),(193, '{"array_smallint_1": [2, null]}'),(194, '{"array_smallint_1": [3]}'),(195, '{"array_smallint_1": [4]}'), + (196, '{"array_smallint_1": [5]}'),(197, '{"array_smallint_1": [6]}'),(198, '{"array_smallint_1": [7]}'),(199, '{"array_smallint_1": [8]}'),(200, '{"array_smallint_1": [9]}'),(201, '{"array_smallint_1": [10]}'), + (202, '{"array_smallint_1": [11]}'),(203, '{"array_smallint_1": [12]}'),(204, '{"array_smallint_1": [13]}'),(205, '{"array_smallint_1": [14]}'),(206, '{"array_smallint_1": [15]}'),(207, '{"array_smallint_1": [16]}'), + (208, '{"array_smallint_1": [17]}'),(209, '{"array_smallint_1": [18]}'),(210, '{"array_smallint_1": [19]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (211, '{"array_int_1": [1]}'),(212, '{"array_int_1": [2]}'),(213, '{"array_int_1": [3]}'),(214, '{"array_int_1": [4]}'), + (215, '{"array_int_1": [5]}'),(216, '{"array_int_1": [6]}'),(217, '{"array_int_1": [7]}'),(218, '{"array_int_1": [8]}'),(219, '{"array_int_1": [9]}'),(220, '{"array_int_1": [10]}'), + (221, '{"array_int_1": [11]}'),(222, '{"array_int_1": [12]}'),(223, '{"array_int_1": [13]}'),(224, '{"array_int_1": [14]}'),(225, '{"array_int_1": [15]}'),(226, '{"array_int_1": [16]}'), + (227, '{"array_int_1": [17]}'),(228, '{"array_int_1": [18]}'),(229, '{"array_int_1": [19]}'),(230, '{"array_int_1": [20]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (231, '{"array_bigint_1": [1]}'),(232, '{"array_bigint_1": [2]}'),(233, '{"array_bigint_1": [3]}'),(234, '{"array_bigint_1": [4]}'), + (235, '{"array_bigint_1": [5]}'),(236, '{"array_bigint_1": [6]}'),(237, '{"array_bigint_1": [7]}'),(238, '{"array_bigint_1": [8]}'),(239, '{"array_bigint_1": [9]}'),(240, '{"array_bigint_1": [10]}'), + (241, '{"array_bigint_1": [11]}'),(242, '{"array_bigint_1": [12]}'),(243, '{"array_bigint_1": [13]}'),(244, '{"array_bigint_1": [14]}'),(245, '{"array_bigint_1": [15]}'),(246, '{"array_bigint_1": [16]}'), + (247, '{"array_bigint_1": [17]}'),(248, '{"array_bigint_1": [18]}'),(249, '{"array_bigint_1": [19]}'),(250, '{"array_bigint_1": [20]}'),(251, '{"array_bigint_1": [21]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (252, '{"array_largeint_1": [1, null]}'),(253, '{"array_largeint_1": [2]}'),(254, '{"array_largeint_1": [3]}'),(255, '{"array_largeint_1": [4]}'), + (256, '{"array_largeint_1": [5]}'),(257, '{"array_largeint_1": [6]}'),(258, '{"array_largeint_1": [7]}'),(259, '{"array_largeint_1": [8]}'),(260, '{"array_largeint_1": [9]}'),(261, '{"array_largeint_1": [10]}'), + (262, '{"array_largeint_1": [11]}'),(263, '{"array_largeint_1": [12]}'),(264, '{"array_largeint_1": [13]}'),(265, '{"array_largeint_1": [14]}'),(266, '{"array_largeint_1": [15]}'),(267, '{"array_largeint_1": [16]}'), + (268, '{"array_largeint_1": [17]}'),(269, '{"array_largeint_1": [18]}'),(270, '{"array_largeint_1": [19]}'),(271, '{"array_largeint_1": [20]}'),(272, '{"array_largeint_1": [21]}'),(273, '{"array_largeint_1": [22]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (274, '{"array_char_1": ["1"]}'),(275, '{"array_char_1": ["2"]}'),(276, '{"array_char_1": ["3"]}'),(277, '{"array_char_1": ["4"]}'), + (278, '{"array_char_1": ["5"]}'),(279, '{"array_char_1": ["6"]}'),(280, '{"array_char_1": ["7"]}'),(281, '{"array_char_1": ["8"]}'),(282, '{"array_char_1": ["9"]}'),(283, '{"array_char_1": ["10"]}'), + (284, '{"array_char_1": ["11"]}'),(285, '{"array_char_1": ["12"]}'),(286, '{"array_char_1": ["13"]}'),(287, '{"array_char_1": ["14"]}'),(288, '{"array_char_1": ["15"]}'),(289, '{"array_char_1": ["16"]}'), + (290, '{"array_char_1": ["17"]}'),(291, '{"array_char_1": ["18"]}'),(292, '{"array_char_1": ["19"]}'),(293, '{"array_char_1": ["20"]}'),(294, '{"array_char_1": ["21"]}'),(295, '{"array_char_1": ["22"]}'), + (296, '{"array_char_1": ["23"]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (297, '{"array_string_1": ["1"]}'),(298, '{"array_string_1": ["2"]}'),(299, '{"array_string_1": ["3"]}'),(300, '{"array_string_1": ["4"]}'), + (301, '{"array_string_1": ["5"]}'),(302, '{"array_string_1": ["6"]}'),(303, '{"array_string_1": ["7"]}'),(304, '{"array_string_1": ["8"]}'),(305, '{"array_string_1": ["9"]}'),(306, '{"array_string_1": ["10"]}'), + (307, '{"array_string_1": ["11"]}'),(308, '{"array_string_1": ["12"]}'),(309, '{"array_string_1": ["13"]}'),(310, '{"array_string_1": ["14"]}'),(311, '{"array_string_1": ["15"]}'),(312, '{"array_string_1": ["16"]}'), + (313, '{"array_string_1": ["17"]}'),(314, '{"array_string_1": ["18"]}'),(315, '{"array_string_1": ["19"]}'),(316, '{"array_string_1": ["20"]}'),(317, '{"array_string_1": ["21"]}'),(318, '{"array_string_1": ["22"]}'), + (319, '{"array_string_1": ["23"]}'),(320, '{"array_string_1": ["24"]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (321, '{"array_float_1": [1.12]}'),(322, '{"array_float_1": [2.12]}'),(323, '{"array_float_1": [3.12]}'),(324, '{"array_float_1": [4.12]}'), + (325, '{"array_float_1": [5.12]}'),(326, '{"array_float_1": [6.12]}'),(327, '{"array_float_1": [7.12]}'),(328, '{"array_float_1": [8.12]}'),(329, '{"array_float_1": [9.12]}'),(330, '{"array_float_1": [10.12]}'), + (331, '{"array_float_1": [11.12]}'),(332, '{"array_float_1": [12.12]}'),(333, '{"array_float_1": [13.12]}'),(334, '{"array_float_1": [14.12]}'),(335, '{"array_float_1": [15.12]}'),(336, '{"array_float_1": [16.12]}'), + (337, '{"array_float_1": [17.12]}'),(338, '{"array_float_1": [18.12]}'),(339, '{"array_float_1": [19.12]}'),(340, '{"array_float_1": [20.12]}'),(341, '{"array_float_1": [21.12]}'),(342, '{"array_float_1": [22.12]}'), + (343, '{"array_float_1": [23.12]}'),(344, '{"array_float_1": [24.12]}'),(345, '{"array_float_1": [25.12]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (346, '{"array_double_1": [1.12]}'),(347, '{"array_double_1": [2.12]}'),(348, '{"array_double_1": [3.12]}'),(349, '{"array_double_1": [4.12]}'), + (350, '{"array_double_1": [5.12]}'),(351, '{"array_double_1": [6.12]}'),(352, '{"array_double_1": [7.12]}'),(353, '{"array_double_1": [8.12]}'),(354, '{"array_double_1": [9.12]}'),(355, '{"array_double_1": [10.12]}'), + (356, '{"array_double_1": [11.12]}'),(357, '{"array_double_1": [12.12]}'),(358, '{"array_double_1": [13.12]}'),(359, '{"array_double_1": [14.12]}'),(360, '{"array_double_1": [15.12]}'),(361, '{"array_double_1": [16.12]}'), + (362, '{"array_double_1": [17.12]}'),(363, '{"array_double_1": [18.12]}'),(364, '{"array_double_1": [19.12]}'),(365, '{"array_double_1": [20.12]}'),(366, '{"array_double_1": [21.12]}'),(367, '{"array_double_1": [22.12]}'), + (368, '{"array_double_1": [23.12]}'),(369, '{"array_double_1": [24.12]}'),(370, '{"array_double_1": [25.12]}'),(371, '{"array_double_1": [26.12]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (372, '{"array_decimal32_1": [1.12]}'),(373, '{"array_decimal32_1": [2.12]}'),(374, '{"array_decimal32_1": [3.12]}'),(375, '{"array_decimal32_1": [4.12]}'), + (376, '{"array_decimal32_1": [5.12]}'),(377, '{"array_decimal32_1": [6.12]}'),(378, '{"array_decimal32_1": [7.12]}'),(379, '{"array_decimal32_1": [8.12]}'),(380, '{"array_decimal32_1": [9.12]}'),(381, '{"array_decimal32_1": [10.12]}'), + (382, '{"array_decimal32_1": [11.12]}'),(383, '{"array_decimal32_1": [12.12]}'),(384, '{"array_decimal32_1": [13.12]}'),(385, '{"array_decimal32_1": [14.12]}'),(386, '{"array_decimal32_1": [15.12]}'),(387, '{"array_decimal32_1": [16.12]}'), + (388, '{"array_decimal32_1": [17.12]}'),(389, '{"array_decimal32_1": [18.12]}'),(390, '{"array_decimal32_1": [19.12]}'),(391, '{"array_decimal32_1": [20.12]}'),(392, '{"array_decimal32_1": [21.12]}'),(393, '{"array_decimal32_1": [22.12]}'), + (394, '{"array_decimal32_1": [23.12]}'),(395, '{"array_decimal32_1": [24.12]}'),(396, '{"array_decimal32_1": [25.12]}'),(397, '{"array_decimal32_1": [26.12]}'),(398, '{"array_decimal32_1": [27.12]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (399, '{"array_decimal64_1": [1.12]}'),(400, '{"array_decimal64_1": [2.12]}'),(401, '{"array_decimal64_1": [3.12]}'),(402, '{"array_decimal64_1": [4.12]}'), + (403, '{"array_decimal64_1": [5.12]}'),(404, '{"array_decimal64_1": [6.12]}'),(405, '{"array_decimal64_1": [7.12]}'),(406, '{"array_decimal64_1": [8.12]}'),(407, '{"array_decimal64_1": [9.12]}'),(408, '{"array_decimal64_1": [10.12]}'), + (409, '{"array_decimal64_1": [11.12]}'),(410, '{"array_decimal64_1": [12.12]}'),(411, '{"array_decimal64_1": [13.12]}'),(412, '{"array_decimal64_1": [14.12]}'),(413, '{"array_decimal64_1": [15.12]}'),(414, '{"array_decimal64_1": [16.12]}'), + (415, '{"array_decimal64_1": [17.12]}'),(416, '{"array_decimal64_1": [18.12]}'),(417, '{"array_decimal64_1": [19.12]}'),(418, '{"array_decimal64_1": [20.12]}'),(419, '{"array_decimal64_1": [21.12]}'),(420, '{"array_decimal64_1": [22.12]}'), + (421, '{"array_decimal64_1": [23.12]}'),(422, '{"array_decimal64_1": [24.12]}'),(423, '{"array_decimal64_1": [25.12]}'),(424, '{"array_decimal64_1": [26.12]}'),(425, '{"array_decimal64_1": [27.12]}'),(426, '{"array_decimal64_1": [28.12]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (427, '{"array_decimal128_1": [1.12]}'),(428, '{"array_decimal128_1": [2.12]}'),(429, '{"array_decimal128_1": [3.12]}'),(430, '{"array_decimal128_1": [4.12]}'), + (431, '{"array_decimal128_1": [5.12]}'),(432, '{"array_decimal128_1": [6.12]}'),(433, '{"array_decimal128_1": [7.12]}'),(434, '{"array_decimal128_1": [8.12]}'),(435, '{"array_decimal128_1": [9.12]}'),(436, '{"array_decimal128_1": [10.12]}'), + (437, '{"array_decimal128_1": [11.12]}'),(438, '{"array_decimal128_1": [12.12]}'),(439, '{"array_decimal128_1": [13.12]}'),(440, '{"array_decimal128_1": [14.12]}'),(441, '{"array_decimal128_1": [15.12]}'),(442, '{"array_decimal128_1": [16.12]}'), + (443, '{"array_decimal128_1": [17.12]}'),(444, '{"array_decimal128_1": [18.12]}'),(445, '{"array_decimal128_1": [19.12]}'),(446, '{"array_decimal128_1": [20.12]}'),(447, '{"array_decimal128_1": [21.12]}'),(448, '{"array_decimal128_1": [22.12]}'), + (449, '{"array_decimal128_1": [23.12]}'),(450, '{"array_decimal128_1": [24.12]}'),(451, '{"array_decimal128_1": [25.12]}'),(452, '{"array_decimal128_1": [26.12]}'),(453, '{"array_decimal128_1": [27.12]}'),(454, '{"array_decimal128_1": [28.12]}'), + (455, '{"array_decimal128_1": [29.12]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (456, '{"array_decimal256_1": [1.12]}'),(457, '{"array_decimal256_1": [2.12]}'),(458, '{"array_decimal256_1": [3.12]}'),(459, '{"array_decimal256_1": [4.12]}'), + (460, '{"array_decimal256_1": [5.12]}'),(461, '{"array_decimal256_1": [6.12]}'),(462, '{"array_decimal256_1": [7.12]}'),(463, '{"array_decimal256_1": [8.12]}'),(464, '{"array_decimal256_1": [9.12]}'),(465, '{"array_decimal256_1": [10.12]}'), + (466, '{"array_decimal256_1": [11.12]}'),(467, '{"array_decimal256_1": [12.12]}'),(468, '{"array_decimal256_1": [13.12]}'),(469, '{"array_decimal256_1": [14.12]}'),(470, '{"array_decimal256_1": [15.12]}'),(471, '{"array_decimal256_1": [16.12]}'), + (472, '{"array_decimal256_1": [17.12]}'),(473, '{"array_decimal256_1": [18.12]}'),(474, '{"array_decimal256_1": [19.12]}'),(475, '{"array_decimal256_1": [20.12]}'),(476, '{"array_decimal256_1": [21.12]}'),(477, '{"array_decimal256_1": [22.12]}'), + (478, '{"array_decimal256_1": [23.12]}'),(479, '{"array_decimal256_1": [24.12]}'),(480, '{"array_decimal256_1": [25.12]}'),(481, '{"array_decimal256_1": [26.12]}'),(482, '{"array_decimal256_1": [27.12]}'),(483, '{"array_decimal256_1": [28.12]}'), + (484, '{"array_decimal256_1": [29.12]}'),(485, '{"array_decimal256_1": [30.12]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (486, '{"array_datetime_1": ["2021-01-01 00:00:00"]}'),(487, '{"array_datetime_1": ["2021-01-01 00:00:01"]}'),(488, '{"array_datetime_1": ["2021-01-01 00:00:02"]}'), + (489, '{"array_datetime_1": ["2021-01-01 00:00:03"]}'),(490, '{"array_datetime_1": ["2021-01-01 00:00:04"]}'),(491, '{"array_datetime_1": ["2021-01-01 00:00:05"]}'),(492, '{"array_datetime_1": ["2021-01-01 00:00:06"]}'), + (493, '{"array_datetime_1": ["2021-01-01 00:00:07"]}'),(494, '{"array_datetime_1": ["2021-01-01 00:00:08"]}'),(495, '{"array_datetime_1": ["2021-01-01 00:00:09"]}'),(496, '{"array_datetime_1": ["2021-01-01 00:00:10"]}'), + (497, '{"array_datetime_1": ["2021-01-01 00:00:07"]}'),(498, '{"array_datetime_1": ["2021-01-01 00:00:08"]}'),(499, '{"array_datetime_1": ["2021-01-01 00:00:09"]}'),(500, '{"array_datetime_1": ["2021-01-01 00:00:10"]}'), + (501, '{"array_datetime_1": ["2021-01-01 00:00:07"]}'),(502, '{"array_datetime_1": ["2021-01-01 00:00:08"]}'),(503, '{"array_datetime_1": ["2021-01-01 00:00:09"]}'),(504, '{"array_datetime_1": ["2021-01-01 00:00:10"]}'), + (505, '{"array_datetime_1": ["2021-01-01 00:00:07"]}'),(506, '{"array_datetime_1": ["2021-01-01 00:00:08"]}'),(507, '{"array_datetime_1": ["2021-01-01 00:00:09"]}'),(508, '{"array_datetime_1": ["2021-01-01 00:00:10"]}'), + (509, '{"array_datetime_1": ["2021-01-01 00:00:07"]}'),(510, '{"array_datetime_1": ["2021-01-01 00:00:08"]}'),(511, '{"array_datetime_1": ["2021-01-01 00:00:09"]}'),(512, '{"array_datetime_1": ["2021-01-01 00:00:10"]}'), + (513, '{"array_datetime_1": ["2021-01-01 00:00:07"]}'),(514, '{"array_datetime_1": ["2021-01-01 00:00:08"]}'),(515, '{"array_datetime_1": ["2021-01-01 00:00:09"]}'),(516, '{"array_datetime_1": ["2021-01-01 00:00:10"]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (517, '{"array_date_1": ["2021-01-01"]}'),(518, '{"array_date_1": ["2021-01-02"]}'),(519, '{"array_date_1": ["2021-01-03"]}'),(520, '{"array_date_1": ["2021-01-04"]}'), + (521, '{"array_date_1": ["2021-01-05"]}'),(522, '{"array_date_1": ["2021-01-06"]}'),(523, '{"array_date_1": ["2021-01-07"]}'),(524, '{"array_date_1": ["2021-01-08"]}'),(525, '{"array_date_1": ["2021-01-09"]}'),(526, '{"array_date_1": ["2021-01-10"]}'), + (527, '{"array_date_1": ["2021-01-07"]}'),(528, '{"array_date_1": ["2021-01-08"]}'),(529, '{"array_date_1": ["2021-01-09"]}'),(530, '{"array_date_1": ["2021-01-10"]}'), + (531, '{"array_date_1": ["2021-01-07"]}'),(532, '{"array_date_1": ["2021-01-08"]}'),(533, '{"array_date_1": ["2021-01-09"]}'),(534, '{"array_date_1": ["2021-01-10"]}'), + (535, '{"array_date_1": ["2021-01-07"]}'),(536, '{"array_date_1": ["2021-01-08"]}'),(537, '{"array_date_1": ["2021-01-09"]}'),(538, '{"array_date_1": ["2021-01-10"]}'), + (539, '{"array_date_1": ["2021-01-07"]}'),(540, '{"array_date_1": ["2021-01-08"]}'),(541, '{"array_date_1": ["2021-01-09"]}'),(542, '{"array_date_1": ["2021-01-10"]}'), + (543, '{"array_date_1": ["2021-01-07"]}'),(544, '{"array_date_1": ["2021-01-08"]}'),(545, '{"array_date_1": ["2021-01-09"]}'),(546, '{"array_date_1": ["2021-01-10"]}'), + (547, '{"array_date_1": ["2021-01-07"]}'),(548, '{"array_date_1": ["2021-01-08"]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (549, '{"array_ipv4_1": ["192.168.1.1"]}'),(550, '{"array_ipv4_1": ["192.168.1.2"]}'),(551, '{"array_ipv4_1": ["192.168.1.3"]}'),(552, '{"array_ipv4_1": ["192.168.1.4"]}'), + (553, '{"array_ipv4_1": ["192.168.1.5"]}'),(554, '{"array_ipv4_1": ["192.168.1.6"]}'),(555, '{"array_ipv4_1": ["192.168.1.7"]}'),(556, '{"array_ipv4_1": ["192.168.1.8"]}'),(557, '{"array_ipv4_1": ["192.168.1.9"]}'),(558, '{"array_ipv4_1": ["192.168.1.10"]}'), + (559, '{"array_ipv4_1": ["192.168.1.7"]}'),(560, '{"array_ipv4_1": ["192.168.1.8"]}'),(561, '{"array_ipv4_1": ["192.168.1.9"]}'),(562, '{"array_ipv4_1": ["192.168.1.10"]}'), + (563, '{"array_ipv4_1": ["192.168.1.7"]}'),(564, '{"array_ipv4_1": ["192.168.1.8"]}'),(565, '{"array_ipv4_1": ["192.168.1.9"]}'),(566, '{"array_ipv4_1": ["192.168.1.10"]}'), + (567, '{"array_ipv4_1": ["192.168.1.7"]}'),(568, '{"array_ipv4_1": ["192.168.1.8"]}'),(569, '{"array_ipv4_1": ["192.168.1.9"]}'),(570, '{"array_ipv4_1": ["192.168.1.10"]}'), + (571, '{"array_ipv4_1": ["192.168.1.7"]}'),(572, '{"array_ipv4_1": ["192.168.1.8"]}'),(573, '{"array_ipv4_1": ["192.168.1.9"]}'),(574, '{"array_ipv4_1": ["192.168.1.10"]}'), + (575, '{"array_ipv4_1": ["192.168.1.7"]}'),(576, '{"array_ipv4_1": ["192.168.1.8"]}'),(577, '{"array_ipv4_1": ["192.168.1.9"]}'),(578, '{"array_ipv4_1": ["192.168.1.10"]}'), + (579, '{"array_ipv4_1": ["192.168.1.7"]}'),(580, '{"array_ipv4_1": ["192.168.1.8"]}'),(581, '{"array_ipv4_1": ["192.168.1.9"]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (582, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7334"]}'),(583, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7335"]}'), + (584, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7336"]}'),(585, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7337"]}'),(586, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7338"]}'), + (587, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7339"]}'),(588, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733a"]}'),(589, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733b"]}'), + (590, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733c"]}'),(591, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733d"]}'),(592, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733e"]}'), + (593, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(594, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(595, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (596, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(597, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(598, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (599, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(600, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(601, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (602, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(603, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(604, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (605, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(606, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(607, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (608, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(609, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(610, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (611, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(612, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'),(613, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7341"]}'), + (614, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:733f"]}'),(615, '{"array_ipv6_1": ["2001:0db8:85a3:0000:0000:8a2e:0370:7340"]}'); """ + + check_table(); + + sql """ insert into ${tableName} values (616, '{"other_1": "1"}'),(617, '{"other_1": "2"}'),(618, '{"other_1": "3"}'),(619, '{"other_1": "4"}'),(620, '{"other_1": "5"}'),(621, '{"other_1": "6"}'),(622, '{"other_1": "7"}'),(623, '{"other_1": "8"}'),(624, '{"other_1": "9"}'),(625, '{"other_1": "10"}'), + (626, '{"other_1": "11"}'),(627, '{"other_1": "12"}'),(628, '{"other_1": "13"}'),(629, '{"other_1": "14"}'),(630, '{"other_1": "15"}'),(631, '{"other_1": "16"}'),(632, '{"other_1": "17"}'),(633, '{"other_1": "18"}'),(634, '{"other_1": "19"}'),(635, '{"other_1": "20"}'), + (636, '{"other_1": "21"}'),(637, '{"other_1": "22"}'),(638, '{"other_1": "23"}'),(639, '{"other_1": "24"}'),(640, '{"other_1": "25"}'),(641, '{"other_1": "26"}'),(642, '{"other_1": "27"}'),(643, '{"other_1": "28"}'),(644, '{"other_1": "29"}'),(645, '{"other_1": "30"}'), + (646, '{"other_1": "31"}'),(647, '{"other_1": "32"}'),(648, '{"other_1": "33"}'),(649, '{"other_1": "34"}'),(650, '{"other_1": "35"}'); """ + + check_table(); +} \ No newline at end of file diff --git a/regression-test/suites/variant_p0/predefine/test_custom_analyzer.groovy b/regression-test/suites/variant_p0/predefine/test_custom_analyzer.groovy new file mode 100644 index 00000000000000..242936d02bd814 --- /dev/null +++ b/regression-test/suites/variant_p0/predefine/test_custom_analyzer.groovy @@ -0,0 +1,174 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +import java.sql.SQLException + +suite("test_variant_custom_analyzer", "p0") { + def indexTbName1 = "test_custom_analyzer_1" + def indexTbName2 = "test_custom_analyzer_2" + def indexTbName3 = "test_custom_analyzer_3" + sql "set global_variant_max_subcolumns_count = 100" + sql """ set enable_match_without_inverted_index = false """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ + + sql """ + CREATE INVERTED INDEX TOKENIZER IF NOT EXISTS edge_ngram_phone_number_tokenizer + PROPERTIES + ( + "type" = "edge_ngram", + "min_gram" = "3", + "max_gram" = "10", + "token_chars" = "digit" + ); + """ + + sql """ + CREATE INVERTED INDEX TOKEN_FILTER IF NOT EXISTS word_splitter + PROPERTIES + ( + "type" = "word_delimiter", + "split_on_numerics" = "false", + "split_on_case_change" = "false" + ); + """ + + sql """ + CREATE INVERTED INDEX ANALYZER IF NOT EXISTS edge_ngram_phone_number + PROPERTIES + ( + "tokenizer" = "edge_ngram_phone_number_tokenizer" + ); + """ + + sql """ + CREATE INVERTED INDEX ANALYZER IF NOT EXISTS lowercase_delimited + PROPERTIES + ( + "tokenizer" = "standard", + "token_filter" = "asciifolding, word_splitter, lowercase" + ); + """ + + sql """ + CREATE INVERTED INDEX ANALYZER IF NOT EXISTS keyword_lowercase + PROPERTIES + ( + "tokenizer" = "keyword", + "token_filter" = "asciifolding, lowercase" + ); + """ + + sql """ select sleep(10) """ + + qt_tokenize_sql """ select tokenize("Србија Херцеговина Щучин гурзуф Ψ4 Босна", '"analyzer"="keyword_lowercase"'); """ + qt_tokenize_sql """ select tokenize("Wasted…Again", '"analyzer"="keyword_lowercase"'); """ + qt_tokenize_sql """ select tokenize("♯P-complete", '"analyzer"="keyword_lowercase"'); """ + qt_tokenize_sql """ select tokenize("a∴a∴", '"analyzer"="keyword_lowercase"'); """ + qt_tokenize_sql """ select tokenize("RX J1242−11", '"analyzer"="keyword_lowercase"'); """ + qt_tokenize_sql """ select tokenize("1080º Avalanche", '"analyzer"="keyword_lowercase"'); """ + qt_tokenize_sql """ select tokenize("clayfighter 63⅓", '"analyzer"="lowercase_delimited"'); """ + qt_tokenize_sql """ select tokenize("β-carbon nitride", '"analyzer"="lowercase_delimited"'); """ + qt_tokenize_sql """ select tokenize("ǁŨǁe language", '"analyzer"="lowercase_delimited"'); """ + + sql "DROP TABLE IF EXISTS ${indexTbName1}" + sql """ + CREATE TABLE ${indexTbName1} ( + `a` bigint NOT NULL AUTO_INCREMENT(1), + `ch` variant<'ch' : string> NULL, + INDEX idx_ch (`ch`) USING INVERTED PROPERTIES("field_pattern" = "ch", "support_phrase" = "true", "analyzer" = "lowercase_delimited") + ) ENGINE=OLAP + DUPLICATE KEY(`a`) + DISTRIBUTED BY RANDOM BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + sql """ insert into ${indexTbName1} values(1, '{"ch" : "abcDEF"}'); """ + sql """ insert into ${indexTbName1} values(2, '{"ch" : "中国人民"}'); """ + sql """ insert into ${indexTbName1} values(3, '{"ch" : "ǁŨǁe Language"}'); """ + sql """ insert into ${indexTbName1} values(4, '{"ch" : "RX J1242−11"}'); """ + sql """ insert into ${indexTbName1} values(5, '{"ch" : "clayfighter 63⅓"}'); """ + sql """ insert into ${indexTbName1} values(6, '{"ch" : "β-carbon nitrid"}'); """ + + try { + trigger_and_wait_compaction(indexTbName1, "full") + sql "sync" + sql """ set enable_common_expr_pushdown = true; """ + + qt_sql """ select a, ch['ch'] from ${indexTbName1} where ch['ch'] match 'abcDEF'; """ + qt_sql """ select a, ch['ch'] from ${indexTbName1} where ch['ch'] match '中'; """ + qt_sql """ select a, ch['ch'] from ${indexTbName1} where ch['ch'] match 'language'; """ + } finally { + } + + sql "DROP TABLE IF EXISTS ${indexTbName2}" + sql """ + CREATE TABLE ${indexTbName2} ( + `a` bigint NOT NULL AUTO_INCREMENT(1), + `ch` variant<'ch' : string> NULL, + INDEX idx_ch (`ch`) USING INVERTED PROPERTIES("field_pattern" = "ch", "support_phrase" = "true", "analyzer" = "edge_ngram_phone_number") + ) ENGINE=OLAP + DUPLICATE KEY(`a`) + DISTRIBUTED BY RANDOM BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + sql """ INSERT INTO ${indexTbName2} VALUES ('3', '{"ch" : "Wikipedia;Miscellaneous-Jj102786 / 3tle Born Oct 27th 1986 @ Blytheville, Arkansas @ 9:14pm 23 yrs of age male,white Cucassion American raised Religion:Pentocostal,Church of God"}'); """ + + try { + sql "sync" + sql """ set enable_common_expr_pushdown = true; """ + + qt_sql """ select a, ch['ch'] from ${indexTbName2} where ch['ch'] match '102'; """ + } finally { + } + + sql "DROP TABLE IF EXISTS ${indexTbName3}" + sql """ + CREATE TABLE ${indexTbName3} ( + `a` bigint NOT NULL AUTO_INCREMENT(1), + `ch` variant<'ch' : string> NULL, + INDEX idx_ch (`ch`) USING INVERTED PROPERTIES("field_pattern" = "ch", "support_phrase" = "true", "analyzer" = "keyword_lowercase") + ) ENGINE=OLAP + DUPLICATE KEY(`a`) + DISTRIBUTED BY RANDOM BUCKETS 1 + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + sql """ INSERT INTO ${indexTbName3} VALUES ('4', '{"ch" : "1080º Avalanche"}'); """ + + try { + sql "sync" + sql """ set enable_common_expr_pushdown = true; """ + + qt_sql """ select a, ch['ch'] from ${indexTbName3} where ch['ch'] match '1080º avalanche'; """ + } finally { + } + + try { + sql "drop inverted index analyzer edge_ngram_phone_number" + } catch (SQLException e) { + if (e.message.contains("is used by index")) { + logger.info("used by index") + } + } +} \ No newline at end of file diff --git a/regression-test/suites/variant_p0/predefine/test_multi_index_file.groovy b/regression-test/suites/variant_p0/predefine/test_multi_index_file.groovy index 79135641d0aef0..acdee10585d7a4 100644 --- a/regression-test/suites/variant_p0/predefine/test_multi_index_file.groovy +++ b/regression-test/suites/variant_p0/predefine/test_multi_index_file.groovy @@ -25,7 +25,7 @@ suite("test_variant_multi_index_file", "p0, nonConcurrent"){ sql "DROP TABLE IF EXISTS ${tableName}" sql """CREATE TABLE ${tableName} ( `id` bigint NULL, - `var` variant NOT NULL, + `var` variant NOT NULL, INDEX idx_a_d (var) USING INVERTED PROPERTIES("parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_a_d_2 (var) USING INVERTED ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" diff --git a/regression-test/suites/variant_p0/predefine/test_multi_index_nonCurrent.groovy b/regression-test/suites/variant_p0/predefine/test_multi_index_nonCurrent.groovy index e137404de3de11..8ecab4c9869469 100644 --- a/regression-test/suites/variant_p0/predefine/test_multi_index_nonCurrent.groovy +++ b/regression-test/suites/variant_p0/predefine/test_multi_index_nonCurrent.groovy @@ -19,6 +19,7 @@ suite("test_variant_multi_index_nonCurrent", "p0, nonConcurrent") { sql """ set describe_extend_variant_column = true """ sql """ set enable_match_without_inverted_index = false """ sql """ set enable_common_expr_pushdown = true """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ def queryAndCheck = { String sqlQuery, int expectedFilteredRows = -1, boolean checkFilterUsed = true -> def checkpoints_name = "segment_iterator.inverted_index.filtered_rows" @@ -38,10 +39,10 @@ suite("test_variant_multi_index_nonCurrent", "p0, nonConcurrent") { sql "DROP TABLE IF EXISTS ${tableName}" sql """CREATE TABLE ${tableName} ( `id` bigint NULL, - `var` variant NOT NULL, + `var` variant NOT NULL, INDEX idx_a_d (var) USING INVERTED PROPERTIES("parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_a_d_2 (var) USING INVERTED - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10")""" + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"string" : "hello", "array_string" : ["hello"]}'), (2, '{"string" : "world", "array_string" : ["world"]}'), (3, '{"string" : "hello", "array_string" : ["hello"]}'), (4, '{"string" : "world", "array_string" : ["world"]}'), (5, '{"string" : "hello", "array_string" : ["hello"]}') """ // insert into test_variant_multi_index_nonCurrent values(1, '{"string" : "hello", "array_string" : ["hello"]}'), (2, '{"string" : "world", "array_string" : ["world"]}'), (3, '{"string" : "hello", "array_string" : ["hello"]}'), (4, '{"string" : "world", "array_string" : ["world"]}'), (5, '{"string" : "hello", "array_string" : ["hello"]}') @@ -78,11 +79,11 @@ suite("test_variant_multi_index_nonCurrent", "p0, nonConcurrent") { queryAndCheck("select count() from ${tableName} where var['string'] = 'hello' or var['string'] match_phrase 'world'", 0) queryAndCheck("select count() from ${tableName} where array_contains(cast(var['array_string'] as array), 'hello')", 22) - sql """ alter table ${tableName} modify column var variant NULL """ + sql """ alter table ${tableName} modify column var variant NULL """ waitForSchemaChangeDone { sql """ SHOW ALTER TABLE COLUMN WHERE TableName='${tableName}' ORDER BY createtime DESC LIMIT 1 """ - time 600 + time 6000 } queryAndCheck("select count() from ${tableName} where var['string'] match_phrase 'hello'", 22) @@ -105,7 +106,8 @@ suite("test_variant_multi_index_nonCurrent", "p0, nonConcurrent") { `var` variant< MATCH_NAME 'string1' : string, MATCH_NAME 'string2' : string, - MATCH_NAME 'array_string' : array + MATCH_NAME 'array_string' : array, + properties("variant_max_subcolumns_count" = "10") > NOT NULL, INDEX idx_a_d_2 (var) USING INVERTED, INDEX idx_a_d_3 (var) USING INVERTED PROPERTIES("field_pattern" = "string1","parser"="unicode", "support_phrase" = "true") COMMENT '', @@ -113,7 +115,7 @@ suite("test_variant_multi_index_nonCurrent", "p0, nonConcurrent") { INDEX idx_a_d_5 (var) USING INVERTED PROPERTIES("field_pattern" = "string2","parser"="unicode", "support_phrase" = "false") COMMENT '', INDEX idx_a_d_6 (var) USING INVERTED PROPERTIES("field_pattern" = "string2") COMMENT '', INDEX idx_a_d_7 (var) USING INVERTED PROPERTIES("field_pattern" = "array_string") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10")""" + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"string1" : "hello", "array_string" : ["hello"], "string2" : "hello"}'), (2, '{"string1" : "world", "array_string" : ["world"], "string2" : "world"}'), diff --git a/regression-test/suites/variant_p0/predefine/test_prdefine_insert_into_select.groovy b/regression-test/suites/variant_p0/predefine/test_prdefine_insert_into_select.groovy index 423b6beb0d159a..cbeff1ef750dc7 100644 --- a/regression-test/suites/variant_p0/predefine/test_prdefine_insert_into_select.groovy +++ b/regression-test/suites/variant_p0/predefine/test_prdefine_insert_into_select.groovy @@ -16,6 +16,9 @@ // under the License. suite("test_predefine_insert_into_select", "p0"){ + + sql """ set global_variant_enable_typed_paths_to_sparse = false """ + sql "DROP TABLE IF EXISTS fromTable" sql """CREATE TABLE fromTable ( `id` bigint NULL, @@ -23,20 +26,21 @@ suite("test_predefine_insert_into_select", "p0"){ MATCH_NAME 'a' : date, MATCH_NAME 'b' : decimal(20,12), MATCH_NAME 'c' : datetime, - MATCH_NAME 'd' : string + MATCH_NAME 'd' : string, + properties("variant_max_subcolumns_count" = "2") > NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="d", "parser"="unicode", "support_phrase" = "true") COMMENT '' ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "2")""" + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into fromTable values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": 123, "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}');""" sql """insert into fromTable values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": 123, "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}');""" sql "DROP TABLE IF EXISTS toTable_without_define" sql """CREATE TABLE toTable_without_define ( `id` bigint NULL, - `var` variant NULL + `var` variant NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "2")""" + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into toTable_without_define values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": 123, "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}');""" sql """ insert into toTable_without_define select id, cast(var as string) from fromTable""" @@ -57,14 +61,16 @@ suite("test_predefine_insert_into_select", "p0"){ `id` bigint NULL, `var` variant< MATCH_NAME 'a' : date, - MATCH_NAME 'b' : decimal(20,12) + MATCH_NAME 'b' : decimal(20,12), + properties("variant_max_subcolumns_count" = "2") > NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "2")""" + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into toTable_with_define values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": 123, "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}');""" sql """ insert into toTable_with_define select id, cast(var as string) from fromTable""" + findException = false try { sql """ insert into toTable_with_define select * from fromTable""" } catch (Exception e) { diff --git a/regression-test/suites/variant_p0/predefine/test_prdefine_typed_column_sparse_column.groovy b/regression-test/suites/variant_p0/predefine/test_prdefine_typed_column_sparse_column.groovy index 336fe82493bdb7..ce65a2fbb4b3e8 100644 --- a/regression-test/suites/variant_p0/predefine/test_prdefine_typed_column_sparse_column.groovy +++ b/regression-test/suites/variant_p0/predefine/test_prdefine_typed_column_sparse_column.groovy @@ -18,6 +18,7 @@ suite("test_predefine_typed_sparse", "p0"){ def tableName = "test_predefine_typed_sparse" + sql """ set global_variant_enable_typed_paths_to_sparse = false """ sql "DROP TABLE IF EXISTS ${tableName}" sql """CREATE TABLE ${tableName} ( `id` bigint NULL, @@ -25,10 +26,11 @@ suite("test_predefine_typed_sparse", "p0"){ MATCH_NAME 'a' : date, MATCH_NAME 'b' : decimal(20,12), MATCH_NAME 'c' : datetime, - MATCH_NAME 'd' : date + MATCH_NAME 'd' : date, + properties("variant_max_subcolumns_count" = "2") > NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "2")""" + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" for (int i = 0; i < 10; i++) { sql """insert into ${tableName} values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": "2025-04-18", "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}');""" diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy index a029144792d8f3..83be9d7a6c635d 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy @@ -15,11 +15,32 @@ // specific language governing permissions and limitations // under the License. -suite("test_predefine_ddl", "p0"){ +suite("test_predefine_ddl", "p0") { + + def timeout = 60000 + def delta_time = 1000 + def alter_res = "null" + def useTime = 0 + def wait_for_latest_op_on_table_finish = { tableName, OpTimeout -> + for(int t = delta_time; t <= OpTimeout; t += delta_time){ + alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = "${tableName}" ORDER BY CreateTime DESC LIMIT 1;""" + alter_res = alter_res.toString() + if(alter_res.contains("FINISHED")) { + sleep(3000) // wait change table state to normal + logger.info(tableName + " latest alter job finished, detail: " + alter_res) + break + } + useTime = t + sleep(delta_time) + } + assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish timeout") + } + + def tableName = "test_ddl_table" test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : string, @@ -36,8 +57,8 @@ suite("test_predefine_ddl", "p0"){ exception("can not find field pattern: bb* in column: var") } - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : string, @@ -49,8 +70,8 @@ suite("test_predefine_ddl", "p0"){ BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant NOT NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '', @@ -59,27 +80,36 @@ suite("test_predefine_ddl", "p0"){ exception("can not find field pattern: ab in column: var") } - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, - `var` variant NULL + `var` variant NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" test { - sql """ create index idx_ab on test_ddl_table (var) using inverted properties("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") """ + sql """ create index idx_ab on ${tableName} (var) using inverted properties("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") """ + exception("Can not create index with field pattern") + } + + test { + sql """ create index idx_ab on ${tableName} (var) using inverted properties("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") """ exception("Can not create index with field pattern") } - sql """ alter table test_ddl_table add column var2 variant<'ab' : string> NULL """ + sql """ alter table ${tableName} add column var2 variant<'ab' : string, properties("variant_max_subcolumns_count" = "5")> NULL """ + + sql """ alter table ${tableName} add column var3 variant<'ab' : string> NULL """ test { - sql """ alter table test_ddl_table modify column var variant<'ab' : string> NULL """ + sql """ alter table ${tableName} modify column var variant<'ab' : string> NULL """ exception("Can not modify variant column with children") } + + sql """ alter table test_ddl_table add column var2 variant<'ab' : string> NULL """ - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : string, @@ -91,20 +121,20 @@ suite("test_predefine_ddl", "p0"){ BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" test { - sql """ alter table test_ddl_table modify column var variant NULL """ + sql """ alter table ${tableName} modify column var variant NULL """ exception("Can not modify variant column with children") } test { - sql """ alter table test_ddl_table drop index idx_ab """ + sql """ alter table ${tableName} drop index idx_ab """ exception("Can not drop index with field pattern") } - sql """ alter table test_ddl_table drop column var """ + sql """ alter table ${tableName} drop column var """ test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : json @@ -116,22 +146,23 @@ suite("test_predefine_ddl", "p0"){ } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : int, - MATCH_NAME 'ab' : string + MATCH_NAME 'ab' : string, + properties("variant_max_subcolumns_count" = "10", "variant_enable_typed_paths_to_sparse" = "true") > NULL, INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '' ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" - exception("Duplicate field name ab in struct variant") + exception("""Duplicate field name ab in variant variant""") } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : decimalv2(22, 2) @@ -142,8 +173,8 @@ suite("test_predefine_ddl", "p0"){ } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : datev1 @@ -154,8 +185,8 @@ suite("test_predefine_ddl", "p0"){ } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : datetimev1 @@ -165,19 +196,22 @@ suite("test_predefine_ddl", "p0"){ exception("VARIANT unsupported sub-type: datetime") } - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( - `id` bigint NULL, - `var` variant< - MATCH_NAME 'ab' : double - > NULL, - INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" + test { + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( + `id` bigint NULL, + `var` variant< + MATCH_NAME 'ab' : double + > NULL, + INDEX idx_ab (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" + exception("") + } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : int @@ -189,8 +223,8 @@ suite("test_predefine_ddl", "p0"){ exception("column: var cannot have multiple inverted indexes with field pattern: ab") } - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : string @@ -201,8 +235,8 @@ suite("test_predefine_ddl", "p0"){ BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : string @@ -215,8 +249,8 @@ suite("test_predefine_ddl", "p0"){ } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : string @@ -229,8 +263,8 @@ suite("test_predefine_ddl", "p0"){ } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant< MATCH_NAME 'ab' : array @@ -243,8 +277,8 @@ suite("test_predefine_ddl", "p0"){ } test { - sql "DROP TABLE IF EXISTS test_ddl_table" - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` string NULL, INDEX idx_ab (var) USING INVERTED PROPERTIES("parser"="unicode", "support_phrase" = "true") COMMENT '', @@ -255,7 +289,7 @@ suite("test_predefine_ddl", "p0"){ } test { - sql """CREATE TABLE test_ddl_table ( + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant <'c' :char(10)> NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) @@ -263,21 +297,70 @@ suite("test_predefine_ddl", "p0"){ exception("VARIANT unsupported sub-type: char(10)") } + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( + `id` bigint NULL, + `var` variant <'c' :text, properties("variant_max_subcolumns_count" = "10")> NULL + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1")""" + + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( + `id` bigint NULL, + `var` variant NULL + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1")""" + + test { - sql """CREATE TABLE test_ddl_table ( + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( `id` bigint NULL, - `var` variant <'c' :array> NULL + `var1` variant NULL, + `var2` variant NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "inverted_index_storage_format" = "v1")""" - exception("VARIANT unsupported sub-type: array") + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1")""" + exception("The variant_max_subcolumns_count must either be 0 in all columns, or greater than 0 in all columns") } + sql "DROP TABLE IF EXISTS ${tableName}" + sql "set global_variant_max_subcolumns_count = 10" + sql "set global_variant_enable_typed_paths_to_sparse = false" + sql """CREATE TABLE ${tableName} ( + `id` bigint NULL, + `var` variant NULL + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1")""" + + qt_sql "desc ${tableName}" + + sql "DROP TABLE IF EXISTS ${tableName}" + sql """CREATE TABLE ${tableName} ( + `id` bigint NULL, + `var` variant NULL, + INDEX idx_ab (var) USING INVERTED PROPERTIES("parser"="unicode", "support_phrase" = "true") COMMENT '' + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1")""" + + sql "create index idx_ab2 on ${tableName} (var) using inverted" + wait_for_latest_op_on_table_finish("${tableName}", timeout) + + sql """alter table ${tableName} add column var2 variant NULL""" + wait_for_latest_op_on_table_finish("${tableName}", timeout) + test { - sql """CREATE TABLE test_ddl_table ( - `id` bigint NULL, - `var` variant <'c' :array>> NULL - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "inverted_index_storage_format" = "v1")""" - exception("VARIANT unsupported sub-type: array>") + sql """alter table ${tableName} add column var3 variant NULL""" + exception("The variant_max_subcolumns_count must either be 0 in all columns or greater than 0 in all columns") } + + sql "alter table ${tableName} add column var3 variant NULL" + wait_for_latest_op_on_table_finish("${tableName}", timeout) + + qt_sql "desc ${tableName}" + + sql "create index idx_ab3 on ${tableName} (var2) using inverted" + wait_for_latest_op_on_table_finish("${tableName}", timeout) + + sql "create index idx_ab4 on ${tableName} (var2) using inverted properties(\"parser\"=\"unicode\")" + wait_for_latest_op_on_table_finish("${tableName}", timeout) } \ No newline at end of file diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy index 278527b44e64d2..bf2edc359ea435 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_pattern.groovy @@ -19,6 +19,7 @@ suite("test_variant_predefine_base", "p0"){ sql """ set describe_extend_variant_column = true """ sql """ set enable_match_without_inverted_index = false """ sql """ set enable_common_expr_pushdown = true """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ def count = new Random().nextInt(5) + 1 def tableName = "base_match_name_variant_test" sql "DROP TABLE IF EXISTS ${tableName}" @@ -29,14 +30,15 @@ suite("test_variant_predefine_base", "p0"){ MATCH_NAME '*cc' : string, MATCH_NAME 'b?b' : string, MATCH_NAME_GLOB 'bb*' : string, - MATCH_NAME_GLOB 'bx?' : string + MATCH_NAME_GLOB 'bx?' : string, + properties("variant_max_subcolumns_count" = "${count}") > NOT NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="ab", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_bb (var) USING INVERTED PROPERTIES("field_pattern"="*cc", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_b_b (var) USING INVERTED PROPERTIES("field_pattern"="b?b", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_bb_glob (var) USING INVERTED PROPERTIES("field_pattern"="bb*", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_bx_glob (var) USING INVERTED PROPERTIES("field_pattern"="bx?", "parser"="unicode", "support_phrase" = "true") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${count}")""" + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"ab" : 123, "*cc" : 123, "b?b" : 123, "bb3" : 123, "bxx" : 123}')""" sql """insert into ${tableName} values(2, '{"ab" : 456, "*cc" : 456, "b?b" : 456, "bb3" : 456, "bxx" : 456}')""" @@ -72,14 +74,15 @@ suite("test_variant_predefine_base", "p0"){ MATCH_NAME 'a.*' : string, MATCH_NAME_GLOB 'a.b[0-9]' : string, MATCH_NAME_GLOB 'a.b?c' : string, - MATCH_NAME_GLOB 'a.c*' : string + MATCH_NAME_GLOB 'a.c*' : string, + properties("variant_max_subcolumns_count" = "${count}") > NOT NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="a.b", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_bb (var) USING INVERTED PROPERTIES("field_pattern"="a.*", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_b_b (var) USING INVERTED PROPERTIES("field_pattern"="a.b[0-9]", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_bb_glob (var) USING INVERTED PROPERTIES("field_pattern"="a.b?c", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_bx_glob (var) USING INVERTED PROPERTIES("field_pattern"="a.c*", "parser"="unicode", "support_phrase" = "true") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${count}")""" + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"a" : {"b" : 789, "*" : 789, "b1" : 789, "bxc" : 789, "c2323" : 789}}')""" sql """insert into ${tableName} values(2, '{"a" : {"b" : 111, "*" : 111, "b1" : 111, "bxc" : 111, "c2323" : 111}}')""" diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_schema_change.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_schema_change.groovy index 6459345517a312..afb744e8c518a8 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_schema_change.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_schema_change.groovy @@ -17,6 +17,7 @@ suite("test_predefine_schema_change", "p0"){ def tableName = "test_predefine_schema_change" + sql """ set global_variant_enable_typed_paths_to_sparse = false """ sql "DROP TABLE IF EXISTS ${tableName}" sql """CREATE TABLE ${tableName} ( `id` bigint NULL, @@ -24,12 +25,13 @@ suite("test_predefine_schema_change", "p0"){ MATCH_NAME 'a' : date, MATCH_NAME 'b' : decimal(20,12), MATCH_NAME 'c' : datetime, - MATCH_NAME 'd' : string + MATCH_NAME 'd' : string, + properties("variant_max_subcolumns_count" = "2") > NULL, `col1` varchar(100) NOT NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="d", "parser"="unicode", "support_phrase" = "true") COMMENT '' ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) - BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "2")""" + BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": 123, "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}', 'col');""" sql """insert into ${tableName} values(1, '{"a": "2025-04-16", "b": 123.123456789012, "c": "2025-04-17T09:09:09Z", "d": 123, "e": "2025-04-19", "f": "2025-04-20", "g": "2025-04-21", "h": "2025-04-22", "i": "2025-04-23", "j": "2025-04-24", "k": "2025-04-25", "l": "2025-04-26", "m": "2025-04-27", "n": "2025-04-28", "o": "2025-04-29", "p": "2025-04-30"}', 'col');""" diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy index 5bbb9698a77e35..d9ab4a8946805a 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_type_index.groovy @@ -19,6 +19,7 @@ suite("test_variant_predefine_index_type", "p0"){ sql """ set describe_extend_variant_column = true """ sql """ set enable_match_without_inverted_index = false """ sql """ set enable_common_expr_pushdown = true """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ def tableName = "test_variant_predefine_index_type" sql "DROP TABLE IF EXISTS ${tableName}" @@ -27,12 +28,13 @@ suite("test_variant_predefine_index_type", "p0"){ `var` variant < MATCH_NAME 'path.int' : int, MATCH_NAME 'path.decimal' : DECIMAL(15, 12), - MATCH_NAME 'path.string' : string + MATCH_NAME 'path.string' : string, + properties("variant_max_subcolumns_count" = "10") > NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="path.int", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_a_c (var) USING INVERTED PROPERTIES("field_pattern"="path.decimal") COMMENT '', INDEX idx_a_d (var) USING INVERTED PROPERTIES("field_pattern"="path.string", "parser"="unicode", "support_phrase" = "true") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10")""" + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"path" : {"int" : 123, "decimal" : 123.123456789012, "string" : "hello"}}'), (2, '{"path" : {"int" : 456, "decimal" : 456.456789123456, "string" : "world"}}'), @@ -69,7 +71,8 @@ suite("test_variant_predefine_index_type", "p0"){ `id` int NOT NULL, `overflow_properties` variant< MATCH_NAME 'color' : text, - MATCH_NAME 'tags' : array + MATCH_NAME 'tags' : array, + properties("variant_max_subcolumns_count" = "10") > NULL, INDEX idx1 (`overflow_properties`) USING INVERTED PROPERTIES( "field_pattern" = "color", "support_phrase" = "true", "parser" = "english", "lower_case" = "true"), INDEX idx2 (`overflow_properties`) USING INVERTED PROPERTIES( "field_pattern" = "tags", "support_phrase" = "true", "parser" = "english", "lower_case" = "true") @@ -87,7 +90,6 @@ suite("test_variant_predefine_index_type", "p0"){ "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728", - "variant_max_subcolumns_count" = "10", "disable_auto_compaction" = "true" ); """ diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy index 4f6520837820e8..525951b6e5c558 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_type_multi_index.groovy @@ -19,17 +19,19 @@ suite("test_variant_predefine_type_multi_index", "p0"){ sql """ set describe_extend_variant_column = true """ sql """ set enable_match_without_inverted_index = false """ sql """ set enable_common_expr_pushdown = true """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ def tableName = "test_variant_predefine_type_multi_index" sql "DROP TABLE IF EXISTS ${tableName}" sql """CREATE TABLE ${tableName} ( `id` bigint NULL, `var` variant < - MATCH_NAME 'path.string' : string + MATCH_NAME 'path.string' : string, + properties("variant_max_subcolumns_count" = "10") > NULL, INDEX idx_a_d (var) USING INVERTED PROPERTIES("field_pattern"="path.string", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_a_d_2 (var) USING INVERTED PROPERTIES("field_pattern"="path.string") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10")""" + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true")""" sql """insert into ${tableName} values(1, '{"path" : {"int" : 123, "decimal" : 123.123456789012, "string" : "hello"}}'), (2, '{"path" : {"int" : 456, "decimal" : 456.456789123456, "string" : "world"}}'), diff --git a/regression-test/suites/variant_p0/predefine/test_types_with_indexes_profile.groovy b/regression-test/suites/variant_p0/predefine/test_types_with_indexes_profile.groovy index d48f9b9c6bf20d..31e9d2acc71b9f 100644 --- a/regression-test/suites/variant_p0/predefine/test_types_with_indexes_profile.groovy +++ b/regression-test/suites/variant_p0/predefine/test_types_with_indexes_profile.groovy @@ -18,6 +18,7 @@ suite("test_variant_predefine_types_with_indexes_profile", "p0,nonConcurrent"){ sql """ set describe_extend_variant_column = true """ sql """ set enable_match_without_inverted_index = false """ sql """ set enable_common_expr_pushdown = true """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ def load_json_data = {table_name, file_name -> // load the json data @@ -66,7 +67,8 @@ suite("test_variant_predefine_types_with_indexes_profile", "p0,nonConcurrent"){ 'ipv4_*':ipv4, 'ipv6_*':ipv6, 'largeint_*':largeint, - 'char_*': text + 'char_*': text, + properties("variant_max_subcolumns_count" = "2") > NOT NULL, INDEX idx_a_b (var) USING INVERTED PROPERTIES("field_pattern"="array_decimal_*") COMMENT '', INDEX idx_a_c (var) USING INVERTED PROPERTIES("field_pattern"="array_ipv6_*") COMMENT '', @@ -81,7 +83,7 @@ suite("test_variant_predefine_types_with_indexes_profile", "p0,nonConcurrent"){ INDEX idx_a_l (var) USING INVERTED PROPERTIES("field_pattern"="ipv6_*") COMMENT '', INDEX idx_a_m (var) USING INVERTED PROPERTIES("field_pattern"="largeint_*") COMMENT '', INDEX idx_a_n (var) USING INVERTED PROPERTIES("field_pattern"="char_*") COMMENT '' - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "2") + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true") """ sql """ diff --git a/regression-test/suites/variant_p0/predefine/test_variant_compaction_with_sparse_limit.groovy b/regression-test/suites/variant_p0/predefine/test_variant_compaction_with_sparse_limit.groovy index 1d97d8f1c8ca53..0ab363d5671c72 100644 --- a/regression-test/suites/variant_p0/predefine/test_variant_compaction_with_sparse_limit.groovy +++ b/regression-test/suites/variant_p0/predefine/test_variant_compaction_with_sparse_limit.groovy @@ -46,10 +46,6 @@ suite("test_compaction_variant_predefine_with_sparse_limit", "nonConcurrent") { } set_be_config("variant_max_sparse_column_statistics_size", "2") - int max_subcolumns_count = Math.floor(Math.random() * 5) - if (max_subcolumns_count == 1) { - max_subcolumns_count = 0 - } def create_table = { tableName, buckets="auto", key_type="DUPLICATE" -> sql "DROP TABLE IF EXISTS ${tableName}" def var_def = "variant <'sala' : int, 'ddd' : double, 'z' : double>" @@ -63,7 +59,7 @@ suite("test_compaction_variant_predefine_with_sparse_limit", "nonConcurrent") { ) ${key_type} KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS ${buckets} - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "true"); """ } def key_types = ["DUPLICATE", "UNIQUE", "AGGREGATE"] diff --git a/regression-test/suites/variant_p0/predefine/test_variant_is_null_expr.groovy b/regression-test/suites/variant_p0/predefine/test_variant_is_null_expr.groovy index 4010c7ec7b10da..9ac9cdd328f400 100644 --- a/regression-test/suites/variant_p0/predefine/test_variant_is_null_expr.groovy +++ b/regression-test/suites/variant_p0/predefine/test_variant_is_null_expr.groovy @@ -19,7 +19,9 @@ suite("test_variant_is_null_expr", "p0, nonConcurrent") { // define a sql table def testTable = "test_variant_is_null_expr" - int max_subcolumns_count = Math.floor(Math.random() * 5) + 1 + + sql """ set global_variant_enable_typed_paths_to_sparse = false """ + sql """ DROP TABLE IF EXISTS ${testTable} """ sql """ CREATE TABLE ${testTable} ( @@ -30,14 +32,13 @@ suite("test_variant_is_null_expr", "p0, nonConcurrent") { > NULL COMMENT "", INDEX idx_a (v) USING INVERTED PROPERTIES("field_pattern"= "string*", "parser"="unicode", "support_phrase" = "true") COMMENT '', INDEX idx_b (v) USING INVERTED PROPERTIES("field_pattern"= "string*"), - INDEX idx_c (v) USING INVERTED PROPERTIES("field_pattern"= "int*"), + INDEX idx_c (v) USING INVERTED PROPERTIES("field_pattern"= "int*") ) ENGINE=OLAP DUPLICATE KEY(`k`) COMMENT "OLAP" DISTRIBUTED BY HASH(`k`) BUCKETS 1 PROPERTIES ( - "replication_allocation" = "tag.location.default: 1", - "variant_max_subcolumns_count" = "${max_subcolumns_count}" + "replication_allocation" = "tag.location.default: 1" ); """ diff --git a/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy b/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy index 86cdbfc49667bf..032dfba2b7b91c 100644 --- a/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy +++ b/regression-test/suites/variant_p0/predefine/variant_hirachinal.groovy @@ -18,11 +18,12 @@ suite("regression_test_variant_predefine_hirachinal", "variant_type"){ def table_name = "var_rs" sql "DROP TABLE IF EXISTS ${table_name}" + int count = new Random().nextInt(10) + 1 sql """ CREATE TABLE IF NOT EXISTS ${table_name} ( k bigint, - v variant<'a' : largeint, 'c.d' : text> + v variant<'a' : largeint, 'c.d' : text, properties("variant_max_subcolumns_count" = "${count}")> ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 1 diff --git a/regression-test/suites/variant_p0/predefine/variant_with_mow.groovy b/regression-test/suites/variant_p0/predefine/variant_with_mow.groovy index bcb0d387ebff87..edb25b5ffc993e 100644 --- a/regression-test/suites/variant_p0/predefine/variant_with_mow.groovy +++ b/regression-test/suites/variant_p0/predefine/variant_with_mow.groovy @@ -27,7 +27,9 @@ suite("variant_predefine_with_mow") { `INGESTIONTIMESTAMP` bigint NOT NULL, `PROCESSEDTIMESTAMP` bigint NOT NULL, `VERSION` bigint NULL DEFAULT "0", - `OVERFLOWPROPERTIES` variant<'a' : int, 'b' : string, 'c' : largeint> NULL, + `OVERFLOWPROPERTIES` variant<'a' : int, 'b' : string, 'c' : largeint, + properties("variant_max_subcolumns_count" = "100") + > NULL, INDEX objects_properties_idx (`OVERFLOWPROPERTIES`) USING INVERTED COMMENT 'This is an inverted index on all properties of the object' ) ENGINE=OLAP UNIQUE KEY(`PORTALID`, `OBJECTTYPEID`, `OBJECTIDHASH`, `OBJECTID`) @@ -36,7 +38,6 @@ suite("variant_predefine_with_mow") { "replication_allocation" = "tag.location.default: 1", "enable_unique_key_merge_on_write" = "true", "function_column.sequence_col" = "VERSION", - "variant_max_subcolumns_count" = "100", "disable_auto_compaction" = "true" ); """ diff --git a/regression-test/suites/variant_p0/rqg/fix_rqg1.groovy b/regression-test/suites/variant_p0/rqg/fix_rqg1.groovy index 62f0c22d44ae4d..e66b2795afc9ed 100644 --- a/regression-test/suites/variant_p0/rqg/fix_rqg1.groovy +++ b/regression-test/suites/variant_p0/rqg/fix_rqg1.groovy @@ -34,7 +34,6 @@ suite("variant_rqg_fix1", "p0") { "storage_format" = "V2", "inverted_index_storage_format" = "V2", "light_schema_change" = "true", - "variant_max_subcolumns_count" = "0", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", diff --git a/regression-test/suites/variant_p0/rqg/rqg7.sql b/regression-test/suites/variant_p0/rqg/rqg7.sql index 3be14162337e9c..cebd2666b9bf19 100644 --- a/regression-test/suites/variant_p0/rqg/rqg7.sql +++ b/regression-test/suites/variant_p0/rqg/rqg7.sql @@ -13,7 +13,7 @@ DROP TABLE IF EXISTS `table_100_undef_partitions2_keys3_properties4_distributed_ /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `table_100_undef_partitions2_keys3_properties4_distributed_by5` ( `pk` int NULL, - `var` variant NULL, + `var` variant NULL, INDEX idx_col_boolean_undef_signed (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_boolean_undef_signed"), INDEX idx_col_boolean_undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_boolean_undef_signed_not_null"), INDEX idx_col_tinyint_undef_signed (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_tinyint_undef_signed"), @@ -56,7 +56,6 @@ PROPERTIES ( "light_schema_change" = "true", "replication_num" = "1", "disable_auto_compaction" = "false", -"variant_max_subcolumns_count" = "2048", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728" @@ -82,7 +81,7 @@ DROP TABLE IF EXISTS `table_100_undef_partitions2_keys3_properties4_distributed_ /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `table_100_undef_partitions2_keys3_properties4_distributed_by52` ( `pk` int NULL, - `var` variant NULL, + `var` variant NULL, INDEX idx_col_tinyint_undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_tinyint_undef_signed_not_null"), INDEX idx_col_decimal_5_0__undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_decimal_5_0__undef_signed_not_null"), INDEX idx_col_boolean_undef_signed (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_boolean_undef_signed"), @@ -125,7 +124,6 @@ PROPERTIES ( "light_schema_change" = "true", "replication_num" = "1", "disable_auto_compaction" = "false", -"variant_max_subcolumns_count" = "2048", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728" @@ -151,7 +149,7 @@ DROP TABLE IF EXISTS `table_100_undef_partitions2_keys3_properties4_distributed_ /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `table_100_undef_partitions2_keys3_properties4_distributed_by53` ( `pk` int NULL, - `var` variant NULL, + `var` variant NULL, INDEX idx_col_bigint_undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_bigint_undef_signed_not_null"), INDEX idx_col_boolean_undef_signed (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_boolean_undef_signed"), INDEX idx_col_boolean_undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_boolean_undef_signed_not_null"), @@ -194,7 +192,6 @@ PROPERTIES ( "light_schema_change" = "true", "replication_num" = "1", "disable_auto_compaction" = "false", -"variant_max_subcolumns_count" = "2048", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728" @@ -220,7 +217,7 @@ DROP TABLE IF EXISTS `table_100_undef_partitions2_keys3_properties4_distributed_ /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `table_100_undef_partitions2_keys3_properties4_distributed_by54` ( `pk` int NULL, - `var` variant NULL, + `var` variant NULL, INDEX idx_col_bigint_undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_bigint_undef_signed_not_null"), INDEX idx_col_decimal_12_2__undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_decimal_12_2__undef_signed_not_null"), INDEX idx_col_datetime_undef_signed_not_null (`var`) USING INVERTED PROPERTIES("field_pattern" = "col_datetime_undef_signed_not_null"), @@ -263,7 +260,6 @@ PROPERTIES ( "light_schema_change" = "true", "replication_num" = "1", "disable_auto_compaction" = "false", -"variant_max_subcolumns_count" = "2048", "enable_single_replica_compaction" = "false", "group_commit_interval_ms" = "10000", "group_commit_data_bytes" = "134217728" diff --git a/regression-test/suites/variant_p0/schema_change/schema_change.groovy b/regression-test/suites/variant_p0/schema_change/schema_change.groovy index 9c5011a8eb10d9..2e8a094f1202eb 100644 --- a/regression-test/suites/variant_p0/schema_change/schema_change.groovy +++ b/regression-test/suites/variant_p0/schema_change/schema_change.groovy @@ -16,6 +16,7 @@ // under the License. suite("regression_test_variant_schema_change", "variant_type"){ + def table_name = "variant_schema_change" sql "DROP TABLE IF EXISTS ${table_name}" sql """ diff --git a/regression-test/suites/variant_p0/schema_change/test_add_multi_var_mulit_indexes.groovy b/regression-test/suites/variant_p0/schema_change/test_add_multi_var_mulit_indexes.groovy new file mode 100644 index 00000000000000..3d01fb5f914b2b --- /dev/null +++ b/regression-test/suites/variant_p0/schema_change/test_add_multi_var_mulit_indexes.groovy @@ -0,0 +1,98 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + +suite("regression_test_variant_add_multi_var_mulit_indexes", "variant_type"){ + + + def timeout = 60000 + def delta_time = 1000 + def alter_res = "null" + def useTime = 0 + def wait_for_latest_op_on_table_finish = { tableName, OpTimeout -> + for(int t = delta_time; t <= OpTimeout; t += delta_time){ + alter_res = sql """SHOW ALTER TABLE COLUMN WHERE TableName = "${tableName}" ORDER BY CreateTime DESC LIMIT 1;""" + alter_res = alter_res.toString() + if(alter_res.contains("FINISHED")) { + sleep(3000) // wait change table state to normal + logger.info(tableName + " latest alter job finished, detail: " + alter_res) + break + } + useTime = t + sleep(delta_time) + } + assertTrue(useTime <= OpTimeout, "wait_for_latest_op_on_table_finish timeout") + } + def table_name = "variant_add_multi_var_mulit_indexes" + int count = new Random().nextInt(10) + 3 + sql "set global_variant_max_subcolumns_count = ${count}" + sql "set global_variant_enable_typed_paths_to_sparse = false" + sql "DROP TABLE IF EXISTS ${table_name}" + sql """ + CREATE TABLE IF NOT EXISTS ${table_name} ( + k bigint, + v variant + ) + DUPLICATE KEY(`k`) + DISTRIBUTED BY HASH(k) BUCKETS 1 + properties("replication_num" = "1", "disable_auto_compaction" = "true"); + """ + sql """insert into ${table_name} values (0, '{"a" : 12345,"b" : 2}')""" + test { + sql """alter table ${table_name} add column var2 variant NULL""" + exception("The variant_max_subcolumns_count must either be 0 in all columns or greater than 0 in all columns") + } + + sql """ alter table ${table_name} add column v2 variant<'a': string, 'b': string> NULL""" + + sql """insert into ${table_name} values (1, '{"a" : 12345,"b" : 2}', '{"a" : 12345,"b" : 3}')""" + + sql """alter table ${table_name} add column v3 variant NULL""" + + sql """insert into ${table_name} values (2, '{"a" : 12345,"b" : 2}', '{"a" : 56789,"b" : 3}', '{"a" : 12345,"b" : 2}')""" + + sql """alter table ${table_name} add index idx_v2(v2) using inverted""" + wait_for_latest_op_on_table_finish(table_name, timeout) + + sql """alter table ${table_name} add index idx_v3(v3) using inverted""" + wait_for_latest_op_on_table_finish(table_name, timeout) + + sql """alter table ${table_name} add index idx_v4(v2) using inverted properties("parser" = "unicode")""" + wait_for_latest_op_on_table_finish(table_name, timeout) + + sql """alter table ${table_name} add index idx_v5(v3) using inverted properties("parser" = "unicode", "support_phrase" = "true")""" + wait_for_latest_op_on_table_finish(table_name, timeout) + + sql """insert into ${table_name} values (3, '{"a" : 12345,"b" : 2}', '{"a" : 12345,"b" : 2}', '{"a" : 56789,"b" : 2}')""" + + sql """insert into ${table_name} values (4, '{"a" : 12345,"b" : 2}', '{"a" : 56789,"b" : 2}', '{"a" : 12345,"b" : 3}')""" + + trigger_and_wait_compaction("${table_name}", "full") + + qt_sql "select * from ${table_name} order by k" + + sql """ set enable_match_without_inverted_index = false""" + sql """ set enable_inverted_index_query = true""" + sql """ set enable_common_expr_pushdown = true""" + sql """ set enable_common_expr_pushdown_for_inverted_index = true""" + + qt_sql "select * from ${table_name} where cast(v2['a'] as string) match '12345' order by k" + qt_sql "select * from ${table_name} where cast(v2['b'] as string) match '2' order by k" + qt_sql "select * from ${table_name} where cast(v3['b'] as int) = 2 order by k" + + +} \ No newline at end of file diff --git a/regression-test/suites/variant_p0/test_sub_path_pruning.groovy b/regression-test/suites/variant_p0/test_sub_path_pruning.groovy index a553c17fa2b1e4..28960d299ea507 100644 --- a/regression-test/suites/variant_p0/test_sub_path_pruning.groovy +++ b/regression-test/suites/variant_p0/test_sub_path_pruning.groovy @@ -17,6 +17,9 @@ suite("variant_sub_path_pruning", "variant_type"){ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ + sql """ set global_variant_max_subcolumns_count = 0 """ + sql "DROP TABLE IF EXISTS pruning_test" sql """ @@ -26,7 +29,7 @@ suite("variant_sub_path_pruning", "variant_type"){ ) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) - PROPERTIES("replication_num"="1", "variant_max_subcolumns_count" = "0") + PROPERTIES("replication_num"="1") """ sql """ diff --git a/regression-test/suites/variant_p0/test_variant_float_double_index.groovy b/regression-test/suites/variant_p0/test_variant_float_double_index.groovy index 5b978f946d6721..5fdb3878158067 100644 --- a/regression-test/suites/variant_p0/test_variant_float_double_index.groovy +++ b/regression-test/suites/variant_p0/test_variant_float_double_index.groovy @@ -23,6 +23,7 @@ suite("test_variant_float_double_index", "p0, nonConcurrent"){ sql """ set enable_match_without_inverted_index = false """ sql """ set enable_common_expr_pushdown = true """ sql """ set inverted_index_skip_threshold = 0 """ + sql """ set global_variant_enable_typed_paths_to_sparse = false """ def queryAndCheck = { String sqlQuery, int expectedFilteredRows = -1, boolean checkFilterUsed = true -> def checkpoints_name = "segment_iterator.inverted_index.filtered_rows" @@ -43,9 +44,9 @@ suite("test_variant_float_double_index", "p0, nonConcurrent"){ sql """ CREATE TABLE ${tableName} ( `id` int(11) NULL, - `v` variant, + `v` variant, INDEX idx_variant (v) USING INVERTED - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10") + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true") """ sql """ insert into ${tableName} values (1, '{"float_col" : 1.5, "double_col" : 1.5239849328948}'), (2, '{"float_col" : 2.23, "double_col" : 2.239849328948}'), (3, '{"float_col" : 3.02, "double_col" : 3.029849328948}') """ @@ -96,11 +97,12 @@ suite("test_variant_float_double_index", "p0, nonConcurrent"){ `id` int(11) NULL, `v` variant< MATCH_NAME 'float_col': float, - MATCH_NAME 'double_col': double + MATCH_NAME 'double_col': double, + properties("variant_max_subcolumns_count" = "10") >, INDEX idx_variant (v) USING INVERTED PROPERTIES ( "field_pattern" = "float_col"), INDEX idx_variant_double (v) USING INVERTED PROPERTIES ( "field_pattern" = "double_col") - ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true", "variant_max_subcolumns_count" = "10") + ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 1 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "disable_auto_compaction" = "true") """ sql """ insert into ${tableName} values (1, '{"float_col" : 1.5, "double_col" : 1.5239849328948}'), (2, '{"float_col" : 2.23, "double_col" : 2.239849328948}'), (3, '{"float_col" : 3.02, "double_col" : 3.029849328948}') """ diff --git a/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy b/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy index bb6d4dee8d696d..039d9570c1e086 100644 --- a/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy +++ b/regression-test/suites/variant_p0/test_variant_is_null_expr.groovy @@ -24,15 +24,14 @@ suite("test_variant_is_null_expr_predefine", "p0, nonConcurrent") { sql """ CREATE TABLE ${testTable} ( `k` int(11) NULL COMMENT "", - `v` variant NULL COMMENT "", + `v` variant NULL COMMENT "", INDEX idx_a (v) USING INVERTED ) ENGINE=OLAP DUPLICATE KEY(`k`) COMMENT "OLAP" DISTRIBUTED BY HASH(`k`) BUCKETS 1 PROPERTIES ( - "replication_allocation" = "tag.location.default: 1", - "variant_max_subcolumns_count" = "10" + "replication_allocation" = "tag.location.default: 1" ); """ diff --git a/regression-test/suites/variant_p0/tpch/load.groovy b/regression-test/suites/variant_p0/tpch/load.groovy index 44ef25e72b1ddc..b85ad0da5a8ba9 100644 --- a/regression-test/suites/variant_p0/tpch/load.groovy +++ b/regression-test/suites/variant_p0/tpch/load.groovy @@ -39,8 +39,8 @@ suite("load") { sql "DROP TABLE IF EXISTS ${tableName}" int max_subcolumns_count = Math.floor(Math.random() * 7) def var_def = "variant" - if (max_subcolumns_count % 2) { - var_def = "variant<'O_CLERK' : string, 'C_COMMENT' : string, 'L_RETURNFLAG' : string, 'S_COMMENT' : string, 'S_ACCTBAL' : double>" + if (max_subcolumns_count % 2 == 0) { + var_def = "variant<'O_CLERK' : string, 'C_COMMENT' : string, 'L_RETURNFLAG' : string, 'S_COMMENT' : string, 'S_ACCTBAL' : double, properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\", \"variant_enable_typed_paths_to_sparse\" = \"false\")>" } sql """ CREATE TABLE IF NOT EXISTS ${tableName} ( @@ -49,7 +49,7 @@ suite("load") { ) DUPLICATE KEY(`k`) DISTRIBUTED BY RANDOM BUCKETS 5 - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "${max_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ streamLoad { // a default db 'regression_test' is specified in diff --git a/regression-test/suites/variant_p0/variant_with_mow.groovy b/regression-test/suites/variant_p0/variant_with_mow.groovy index 459a40619796b6..d48882687dc939 100644 --- a/regression-test/suites/variant_p0/variant_with_mow.groovy +++ b/regression-test/suites/variant_p0/variant_with_mow.groovy @@ -27,7 +27,7 @@ suite("variant_with_mow") { `INGESTIONTIMESTAMP` bigint NOT NULL, `PROCESSEDTIMESTAMP` bigint NOT NULL, `VERSION` bigint NULL DEFAULT "0", - `OVERFLOWPROPERTIES` variant NULL, + `OVERFLOWPROPERTIES` variant NULL, INDEX objects_properties_idx (`OVERFLOWPROPERTIES`) USING INVERTED COMMENT 'This is an inverted index on all properties of the object' ) ENGINE=OLAP UNIQUE KEY(`PORTALID`, `OBJECTTYPEID`, `OBJECTIDHASH`, `OBJECTID`) @@ -36,7 +36,6 @@ suite("variant_with_mow") { "replication_allocation" = "tag.location.default: 1", "enable_unique_key_merge_on_write" = "true", "function_column.sequence_col" = "VERSION", - "variant_max_subcolumns_count" = "100", "disable_auto_compaction" = "true" ); """ diff --git a/regression-test/suites/variant_p0/with_index/bloom_filter.groovy b/regression-test/suites/variant_p0/with_index/bloom_filter.groovy index 328c65f04df2e0..eddbf94e6f0c2f 100644 --- a/regression-test/suites/variant_p0/with_index/bloom_filter.groovy +++ b/regression-test/suites/variant_p0/with_index/bloom_filter.groovy @@ -21,11 +21,11 @@ suite("regression_test_variant_with_bf", "nonConcurrent,p0"){ sql """ CREATE TABLE IF NOT EXISTS var_with_bloom_filter ( k bigint, - v variant + v variant ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 1 - properties("replication_num" = "1", "bloom_filter_columns" = "v", "bloom_filter_fpp" = "0.0001", "variant_max_subcolumns_count" = "10"); + properties("replication_num" = "1", "bloom_filter_columns" = "v", "bloom_filter_fpp" = "0.0001"); """ sql """insert into var_with_bloom_filter values (1, '{"a" : 123456}')""" sql """insert into var_with_bloom_filter values (2, '{"a" : 789111}')""" diff --git a/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy b/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy index f567c7e033aca4..61623524c812e1 100644 --- a/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy +++ b/regression-test/suites/variant_p0/with_index/test_array_contains_with_inverted_index.groovy @@ -36,7 +36,8 @@ suite("test_array_contains_with_inverted_index") { `apply_date` date NULL COMMENT '', `id` varchar(60) NOT NULL COMMENT '', `inventors` variant< - MATCH_NAME 'inventors' : array + MATCH_NAME 'inventors' : array, + properties("variant_max_subcolumns_count" = "10") > NULL COMMENT '', INDEX index_inverted_inventors(inventors) USING INVERTED PROPERTIES( "field_pattern" = "inventors", "support_phrase" = "true", "parser" = "english", "lower_case" = "true") COMMENT '' ) ENGINE=OLAP @@ -50,8 +51,7 @@ suite("test_array_contains_with_inverted_index") { "light_schema_change" = "true", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", - "inverted_index_storage_format" = "$storageFormat", - "variant_max_subcolumns_count" = "10" + "inverted_index_storage_format" = "$storageFormat" ); """ diff --git a/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy b/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy index cb1100aa01af34..9583d770c8301c 100644 --- a/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy +++ b/regression-test/suites/variant_p0/with_index/test_array_index_write.groovy @@ -20,7 +20,7 @@ suite("test_array_index_write", "nonConcurrent"){ def create_variant_index_table = { testTablex, parser -> def stmt = "CREATE TABLE IF NOT EXISTS " + testTablex + "(\n" + " k1 INT NULL,\n" + - " c_arr VARIANT<'c_arr' : array> NULL COMMENT '',\n" + " c_arr VARIANT<'c_arr' : array, properties(\"variant_max_subcolumns_count\" = \"10\")> NULL COMMENT '',\n" String strTmp = parser == "" ? "INDEX index_inverted_c_arr(c_arr) USING INVERTED PROPERTIES( \"field_pattern\"=\"c_arr\") COMMENT 'c_arr index',\n" : "INDEX index_inverted_c_arr(c_arr) USING INVERTED PROPERTIES( \"field_pattern\"=\"c_arr\", \"parser\"=\" " + parser + "\") COMMENT 'c_arr index',\n" @@ -35,7 +35,7 @@ suite("test_array_index_write", "nonConcurrent"){ "DUPLICATE KEY(`k1`)\n" + "COMMENT 'OLAP'\n" + "DISTRIBUTED BY HASH(`k1`) BUCKETS 10\n" + - "PROPERTIES(\"replication_num\" = \"1\", \"inverted_index_storage_format\" = \"$storageFormat\", \"variant_max_subcolumns_count\" = \"10\");" + "PROPERTIES(\"replication_num\" = \"1\", \"inverted_index_storage_format\" = \"$storageFormat\");" return stmt } diff --git a/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy b/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy index f456e1bc04190d..47cf0282587b0c 100644 --- a/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy +++ b/regression-test/suites/variant_p0/with_index/test_array_inverted_index_profile.groovy @@ -77,7 +77,7 @@ suite("test_variant_arrayInvertedIdx_profile", "p0,nonConcurrent"){ CREATE TABLE IF NOT EXISTS `${indexTblName}` ( `apply_date` date NULL COMMENT '', `id` varchar(60) NOT NULL COMMENT '', - `inventors` variant<'inventors' : array> NULL COMMENT '', + `inventors` variant<'inventors' : array, properties("variant_max_subcolumns_count" = "10")> NULL COMMENT '', INDEX index_inverted_inventors(inventors) USING INVERTED PROPERTIES( "field_pattern" = "inventors") COMMENT '' ) ENGINE=OLAP DUPLICATE KEY(`apply_date`, `id`) @@ -90,7 +90,6 @@ suite("test_variant_arrayInvertedIdx_profile", "p0,nonConcurrent"){ "light_schema_change" = "true", "disable_auto_compaction" = "false", "enable_single_replica_compaction" = "false", - "variant_max_subcolumns_count" = "10", "inverted_index_storage_format" = "$storageFormat" ); """ diff --git a/regression-test/suites/variant_p0/with_index/var_index.groovy b/regression-test/suites/variant_p0/with_index/var_index.groovy index 7246baf4cb122b..9beff3132b43db 100644 --- a/regression-test/suites/variant_p0/with_index/var_index.groovy +++ b/regression-test/suites/variant_p0/with_index/var_index.groovy @@ -17,6 +17,7 @@ suite("regression_test_variant_var_index", "p0, nonConcurrent"){ def table_name = "var_index" + sql """ set global_variant_enable_typed_paths_to_sparse = false """ sql "DROP TABLE IF EXISTS var_index" sql """ CREATE TABLE IF NOT EXISTS var_index ( diff --git a/regression-test/suites/variant_p1/compaction/compaction_sparse_column.groovy b/regression-test/suites/variant_p1/compaction/compaction_sparse_column.groovy index b77db0226a8332..e6fffa25b41d62 100644 --- a/regression-test/suites/variant_p1/compaction/compaction_sparse_column.groovy +++ b/regression-test/suites/variant_p1/compaction/compaction_sparse_column.groovy @@ -50,14 +50,13 @@ suite("test_compaction_sparse_column", "p1") { sql """ CREATE TABLE ${tableName} ( k bigint, - v variant + v variant ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(`k`) BUCKETS 1 PROPERTIES ( "replication_num" = "1", - "disable_auto_compaction" = "true", - "variant_max_subcolumns_count" = "3" + "disable_auto_compaction" = "true" ); """ diff --git a/regression-test/suites/variant_p1/compaction/test_compaction_extract_root.groovy b/regression-test/suites/variant_p1/compaction/test_compaction_extract_root.groovy index 3d3dd848c62ecf..ab042122a906d3 100644 --- a/regression-test/suites/variant_p1/compaction/test_compaction_extract_root.groovy +++ b/regression-test/suites/variant_p1/compaction/test_compaction_extract_root.groovy @@ -23,7 +23,7 @@ suite("test_compaction_extract_root", "p1") { sql """ CREATE TABLE ${tableName} ( k bigint, - v variant + v variant ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(`k`) BUCKETS 1 @@ -77,8 +77,5 @@ suite("test_compaction_extract_root", "p1") { // qt_select_b_5 """ select v['b'] from test_t where cast(v['b'] as string) != '42005' and cast(v['b'] as string) != '42004' and cast(v['b'] as string) != '42003' order by cast(v['b'] as string); """ qt_select_1 """select v['b'] from test_t where k = 0 and cast(v['a'] as int) = 11245;""" -<<<<<<< HEAD -======= ->>>>>>> b4f01947a44 ([feature](semi-structure) support variant and index with many features) } diff --git a/regression-test/suites/variant_p1/predefine/load.groovy b/regression-test/suites/variant_p1/predefine/load.groovy index 6143b723d073e9..ae6012401ef974 100644 --- a/regression-test/suites/variant_p1/predefine/load.groovy +++ b/regression-test/suites/variant_p1/predefine/load.groovy @@ -18,7 +18,9 @@ import org.codehaus.groovy.runtime.IOGroovyMethods suite("test_predefine_type_multi_index", "p1"){ - + + sql """ set global_variant_enable_typed_paths_to_sparse = false """ + def load_json_data = {table_name, file_name -> // load the json data streamLoad { @@ -66,14 +68,15 @@ suite("test_predefine_type_multi_index", "p1"){ MATCH_NAME 'created_at' : datetime, MATCH_NAME 'payload.issue.number' : int, MATCH_NAME 'payload.comment.body' : string, - MATCH_NAME 'type.name' : string + MATCH_NAME 'type.name' : string, + properties("variant_max_subcolumns_count" = "${rand_subcolumns_count}") > NULL, INDEX idx_var (`v`) USING INVERTED PROPERTIES("parser" = "english", "support_phrase" = "true"), INDEX idx_var_2 (`v`) USING INVERTED ) DUPLICATE KEY(`k`) DISTRIBUTED BY HASH(k) BUCKETS 4 - properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_enable_flatten_nested" = "true", "variant_max_subcolumns_count" = "${rand_subcolumns_count}"); + properties("replication_num" = "1", "disable_auto_compaction" = "true", "variant_enable_flatten_nested" = "true"); """ // 2015 diff --git a/regression-test/suites/variant_p2/load.groovy b/regression-test/suites/variant_p2/load.groovy index 08b4a58748d6e7..de9676fb4b37f7 100644 --- a/regression-test/suites/variant_p2/load.groovy +++ b/regression-test/suites/variant_p2/load.groovy @@ -53,9 +53,9 @@ suite("load_p2", "variant_type,p2"){ CREATE TABLE IF NOT EXISTS ${table_name} ( id BIGINT NOT NULL, type VARCHAR(30) NULL, - actor VARIANT NULL, - repo VARIANT NULL, - payload VARIANT NULL, + actor VARIANT NULL, + repo VARIANT NULL, + payload VARIANT NULL, public BOOLEAN NULL, created_at DATETIME NULL, org JSON NULL @@ -65,7 +65,7 @@ suite("load_p2", "variant_type,p2"){ ) DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(id) BUCKETS ${buckets} - properties("replication_num" = "1", "disable_auto_compaction" = "false", "variant_max_subcolumns_count" = "9"); + properties("replication_num" = "1", "disable_auto_compaction" = "false"); """ } From 4de88df1466ef3bb6c72e13e7cad1ced53b06248 Mon Sep 17 00:00:00 2001 From: csun5285 Date: Wed, 30 Jul 2025 15:27:32 +0800 Subject: [PATCH 2/2] fix case --- regression-test/suites/variant_p0/predefine/multi_var.groovy | 4 ++-- .../suites/variant_p0/predefine/test_predefine_ddl.groovy | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/regression-test/suites/variant_p0/predefine/multi_var.groovy b/regression-test/suites/variant_p0/predefine/multi_var.groovy index 77292f1107caa7..edfd5b70a2cdce 100644 --- a/regression-test/suites/variant_p0/predefine/multi_var.groovy +++ b/regression-test/suites/variant_p0/predefine/multi_var.groovy @@ -36,10 +36,10 @@ suite("regression_test_variant_predefine_multi_var", "variant_type"){ sql """INSERT INTO ${table_name} SELECT *, '{"k7":123, "k8": "elden ring", "k9" : 1.1112, "k10" : [1.12], "k11" : ["moon"]}' FROM numbers("number" = "203") where number > 100""" sql """INSERT INTO ${table_name} SELECT *, '{"k7":123, "k8": "elden ring", "k9" : 1.1112, "k10" : [1.12], "k11" : ["moon"]}' FROM numbers("number" = "411") where number > 200""" trigger_and_wait_compaction(table_name, "cumulative") - sql """alter table ${table_name} add column v2 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double default null, + sql """alter table ${table_name} add column v2 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double , properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\", \"variant_enable_typed_paths_to_sparse\" = \"${enable_typed_paths_to_sparse}\")> default null""" sql """INSERT INTO ${table_name} select k, v, v from ${table_name}""" - sql """alter table ${table_name} add column v3 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double default null, + sql """alter table ${table_name} add column v3 variant<'k1' : int, 'k2' : string, 'k3' : array, 'k4' : double, properties(\"variant_max_subcolumns_count\" = \"${max_subcolumns_count}\", \"variant_enable_typed_paths_to_sparse\" = \"${enable_typed_paths_to_sparse}\")> default null""" sql """INSERT INTO ${table_name} select k, v, v, v from ${table_name}""" sql "alter table ${table_name} add column ss string default null" diff --git a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy index 83be9d7a6c635d..9c9aa0bffb9450 100644 --- a/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy +++ b/regression-test/suites/variant_p0/predefine/test_predefine_ddl.groovy @@ -105,8 +105,7 @@ suite("test_predefine_ddl", "p0") { sql """ alter table ${tableName} modify column var variant<'ab' : string> NULL """ exception("Can not modify variant column with children") } - - sql """ alter table test_ddl_table add column var2 variant<'ab' : string> NULL """ + sql "DROP TABLE IF EXISTS ${tableName}" sql """CREATE TABLE ${tableName} (