From f4e84e779dc33987a407163fb2b93c3f6d77c1e7 Mon Sep 17 00:00:00 2001 From: Qi Chen Date: Tue, 25 Nov 2025 11:07:44 +0800 Subject: [PATCH 01/12] [feature](reader) Optimize Complex Type Column Reading with Column Pruning (#57204) Problem Summary: Optimize Complex Type Column Reading with Column Pruning This PR implements column pruning for complex types (Struct, Array, Map) to optimize read performance. Previously, Doris would read entire complex type fields before processing, which was simple to implement but inefficient when only specific sub-columns were needed. **Key changes:** - **FE (Frontend)**: Added column access path calculation and type pruning - Collects and analyzes access paths for complex type fields - Performs type pruning based on access paths - Implements projection pushdown for complex types - **BE (Backend)**: Added selective column reading - Uses columnAccessPath array from FE to identify required sub-columns - Implements selective reading to skip unnecessary sub-columns **Performance Improvement**: When a struct contains hundreds or thousands of columns but the query only accesses a few sub-columns, this optimization can significantly reduce I/O and improve query performance. For example, with `struct s`, when only `s.a` is referenced, we can avoid reading `s.b` entirely. **Technical Benefits**: Reduces unnecessary data scanning and decoding overhead for complex types, aligning with Doris's continuous performance optimization goals . - **Lazy Materialization for Complex Type Sub-columns**: Defer materialization of unused sub-columns - **Predicate Pushdown for Complex Type Sub-columns**: Push predicates to storage layer for better filtering - **Parquet RL/DL Optimization**: Read only repetition levels and definition levels without data in appropriate scenarios - **Array Size Optimization**: Read only offset and null values for `array_size()` operations - **Null Check Optimization**: Read only offset and null values for `!= null` checks Co-authored-by: 924060929 Co-authored-by: Jerry Hu --- be/src/http/action/debug_point_action.cpp | 1 - be/src/olap/iterators.h | 4 +- be/src/olap/rowset/beta_rowset_reader.cpp | 4 + be/src/olap/rowset/rowset_reader_context.h | 5 + .../olap/rowset/segment_v2/column_reader.cpp | 361 +- be/src/olap/rowset/segment_v2/column_reader.h | 70 +- be/src/olap/rowset/segment_v2/segment.cpp | 16 + be/src/olap/tablet_reader.cpp | 3 + be/src/olap/tablet_reader.h | 4 + be/src/olap/tablet_schema.cpp | 19 + be/src/olap/tablet_schema.h | 10 + be/src/runtime/descriptors.cpp | 58 +- be/src/runtime/descriptors.h | 14 + be/src/vec/columns/column_map.cpp | 1 + be/src/vec/data_types/data_type_factory.cpp | 3 +- be/src/vec/exec/format/orc/vorc_reader.cpp | 375 +- be/src/vec/exec/format/orc/vorc_reader.h | 19 +- .../vec/exec/format/parquet/schema_desc.cpp | 87 +- be/src/vec/exec/format/parquet/schema_desc.h | 30 +- .../format/parquet/vparquet_column_reader.cpp | 203 +- .../format/parquet/vparquet_column_reader.h | 101 +- .../format/parquet/vparquet_group_reader.cpp | 27 +- .../format/parquet/vparquet_group_reader.h | 8 +- .../exec/format/parquet/vparquet_reader.cpp | 64 +- .../vec/exec/format/parquet/vparquet_reader.h | 7 +- .../hive/hive_orc_nested_column_utils.cpp | 168 + .../table/hive/hive_orc_nested_column_utils.h | 43 + .../hive/hive_parquet_nested_column_utils.cpp | 171 + .../hive/hive_parquet_nested_column_utils.h | 41 + be/src/vec/exec/format/table/hive_reader.cpp | 275 +- be/src/vec/exec/format/table/hive_reader.h | 14 + .../iceberg_orc_nested_column_utils.cpp | 168 + .../iceberg/iceberg_orc_nested_column_utils.h | 44 + .../iceberg_parquet_nested_column_utils.cpp | 172 + .../iceberg_parquet_nested_column_utils.h | 42 + .../vec/exec/format/table/iceberg_reader.cpp | 161 +- be/src/vec/exec/format/table/iceberg_reader.h | 7 + .../table/nested_column_access_helper.h | 82 + .../exec/format/table/table_format_reader.cpp | 21 +- .../exec/format/table/table_format_reader.h | 36 + be/src/vec/exec/scan/file_scanner.cpp | 6 +- be/src/vec/exec/scan/file_scanner.h | 2 +- be/src/vec/exec/scan/olap_scanner.cpp | 22 +- be/src/vec/functions/function.cpp | 3 + ...63-0081-4127-bebe-35dc7dc1edeb-0-00001.orc | Bin 0 -> 2277 bytes ...63-0081-4127-bebe-35dc7dc1edeb-0-00001.orc | Bin 0 -> 2334 bytes ...-e0bd-4db6-b550-6323977446a4.metadata.json | 145 + ...-3129-4bfb-9b4b-c1510c566d73.metadata.json | 176 + ...876742-85c2-4f84-ae24-292482fa9288-m0.avro | Bin 0 -> 8175 bytes ...-6a876742-85c2-4f84-ae24-292482fa9288.avro | Bin 0 -> 4264 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4068 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4020 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4043 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4082 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4067 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4047 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4077 bytes ...3b6-4e73-b181-f0a09aac7034-0-00001.parquet | Bin 0 -> 4147 bytes ...-31af-46c8-9274-506c7f2709c9.metadata.json | 145 + ...-f823-4900-8185-3eb3cb23e4a9.metadata.json | 176 + ...fb6058-7fc2-4791-96a9-f3111933728a-m0.avro | Bin 0 -> 8783 bytes ...-51fb6058-7fc2-4791-96a9-f3111933728a.avro | Bin 0 -> 4264 bytes ...37-16a4-47c6-96db-0007175b5c90-0-00001.orc | Bin 0 -> 7181 bytes ...-0948-4f33-bcf4-5b6bcb0cd400.metadata.json | 548 ++ ...-6aa8-4864-9d15-546dd5a6bae4.metadata.json | 579 ++ ...aed717-61ef-422b-b044-a16ca31f9e86-m0.avro | 1 + ...-d9aed717-61ef-422b-b044-a16ca31f9e86.avro | Bin 0 -> 4261 bytes ...581-40e4-8d56-a929aded99e4-0-00001.parquet | Bin 0 -> 21586 bytes ...-be1a-410b-ae74-7cf04ad10765.metadata.json | 548 ++ ...-e89e-4c9f-a0fb-7f3075d4e8f9.metadata.json | 579 ++ ...e22dff-a1d3-420d-bfba-c1b4193ab0df-m0.avro | 5 + ...-bee22dff-a1d3-420d-bfba-c1b4193ab0df.avro | Bin 0 -> 4262 bytes .../nested_user_profiles_orc/_SUCCESS | 0 ...5d1-4043-a533-b155ef52b720-c000.snappy.orc | Bin 0 -> 8396 bytes .../nested_user_profiles_parquet/_SUCCESS | 0 ...4efc-ab51-557e9369a1f9-c000.snappy.parquet | Bin 0 -> 21157 bytes .../rowset/segment_v2/column_reader_test.cpp | 220 + .../format/parquet/parquet_thrift_test.cpp | 12 +- .../hive_reader_create_column_ids_test.cpp | 1193 +++ .../format/table/hive/hive_reader_test.cpp | 741 ++ .../iceberg_reader_create_column_ids_test.cpp | 1184 +++ .../table/iceberg/iceberg_reader_test.cpp | 733 ++ contrib/apache-orc | 2 +- .../apache/doris/analysis/AccessPathInfo.java | 38 + .../apache/doris/analysis/SlotDescriptor.java | 43 + .../apache/doris/datasource/FileScanNode.java | 15 +- .../datasource/hive/HMSExternalTable.java | 40 + .../datasource/hive/source/HiveScanNode.java | 37 +- .../doris/nereids/StatementContext.java | 9 + .../translator/PhysicalPlanTranslator.java | 5 +- .../translator/PlanTranslatorContext.java | 18 + .../doris/nereids/jobs/executor/Rewriter.java | 6 + .../apache/doris/nereids/rules/RuleSet.java | 2 + .../apache/doris/nereids/rules/RuleType.java | 8 + .../nereids/rules/analysis/BindRelation.java | 11 +- .../rules/analysis/ExpressionAnalyzer.java | 10 + .../rules/analysis/NormalizeAggregate.java | 3 +- .../expression/ExpressionNormalization.java | 2 + .../rules/expression/ExpressionRuleType.java | 2 + .../rules/NormalizeStructElement.java | 66 + .../AccessPathExpressionCollector.java | 511 ++ .../rewrite/AccessPathPlanCollector.java | 176 + .../rules/rewrite/NestedColumnPruning.java | 486 ++ .../rules/rewrite/PushDownProject.java | 412 + .../rules/rewrite/SlotTypeReplacer.java | 728 ++ .../rules/rewrite/VariantSubPathPruning.java | 3 +- .../apache/doris/nereids/trees/TreeNode.java | 2 +- .../expressions/PreferPushDownProject.java | 41 + .../trees/expressions/SlotReference.java | 56 +- .../functions/scalar/ArrayFirst.java | 6 + .../functions/scalar/ArrayLast.java | 6 + .../functions/scalar/ArrayMap.java | 3 +- .../functions/scalar/ElementAt.java | 4 +- .../functions/scalar/HighOrderFunction.java | 3 +- .../functions/scalar/MapContainsEntry.java | 3 +- .../functions/scalar/MapContainsKey.java | 3 +- .../functions/scalar/MapContainsValue.java | 3 +- .../functions/scalar/MapEntries.java | 3 +- .../expressions/functions/scalar/MapKeys.java | 3 +- .../functions/scalar/MapValues.java | 3 +- .../functions/scalar/StructElement.java | 9 +- .../expressions/functions/table/File.java | 8 +- .../expressions/functions/table/Hdfs.java | 9 +- .../expressions/functions/table/Local.java | 9 +- .../trees/expressions/functions/table/S3.java | 9 +- .../visitor/ScalarFunctionVisitor.java | 14 +- .../trees/plans/logical/LogicalFileScan.java | 77 +- .../trees/plans/logical/LogicalHudiScan.java | 22 +- .../trees/plans/logical/LogicalOlapScan.java | 24 +- .../plans/logical/LogicalTVFRelation.java | 23 +- .../logical/SupportPruneNestedColumn.java | 24 + .../SupportPruneNestedColumnFormats.java | 42 + .../apache/doris/nereids/types/ArrayType.java | 2 +- .../apache/doris/nereids/types/MapType.java | 2 +- .../nereids/types/NestedColumnPrunable.java | 22 + .../doris/nereids/types/StructField.java | 3 +- .../doris/nereids/types/StructType.java | 6 +- .../doris/planner/MaterializationNode.java | 2 + .../apache/doris/planner/OlapScanNode.java | 3 + .../org/apache/doris/planner/PlanNode.java | 113 +- .../org/apache/doris/qe/SessionVariable.java | 9 + .../rules/rewrite/PruneNestedColumnTest.java | 652 ++ .../doris/utframe/TestWithFeService.java | 4 +- gensrc/proto/descriptors.proto | 45 + gensrc/thrift/Descriptors.thrift | 46 + .../complex_types/test_pruned_columns.out | 31 + .../data/nereids_arith_p0/decimal.out | 7600 ++++++++-------- .../data/nereids_arith_p0/integer.out | 7644 ++++++++--------- .../data/nereids_arith_p0/string.out | 4332 +++++----- .../complex_types/test_pruned_columns.groovy | 88 + 150 files changed, 23513 insertions(+), 10090 deletions(-) create mode 100644 be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.cpp create mode 100644 be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.h create mode 100644 be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.cpp create mode 100644 be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.h create mode 100644 be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.cpp create mode 100644 be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.h create mode 100644 be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.cpp create mode 100644 be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.h create mode 100644 be/src/vec/exec/format/table/nested_column_access_helper.h create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/00000-0-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/00001-1-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_orc/metadata/00000-aa52c4c8-e0bd-4db6-b550-6323977446a4.metadata.json create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_orc/metadata/00001-88a66011-3129-4bfb-9b4b-c1510c566d73.metadata.json create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_orc/metadata/6a876742-85c2-4f84-ae24-292482fa9288-m0.avro create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_orc/metadata/snap-2197982135324349212-1-6a876742-85c2-4f84-ae24-292482fa9288.avro create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00000-0-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00001-1-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00002-2-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00003-3-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00004-4-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00005-5-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00006-6-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00007-7-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00000-30938ed9-31af-46c8-9274-506c7f2709c9.metadata.json create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00001-b1b4732d-f823-4900-8185-3eb3cb23e4a9.metadata.json create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/51fb6058-7fc2-4791-96a9-f3111933728a-m0.avro create mode 100644 be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/snap-1689809712605583552-1-51fb6058-7fc2-4791-96a9-f3111933728a.avro create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_orc/data/00000-8-5a144c37-16a4-47c6-96db-0007175b5c90-0-00001.orc create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00000-daa20949-0948-4f33-bcf4-5b6bcb0cd400.metadata.json create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00001-5c6ddc20-6aa8-4864-9d15-546dd5a6bae4.metadata.json create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/d9aed717-61ef-422b-b044-a16ca31f9e86-m0.avro create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/snap-514179801967160228-1-d9aed717-61ef-422b-b044-a16ca31f9e86.avro create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_parquet/data/00000-9-a7e0135f-d581-40e4-8d56-a929aded99e4-0-00001.parquet create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00000-ed5ae7dc-be1a-410b-ae74-7cf04ad10765.metadata.json create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00001-a1156265-e89e-4c9f-a0fb-7f3075d4e8f9.metadata.json create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/bee22dff-a1d3-420d-bfba-c1b4193ab0df-m0.avro create mode 100644 be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/snap-6622777947381868002-1-bee22dff-a1d3-420d-bfba-c1b4193ab0df.avro create mode 100644 be/test/exec/test_data/nested_user_profiles_orc/_SUCCESS create mode 100644 be/test/exec/test_data/nested_user_profiles_orc/part-00000-62614f23-05d1-4043-a533-b155ef52b720-c000.snappy.orc create mode 100644 be/test/exec/test_data/nested_user_profiles_parquet/_SUCCESS create mode 100644 be/test/exec/test_data/nested_user_profiles_parquet/part-00000-64a7a390-1a03-4efc-ab51-557e9369a1f9-c000.snappy.parquet create mode 100644 be/test/olap/rowset/segment_v2/column_reader_test.cpp create mode 100644 be/test/vec/exec/format/table/hive/hive_reader_create_column_ids_test.cpp create mode 100644 be/test/vec/exec/format/table/hive/hive_reader_test.cpp create mode 100644 be/test/vec/exec/format/table/iceberg/iceberg_reader_create_column_ids_test.cpp create mode 100644 be/test/vec/exec/format/table/iceberg/iceberg_reader_test.cpp create mode 100644 fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/NormalizeStructElement.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/PreferPushDownProject.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumn.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumnFormats.java create mode 100644 fe/fe-core/src/main/java/org/apache/doris/nereids/types/NestedColumnPrunable.java create mode 100644 fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java create mode 100644 regression-test/data/datatype_p0/complex_types/test_pruned_columns.out create mode 100644 regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy diff --git a/be/src/http/action/debug_point_action.cpp b/be/src/http/action/debug_point_action.cpp index 04aa38efaa4b74..babea96268a20e 100644 --- a/be/src/http/action/debug_point_action.cpp +++ b/be/src/http/action/debug_point_action.cpp @@ -35,7 +35,6 @@ void BaseDebugPointAction::handle(HttpRequest* req) { "Disable debug points. please check config::enable_debug_points"); } std::string result = status.to_json(); - LOG(INFO) << "handle request result:" << result; if (status.ok()) { HttpChannel::send_reply(req, HttpStatus::OK, result); } else { diff --git a/be/src/olap/iterators.h b/be/src/olap/iterators.h index 7c38c52eb2e856..3379d50368ed90 100644 --- a/be/src/olap/iterators.h +++ b/be/src/olap/iterators.h @@ -46,7 +46,6 @@ struct IteratorRowRef; namespace segment_v2 { struct SubstreamIterator; } - class StorageReadOptions { public: struct KeyRange { @@ -127,6 +126,9 @@ class StorageReadOptions { std::map vir_cid_to_idx_in_block; std::map vir_col_idx_to_type; + std::map all_access_paths; + std::map predicate_access_paths; + std::shared_ptr score_runtime; CollectionStatisticsPtr collection_statistics; }; diff --git a/be/src/olap/rowset/beta_rowset_reader.cpp b/be/src/olap/rowset/beta_rowset_reader.cpp index feecc89c1c10a8..3d4f4a12554d0a 100644 --- a/be/src/olap/rowset/beta_rowset_reader.cpp +++ b/be/src/olap/rowset/beta_rowset_reader.cpp @@ -103,6 +103,10 @@ Status BetaRowsetReader::get_segment_iterators(RowsetReaderContext* read_context _read_options.remaining_conjunct_roots = _read_context->remaining_conjunct_roots; _read_options.common_expr_ctxs_push_down = _read_context->common_expr_ctxs_push_down; _read_options.virtual_column_exprs = _read_context->virtual_column_exprs; + + _read_options.all_access_paths = _read_context->all_access_paths; + _read_options.predicate_access_paths = _read_context->predicate_access_paths; + _read_options.ann_topn_runtime = _read_context->ann_topn_runtime; _read_options.vir_cid_to_idx_in_block = _read_context->vir_cid_to_idx_in_block; _read_options.vir_col_idx_to_type = _read_context->vir_col_idx_to_type; diff --git a/be/src/olap/rowset/rowset_reader_context.h b/be/src/olap/rowset/rowset_reader_context.h index 67c6db392db67a..1378ebb7cb7a49 100644 --- a/be/src/olap/rowset/rowset_reader_context.h +++ b/be/src/olap/rowset/rowset_reader_context.h @@ -18,6 +18,8 @@ #ifndef DORIS_BE_SRC_OLAP_ROWSET_ROWSET_READER_CONTEXT_H #define DORIS_BE_SRC_OLAP_ROWSET_ROWSET_READER_CONTEXT_H +#include + #include "io/io_common.h" #include "olap/column_predicate.h" #include "olap/olap_common.h" @@ -90,6 +92,9 @@ struct RowsetReaderContext { std::map vir_cid_to_idx_in_block; std::map vir_col_idx_to_type; + std::map all_access_paths; + std::map predicate_access_paths; + std::shared_ptr score_runtime; CollectionStatisticsPtr collection_statistics; std::shared_ptr ann_topn_runtime; diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 485b57e549f0d1..7c51bc7d082ecc 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -18,6 +18,7 @@ #include "olap/rowset/segment_v2/column_reader.h" #include +#include #include #include @@ -68,11 +69,11 @@ #include "vec/columns/column_map.h" #include "vec/columns/column_nullable.h" #include "vec/columns/column_struct.h" -#include "vec/columns/column_variant.h" #include "vec/columns/column_vector.h" #include "vec/common/assert_cast.h" #include "vec/common/schema_util.h" #include "vec/common/string_ref.h" +#include "vec/common/typeid_cast.h" #include "vec/core/types.h" #include "vec/data_types/data_type_agg_state.h" #include "vec/data_types/data_type_factory.hpp" @@ -821,11 +822,12 @@ Status ColumnReader::new_iterator(ColumnIteratorUPtr* iterator, const TabletColu *iterator = std::make_unique(); return Status::OK(); } - if (is_scalar_type((FieldType)_meta_type)) { + if (is_scalar_type(_meta_type)) { *iterator = std::make_unique(shared_from_this()); + (*iterator)->set_column_name(tablet_column ? tablet_column->name() : ""); return Status::OK(); } else { - auto type = (FieldType)_meta_type; + auto type = _meta_type; switch (type) { case FieldType::OLAP_FIELD_TYPE_AGG_STATE: { return new_agg_state_iterator(iterator); @@ -859,6 +861,8 @@ Status ColumnReader::new_array_iterator(ColumnIteratorUPtr* iterator, ? &tablet_column->get_sub_column(0) : nullptr)); + item_iterator->set_column_name(tablet_column ? tablet_column->get_sub_column(0).name() : ""); + ColumnIteratorUPtr offset_iterator; RETURN_IF_ERROR(_sub_readers[1]->new_iterator(&offset_iterator, nullptr)); auto* file_iter = static_cast(offset_iterator.release()); @@ -882,11 +886,13 @@ Status ColumnReader::new_map_iterator(ColumnIteratorUPtr* iterator, &key_iterator, tablet_column && tablet_column->get_subtype_count() > 1 ? &tablet_column->get_sub_column(0) : nullptr)); + key_iterator->set_column_name(tablet_column ? tablet_column->get_sub_column(0).name() : ""); ColumnIteratorUPtr val_iterator; RETURN_IF_ERROR(_sub_readers[1]->new_iterator( &val_iterator, tablet_column && tablet_column->get_subtype_count() > 1 ? &tablet_column->get_sub_column(1) : nullptr)); + val_iterator->set_column_name(tablet_column ? tablet_column->get_sub_column(1).name() : ""); ColumnIteratorUPtr offsets_iterator; RETURN_IF_ERROR(_sub_readers[2]->new_iterator(&offsets_iterator, nullptr)); auto* file_iter = static_cast(offsets_iterator.release()); @@ -914,6 +920,8 @@ Status ColumnReader::new_struct_iterator(ColumnIteratorUPtr* iterator, ColumnIteratorUPtr sub_column_iterator; RETURN_IF_ERROR(_sub_readers[i]->new_iterator( &sub_column_iterator, tablet_column ? &tablet_column->get_sub_column(i) : nullptr)); + sub_column_iterator->set_column_name(tablet_column ? tablet_column->get_sub_column(i).name() + : ""); sub_column_iterators.emplace_back(std::move(sub_column_iterator)); } @@ -934,6 +942,33 @@ Status ColumnReader::new_struct_iterator(ColumnIteratorUPtr* iterator, return Status::OK(); } +Result ColumnIterator::_get_sub_access_paths( + const TColumnAccessPaths& access_paths) { + TColumnAccessPaths sub_access_paths = access_paths; + for (auto it = sub_access_paths.begin(); it != sub_access_paths.end();) { + TColumnAccessPath& name_path = *it; + if (name_path.data_access_path.path.empty()) { + return ResultError( + Status::InternalError("Invalid access path for struct column: path is empty")); + } + + if (!StringCaseEqual()(name_path.data_access_path.path[0], _column_name)) { + return ResultError(Status::InternalError( + R"(Invalid access path for column: expected name "{}", got "{}")", _column_name, + name_path.data_access_path.path[0])); + } + + name_path.data_access_path.path.erase(name_path.data_access_path.path.begin()); + if (!name_path.data_access_path.path.empty()) { + ++it; + } else { + set_need_to_read(); + it = sub_access_paths.erase(it); + } + } + return sub_access_paths; +} + ///====================== MapFileColumnIterator ============================//// MapFileColumnIterator::MapFileColumnIterator(std::shared_ptr reader, ColumnIteratorUPtr null_iterator, @@ -950,6 +985,10 @@ MapFileColumnIterator::MapFileColumnIterator(std::shared_ptr reade } Status MapFileColumnIterator::init(const ColumnIteratorOptions& opts) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Map column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } RETURN_IF_ERROR(_key_iterator->init(opts)); RETURN_IF_ERROR(_val_iterator->init(opts)); RETURN_IF_ERROR(_offsets_iterator->init(opts)); @@ -960,6 +999,11 @@ Status MapFileColumnIterator::init(const ColumnIteratorOptions& opts) { } Status MapFileColumnIterator::seek_to_ordinal(ordinal_t ord) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Map column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } + if (_map_reader->is_nullable()) { RETURN_IF_ERROR(_null_iterator->seek_to_ordinal(ord)); } @@ -974,10 +1018,16 @@ Status MapFileColumnIterator::seek_to_ordinal(ordinal_t ord) { Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr& dst, bool* has_null) { - const auto* column_map = vectorized::check_and_get_column( + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Map column iterator column " << _column_name << " skip reading."; + dst->resize(*n); + return Status::OK(); + } + + auto& column_map = assert_cast( dst->is_nullable() ? static_cast(*dst).get_nested_column() : *dst); - auto column_offsets_ptr = column_map->get_offsets_column().assume_mutable(); + auto column_offsets_ptr = column_map.get_offsets_column().assume_mutable(); bool offsets_has_null = false; ssize_t start = column_offsets_ptr->size(); RETURN_IF_ERROR(_offsets_iterator->next_batch(n, column_offsets_ptr, &offsets_has_null)); @@ -990,8 +1040,8 @@ Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr DCHECK(column_offsets.get_data().back() >= column_offsets.get_data()[start - 1]); size_t num_items = column_offsets.get_data().back() - column_offsets.get_data()[start - 1]; // -1 is valid - auto key_ptr = column_map->get_keys().assume_mutable(); - auto val_ptr = column_map->get_values().assume_mutable(); + auto key_ptr = column_map.get_keys().assume_mutable(); + auto val_ptr = column_map.get_values().assume_mutable(); if (num_items > 0) { size_t num_read = num_items; @@ -1000,6 +1050,9 @@ Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr RETURN_IF_ERROR(_key_iterator->next_batch(&num_read, key_ptr, &key_has_null)); RETURN_IF_ERROR(_val_iterator->next_batch(&num_read, val_ptr, &val_has_null)); DCHECK(num_read == num_items); + + column_map.get_keys_ptr() = std::move(key_ptr); + column_map.get_values_ptr() = std::move(val_ptr); } if (dst->is_nullable()) { @@ -1025,6 +1078,12 @@ Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr Status MapFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t count, vectorized::MutableColumnPtr& dst) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "File column iterator column " << _column_name << " skip reading."; + dst->resize(count); + return Status::OK(); + } + for (size_t i = 0; i < count; ++i) { RETURN_IF_ERROR(seek_to_ordinal(rowids[i])); size_t num_read = 1; @@ -1034,6 +1093,93 @@ Status MapFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t return Status::OK(); } +void MapFileColumnIterator::set_need_to_read() { + set_reading_flag(ReadingFlag::NEED_TO_READ); + _key_iterator->set_need_to_read(); + _val_iterator->set_need_to_read(); +} + +void MapFileColumnIterator::remove_pruned_sub_iterators() { + _key_iterator->remove_pruned_sub_iterators(); + _val_iterator->remove_pruned_sub_iterators(); +} + +Status MapFileColumnIterator::set_access_paths(const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) { + if (all_access_paths.empty()) { + return Status::OK(); + } + + if (!predicate_access_paths.empty()) { + set_reading_flag(ReadingFlag::READING_FOR_PREDICATE); + DLOG(INFO) << "Map column iterator set sub-column " << _column_name + << " to READING_FOR_PREDICATE"; + } + + auto sub_all_access_paths = DORIS_TRY(_get_sub_access_paths(all_access_paths)); + auto sub_predicate_access_paths = DORIS_TRY(_get_sub_access_paths(predicate_access_paths)); + + if (sub_all_access_paths.empty()) { + return Status::OK(); + } + + TColumnAccessPaths key_all_access_paths; + TColumnAccessPaths val_all_access_paths; + TColumnAccessPaths key_predicate_access_paths; + TColumnAccessPaths val_predicate_access_paths; + + for (auto paths : sub_all_access_paths) { + if (paths.data_access_path.path[0] == "*") { + paths.data_access_path.path[0] = _key_iterator->column_name(); + key_all_access_paths.emplace_back(paths); + paths.data_access_path.path[0] = _val_iterator->column_name(); + val_all_access_paths.emplace_back(paths); + } else if (paths.data_access_path.path[0] == "KEYS") { + paths.data_access_path.path[0] = _key_iterator->column_name(); + key_all_access_paths.emplace_back(paths); + } else if (paths.data_access_path.path[0] == "VALUES") { + paths.data_access_path.path[0] = _val_iterator->column_name(); + val_all_access_paths.emplace_back(paths); + } + } + const auto need_read_keys = !key_all_access_paths.empty(); + const auto need_read_values = !val_all_access_paths.empty(); + + for (auto paths : sub_predicate_access_paths) { + if (paths.data_access_path.path[0] == "*") { + paths.data_access_path.path[0] = _key_iterator->column_name(); + key_predicate_access_paths.emplace_back(paths); + paths.data_access_path.path[0] = _val_iterator->column_name(); + val_predicate_access_paths.emplace_back(paths); + } else if (paths.data_access_path.path[0] == "KEYS") { + paths.data_access_path.path[0] = _key_iterator->column_name(); + key_predicate_access_paths.emplace_back(paths); + } else if (paths.data_access_path.path[0] == "VALUES") { + paths.data_access_path.path[0] = _val_iterator->column_name(); + val_predicate_access_paths.emplace_back(paths); + } + } + + if (need_read_keys) { + _key_iterator->set_reading_flag(ReadingFlag::NEED_TO_READ); + RETURN_IF_ERROR( + _key_iterator->set_access_paths(key_all_access_paths, key_predicate_access_paths)); + } else { + _key_iterator->set_reading_flag(ReadingFlag::SKIP_READING); + DLOG(INFO) << "Map column iterator set key column to SKIP_READING"; + } + + if (need_read_values) { + _val_iterator->set_reading_flag(ReadingFlag::NEED_TO_READ); + RETURN_IF_ERROR( + _val_iterator->set_access_paths(val_all_access_paths, val_predicate_access_paths)); + } else { + _val_iterator->set_reading_flag(ReadingFlag::SKIP_READING); + DLOG(INFO) << "Map column iterator set value column to SKIP_READING"; + } + return Status::OK(); +} + //////////////////////////////////////////////////////////////////////////////// StructFileColumnIterator::StructFileColumnIterator( @@ -1046,6 +1192,11 @@ StructFileColumnIterator::StructFileColumnIterator( } Status StructFileColumnIterator::init(const ColumnIteratorOptions& opts) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Struct column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } + for (auto& column_iterator : _sub_column_iterators) { RETURN_IF_ERROR(column_iterator->init(opts)); } @@ -1057,16 +1208,23 @@ Status StructFileColumnIterator::init(const ColumnIteratorOptions& opts) { Status StructFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr& dst, bool* has_null) { - const auto* column_struct = vectorized::check_and_get_column( + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Struct column iterator column " << _column_name << " skip reading."; + dst->resize(*n); + return Status::OK(); + } + + auto& column_struct = assert_cast( dst->is_nullable() ? static_cast(*dst).get_nested_column() : *dst); - for (size_t i = 0; i < column_struct->tuple_size(); i++) { + for (size_t i = 0; i < column_struct.tuple_size(); i++) { size_t num_read = *n; - auto sub_column_ptr = column_struct->get_column(i).assume_mutable(); + auto sub_column_ptr = column_struct.get_column(i).assume_mutable(); bool column_has_null = false; RETURN_IF_ERROR( _sub_column_iterators[i]->next_batch(&num_read, sub_column_ptr, &column_has_null)); DCHECK(num_read == *n); + column_struct.get_column_ptr(i) = std::move(sub_column_ptr); } if (dst->is_nullable()) { @@ -1092,6 +1250,11 @@ Status StructFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumn } Status StructFileColumnIterator::seek_to_ordinal(ordinal_t ord) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Struct column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } + for (auto& column_iterator : _sub_column_iterators) { RETURN_IF_ERROR(column_iterator->seek_to_ordinal(ord)); } @@ -1103,6 +1266,12 @@ Status StructFileColumnIterator::seek_to_ordinal(ordinal_t ord) { Status StructFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t count, vectorized::MutableColumnPtr& dst) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Struct column iterator column " << _column_name << " skip reading."; + dst->resize(count); + return Status::OK(); + } + for (size_t i = 0; i < count; ++i) { RETURN_IF_ERROR(seek_to_ordinal(rowids[i])); size_t num_read = 1; @@ -1112,6 +1281,83 @@ Status StructFileColumnIterator::read_by_rowids(const rowid_t* rowids, const siz return Status::OK(); } +void StructFileColumnIterator::set_need_to_read() { + set_reading_flag(ReadingFlag::NEED_TO_READ); + for (auto& sub_iterator : _sub_column_iterators) { + sub_iterator->set_need_to_read(); + } +} + +void StructFileColumnIterator::remove_pruned_sub_iterators() { + for (auto it = _sub_column_iterators.begin(); it != _sub_column_iterators.end();) { + auto& sub_iterator = *it; + if (sub_iterator->reading_flag() == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Struct column iterator remove pruned sub-column " + << sub_iterator->column_name(); + it = _sub_column_iterators.erase(it); + } else { + sub_iterator->remove_pruned_sub_iterators(); + ++it; + } + } +} + +Status StructFileColumnIterator::set_access_paths( + const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) { + if (all_access_paths.empty()) { + return Status::OK(); + } + + if (!predicate_access_paths.empty()) { + set_reading_flag(ReadingFlag::READING_FOR_PREDICATE); + DLOG(INFO) << "Struct column iterator set sub-column " << _column_name + << " to READING_FOR_PREDICATE"; + } + auto sub_all_access_paths = DORIS_TRY(_get_sub_access_paths(all_access_paths)); + auto sub_predicate_access_paths = DORIS_TRY(_get_sub_access_paths(predicate_access_paths)); + + const auto no_sub_column_to_skip = sub_all_access_paths.empty(); + const auto no_predicate_sub_column = sub_predicate_access_paths.empty(); + + for (auto& sub_iterator : _sub_column_iterators) { + const auto name = sub_iterator->column_name(); + bool need_to_read = no_sub_column_to_skip; + TColumnAccessPaths sub_all_access_paths_of_this; + if (!need_to_read) { + for (const auto& paths : sub_all_access_paths) { + if (paths.data_access_path.path[0] == name) { + sub_all_access_paths_of_this.emplace_back(paths); + } + } + need_to_read = !sub_all_access_paths_of_this.empty(); + } + + if (!need_to_read) { + set_reading_flag(ReadingFlag::SKIP_READING); + sub_iterator->set_reading_flag(ReadingFlag::SKIP_READING); + DLOG(INFO) << "Struct column iterator set sub-column " << name << " to SKIP_READING"; + continue; + } + set_reading_flag(ReadingFlag::NEED_TO_READ); + sub_iterator->set_reading_flag(ReadingFlag::NEED_TO_READ); + + TColumnAccessPaths sub_predicate_access_paths_of_this; + + if (!no_predicate_sub_column) { + for (const auto& paths : sub_predicate_access_paths) { + if (StringCaseEqual()(paths.data_access_path.path[0], name)) { + sub_predicate_access_paths_of_this.emplace_back(paths); + } + } + } + + RETURN_IF_ERROR(sub_iterator->set_access_paths(sub_all_access_paths_of_this, + sub_predicate_access_paths_of_this)); + } + return Status::OK(); +} + //////////////////////////////////////////////////////////////////////////////// Status OffsetFileColumnIterator::init(const ColumnIteratorOptions& opts) { RETURN_IF_ERROR(_offset_iterator->init(opts)); @@ -1183,6 +1429,11 @@ ArrayFileColumnIterator::ArrayFileColumnIterator(std::shared_ptr r } Status ArrayFileColumnIterator::init(const ColumnIteratorOptions& opts) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Array column iterator column " << _column_name << " skip readking."; + return Status::OK(); + } + RETURN_IF_ERROR(_offset_iterator->init(opts)); RETURN_IF_ERROR(_item_iterator->init(opts)); if (_array_reader->is_nullable()) { @@ -1200,6 +1451,11 @@ Status ArrayFileColumnIterator::_seek_by_offsets(ordinal_t ord) { } Status ArrayFileColumnIterator::seek_to_ordinal(ordinal_t ord) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Array column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } + RETURN_IF_ERROR(_offset_iterator->seek_to_ordinal(ord)); if (_array_reader->is_nullable()) { RETURN_IF_ERROR(_null_iterator->seek_to_ordinal(ord)); @@ -1209,6 +1465,12 @@ Status ArrayFileColumnIterator::seek_to_ordinal(ordinal_t ord) { Status ArrayFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr& dst, bool* has_null) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Array column iterator column " << _column_name << " skip reading."; + dst->resize(*n); + return Status::OK(); + } + const auto* column_array = vectorized::check_and_get_column( dst->is_nullable() ? static_cast(*dst).get_nested_column() : *dst); @@ -1257,6 +1519,12 @@ Status ArrayFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnP Status ArrayFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t count, vectorized::MutableColumnPtr& dst) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "Array column iterator column " << _column_name << " skip reading."; + dst->resize(count); + return Status::OK(); + } + for (size_t i = 0; i < count; ++i) { // TODO(cambyzju): now read array one by one, need optimize later RETURN_IF_ERROR(seek_to_ordinal(rowids[i])); @@ -1267,11 +1535,67 @@ Status ArrayFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size return Status::OK(); } +void ArrayFileColumnIterator::set_need_to_read() { + set_reading_flag(ReadingFlag::NEED_TO_READ); + _item_iterator->set_need_to_read(); +} + +void ArrayFileColumnIterator::remove_pruned_sub_iterators() { + _item_iterator->remove_pruned_sub_iterators(); +} + +Status ArrayFileColumnIterator::set_access_paths(const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) { + if (all_access_paths.empty()) { + return Status::OK(); + } + + if (!predicate_access_paths.empty()) { + set_reading_flag(ReadingFlag::READING_FOR_PREDICATE); + DLOG(INFO) << "Array column iterator set sub-column " << _column_name + << " to READING_FOR_PREDICATE"; + } + + auto sub_all_access_paths = DORIS_TRY(_get_sub_access_paths(all_access_paths)); + auto sub_predicate_access_paths = DORIS_TRY(_get_sub_access_paths(predicate_access_paths)); + + const auto no_sub_column_to_skip = sub_all_access_paths.empty(); + const auto no_predicate_sub_column = sub_predicate_access_paths.empty(); + + if (!no_sub_column_to_skip) { + for (auto& path : sub_all_access_paths) { + if (path.data_access_path.path[0] == "*") { + path.data_access_path.path[0] = _item_iterator->column_name(); + } + } + } + + if (!no_predicate_sub_column) { + for (auto& path : sub_predicate_access_paths) { + if (path.data_access_path.path[0] == "*") { + path.data_access_path.path[0] = _item_iterator->column_name(); + } + } + } + + if (!no_sub_column_to_skip || !no_predicate_sub_column) { + _item_iterator->set_reading_flag(ReadingFlag::NEED_TO_READ); + RETURN_IF_ERROR( + _item_iterator->set_access_paths(sub_all_access_paths, sub_predicate_access_paths)); + } + return Status::OK(); +} + //////////////////////////////////////////////////////////////////////////////// FileColumnIterator::FileColumnIterator(std::shared_ptr reader) : _reader(reader) {} Status FileColumnIterator::init(const ColumnIteratorOptions& opts) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "File column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } + _opts = opts; if (!_opts.use_page_cache) { _reader->disable_index_meta_cache(); @@ -1303,6 +1627,11 @@ Status FileColumnIterator::init(const ColumnIteratorOptions& opts) { FileColumnIterator::~FileColumnIterator() = default; Status FileColumnIterator::seek_to_ordinal(ordinal_t ord) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "File column iterator column " << _column_name << " skip reading."; + return Status::OK(); + } + // if current page contains this row, we don't need to seek if (!_page || !_page.contains(ord) || !_page_iter.valid()) { RETURN_IF_ERROR(_reader->seek_at_or_before(ord, &_page_iter, _opts)); @@ -1353,6 +1682,12 @@ Status FileColumnIterator::next_batch_of_zone_map(size_t* n, vectorized::Mutable Status FileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr& dst, bool* has_null) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "File column iterator column " << _column_name << " skip reading."; + dst->resize(*n); + return Status::OK(); + } + size_t curr_size = dst->byte_size(); dst->reserve(*n); size_t remaining = *n; @@ -1414,6 +1749,12 @@ Status FileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr& d Status FileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t count, vectorized::MutableColumnPtr& dst) { + if (_reading_flag == ReadingFlag::SKIP_READING) { + DLOG(INFO) << "File column iterator column " << _column_name << " skip reading."; + dst->resize(count); + return Status::OK(); + } + size_t remaining = count; size_t total_read_count = 0; size_t nrows_to_read = 0; diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h index 57ee4264c8da5e..4a7f444a4c0ab9 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.h +++ b/be/src/olap/rowset/segment_v2/column_reader.h @@ -17,6 +17,7 @@ #pragma once +#include #include #include @@ -69,6 +70,8 @@ class FileReader; struct Slice; struct StringRef; +using TColumnAccessPaths = std::vector; + namespace segment_v2 { class EncodingInfo; class ColumnIterator; @@ -267,7 +270,6 @@ class ColumnReader : public MetadataAdder, Status _calculate_row_ranges(const std::vector& page_indexes, RowRanges* row_ranges, const ColumnIteratorOptions& iter_opts); -private: int64_t _meta_length; FieldType _meta_type; FieldType _meta_children_column_type; @@ -363,8 +365,54 @@ class ColumnIterator { virtual bool is_all_dict_encoding() const { return false; } + virtual Status set_access_paths(const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) { + if (!predicate_access_paths.empty()) { + _reading_flag = ReadingFlag::READING_FOR_PREDICATE; + } + return Status::OK(); + } + + void set_column_name(const std::string& column_name) { _column_name = column_name; } + + const std::string& column_name() const { return _column_name; } + + // Since there may be multiple paths with conflicts or overlaps, + // we need to define several reading flags: + // + // NORMAL_READING — Default value, indicating that the column should be read. + // SKIP_READING — The column should not be read. + // NEED_TO_READ — The column must be read. + // READING_FOR_PREDICATE — The column is required for predicate evaluation. + // + // For example, suppose there are two paths: + // - Path 1 specifies that column A needs to be read, so it is marked as NEED_TO_READ. + // - Path 2 specifies that the column should not be read, but since it is already marked as NEED_TO_READ, + // it should not be changed to SKIP_READING. + enum class ReadingFlag : int { + NORMAL_READING, + SKIP_READING, + NEED_TO_READ, + READING_FOR_PREDICATE + }; + void set_reading_flag(ReadingFlag flag) { + if (static_cast(flag) > static_cast(_reading_flag)) { + _reading_flag = flag; + } + } + + ReadingFlag reading_flag() const { return _reading_flag; } + + virtual void set_need_to_read() { set_reading_flag(ReadingFlag::NEED_TO_READ); } + + virtual void remove_pruned_sub_iterators() {}; + protected: + Result _get_sub_access_paths(const TColumnAccessPaths& access_paths); ColumnIteratorOptions _opts; + + ReadingFlag _reading_flag {ReadingFlag::NORMAL_READING}; + std::string _column_name; }; // This iterator is used to read column data from file @@ -501,6 +549,13 @@ class MapFileColumnIterator final : public ColumnIterator { return _offsets_iterator->get_current_ordinal(); } + Status set_access_paths(const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) override; + + void set_need_to_read() override; + + void remove_pruned_sub_iterators() override; + private: std::shared_ptr _map_reader = nullptr; ColumnIteratorUPtr _null_iterator; @@ -530,6 +585,13 @@ class StructFileColumnIterator final : public ColumnIterator { return _sub_column_iterators[0]->get_current_ordinal(); } + Status set_access_paths(const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) override; + + void set_need_to_read() override; + + void remove_pruned_sub_iterators() override; + private: std::shared_ptr _struct_reader = nullptr; ColumnIteratorUPtr _null_iterator; @@ -558,6 +620,12 @@ class ArrayFileColumnIterator final : public ColumnIterator { return _offset_iterator->get_current_ordinal(); } + Status set_access_paths(const TColumnAccessPaths& all_access_paths, + const TColumnAccessPaths& predicate_access_paths) override; + void set_need_to_read() override; + + void remove_pruned_sub_iterators() override; + private: std::shared_ptr _array_reader = nullptr; std::unique_ptr _offset_iterator; diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp index 0b809e07a534a2..b150dec5226c98 100644 --- a/be/src/olap/rowset/segment_v2/segment.cpp +++ b/be/src/olap/rowset/segment_v2/segment.cpp @@ -17,12 +17,14 @@ #include "olap/rowset/segment_v2/segment.h" +#include #include #include #include #include #include +#include #include #include "cloud/config.h" @@ -722,6 +724,20 @@ Status Segment::new_column_iterator(const TabletColumn& tablet_column, sparse_column_cache_ptr)); } else { RETURN_IF_ERROR(reader->new_iterator(iter, &tablet_column, opt)); + if (opt->all_access_paths.contains(unique_id) || + opt->predicate_access_paths.contains(unique_id)) { + const auto& all_access_paths = opt->all_access_paths.contains(unique_id) + ? opt->all_access_paths.at(unique_id) + : TColumnAccessPaths {}; + const auto& predicate_access_paths = opt->predicate_access_paths.contains(unique_id) + ? opt->predicate_access_paths.at(unique_id) + : TColumnAccessPaths {}; + + // set column name to apply access paths. + (*iter)->set_column_name(tablet_column.name()); + RETURN_IF_ERROR((*iter)->set_access_paths(all_access_paths, predicate_access_paths)); + (*iter)->remove_pruned_sub_iterators(); + } } if (config::enable_column_type_check && !tablet_column.has_path_info() && diff --git a/be/src/olap/tablet_reader.cpp b/be/src/olap/tablet_reader.cpp index 00eec28cf8aafb..a0ac8803c367d5 100644 --- a/be/src/olap/tablet_reader.cpp +++ b/be/src/olap/tablet_reader.cpp @@ -262,6 +262,9 @@ Status TabletReader::_capture_rs_readers(const ReaderParams& read_params) { _reader_context.vir_col_idx_to_type = read_params.vir_col_idx_to_type; _reader_context.ann_topn_runtime = read_params.ann_topn_runtime; + _reader_context.all_access_paths = read_params.all_access_paths; + _reader_context.predicate_access_paths = read_params.predicate_access_paths; + return Status::OK(); } diff --git a/be/src/olap/tablet_reader.h b/be/src/olap/tablet_reader.h index a8179f31773aed..aa72f2ce0dbf15 100644 --- a/be/src/olap/tablet_reader.h +++ b/be/src/olap/tablet_reader.h @@ -17,6 +17,7 @@ #pragma once +#include #include #include #include @@ -146,6 +147,9 @@ class TabletReader { // slots that cast may be eliminated in storage layer std::map target_cast_type_for_variants; + std::map all_access_paths; + std::map predicate_access_paths; + std::vector rs_splits; // For unique key table with merge-on-write DeleteBitmapPtr delete_bitmap = nullptr; diff --git a/be/src/olap/tablet_schema.cpp b/be/src/olap/tablet_schema.cpp index ebc5bf3e7460af..b30d3624c2c13e 100644 --- a/be/src/olap/tablet_schema.cpp +++ b/be/src/olap/tablet_schema.cpp @@ -1704,6 +1704,14 @@ vectorized::Block TabletSchema::create_block( tablet_columns_need_convert_null->find(cid) != tablet_columns_need_convert_null->end()); auto data_type = vectorized::DataTypeFactory::instance().create_data_type(col, is_nullable); + if (col.type() == FieldType::OLAP_FIELD_TYPE_STRUCT || + col.type() == FieldType::OLAP_FIELD_TYPE_MAP || + col.type() == FieldType::OLAP_FIELD_TYPE_ARRAY) { + if (_pruned_columns_data_type.contains(col.unique_id())) { + data_type = _pruned_columns_data_type.at(col.unique_id()); + } + } + if (_vir_col_idx_to_unique_id.contains(cid)) { block.insert({vectorized::ColumnNothing::create(0), data_type, col.name()}); VLOG_DEBUG << fmt::format( @@ -1723,7 +1731,13 @@ vectorized::Block TabletSchema::create_block(bool ignore_dropped_col) const { if (ignore_dropped_col && is_dropped_column(*col)) { continue; } + auto data_type = vectorized::DataTypeFactory::instance().create_data_type(*col); + if (col->type() == FieldType::OLAP_FIELD_TYPE_STRUCT) { + if (_pruned_columns_data_type.contains(col->unique_id())) { + data_type = _pruned_columns_data_type.at(col->unique_id()); + } + } block.insert({data_type->create_column(), data_type, col->name()}); } return block; @@ -1734,6 +1748,11 @@ vectorized::Block TabletSchema::create_block_by_cids(const std::vector for (const auto& cid : cids) { const auto& col = *_cols[cid]; auto data_type = vectorized::DataTypeFactory::instance().create_data_type(col); + if (col.type() == FieldType::OLAP_FIELD_TYPE_STRUCT) { + if (_pruned_columns_data_type.contains(col.unique_id())) { + data_type = _pruned_columns_data_type.at(col.unique_id()); + } + } block.insert({data_type->create_column(), data_type, col.name()}); } return block; diff --git a/be/src/olap/tablet_schema.h b/be/src/olap/tablet_schema.h index c1e83b31b50672..fca6645bee817d 100644 --- a/be/src/olap/tablet_schema.h +++ b/be/src/olap/tablet_schema.h @@ -42,6 +42,7 @@ #include "runtime/define_primitive_type.h" #include "runtime/descriptors.h" #include "runtime/memory/lru_cache_policy.h" +#include "udf/udf.h" #include "util/debug_points.h" #include "util/string_parser.hpp" #include "util/string_util.h" @@ -703,6 +704,14 @@ class TabletSchema : public MetadataAdder { _binary_plain_encoding_default_impl = impl; } + void add_pruned_columns_data_type(int32_t col_unique_id, vectorized::DataTypePtr data_type) { + _pruned_columns_data_type[col_unique_id] = std::move(data_type); + } + + void clear_pruned_columns_data_type() { _pruned_columns_data_type.clear(); } + + bool has_pruned_columns() const { return !_pruned_columns_data_type.empty(); } + private: friend bool operator==(const TabletSchema& a, const TabletSchema& b); friend bool operator!=(const TabletSchema& a, const TabletSchema& b); @@ -773,6 +782,7 @@ class TabletSchema : public MetadataAdder { bool _enable_variant_flatten_nested = false; std::map _vir_col_idx_to_unique_id; + std::map _pruned_columns_data_type; // value: extracted path set and sparse path set std::unordered_map _path_set_info_map; diff --git a/be/src/runtime/descriptors.cpp b/be/src/runtime/descriptors.cpp index 005e6187aa628e..2acbd4d0af173a 100644 --- a/be/src/runtime/descriptors.cpp +++ b/be/src/runtime/descriptors.cpp @@ -62,6 +62,11 @@ SlotDescriptor::SlotDescriptor(const TSlotDescriptor& tdesc) _field_idx(-1), _is_key(tdesc.is_key), _column_paths(tdesc.column_paths), + _all_access_paths(tdesc.__isset.all_access_paths ? tdesc.all_access_paths + : TColumnAccessPaths {}), + _predicate_access_paths(tdesc.__isset.predicate_access_paths + ? tdesc.predicate_access_paths + : TColumnAccessPaths {}), _is_auto_increment(tdesc.__isset.is_auto_increment ? tdesc.is_auto_increment : false), _col_default_value(tdesc.__isset.col_default_value ? tdesc.col_default_value : "") { if (tdesc.__isset.virtual_column_expr) { @@ -96,7 +101,31 @@ SlotDescriptor::SlotDescriptor(const PSlotDescriptor& pdesc) _field_idx(-1), _is_key(pdesc.is_key()), _column_paths(pdesc.column_paths().begin(), pdesc.column_paths().end()), - _is_auto_increment(pdesc.is_auto_increment()) {} + _is_auto_increment(pdesc.is_auto_increment()) { + auto convert_to_thrift_column_access_path = [](const PColumnAccessPath& pb_path) { + TColumnAccessPath thrift_path; + thrift_path.type = (TAccessPathType::type)pb_path.type(); + if (pb_path.has_data_access_path()) { + thrift_path.__isset.data_access_path = true; + for (int i = 0; i < pb_path.data_access_path().path_size(); ++i) { + thrift_path.data_access_path.path.push_back(pb_path.data_access_path().path(i)); + } + } + if (pb_path.has_meta_access_path()) { + thrift_path.__isset.meta_access_path = true; + for (int i = 0; i < pb_path.meta_access_path().path_size(); ++i) { + thrift_path.meta_access_path.path.push_back(pb_path.meta_access_path().path(i)); + } + } + return thrift_path; + }; + for (const auto& pb_path : pdesc.all_access_paths()) { + _all_access_paths.push_back(convert_to_thrift_column_access_path(pb_path)); + } + for (const auto& pb_path : pdesc.predicate_access_paths()) { + _predicate_access_paths.push_back(convert_to_thrift_column_access_path(pb_path)); + } +} #ifdef BE_TEST SlotDescriptor::SlotDescriptor() @@ -128,6 +157,33 @@ void SlotDescriptor::to_protobuf(PSlotDescriptor* pslot) const { for (const std::string& path : _column_paths) { pslot->add_column_paths(path); } + auto convert_to_protobuf_column_access_path = [](const TColumnAccessPath& thrift_path, + doris::PColumnAccessPath* pb_path) { + pb_path->Clear(); + pb_path->set_type((PAccessPathType)thrift_path.type); // 使用 reinterpret_cast 进行类型转换 + if (thrift_path.__isset.data_access_path) { + auto* pb_data = pb_path->mutable_data_access_path(); + pb_data->Clear(); + for (const auto& s : thrift_path.data_access_path.path) { + pb_data->add_path(s); + } + } + if (thrift_path.__isset.meta_access_path) { + auto* pb_meta = pb_path->mutable_meta_access_path(); + pb_meta->Clear(); + for (const auto& s : thrift_path.meta_access_path.path) { + pb_meta->add_path(s); + } + } + }; + for (const auto& path : _all_access_paths) { + auto* pb_path = pslot->add_all_access_paths(); + convert_to_protobuf_column_access_path(path, pb_path); + } + for (const auto& path : _predicate_access_paths) { + auto* pb_path = pslot->add_predicate_access_paths(); + convert_to_protobuf_column_access_path(path, pb_path); + } } vectorized::DataTypePtr SlotDescriptor::get_data_type_ptr() const { diff --git a/be/src/runtime/descriptors.h b/be/src/runtime/descriptors.h index 973e8076b34ccc..f93750de325e66 100644 --- a/be/src/runtime/descriptors.h +++ b/be/src/runtime/descriptors.h @@ -54,6 +54,8 @@ class ObjectPool; class PTupleDescriptor; class PSlotDescriptor; +using TColumnAccessPaths = std::vector; + class SlotDescriptor { public: MOCK_DEFINE(virtual ~SlotDescriptor() = default;) @@ -82,6 +84,9 @@ class SlotDescriptor { bool is_key() const { return _is_key; } const std::vector& column_paths() const { return _column_paths; }; + const TColumnAccessPaths& all_access_paths() const { return _all_access_paths; } + const TColumnAccessPaths& predicate_access_paths() const { return _predicate_access_paths; } + bool is_auto_increment() const { return _is_auto_increment; } bool is_skip_bitmap_col() const { return _col_name == SKIP_BITMAP_COL; } @@ -95,6 +100,10 @@ class SlotDescriptor { return virtual_column_expr; } + void set_is_predicate(bool is_predicate) { _is_predicate = is_predicate; } + + bool is_predicate() const { return _is_predicate; } + private: friend class DescriptorTbl; friend class TupleDescriptor; @@ -126,11 +135,16 @@ class SlotDescriptor { const bool _is_key; const std::vector _column_paths; + TColumnAccessPaths _all_access_paths; + TColumnAccessPaths _predicate_access_paths; + const bool _is_auto_increment; const std::string _col_default_value; std::shared_ptr virtual_column_expr = nullptr; + bool _is_predicate = false; + SlotDescriptor(const TSlotDescriptor& tdesc); SlotDescriptor(const PSlotDescriptor& pdesc); MOCK_DEFINE(SlotDescriptor();) diff --git a/be/src/vec/columns/column_map.cpp b/be/src/vec/columns/column_map.cpp index 9be40b1a2c3061..793aa0563f846e 100644 --- a/be/src/vec/columns/column_map.cpp +++ b/be/src/vec/columns/column_map.cpp @@ -59,6 +59,7 @@ ColumnMap::ColumnMap(MutableColumnPtr&& keys, MutableColumnPtr&& values, Mutable /// This will also prevent possible overflow in offset. if (keys_column->size() != last_offset) { + DCHECK(0); throw doris::Exception( doris::ErrorCode::INTERNAL_ERROR, "offsets_column size {} has data inconsistent with key_column {}", last_offset, diff --git a/be/src/vec/data_types/data_type_factory.cpp b/be/src/vec/data_types/data_type_factory.cpp index e800166ac697af..5f2b880a0cdbe1 100644 --- a/be/src/vec/data_types/data_type_factory.cpp +++ b/be/src/vec/data_types/data_type_factory.cpp @@ -460,8 +460,7 @@ DataTypePtr DataTypeFactory::create_data_type(const PrimitiveType primitive_type nested = std::make_shared(); break; case TYPE_DECIMALV2: - nested = std::make_shared( - precision > 0 ? precision : 0, precision > 0 ? scale : 0, precision, scale); + nested = std::make_shared(27, 9, precision, scale); break; case TYPE_QUANTILE_STATE: nested = std::make_shared(); diff --git a/be/src/vec/exec/format/orc/vorc_reader.cpp b/be/src/vec/exec/format/orc/vorc_reader.cpp index b8be037363af3b..1ad9777b6df8de 100644 --- a/be/src/vec/exec/format/orc/vorc_reader.cpp +++ b/be/src/vec/exec/format/orc/vorc_reader.cpp @@ -26,6 +26,7 @@ #include #include +#include #include "vec/exprs/vdirect_in_predicate.h" #include "vec/exprs/vexpr.h" @@ -361,7 +362,8 @@ Status OrcReader::init_reader( const RowDescriptor* row_descriptor, const VExprContextSPtrs* not_single_slot_filter_conjuncts, const std::unordered_map* slot_id_to_filter_conjuncts, - std::shared_ptr table_info_node_ptr) { + std::shared_ptr table_info_node_ptr, + const std::set& column_ids, const std::set& filter_column_ids) { _table_column_names = column_names; _colname_to_value_range = colname_to_value_range; _lazy_read_ctx.conjuncts = conjuncts; @@ -369,6 +371,8 @@ Status OrcReader::init_reader( _tuple_descriptor = tuple_descriptor; _row_descriptor = row_descriptor; _table_info_node_ptr = table_info_node_ptr; + _column_ids = column_ids; + _filter_column_ids = filter_column_ids; if (not_single_slot_filter_conjuncts != nullptr && !not_single_slot_filter_conjuncts->empty()) { _not_single_slot_filter_conjuncts.insert(_not_single_slot_filter_conjuncts.end(), @@ -407,6 +411,29 @@ Status OrcReader::get_parsed_schema(std::vector* col_names, Status OrcReader::_init_read_columns() { SCOPED_RAW_TIMER(&_statistics.init_column_time); const auto& root_type = _reader->getType(); + + // Build column ID to file type mapping for all columns in file + _column_id_to_file_type.clear(); + std::function build_column_id_map = [&](const orc::Type* type, + int depth) { + if (type == nullptr) return; + uint64_t col_id = type->getColumnId(); + _column_id_to_file_type[col_id] = type; + + std::string indent(depth * 2, ' '); + VLOG_DEBUG << indent << "[OrcReader] Mapping column_id=" << col_id + << ", kind=" << static_cast(type->getKind()) + << ", subtype_count=" << type->getSubtypeCount(); + + for (uint64_t i = 0; i < type->getSubtypeCount(); ++i) { + build_column_id_map(type->getSubtype(i), depth + 1); + } + }; + + VLOG_DEBUG << "[OrcReader] Building column ID to file type mapping..."; + build_column_id_map(&root_type, 0); + VLOG_DEBUG << "[OrcReader] Total mapped columns: " << _column_id_to_file_type.size(); + if (_is_acid) { for (uint64_t i = 0; i < root_type.getSubtypeCount(); ++i) { if (root_type.getSubtype(i)->getKind() == orc::TypeKind::STRUCT) { @@ -1152,7 +1179,12 @@ Status OrcReader::set_fill_columns( try { _row_reader_options.range(_range_start_offset, _range_size); _row_reader_options.setTimezoneName(_ctz == "CST" ? "Asia/Shanghai" : _ctz); - _row_reader_options.include(_read_file_cols); + if (!_column_ids.empty()) { + std::list column_ids_list(_column_ids.begin(), _column_ids.end()); + _row_reader_options.includeTypes(column_ids_list); + } else { // If column_ids is empty, include all top-level columns to be read. + _row_reader_options.include(_read_file_cols); + } _row_reader_options.setEnableLazyDecoding(true); //orc reader should not use the tiny stripe optimization when reading by row id. @@ -1240,6 +1272,28 @@ Status OrcReader::set_fill_columns( } } + _type_map.clear(); + if (_is_acid) { + for (uint64_t i = 0; i < selected_type.getSubtypeCount(); ++i) { + if (selected_type.getSubtype(i)->getKind() == orc::TypeKind::STRUCT) { + auto row_orc_type = selected_type.getSubtype(i); + for (uint64_t j = 0; j < row_orc_type->getSubtypeCount(); j++) { + std::string field_name = + TransactionalHive::ROW + "." + row_orc_type->getFieldName(j); + _type_map.emplace(field_name, row_orc_type->getSubtype(j)); + } + } else { + std::string field_name = selected_type.getFieldName(i); + _type_map.emplace(field_name, selected_type.getSubtype(i)); + } + } + } else { + for (int i = 0; i < selected_type.getSubtypeCount(); ++i) { + std::string field_name = selected_type.getFieldName(i); + _type_map.emplace(field_name, selected_type.getSubtype(i)); + } + } + _remaining_rows = _row_reader->getNumberOfRows(); } catch (std::exception& e) { @@ -1394,6 +1448,14 @@ void OrcReader::_init_file_description() { } DataTypePtr OrcReader::convert_to_doris_type(const orc::Type* orc_type) { + // Critical: check for nullptr BEFORE accessing any methods + if (orc_type == nullptr) { + LOG(WARNING) << "[OrcReader] ERROR: convert_to_doris_type called with nullptr orc_type! " + "Falling back to STRING"; + // Return a safe default type instead of crashing + return DataTypeFactory::instance().create_data_type(PrimitiveType::TYPE_STRING, true); + } + switch (orc_type->getKind()) { case orc::TypeKind::BOOLEAN: return DataTypeFactory::instance().create_data_type(PrimitiveType::TYPE_BOOLEAN, true); @@ -1446,6 +1508,75 @@ DataTypePtr OrcReader::convert_to_doris_type(const orc::Type* orc_type) { std::make_shared(convert_to_doris_type(orc_type->getSubtype(0)))); } case orc::TypeKind::MAP: { + // Handle incomplete MAP type due to column pruning + // If MAP doesn't have both key and value subtypes, try to find the complete type from file + if (orc_type->getSubtypeCount() < 2 || orc_type->getSubtype(0) == nullptr || + orc_type->getSubtype(1) == nullptr) { + // Try to find the complete type from _column_id_to_file_type + uint64_t column_id = orc_type->getColumnId(); + VLOG_DEBUG << "[OrcReader] Detected incomplete MAP type: column_id=" << column_id + << ", subtype_count=" << orc_type->getSubtypeCount() << ", subtype(0)=" + << (orc_type->getSubtypeCount() > 0 && orc_type->getSubtype(0) != nullptr + ? "not null" + : "null") + << ", subtype(1)=" + << (orc_type->getSubtypeCount() > 1 && orc_type->getSubtype(1) != nullptr + ? "not null" + : "null"); + + auto it = _column_id_to_file_type.find(column_id); + if (it != _column_id_to_file_type.end() && it->second != nullptr) { + const orc::Type* complete_type = it->second; + VLOG_DEBUG << "[OrcReader] Found complete type in mapping: column_id=" << column_id + << ", complete_type_kind=" << static_cast(complete_type->getKind()) + << ", complete_subtype_count=" << complete_type->getSubtypeCount(); + + // Print subtypes information + for (uint64_t i = 0; i < complete_type->getSubtypeCount(); ++i) { + const orc::Type* subtype = complete_type->getSubtype(i); + VLOG_DEBUG << "[OrcReader] complete_type->subtype[" << i << "]: " + << (subtype != nullptr + ? ("kind=" + + std::to_string(static_cast(subtype->getKind())) + + ", column_id=" + + std::to_string(subtype->getColumnId())) + : "nullptr"); + } + + if (complete_type->getKind() == orc::TypeKind::MAP && + complete_type->getSubtypeCount() == 2) { + VLOG_DEBUG + << "[OrcReader] Using complete MAP type from file schema for column_id=" + << column_id; + + // Get subtypes with extra validation + const orc::Type* key_type = complete_type->getSubtype(0); + const orc::Type* value_type = complete_type->getSubtype(1); + + VLOG_DEBUG << "[OrcReader] About to convert key_type: " + << (key_type != nullptr ? "not null" : "NULL"); + VLOG_DEBUG << "[OrcReader] About to convert value_type: " + << (value_type != nullptr ? "not null" : "NULL"); + + // Use the complete type from file - with null checks + DataTypePtr key_doris_type = convert_to_doris_type(key_type); + VLOG_DEBUG << "[OrcReader] Successfully converted key_type"; + + DataTypePtr value_doris_type = convert_to_doris_type(value_type); + VLOG_DEBUG << "[OrcReader] Successfully converted value_type"; + + return make_nullable( + std::make_shared(key_doris_type, value_doris_type)); + } else { + LOG(WARNING) << "[OrcReader] Warning: Complete type is not a valid MAP or has " + "wrong subtype count"; + } + } else { + LOG(WARNING) << "[OrcReader] Warning: Could not find complete type in mapping for " + "column_id=" + << column_id << ", mapping_size=" << _column_id_to_file_type.size(); + } + } return make_nullable( std::make_shared(convert_to_doris_type(orc_type->getSubtype(0)), convert_to_doris_type(orc_type->getSubtype(1)))); @@ -1723,6 +1854,7 @@ Status OrcReader::_fill_doris_data_column(const std::string& col_name, const orc::Type* orc_column_type, const orc::ColumnVectorBatch* cvb, size_t num_values) { auto logical_type = data_type->get_primitive_type(); + switch (logical_type) { #define DISPATCH(FlatType, CppType, OrcColumnType) \ case FlatType: \ @@ -1799,20 +1931,90 @@ Status OrcReader::_fill_doris_data_column(const std::string& col_name, DataTypePtr& doris_value_type = const_cast( reinterpret_cast(remove_nullable(data_type).get()) ->get_value_type()); + + // Get ORC key and value types with null checks const orc::Type* orc_key_type = orc_column_type->getSubtype(0); const orc::Type* orc_value_type = orc_column_type->getSubtype(1); + + VLOG_DEBUG << "[OrcReader] MAP column '" << col_name + << "': orc_key_type=" << (orc_key_type != nullptr ? "not null" : "NULL") + << ", orc_value_type=" << (orc_value_type != nullptr ? "not null" : "NULL") + << ", element_size=" << element_size; + + // Handle incomplete MAP type - if key or value type is nullptr, try to recover from mapping + bool key_is_missing = (orc_key_type == nullptr); + bool value_is_missing = (orc_value_type == nullptr); + + if (key_is_missing || value_is_missing) { + VLOG_DEBUG << "[OrcReader] Detected incomplete MAP subtypes for column '" << col_name + << "', attempting to recover from mapping..."; + + uint64_t column_id = orc_column_type->getColumnId(); + auto it = _column_id_to_file_type.find(column_id); + if (it != _column_id_to_file_type.end() && it->second != nullptr) { + const orc::Type* complete_map_type = it->second; + if (complete_map_type->getKind() == orc::TypeKind::MAP && + complete_map_type->getSubtypeCount() == 2) { + if (key_is_missing) { + orc_key_type = complete_map_type->getSubtype(0); + if (orc_key_type != nullptr) { + // key_is_missing = false; + VLOG_DEBUG << "[OrcReader] Recovered key type from mapping for column '" + << col_name << "'"; + } + } + if (value_is_missing) { + orc_value_type = complete_map_type->getSubtype(1); + if (orc_value_type != nullptr) { + // value_is_missing = false; + VLOG_DEBUG + << "[OrcReader] Recovered value type from mapping for column '" + << col_name << "'"; + } + } + } + } + } + ColumnPtr& doris_key_column = doris_map.get_keys_ptr(); ColumnPtr& doris_value_column = doris_map.get_values_ptr(); std::string key_col_name = col_name + ".key"; std::string value_col_name = col_name + ".value"; - RETURN_IF_ERROR(_orc_column_to_doris_column( - key_col_name, doris_key_column, doris_key_type, root_node->get_key_node(), - - orc_key_type, orc_map->keys.get(), element_size)); - RETURN_IF_ERROR(_orc_column_to_doris_column( - value_col_name, doris_value_column, doris_value_type, root_node->get_value_node(), - orc_value_type, orc_map->elements.get(), element_size)); + // Handle key column: if still missing, fill with default values + if (key_is_missing) { + // Fill key column with default values (nulls or empty values) + auto mutable_key_column = doris_key_column->assume_mutable(); + if (mutable_key_column->is_nullable()) { + auto* nullable_column = static_cast(mutable_key_column.get()); + nullable_column->insert_many_defaults(element_size); + } else { + mutable_key_column->insert_many_defaults(element_size); + } + } else { + // Normal processing: convert ORC column to Doris column + RETURN_IF_ERROR(_orc_column_to_doris_column( + key_col_name, doris_key_column, doris_key_type, root_node->get_key_node(), + orc_key_type, orc_map->keys.get(), element_size)); + } + + // Handle value column: if still missing, fill with default values + if (value_is_missing) { + // Fill value column with default values (nulls or empty values) + auto mutable_value_column = doris_value_column->assume_mutable(); + if (mutable_value_column->is_nullable()) { + auto* nullable_column = static_cast(mutable_value_column.get()); + nullable_column->insert_many_defaults(element_size); + } else { + mutable_value_column->insert_many_defaults(element_size); + } + } else { + // Normal processing: convert ORC column to Doris column + RETURN_IF_ERROR(_orc_column_to_doris_column( + value_col_name, doris_value_column, doris_value_type, + root_node->get_value_node(), orc_value_type, orc_map->elements.get(), + element_size)); + } return Status::OK(); } case PrimitiveType::TYPE_STRUCT: { @@ -1828,6 +2030,14 @@ Status OrcReader::_fill_doris_data_column(const std::string& col_name, const auto* doris_struct_type = assert_cast(remove_nullable(data_type).get()); + // Build ORC field name to index map for faster lookup + std::unordered_map orc_field_name_to_idx; + for (int j = 0; j < orc_column_type->getSubtypeCount(); ++j) { + std::string field_name = orc_column_type->getFieldName(j); + std::transform(field_name.begin(), field_name.end(), field_name.begin(), ::tolower); + orc_field_name_to_idx[field_name] = j; + } + for (int i = 0; i < doris_struct.tuple_size(); ++i) { const auto& table_column_name = doris_struct_type->get_name_by_position(i); if (!root_node->children_column_exists(table_column_name)) { @@ -1835,10 +2045,23 @@ Status OrcReader::_fill_doris_data_column(const std::string& col_name, continue; } const auto& file_column_name = root_node->children_file_column_name(table_column_name); - for (int j = 0; j < orc_column_type->getSubtypeCount(); ++j) { - if (boost::iequals(orc_column_type->getFieldName(j), file_column_name)) { - read_fields[i] = j; - } + std::string file_column_name_lower = file_column_name; + std::transform(file_column_name_lower.begin(), file_column_name_lower.end(), + file_column_name_lower.begin(), ::tolower); + + auto it = orc_field_name_to_idx.find(file_column_name_lower); + if (it != orc_field_name_to_idx.end()) { + read_fields[i] = it->second; + VLOG_DEBUG << "[OrcReader] Found field mapping: doris_field[" << i + << "] -> orc_field[" << it->second + << "], table_column: " << table_column_name + << ", file_column: " << file_column_name_lower; + } else { + missing_fields.insert(i); + VLOG_DEBUG << "[OrcReader] Missing field: doris_field[" << i + << "], table_column: " << table_column_name + << ", file_column: " << file_column_name_lower + << " (not found in ORC file)"; } } @@ -1879,67 +2102,83 @@ Status OrcReader::_orc_column_to_doris_column( const std::string& col_name, ColumnPtr& doris_column, const DataTypePtr& data_type, std::shared_ptr root_node, const orc::Type* orc_column_type, const orc::ColumnVectorBatch* cvb, size_t num_values) { - auto src_type = convert_to_doris_type(orc_column_type); - bool is_dict_filter_col = false; - for (const std::pair& dict_col : _dict_filter_cols) { - if (col_name == dict_col.first) { - src_type = DataTypeFactory::instance().create_data_type(PrimitiveType::TYPE_INT, true); - is_dict_filter_col = true; - break; - } - } - // If the column can be dictionary filtered, there will be two types. - // It may be plain or a dictionary, because the same field in different stripes may have different types. - // Here we use the $dict_ prefix to represent the dictionary type converter. - auto converter_key = !is_dict_filter_col ? col_name : fmt::format("$dict_{}", col_name); - - if (!_converters.contains(converter_key)) { - std::unique_ptr converter = - converter::ColumnTypeConverter::get_converter(src_type, data_type, - converter::FileFormat::ORC); - if (!converter->support()) { - return Status::InternalError( - "The column type of '{}' has changed and is not supported: ", col_name, - converter->get_error_msg()); - } - // reuse the cached converter - _converters[converter_key] = std::move(converter); - } - converter::ColumnTypeConverter* converter = _converters[converter_key].get(); - ColumnPtr resolved_column = converter->get_column(src_type, doris_column, data_type); - const DataTypePtr& resolved_type = converter->get_type(); - + DataTypePtr resolved_type; + ColumnPtr resolved_column; MutableColumnPtr data_column; - if (resolved_column->is_nullable()) { - SCOPED_RAW_TIMER(&_statistics.decode_null_map_time); - auto* nullable_column = - reinterpret_cast(resolved_column->assume_mutable().get()); - data_column = nullable_column->get_nested_column_ptr(); - NullMap& map_data_column = nullable_column->get_null_map_data(); - auto origin_size = map_data_column.size(); - map_data_column.resize(origin_size + num_values); - if (cvb->hasNulls) { - const auto* cvb_nulls = cvb->notNull.data(); - for (int i = 0; i < num_values; ++i) { - map_data_column[origin_size + i] = !cvb_nulls[i]; + if (orc_column_type != nullptr) { + auto src_type = convert_to_doris_type(orc_column_type); + bool is_dict_filter_col = false; + for (const std::pair& dict_col : _dict_filter_cols) { + if (col_name == dict_col.first) { + src_type = + DataTypeFactory::instance().create_data_type(PrimitiveType::TYPE_INT, true); + is_dict_filter_col = true; + break; + } + } + // If the column can be dictionary filtered, there will be two types. + // It may be plain or a dictionary, because the same field in different stripes may have different types. + // Here we use the $dict_ prefix to represent the dictionary type converter. + auto converter_key = !is_dict_filter_col ? col_name : fmt::format("$dict_{}", col_name); + + if (!_converters.contains(converter_key)) { + std::unique_ptr converter = + converter::ColumnTypeConverter::get_converter(src_type, data_type, + converter::FileFormat::ORC); + if (!converter->support()) { + return Status::InternalError( + "The column type of '{}' has changed and is not supported: ", col_name, + converter->get_error_msg()); + } + // reuse the cached converter + _converters[converter_key] = std::move(converter); + } + converter::ColumnTypeConverter* converter = _converters[converter_key].get(); + resolved_column = converter->get_column(src_type, doris_column, data_type); + resolved_type = converter->get_type(); + + if (resolved_column->is_nullable()) { + SCOPED_RAW_TIMER(&_statistics.decode_null_map_time); + auto* nullable_column = + reinterpret_cast(resolved_column->assume_mutable().get()); + data_column = nullable_column->get_nested_column_ptr(); + + NullMap& map_data_column = nullable_column->get_null_map_data(); + auto origin_size = map_data_column.size(); + map_data_column.resize(origin_size + num_values); + if (cvb->hasNulls) { + const auto* cvb_nulls = cvb->notNull.data(); + for (int i = 0; i < num_values; ++i) { + map_data_column[origin_size + i] = !cvb_nulls[i]; + } + } else { + memset(map_data_column.data() + origin_size, 0, num_values); } } else { - memset(map_data_column.data() + origin_size, 0, num_values); + if (cvb->hasNulls) { + return Status::InternalError("Not nullable column {} has null values in orc file", + col_name); + } + data_column = resolved_column->assume_mutable(); } + + RETURN_IF_ERROR(_fill_doris_data_column( + col_name, data_column, remove_nullable(resolved_type), root_node, orc_column_type, + cvb, num_values)); + // resolve schema change + auto converted_column = doris_column->assume_mutable(); + return converter->convert(resolved_column, converted_column); } else { - if (cvb->hasNulls) { - return Status::InternalError("Not nullable column {} has null values in orc file", - col_name); + auto mutable_column = doris_column->assume_mutable(); + if (mutable_column->is_nullable()) { + auto* nullable_column = static_cast(mutable_column.get()); + nullable_column->insert_many_defaults(num_values); + } else { + mutable_column->insert_many_defaults(num_values); } - data_column = resolved_column->assume_mutable(); } - RETURN_IF_ERROR(_fill_doris_data_column(col_name, data_column, - remove_nullable(resolved_type), root_node, - orc_column_type, cvb, num_values)); - // resolve schema change - auto converted_column = doris_column->assume_mutable(); - return converter->convert(resolved_column, converted_column); + return Status::OK(); } std::string OrcReader::get_field_name_lower_case(const orc::Type* orc_type, int pos) { @@ -2140,7 +2379,7 @@ Status OrcReader::_get_next_block_impl(Block* block, size_t* read_rows, bool* eo if (orc_col_idx == _colname_to_idx.end()) { return Status::InternalError("Wrong read column '{}' in orc file", col_name); } - RETURN_IF_ERROR(_orc_column_to_doris_column( + RETURN_IF_ERROR(_orc_column_to_doris_column( col_name, column_ptr, column_type, _table_info_node_ptr->get_children_node(col_name), _type_map[file_column_name], batch_vec[orc_col_idx->second], _batch->numElements)); @@ -2322,7 +2561,7 @@ Status OrcReader::filter(orc::ColumnVectorBatch& data, uint16_t* sel, uint16_t s if (orc_col_idx == _colname_to_idx.end()) { return Status::InternalError("Wrong read column '{}' in orc file", table_col_name); } - RETURN_IF_ERROR(_orc_column_to_doris_column( + RETURN_IF_ERROR(_orc_column_to_doris_column( table_col_name, column_ptr, column_type, _table_info_node_ptr->get_children_node(table_col_name), _type_map[file_column_name], batch_vec[orc_col_idx->second], data.numElements)); diff --git a/be/src/vec/exec/format/orc/vorc_reader.h b/be/src/vec/exec/format/orc/vorc_reader.h index b2bc9aca8a5746..cf13ddf6d9aa8a 100644 --- a/be/src/vec/exec/format/orc/vorc_reader.h +++ b/be/src/vec/exec/format/orc/vorc_reader.h @@ -112,6 +112,12 @@ struct LazyReadContext { std::unordered_map predicate_missing_columns; // lazy read missing columns or all missing columns std::unordered_map missing_columns; + + std::vector partial_predicate_columns; + + // Record the number of rows filled in filter phase for lazy materialization + // This is used to check if a column was already processed in filter phase + size_t filter_phase_rows = 0; }; class OrcReader : public GenericReader { @@ -158,7 +164,9 @@ class OrcReader : public GenericReader { const VExprContextSPtrs* not_single_slot_filter_conjuncts, const std::unordered_map* slot_id_to_filter_conjuncts, std::shared_ptr table_info_node_ptr = - TableSchemaChangeHelper::ConstNode::get_instance()); + TableSchemaChangeHelper::ConstNode::get_instance(), + const std::set& column_ids = {}, + const std::set& filter_column_ids = {}); Status set_fill_columns( const std::unordered_map>& @@ -196,6 +204,7 @@ class OrcReader : public GenericReader { bool* is_stripe_filtered); DataTypePtr convert_to_doris_type(const orc::Type* orc_type); + static std::string get_field_name_lower_case(const orc::Type* orc_type, int pos); void set_row_id_column_iterator( @@ -628,7 +637,7 @@ class OrcReader : public GenericReader { size_t _batch_size; int64_t _range_start_offset; int64_t _range_size; - const std::string& _ctz; + std::string _ctz; int32_t _offset_days = 0; cctz::time_zone _time_zone; @@ -651,6 +660,9 @@ class OrcReader : public GenericReader { // file column name to orc type std::unordered_map _type_map; + // Column ID to file original type mapping for handling incomplete MAP type due to column pruning. + std::unordered_map _column_id_to_file_type; + std::unique_ptr _file_input_stream; Statistics _statistics; OrcProfile _orc_profile; @@ -713,6 +725,9 @@ class OrcReader : public GenericReader { std::shared_ptr _table_info_node_ptr = TableSchemaChangeHelper::ConstNode::get_instance(); + std::set _column_ids; + std::set _filter_column_ids; + VExprSPtrs _push_down_exprs; }; diff --git a/be/src/vec/exec/format/parquet/schema_desc.cpp b/be/src/vec/exec/format/parquet/schema_desc.cpp index b491ed4cd9c37e..677898da6e75b5 100644 --- a/be/src/vec/exec/format/parquet/schema_desc.cpp +++ b/be/src/vec/exec/format/parquet/schema_desc.cpp @@ -177,6 +177,7 @@ Status FieldDescriptor::parse_node_field(const std::vectorname = t_schema.name; + node_field->lower_case_name = to_lower(t_schema.name); node_field->data_type = std::make_shared(make_nullable(child->data_type)); _next_schema_pos = curr_pos + 1; node_field->field_id = t_schema.__isset.field_id ? t_schema.field_id : -1; @@ -194,8 +195,10 @@ Status FieldDescriptor::parse_node_field(const std::vectorname = physical_schema.name; + physical_field->lower_case_name = to_lower(physical_field->name); physical_field->parquet_schema = physical_schema; physical_field->physical_type = physical_schema.type; + physical_field->column_id = UNASSIGNED_COLUMN_ID; // Initialize column_id _physical_fields.push_back(physical_field); physical_field->physical_column_index = cast_set(_physical_fields.size() - 1); auto type = get_doris_type(physical_schema, is_nullable); @@ -410,6 +413,8 @@ Status FieldDescriptor::parse_group_field(const std::vectorname = group_schema.name; + group_field->lower_case_name = to_lower(group_field->name); + group_field->column_id = UNASSIGNED_COLUMN_ID; // Initialize column_id group_field->data_type = std::make_shared(make_nullable(struct_field->data_type)); group_field->field_id = group_schema.__isset.field_id ? group_schema.field_id : -1; @@ -478,6 +483,8 @@ Status FieldDescriptor::parse_list_field(const std::vectorname = first_level.name; + list_field->lower_case_name = to_lower(first_level.name); + list_field->column_id = UNASSIGNED_COLUMN_ID; // Initialize column_id list_field->data_type = std::make_shared(make_nullable(list_field->children[0].data_type)); if (is_optional) { @@ -536,21 +543,24 @@ Status FieldDescriptor::parse_map_field(const std::vectorrepetition_level++; map_field->definition_level++; - map_field->children.resize(1); + // Directly create key and value children instead of intermediate key_value node + map_field->children.resize(2); // map is a repeated node, we should set the `repeated_parent_def_level` of its children as `definition_level` set_child_node_level(map_field, map_field->definition_level); - auto map_kv_field = &map_field->children[0]; - // produce MAP> - RETURN_IF_ERROR(parse_struct_field(t_schemas, curr_pos + 1, map_kv_field)); + + auto key_field = &map_field->children[0]; + auto value_field = &map_field->children[1]; + + // Parse key and value fields directly from the key_value group's children + _next_schema_pos = curr_pos + 2; // Skip key_value group, go directly to key + RETURN_IF_ERROR(parse_node_field(t_schemas, _next_schema_pos, key_field)); + RETURN_IF_ERROR(parse_node_field(t_schemas, _next_schema_pos, value_field)); map_field->name = map_schema.name; - map_field->data_type = std::make_shared( - make_nullable(assert_cast( - remove_nullable(map_kv_field->data_type).get()) - ->get_element(0)), - make_nullable(assert_cast( - remove_nullable(map_kv_field->data_type).get()) - ->get_element(1))); + map_field->lower_case_name = to_lower(map_field->name); + map_field->column_id = UNASSIGNED_COLUMN_ID; // Initialize column_id + map_field->data_type = std::make_shared(make_nullable(key_field->data_type), + make_nullable(value_field->data_type)); if (is_optional) { map_field->data_type = make_nullable(map_field->data_type); } @@ -575,6 +585,8 @@ Status FieldDescriptor::parse_struct_field(const std::vectorchildren[i])); } struct_field->name = struct_schema.name; + struct_field->lower_case_name = to_lower(struct_field->name); + struct_field->column_id = UNASSIGNED_COLUMN_ID; // Initialize column_id struct_field->field_id = struct_schema.__isset.field_id ? struct_schema.field_id : -1; DataTypes res_data_types; @@ -627,6 +639,59 @@ std::string FieldDescriptor::debug_string() const { ss << "]"; return ss.str(); } + +void FieldDescriptor::assign_ids() { + uint64_t next_id = 1; + for (auto& field : _fields) { + field.assign_ids(next_id); + } +} + +const FieldSchema* FieldDescriptor::find_column_by_id(uint64_t column_id) const { + for (const auto& field : _fields) { + if (auto result = field.find_column_by_id(column_id)) { + return result; + } + } + return nullptr; +} + +void FieldSchema::assign_ids(uint64_t& next_id) { + column_id = next_id++; + + for (auto& child : children) { + child.assign_ids(next_id); + } + + max_column_id = next_id - 1; +} + +const FieldSchema* FieldSchema::find_column_by_id(uint64_t target_id) const { + if (column_id == target_id) { + return this; + } + + for (const auto& child : children) { + if (auto result = child.find_column_by_id(target_id)) { + return result; + } + } + + return nullptr; +} + +uint64_t FieldSchema::get_column_id() const { + return column_id; +} + +void FieldSchema::set_column_id(uint64_t id) { + column_id = id; +} + +uint64_t FieldSchema::get_max_column_id() const { + return max_column_id; +} + #include "common/compile_check_end.h" } // namespace doris::vectorized diff --git a/be/src/vec/exec/format/parquet/schema_desc.h b/be/src/vec/exec/format/parquet/schema_desc.h index d712a74867dec8..02d04edfefc274 100644 --- a/be/src/vec/exec/format/parquet/schema_desc.h +++ b/be/src/vec/exec/format/parquet/schema_desc.h @@ -36,8 +36,13 @@ namespace doris::vectorized { #include "common/compile_check_begin.h" + +// Constant for unassigned column IDs +constexpr uint64_t UNASSIGNED_COLUMN_ID = UINT64_MAX; + struct FieldSchema { std::string name; + std::string lower_case_name; // for hms column name case insensitive match // the referenced parquet schema element tparquet::SchemaElement parquet_schema; @@ -56,12 +61,22 @@ struct FieldSchema { //For UInt8 -> Int16,UInt16 -> Int32,UInt32 -> Int64,UInt64 -> Int128. bool is_type_compatibility = false; - FieldSchema() : data_type(std::make_shared()) {} + FieldSchema() + : data_type(std::make_shared()), column_id(UNASSIGNED_COLUMN_ID) {} ~FieldSchema() = default; FieldSchema(const FieldSchema& fieldSchema) = default; std::string debug_string() const; int32_t field_id = -1; + uint64_t column_id = UNASSIGNED_COLUMN_ID; + uint64_t max_column_id = 0; // Maximum column ID for this field and its children + + // Column ID assignment and lookup methods + void assign_ids(uint64_t& next_id); + const FieldSchema* find_column_by_id(uint64_t target_id) const; + uint64_t get_column_id() const; + void set_column_id(uint64_t id); + uint64_t get_max_column_id() const; }; class FieldDescriptor { @@ -137,6 +152,19 @@ class FieldDescriptor { const std::vector& get_fields_schema() const { return _fields; } void set_enable_mapping_varbinary(bool enable) { _enable_mapping_varbinary = enable; } + + /** + * Assign stable column IDs to schema fields. + * + * This uses an ORC-compatible encoding so that the results of + * create_column_ids() are consistent across formats. IDs start from 1 + * and are assigned in a pre-order traversal (parent before children). + * After calling this, each FieldSchema will have column_id and + * max_column_id populated. + */ + void assign_ids(); + + const FieldSchema* find_column_by_id(uint64_t column_id) const; }; #include "common/compile_check_end.h" diff --git a/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp b/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp index 51840dca0db9bf..713f9159543ea7 100644 --- a/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp +++ b/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp @@ -107,36 +107,83 @@ Status ParquetColumnReader::create( io::FileReaderSPtr file, FieldSchema* field, const tparquet::RowGroup& row_group, const std::vector& row_ranges, cctz::time_zone* ctz, io::IOContext* io_ctx, std::unique_ptr& reader, size_t max_buf_size, - std::unordered_map& col_offsets, bool in_collection) { + std::unordered_map& col_offsets, bool in_collection, + const std::set& column_ids, const std::set& filter_column_ids) { size_t total_rows = row_group.num_rows; if (field->data_type->get_primitive_type() == TYPE_ARRAY) { std::unique_ptr element_reader; RETURN_IF_ERROR(create(file, &field->children[0], row_group, row_ranges, ctz, io_ctx, - element_reader, max_buf_size, col_offsets, true)); + element_reader, max_buf_size, col_offsets, true, column_ids, + filter_column_ids)); auto array_reader = ArrayColumnReader::create_unique(row_ranges, total_rows, ctz, io_ctx); RETURN_IF_ERROR(array_reader->init(std::move(element_reader), field)); + array_reader->_filter_column_ids = filter_column_ids; reader.reset(array_reader.release()); } else if (field->data_type->get_primitive_type() == TYPE_MAP) { std::unique_ptr key_reader; std::unique_ptr value_reader; - RETURN_IF_ERROR(create(file, &field->children[0].children[0], row_group, row_ranges, ctz, - io_ctx, key_reader, max_buf_size, col_offsets, true)); - RETURN_IF_ERROR(create(file, &field->children[0].children[1], row_group, row_ranges, ctz, - io_ctx, value_reader, max_buf_size, col_offsets, true)); + if (column_ids.empty() || + column_ids.find(field->children[0].get_column_id()) != column_ids.end()) { + // Create key reader + RETURN_IF_ERROR(create(file, &field->children[0], row_group, row_ranges, ctz, io_ctx, + key_reader, max_buf_size, col_offsets, true, column_ids, + filter_column_ids)); + } else { + auto skip_reader = std::make_unique(row_ranges, total_rows, ctz, + io_ctx, &field->children[0]); + key_reader = std::move(skip_reader); + } + + if (column_ids.empty() || + column_ids.find(field->children[1].get_column_id()) != column_ids.end()) { + // Create value reader + RETURN_IF_ERROR(create(file, &field->children[1], row_group, row_ranges, ctz, io_ctx, + value_reader, max_buf_size, col_offsets, true, column_ids, + filter_column_ids)); + } else { + auto skip_reader = std::make_unique(row_ranges, total_rows, ctz, + io_ctx, &field->children[0]); + value_reader = std::move(skip_reader); + } + auto map_reader = MapColumnReader::create_unique(row_ranges, total_rows, ctz, io_ctx); RETURN_IF_ERROR(map_reader->init(std::move(key_reader), std::move(value_reader), field)); + map_reader->_filter_column_ids = filter_column_ids; reader.reset(map_reader.release()); } else if (field->data_type->get_primitive_type() == TYPE_STRUCT) { std::unordered_map> child_readers; child_readers.reserve(field->children.size()); + int non_skip_reader_idx = -1; for (int i = 0; i < field->children.size(); ++i) { + auto& child = field->children[i]; std::unique_ptr child_reader; - RETURN_IF_ERROR(create(file, &field->children[i], row_group, row_ranges, ctz, io_ctx, - child_reader, max_buf_size, col_offsets, in_collection)); - child_readers[field->children[i].name] = std::move(child_reader); + if (column_ids.empty() || column_ids.find(child.get_column_id()) != column_ids.end()) { + RETURN_IF_ERROR(create(file, &child, row_group, row_ranges, ctz, io_ctx, + child_reader, max_buf_size, col_offsets, in_collection, + column_ids, filter_column_ids)); + child_readers[child.name] = std::move(child_reader); + // Record the first non-SkippingReader + if (non_skip_reader_idx == -1) { + non_skip_reader_idx = i; + } + } else { + auto skip_reader = std::make_unique(row_ranges, total_rows, ctz, + io_ctx, &child); + skip_reader->_filter_column_ids = filter_column_ids; + child_readers[child.name] = std::move(skip_reader); + } + } + // If all children are SkipReadingReader, force the first child to call create + if (non_skip_reader_idx == -1) { + std::unique_ptr child_reader; + RETURN_IF_ERROR(create(file, &field->children[0], row_group, row_ranges, ctz, io_ctx, + child_reader, max_buf_size, col_offsets, in_collection, + column_ids, filter_column_ids)); + child_readers[field->children[0].name] = std::move(child_reader); } auto struct_reader = StructColumnReader::create_unique(row_ranges, total_rows, ctz, io_ctx); RETURN_IF_ERROR(struct_reader->init(std::move(child_readers), field)); + struct_reader->_filter_column_ids = filter_column_ids; reader.reset(struct_reader.release()); } else { auto physical_index = field->physical_column_index; @@ -152,12 +199,14 @@ Status ParquetColumnReader::create( row_ranges, total_rows, chunk, offset_index, ctz, io_ctx); RETURN_IF_ERROR(scalar_reader->init(file, field, max_buf_size)); + scalar_reader->_filter_column_ids = filter_column_ids; reader.reset(scalar_reader.release()); } else { auto scalar_reader = ScalarColumnReader::create_unique( row_ranges, total_rows, chunk, offset_index, ctz, io_ctx); RETURN_IF_ERROR(scalar_reader->init(file, field, max_buf_size)); + scalar_reader->_filter_column_ids = filter_column_ids; reader.reset(scalar_reader.release()); } } else { @@ -166,12 +215,14 @@ Status ParquetColumnReader::create( row_ranges, total_rows, chunk, offset_index, ctz, io_ctx); RETURN_IF_ERROR(scalar_reader->init(file, field, max_buf_size)); + scalar_reader->_filter_column_ids = filter_column_ids; reader.reset(scalar_reader.release()); } else { auto scalar_reader = ScalarColumnReader::create_unique( row_ranges, total_rows, chunk, offset_index, ctz, io_ctx); RETURN_IF_ERROR(scalar_reader->init(file, field, max_buf_size)); + scalar_reader->_filter_column_ids = filter_column_ids; reader.reset(scalar_reader.release()); } } @@ -482,7 +533,8 @@ template Status ScalarColumnReader::read_column_data( ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, - size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter) { + size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter, + int64_t real_column_size) { if (_converter == nullptr) { _converter = parquet::PhysicalToLogicalConverter::get_converter( _field_schema, _field_schema->data_type, type, _ctz, is_dict_filter); @@ -538,7 +590,7 @@ Status ScalarColumnReader::read_column_data( } if (batch_size >= remaining_num_values && filter_map.can_filter_all(remaining_num_values, _filter_map_index)) { - // We can skip the whole page if the remaining values is filtered by predicate columns + // We can skip the whole page if the remaining values are filtered by predicate columns _filter_map_index += remaining_num_values; _current_row_index = right_row; *read_rows = remaining_num_values; @@ -612,7 +664,8 @@ Status ArrayColumnReader::init(std::unique_ptr element_read Status ArrayColumnReader::read_column_data( ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, - size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter) { + size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter, + int64_t real_column_size) { MutableColumnPtr data_column; NullMap* null_map_ptr = nullptr; if (doris_column->is_nullable()) { @@ -664,7 +717,8 @@ Status MapColumnReader::init(std::unique_ptr key_reader, Status MapColumnReader::read_column_data( ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, - size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter) { + size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter, + int64_t real_column_size) { MutableColumnPtr data_column; NullMap* null_map_ptr = nullptr; if (doris_column->is_nullable()) { @@ -696,6 +750,7 @@ Status MapColumnReader::read_column_data( size_t value_rows = 0; bool key_eof = false; bool value_eof = false; + int64_t orig_col_column_size = key_column->size(); RETURN_IF_ERROR(_key_reader->read_column_data(key_column, key_type, root_node->get_key_node(), filter_map, batch_size, &key_rows, &key_eof, @@ -705,11 +760,11 @@ Status MapColumnReader::read_column_data( size_t loop_rows = 0; RETURN_IF_ERROR(_value_reader->read_column_data( value_column, value_type, root_node->get_value_node(), filter_map, - key_rows - value_rows, &loop_rows, &value_eof, is_dict_filter)); + key_rows - value_rows, &loop_rows, &value_eof, is_dict_filter, + key_column->size() - orig_col_column_size)); value_rows += loop_rows; } DCHECK_EQ(key_rows, value_rows); - DCHECK_EQ(key_eof, value_eof); *read_rows = key_rows; *eof = key_eof; @@ -736,7 +791,8 @@ Status StructColumnReader::init( Status StructColumnReader::read_column_data( ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, - size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter) { + size_t batch_size, size_t* read_rows, bool* eof, bool is_dict_filter, + int64_t real_column_size) { MutableColumnPtr data_column; NullMap* null_map_ptr = nullptr; if (doris_column->is_nullable()) { @@ -760,7 +816,9 @@ Status StructColumnReader::read_column_data( const auto* doris_struct_type = assert_cast(remove_nullable(type).get()); int64_t not_missing_column_id = -1; + size_t not_missing_orig_column_size = 0; std::vector missing_column_idxs {}; + std::vector skip_reading_column_idxs {}; _read_column_names.clear(); @@ -770,16 +828,32 @@ Status StructColumnReader::read_column_data( auto& doris_name = const_cast(doris_struct_type->get_element_name(i)); if (!root_node->children_column_exists(doris_name)) { missing_column_idxs.push_back(i); + VLOG_DEBUG << "[ParquetReader] Missing column in schema: column_idx[" << i + << "], doris_name: " << doris_name << " (column not exists in root node)"; continue; } auto file_name = root_node->children_file_column_name(doris_name); + // Check if this is a SkipReadingReader - we should skip it when choosing reference column + // because SkipReadingReader doesn't know the actual data size in nested context + bool is_skip_reader = + dynamic_cast(_child_readers[file_name].get()) != nullptr; + + if (is_skip_reader) { + // Store SkipReadingReader columns to fill them later based on reference column size + skip_reading_column_idxs.push_back(i); + continue; + } + + // Only add non-SkipReadingReader columns to _read_column_names + // This ensures get_rep_level() and get_def_level() return valid levels _read_column_names.emplace_back(file_name); size_t field_rows = 0; bool field_eof = false; if (not_missing_column_id == -1) { not_missing_column_id = i; + not_missing_orig_column_size = doris_field->size(); RETURN_IF_ERROR(_child_readers[file_name]->read_column_data( doris_field, doris_type, root_node->get_children_node(doris_name), filter_map, batch_size, &field_rows, &field_eof, is_dict_filter)); @@ -808,10 +882,77 @@ Status StructColumnReader::read_column_data( } } + int64_t missing_column_sz = -1; + if (not_missing_column_id == -1) { - // TODO: support read struct which columns are all missing - return Status::Corruption("Not support read struct '{}' which columns are all missing", - _field_schema->name); + // All queried columns are missing in the file (e.g., all added after schema change) + // We need to pick a column from _field_schema children that exists in the file for RL/DL reference + std::string reference_file_column_name; + std::unique_ptr* reference_reader = nullptr; + + for (const auto& child : _field_schema->children) { + auto it = _child_readers.find(child.name); + if (it != _child_readers.end()) { + // Skip SkipReadingReader as they don't have valid RL/DL + bool is_skip_reader = dynamic_cast(it->second.get()) != nullptr; + if (!is_skip_reader) { + reference_file_column_name = child.name; + reference_reader = &(it->second); + break; + } + } + } + + if (reference_reader != nullptr) { + // Read the reference column to get correct RL/DL information + // TODO: Optimize by only reading RL/DL without actual data decoding + + // We need to find the FieldSchema for the reference column from _field_schema children + FieldSchema* ref_field_schema = nullptr; + for (auto& child : _field_schema->children) { + if (child.name == reference_file_column_name) { + ref_field_schema = &child; + break; + } + } + + if (ref_field_schema == nullptr) { + return Status::InternalError( + "Cannot find field schema for reference column '{}' in struct '{}'", + reference_file_column_name, _field_schema->name); + } + + // Create a temporary column to hold the data (we'll use its size for missing_column_sz) + ColumnPtr temp_column = ref_field_schema->data_type->create_column(); + auto temp_type = ref_field_schema->data_type; + + size_t field_rows = 0; + bool field_eof = false; + + // Use root_node to get the correct child node for the reference column + // reference_file_column_name is the file column name, use get_children_node_by_file_column_name + auto ref_child_node = + root_node->get_children_node_by_file_column_name(reference_file_column_name); + not_missing_orig_column_size = temp_column->size(); + + RETURN_IF_ERROR((*reference_reader) + ->read_column_data(temp_column, temp_type, ref_child_node, + filter_map, batch_size, &field_rows, + &field_eof, is_dict_filter)); + + *read_rows = field_rows; + *eof = field_eof; + + // Store this reference column name for get_rep_level/get_def_level to use + _read_column_names.emplace_back(reference_file_column_name); + + missing_column_sz = temp_column->size() - not_missing_orig_column_size; + } else { + return Status::Corruption( + "Cannot read struct '{}': all queried columns are missing and no reference " + "column found in file", + _field_schema->name); + } } // This missing_column_sz is not *read_rows. Because read_rows returns the number of rows. @@ -822,8 +963,27 @@ Status StructColumnReader::read_column_data( // [{4,null},{5,null}] // When you first read subcolumn a, you read 5 data items and the value of *read_rows is 2. // You should insert 5 records into subcolumn b instead of 2. - auto missing_column_sz = doris_struct.get_column(not_missing_column_id).size(); - // fill missing column with null or default value + if (missing_column_sz == -1) { + missing_column_sz = doris_struct.get_column(not_missing_column_id).size() - + not_missing_orig_column_size; + } + + // Fill SkipReadingReader columns with the correct amount of data based on reference column + // Let SkipReadingReader handle the data filling through its read_column_data method + for (auto idx : skip_reading_column_idxs) { + auto& doris_field = doris_struct.get_column_ptr(idx); + auto& doris_type = const_cast(doris_struct_type->get_element(idx)); + auto& doris_name = const_cast(doris_struct_type->get_element_name(idx)); + auto file_name = root_node->children_file_column_name(doris_name); + + size_t field_rows = 0; + bool field_eof = false; + RETURN_IF_ERROR(_child_readers[file_name]->read_column_data( + doris_field, doris_type, root_node->get_children_node(doris_name), filter_map, + missing_column_sz, &field_rows, &field_eof, is_dict_filter, missing_column_sz)); + } + + // Fill truly missing columns (not in root_node) with null or default value for (auto idx : missing_column_idxs) { auto& doris_field = doris_struct.get_column_ptr(idx); auto& doris_type = const_cast(doris_struct_type->get_element(idx)); @@ -837,7 +997,6 @@ Status StructColumnReader::read_column_data( fill_struct_null_map(_field_schema, *null_map_ptr, this->get_rep_level(), this->get_def_level()); } - return Status::OK(); } diff --git a/be/src/vec/exec/format/parquet/vparquet_column_reader.h b/be/src/vec/exec/format/parquet/vparquet_column_reader.h index 83d548ed4cf1c9..74033e478312a3 100644 --- a/be/src/vec/exec/format/parquet/vparquet_column_reader.h +++ b/be/src/vec/exec/format/parquet/vparquet_column_reader.h @@ -123,7 +123,8 @@ class ParquetColumnReader { virtual Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, size_t batch_size, size_t* read_rows, - bool* eof, bool is_dict_filter) = 0; + bool* eof, bool is_dict_filter, + int64_t real_column_size = -1) = 0; virtual Status read_dict_values_to_column(MutableColumnPtr& doris_column, bool* has_dict) { return Status::NotSupported("read_dict_values_to_column is not supported"); @@ -140,7 +141,8 @@ class ParquetColumnReader { io::IOContext* io_ctx, std::unique_ptr& reader, size_t max_buf_size, std::unordered_map& col_offsets, - bool in_collection = false); + bool in_collection = false, const std::set& column_ids = {}, + const std::set& filter_column_ids = {}); virtual const std::vector& get_rep_level() const = 0; virtual const std::vector& get_def_level() const = 0; virtual Statistics statistics() = 0; @@ -148,6 +150,8 @@ class ParquetColumnReader { virtual void reset_filter_map_index() = 0; + FieldSchema* get_field_schema() const { return _field_schema; } + protected: void _generate_read_ranges(int64_t start_index, int64_t end_index, std::list& read_ranges); @@ -162,6 +166,7 @@ class ParquetColumnReader { int64_t _decode_null_map_time = 0; size_t _filter_map_index = 0; + std::set _filter_column_ids; }; template @@ -180,7 +185,7 @@ class ScalarColumnReader : public ParquetColumnReader { Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, size_t batch_size, size_t* read_rows, bool* eof, - bool is_dict_filter) override; + bool is_dict_filter, int64_t real_column_size = -1) override; Status read_dict_values_to_column(MutableColumnPtr& doris_column, bool* has_dict) override; MutableColumnPtr convert_dict_column_to_string_column(const ColumnInt32* dict_column) override; const std::vector& get_rep_level() const override { return _rep_levels; } @@ -294,7 +299,7 @@ class ArrayColumnReader : public ParquetColumnReader { Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, size_t batch_size, size_t* read_rows, bool* eof, - bool is_dict_filter) override; + bool is_dict_filter, int64_t real_column_size = -1) override; const std::vector& get_rep_level() const override { return _element_reader->get_rep_level(); } @@ -323,7 +328,7 @@ class MapColumnReader : public ParquetColumnReader { Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, size_t batch_size, size_t* read_rows, bool* eof, - bool is_dict_filter) override; + bool is_dict_filter, int64_t real_column_size = -1) override; const std::vector& get_rep_level() const override { return _key_reader->get_rep_level(); @@ -365,7 +370,7 @@ class StructColumnReader : public ParquetColumnReader { Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, const std::shared_ptr& root_node, FilterMap& filter_map, size_t batch_size, size_t* read_rows, bool* eof, - bool is_dict_filter) override; + bool is_dict_filter, int64_t real_column_size = -1) override; const std::vector& get_rep_level() const override { if (!_read_column_names.empty()) { @@ -414,6 +419,90 @@ class StructColumnReader : public ParquetColumnReader { std::vector _read_column_names; //Need to use vector instead of set,see `get_rep_level()` for the reason. }; + +// A special reader that skips actual reading but provides empty data with correct structure +// This is used when a column is not needed but its structure is required (e.g., for map keys) +class SkipReadingReader : public ParquetColumnReader { +public: + SkipReadingReader(const std::vector& row_ranges, size_t total_rows, + cctz::time_zone* ctz, io::IOContext* io_ctx, FieldSchema* field_schema) + : ParquetColumnReader(row_ranges, total_rows, ctz, io_ctx) { + _field_schema = field_schema; // Use inherited member from base class + VLOG_DEBUG << "[ParquetReader] Created SkipReadingReader for field: " + << _field_schema->name; + } + + Status read_column_data(ColumnPtr& doris_column, DataTypePtr& type, + const std::shared_ptr& root_node, + FilterMap& filter_map, size_t batch_size, size_t* read_rows, bool* eof, + bool is_dict_filter, int64_t real_column_size = -1) override { + VLOG_DEBUG << "[ParquetReader] SkipReadingReader::read_column_data for field: " + << _field_schema->name << ", batch_size: " << batch_size; + DCHECK(real_column_size >= 0); // real_column_size for filtered column size. + + // Simulate reading without actually reading data + // Fill with default/null values based on column type + MutableColumnPtr data_column = doris_column->assume_mutable(); + + if (real_column_size > 0) { + if (doris_column->is_nullable()) { + auto* nullable_column = static_cast(data_column.get()); + nullable_column->insert_many_defaults(real_column_size); + } else { + // For non-nullable columns, insert appropriate default values + for (size_t i = 0; i < real_column_size; ++i) { + data_column->insert_default(); + } + } + } + + *read_rows = batch_size; // Indicate we "read" batch_size rows + *eof = false; // We can always provide more empty data + + VLOG_DEBUG << "[ParquetReader] SkipReadingReader generated " << batch_size + << " default values for field: " << _field_schema->name; + + return Status::OK(); + } + + static std::unique_ptr create_unique(const std::vector& row_ranges, + size_t total_rows, cctz::time_zone* ctz, + io::IOContext* io_ctx, + FieldSchema* field_schema) { + return std::make_unique(row_ranges, total_rows, ctz, io_ctx, + field_schema); + } + + // These methods should not be called for SkipReadingReader + // If they are called, it indicates a logic error in the code + const std::vector& get_rep_level() const override { + LOG(FATAL) << "get_rep_level() should not be called on SkipReadingReader for field: " + << _field_schema->name + << ". This indicates the SkipReadingReader was incorrectly used as a reference " + "column."; + __builtin_unreachable(); + } + + const std::vector& get_def_level() const override { + LOG(FATAL) << "get_def_level() should not be called on SkipReadingReader for field: " + << _field_schema->name + << ". This indicates the SkipReadingReader was incorrectly used as a reference " + "column."; + __builtin_unreachable(); + } + + // Implement required pure virtual methods from base class + Statistics statistics() override { + return Statistics(); // Return empty statistics + } + + void close() override { + // Nothing to close for skip reading + } + + void reset_filter_map_index() override { _filter_map_index = 0; } +}; + #include "common/compile_check_end.h" }; // namespace doris::vectorized diff --git a/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp b/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp index 585d993df4dcfc..81e57a3a27aeb1 100644 --- a/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp +++ b/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp @@ -83,7 +83,9 @@ RowGroupReader::RowGroupReader(io::FileReaderSPtr file_reader, const int32_t row_group_id, const tparquet::RowGroup& row_group, cctz::time_zone* ctz, io::IOContext* io_ctx, const PositionDeleteContext& position_delete_ctx, - const LazyReadContext& lazy_read_ctx, RuntimeState* state) + const LazyReadContext& lazy_read_ctx, RuntimeState* state, + const std::set& column_ids, + const std::set& filter_column_ids) : _file_reader(file_reader), _read_table_columns(read_columns), _row_group_id(row_group_id), @@ -94,7 +96,9 @@ RowGroupReader::RowGroupReader(io::FileReaderSPtr file_reader, _position_delete_ctx(position_delete_ctx), _lazy_read_ctx(lazy_read_ctx), _state(state), - _obj_pool(new ObjectPool()) {} + _obj_pool(new ObjectPool()), + _column_ids(column_ids), + _filter_column_ids(filter_column_ids) {} RowGroupReader::~RowGroupReader() { _column_readers.clear(); @@ -125,9 +129,9 @@ Status RowGroupReader::init( auto read_file_col = _table_info_node_ptr->children_file_column_name(read_table_col); auto* field = const_cast(schema.get_column(read_file_col)); std::unique_ptr reader; - RETURN_IF_ERROR(ParquetColumnReader::create(_file_reader, field, _row_group_meta, - _read_ranges, _ctz, _io_ctx, reader, - max_buf_size, col_offsets, false)); + RETURN_IF_ERROR(ParquetColumnReader::create( + _file_reader, field, _row_group_meta, _read_ranges, _ctz, _io_ctx, reader, + max_buf_size, col_offsets, false, _column_ids, _filter_column_ids)); if (reader == nullptr) { VLOG_DEBUG << "Init row group(" << _row_group_id << ") reader failed"; return Status::Corruption("Init row group reader failed"); @@ -315,8 +319,8 @@ Status RowGroupReader::next_batch(Block* block, size_t batch_size, size_t* read_ return _do_lazy_read(block, batch_size, read_rows, batch_eof); } else { FilterMap filter_map; - RETURN_IF_ERROR(_read_column_data(block, _lazy_read_ctx.all_read_columns, batch_size, - read_rows, batch_eof, filter_map)); + RETURN_IF_ERROR((_read_column_data(block, _lazy_read_ctx.all_read_columns, batch_size, + read_rows, batch_eof, filter_map))); RETURN_IF_ERROR( _fill_partition_columns(block, *read_rows, _lazy_read_ctx.partition_columns)); RETURN_IF_ERROR(_fill_missing_columns(block, *read_rows, _lazy_read_ctx.missing_columns)); @@ -429,9 +433,18 @@ Status RowGroupReader::_read_column_data(Block* block, RETURN_IF_ERROR(_column_readers[read_col_name]->read_column_data( column_ptr, column_type, _table_info_node_ptr->get_children_node(read_col_name), filter_map, batch_size - col_read_rows, &loop_rows, &col_eof, is_dict_filter)); + VLOG_DEBUG << "[RowGroupReader] column '" << read_col_name + << "' loop_rows=" << loop_rows << " col_read_rows_so_far=" << col_read_rows + << std::endl; col_read_rows += loop_rows; } + VLOG_DEBUG << "[RowGroupReader] column '" << read_col_name + << "' read_rows=" << col_read_rows << std::endl; if (batch_read_rows > 0 && batch_read_rows != col_read_rows) { + LOG(WARNING) << "[RowGroupReader] Mismatched read rows among parquet columns. " + "previous_batch_read_rows=" + << batch_read_rows << ", current_column='" << read_col_name + << "', current_col_read_rows=" << col_read_rows; return Status::Corruption("Can't read the same number of rows among parquet columns"); } batch_read_rows = col_read_rows; diff --git a/be/src/vec/exec/format/parquet/vparquet_group_reader.h b/be/src/vec/exec/format/parquet/vparquet_group_reader.h index 9d0a59a4e918ef..b0f58069ae6f19 100644 --- a/be/src/vec/exec/format/parquet/vparquet_group_reader.h +++ b/be/src/vec/exec/format/parquet/vparquet_group_reader.h @@ -150,7 +150,9 @@ class RowGroupReader : public ProfileCollector { const int32_t row_group_id, const tparquet::RowGroup& row_group, cctz::time_zone* ctz, io::IOContext* io_ctx, const PositionDeleteContext& position_delete_ctx, - const LazyReadContext& lazy_read_ctx, RuntimeState* state); + const LazyReadContext& lazy_read_ctx, RuntimeState* state, + const std::set& column_ids, + const std::set& filter_column_ids); ~RowGroupReader(); Status init(const FieldDescriptor& schema, std::vector& row_ranges, @@ -188,9 +190,11 @@ class RowGroupReader : public ProfileCollector { void _merge_read_ranges(std::vector& row_ranges); Status _read_empty_batch(size_t batch_size, size_t* read_rows, bool* batch_eof, bool* modify_row_ids); + Status _read_column_data(Block* block, const std::vector& columns, size_t batch_size, size_t* read_rows, bool* batch_eof, FilterMap& filter_map); + Status _do_lazy_read(Block* block, size_t batch_size, size_t* read_rows, bool* batch_eof); Status _rebuild_filter_map(FilterMap& filter_map, DorisUniqueBufferPtr& filter_map_data, @@ -249,6 +253,8 @@ class RowGroupReader : public ProfileCollector { std::vector> _dict_filter_cols; RuntimeState* _state = nullptr; std::shared_ptr _obj_pool; + const std::set& _column_ids; + const std::set& _filter_column_ids; bool _is_row_group_filtered = false; RowGroupIndex _current_row_group_idx {0, 0, 0}; diff --git a/be/src/vec/exec/format/parquet/vparquet_reader.cpp b/be/src/vec/exec/format/parquet/vparquet_reader.cpp index 8ef0f32c1b4b5e..5c23aaa10b4745 100644 --- a/be/src/vec/exec/format/parquet/vparquet_reader.cpp +++ b/be/src/vec/exec/format/parquet/vparquet_reader.cpp @@ -321,7 +321,8 @@ Status ParquetReader::init_reader( const std::unordered_map* colname_to_slot_id, const VExprContextSPtrs* not_single_slot_filter_conjuncts, const std::unordered_map* slot_id_to_filter_conjuncts, - std::shared_ptr table_info_node_ptr, bool filter_groups) { + std::shared_ptr table_info_node_ptr, bool filter_groups, + const std::set& column_ids, const std::set& filter_column_ids) { _tuple_descriptor = tuple_descriptor; _row_descriptor = row_descriptor; _colname_to_slot_id = colname_to_slot_id; @@ -330,6 +331,8 @@ Status ParquetReader::init_reader( _colname_to_value_range = colname_to_value_range; _table_info_node_ptr = table_info_node_ptr; _filter_groups = filter_groups; + _column_ids = column_ids; + _filter_column_ids = filter_column_ids; RETURN_IF_ERROR(_open_file()); _t_metadata = &(_file_metadata->to_thrift()); @@ -880,12 +883,12 @@ Status ParquetReader::_next_row_group_reader() { _profile, _file_reader, io_ranges, merged_read_slice_size) : _file_reader; } - _current_group_reader.reset( - new RowGroupReader(_io_ctx ? std::make_shared( - group_file_reader, _io_ctx->file_reader_stats) - : group_file_reader, - _read_table_columns, row_group_index.row_group_id, row_group, _ctz, - _io_ctx, position_delete_ctx, _lazy_read_ctx, _state)); + _current_group_reader.reset(new RowGroupReader( + _io_ctx ? std::make_shared(group_file_reader, + _io_ctx->file_reader_stats) + : group_file_reader, + _read_table_columns, row_group_index.row_group_id, row_group, _ctz, _io_ctx, + position_delete_ctx, _lazy_read_ctx, _state, _column_ids, _filter_column_ids)); _row_group_eof = false; _current_group_reader->set_current_row_group_idx(row_group_index); @@ -967,27 +970,30 @@ std::vector ParquetReader::_generate_random_access_ranges( size_t total_io_size = 0; std::function scalar_range = [&](const FieldSchema* field, const tparquet::RowGroup& row_group) { - if (field->data_type->get_primitive_type() == TYPE_ARRAY) { - scalar_range(&field->children[0], row_group); - } else if (field->data_type->get_primitive_type() == TYPE_MAP) { - scalar_range(&field->children[0].children[0], row_group); - scalar_range(&field->children[0].children[1], row_group); - } else if (field->data_type->get_primitive_type() == TYPE_STRUCT) { - for (int i = 0; i < field->children.size(); ++i) { - scalar_range(&field->children[i], row_group); + if (_column_ids.empty() || + _column_ids.find(field->get_column_id()) != _column_ids.end()) { + if (field->data_type->get_primitive_type() == TYPE_ARRAY) { + scalar_range(&field->children[0], row_group); + } else if (field->data_type->get_primitive_type() == TYPE_MAP) { + scalar_range(&field->children[0], row_group); + scalar_range(&field->children[1], row_group); + } else if (field->data_type->get_primitive_type() == TYPE_STRUCT) { + for (int i = 0; i < field->children.size(); ++i) { + scalar_range(&field->children[i], row_group); + } + } else { + const tparquet::ColumnChunk& chunk = + row_group.columns[field->physical_column_index]; + auto& chunk_meta = chunk.meta_data; + int64_t chunk_start = has_dict_page(chunk_meta) + ? chunk_meta.dictionary_page_offset + : chunk_meta.data_page_offset; + int64_t chunk_end = chunk_start + chunk_meta.total_compressed_size; + DCHECK_GE(chunk_start, last_chunk_end); + result.emplace_back(chunk_start, chunk_end); + total_io_size += chunk_meta.total_compressed_size; + last_chunk_end = chunk_end; } - } else { - const tparquet::ColumnChunk& chunk = - row_group.columns[field->physical_column_index]; - auto& chunk_meta = chunk.meta_data; - int64_t chunk_start = has_dict_page(chunk_meta) - ? chunk_meta.dictionary_page_offset - : chunk_meta.data_page_offset; - int64_t chunk_end = chunk_start + chunk_meta.total_compressed_size; - DCHECK_GE(chunk_start, last_chunk_end); - result.emplace_back(chunk_start, chunk_end); - total_io_size += chunk_meta.total_compressed_size; - last_chunk_end = chunk_end; } }; const tparquet::RowGroup& row_group = _t_metadata->row_groups[group.row_group_id]; @@ -1062,8 +1068,8 @@ Status ParquetReader::_process_page_index(const tparquet::RowGroup& row_group, if (field->data_type->get_primitive_type() == TYPE_ARRAY) { f(&field->children[0]); } else if (field->data_type->get_primitive_type() == TYPE_MAP) { - f(&field->children[0].children[0]); - f(&field->children[0].children[1]); + f(&field->children[0]); + f(&field->children[1]); } else if (field->data_type->get_primitive_type() == TYPE_STRUCT) { for (int i = 0; i < field->children.size(); ++i) { f(&field->children[i]); diff --git a/be/src/vec/exec/format/parquet/vparquet_reader.h b/be/src/vec/exec/format/parquet/vparquet_reader.h index 293f0549b6aa5c..60c2ed880736a5 100644 --- a/be/src/vec/exec/format/parquet/vparquet_reader.h +++ b/be/src/vec/exec/format/parquet/vparquet_reader.h @@ -123,7 +123,8 @@ class ParquetReader : public GenericReader { const std::unordered_map* slot_id_to_filter_conjuncts, std::shared_ptr table_info_node_ptr = TableSchemaChangeHelper::ConstNode::get_instance(), - bool filter_groups = true); + bool filter_groups = true, const std::set& column_ids = {}, + const std::set& filter_column_ids = {}); Status get_next_block(Block* block, size_t* read_rows, bool* eof) override; @@ -324,6 +325,10 @@ class ParquetReader : public GenericReader { -1}; bool _filter_groups; + + std::set _column_ids; + std::set _filter_column_ids; + // push down =, >, <, >=, <=, in VExprSPtrs _push_down_exprs; diff --git a/be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.cpp b/be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.cpp new file mode 100644 index 00000000000000..9c97747e5a4767 --- /dev/null +++ b/be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.cpp @@ -0,0 +1,168 @@ +// 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/exec/format/table/hive/hive_orc_nested_column_utils.h" + +#include +#include +#include +#include +#include +#include + +#include "common/logging.h" +#include "orc/Type.hh" +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +void HiveOrcNestedColumnUtils::extract_nested_column_ids( + const orc::Type& type, const std::vector>& paths, + std::set& column_ids) { + std::unordered_map>> + child_paths_by_table_col_name; + for (const auto& path : paths) { + if (!path.empty()) { + std::string first_table_col_name = path[0]; + std::vector remaining; + if (path.size() > 1) { + remaining.assign(path.begin() + 1, path.end()); + } + child_paths_by_table_col_name[first_table_col_name].push_back(std::move(remaining)); + } + } + + // Track whether any child column was added to determine if parent should be included + bool has_child_columns = false; + + // For MAP type, normalize wildcard "*" to explicit KEYS/VALUES access + // Wildcard in MAP context means accessing both map keys and values + // Normalization logic: + // path: ["map_col", "*"] → ["map_col", "VALUES"] + ["map_col", "KEYS"] + // path: ["map_col", "*", "field"] → ["map_col", "VALUES", "field"] + ["map_col", "KEYS"] + if (type.getKind() == orc::TypeKind::MAP) { + auto wildcard_it = child_paths_by_table_col_name.find("*"); + if (wildcard_it != child_paths_by_table_col_name.end()) { + auto& wildcard_paths = wildcard_it->second; + + // All wildcard paths go to VALUES + auto& values_paths = child_paths_by_table_col_name["VALUES"]; + values_paths.insert(values_paths.end(), wildcard_paths.begin(), wildcard_paths.end()); + + // Always add KEYS for wildcard access + auto& keys_paths = child_paths_by_table_col_name["KEYS"]; + // Add an empty path to request full KEYS + std::vector empty_path; + keys_paths.push_back(empty_path); + + // Remove wildcard entry as it's been expanded + child_paths_by_table_col_name.erase(wildcard_it); + } + } + + for (uint64_t i = 0; i < type.getSubtypeCount(); ++i) { + const orc::Type* child = type.getSubtype(i); + + std::string child_field_name; + switch (type.getKind()) { + case orc::TypeKind::STRUCT: + child_field_name = to_lower(type.getFieldName(i)); + break; + case orc::TypeKind::LIST: + child_field_name = "*"; + break; + case orc::TypeKind::MAP: + // After wildcard normalization above, all MAP accesses are explicit KEYS/VALUES + // Simply assign the appropriate field name based on which child we're processing + if (i == 0) { + child_field_name = "KEYS"; + } else if (i == 1) { + child_field_name = "VALUES"; + } + + // Special handling for Orc MAP structure: + // When accessing only VALUES, we still need KEY structure for deduplicate_keys + // Check if we're at key child (i==0) and only VALUES is requested (no KEYS) + if (i == 0) { + bool has_keys_access = child_paths_by_table_col_name.find("KEYS") != + child_paths_by_table_col_name.end(); + bool has_values_access = child_paths_by_table_col_name.find("VALUES") != + child_paths_by_table_col_name.end(); + + // If only VALUES is accessed (not KEYS), still include key structure for deduplicate_keys + if (!has_keys_access && has_values_access) { + uint64_t key_start_id = child->getColumnId(); + uint64_t key_max_id = child->getMaximumColumnId(); + for (uint64_t id = key_start_id; id <= key_max_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + continue; // Skip further processing of key child + } + } + break; + default: + child_field_name = ""; + break; + } + + if (child_field_name.empty()) { + continue; + } + + const auto child_paths_it = child_paths_by_table_col_name.find(child_field_name); + + if (child_paths_it != child_paths_by_table_col_name.end()) { + const auto& child_paths = child_paths_it->second; + + // Check if any child path is empty (meaning full child needed) + bool needs_full_child = + std::any_of(child_paths.begin(), child_paths.end(), + [](const std::vector& path) { return path.empty(); }); + + if (needs_full_child) { + uint64_t start_id = child->getColumnId(); + uint64_t max_column_id = child->getMaximumColumnId(); + for (uint64_t id = start_id; id <= max_column_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + } else { + // Store current size to check if recursive call added any columns + size_t before_size = column_ids.size(); + + // Recursively extract from child + extract_nested_column_ids(*child, child_paths, column_ids); + + // Check if recursive call added any columns + if (column_ids.size() > before_size) { + has_child_columns = true; + }; + } + } + } + + // If any child columns were added, also add the parent column ID + // This ensures parent struct/container nodes are included when their children are needed + if (has_child_columns) { + // Set automatically handles deduplication, so no need to check if it already exists + column_ids.insert(type.getColumnId()); + } +} + +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.h b/be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.h new file mode 100644 index 00000000000000..1e1968c09b9f8e --- /dev/null +++ b/be/src/vec/exec/format/table/hive/hive_orc_nested_column_utils.h @@ -0,0 +1,43 @@ +// 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. + +#pragma once + +#include +#include +#include +#include +#include + +#include "vec/exec/format/table/table_format_reader.h" + +namespace orc { +class Type; +} // namespace orc + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +class HiveOrcNestedColumnUtils { +public: + static void extract_nested_column_ids(const orc::Type& type, + const std::vector>& paths, + std::set& column_ids); +}; + +#include "common/compile_check_end.h" +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.cpp b/be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.cpp new file mode 100644 index 00000000000000..c2223c2aa18954 --- /dev/null +++ b/be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.cpp @@ -0,0 +1,171 @@ +// 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/exec/format/table/hive/hive_parquet_nested_column_utils.h" + +#include +#include +#include +#include +#include +#include + +#include "vec/exec/format/parquet/schema_desc.h" +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +void HiveParquetNestedColumnUtils::extract_nested_column_ids( + const FieldSchema& field_schema, const std::vector>& paths, + std::set& column_ids) { + // Group paths by first field_id + std::unordered_map>> + child_paths_by_table_col_name; + + for (const auto& path : paths) { + if (!path.empty()) { + std::string first_table_col_name = path[0]; + std::vector remaining; + if (path.size() > 1) { + remaining.assign(path.begin() + 1, path.end()); + } + child_paths_by_table_col_name[first_table_col_name].push_back(std::move(remaining)); + } + } + + // Track whether any child column was added to determine if parent should be included + bool has_child_columns = false; + + // For MAP type, normalize wildcard "*" to explicit KEYS/VALUES access + // Wildcard in MAP context means accessing both map keys and values + // Normalization logic: + // path: ["map_col", "*"] → ["map_col", "VALUES"] + ["map_col", "KEYS"] + // path: ["map_col", "*", "field"] → ["map_col", "VALUES", "field"] + ["map_col", "KEYS"] + if (field_schema.data_type->get_primitive_type() == PrimitiveType::TYPE_MAP) { + auto wildcard_it = child_paths_by_table_col_name.find("*"); + if (wildcard_it != child_paths_by_table_col_name.end()) { + auto& wildcard_paths = wildcard_it->second; + + // All wildcard paths go to VALUES + auto& values_paths = child_paths_by_table_col_name["VALUES"]; + values_paths.insert(values_paths.end(), wildcard_paths.begin(), wildcard_paths.end()); + + // Always add KEYS for wildcard access + auto& keys_paths = child_paths_by_table_col_name["KEYS"]; + // Add an empty path to request full KEYS + std::vector empty_path; + keys_paths.push_back(empty_path); + + // Remove wildcard entry as it's been expanded + child_paths_by_table_col_name.erase(wildcard_it); + } + } + + // Efficiently traverse children + for (uint64_t i = 0; i < field_schema.children.size(); ++i) { + const auto& child = field_schema.children[i]; + std::string child_field_name; + + bool is_list = field_schema.data_type->get_primitive_type() == PrimitiveType::TYPE_ARRAY; + bool is_map = field_schema.data_type->get_primitive_type() == PrimitiveType::TYPE_MAP; + + if (is_list) { + child_field_name = "*"; + } else if (is_map) { + // After wildcard normalization above, all MAP accesses are explicit KEYS/VALUES + // Simply assign the appropriate field name based on which child we're processing + if (i == 0) { + child_field_name = "KEYS"; + } else if (i == 1) { + child_field_name = "VALUES"; + } + + // Special handling for Parquet MAP structure: + // When accessing only VALUES, we still need KEY structure for levels + // Check if we're at key child (i==0) and only VALUES is requested (no KEYS) + if (i == 0) { + bool has_keys_access = child_paths_by_table_col_name.find("KEYS") != + child_paths_by_table_col_name.end(); + bool has_values_access = child_paths_by_table_col_name.find("VALUES") != + child_paths_by_table_col_name.end(); + + // If only VALUES is accessed (not KEYS), still include key structure for RL/DL + if (!has_keys_access && has_values_access) { + // For map_values() queries, we need key's structure for correct RL/DL parsing. + // If key is a nested type (e.g., STRUCT), RL/DL info is stored at leaf columns. + // Add all column IDs from key's start to max (all leaves + intermediate nodes). + uint64_t key_start_id = child.get_column_id(); + uint64_t key_max_id = child.get_max_column_id(); + for (uint64_t id = key_start_id; id <= key_max_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + continue; // Skip further processing of key child + } + } + + } else { + child_field_name = child.lower_case_name; + } + + if (child_field_name.empty()) { + continue; + } + + auto child_paths_it = child_paths_by_table_col_name.find(child_field_name); + if (child_paths_it != child_paths_by_table_col_name.end()) { + const auto& child_paths = child_paths_it->second; + + // Check if any child path is empty (meaning full child needed) + bool needs_full_child = + std::any_of(child_paths.begin(), child_paths.end(), + [](const std::vector& path) { return path.empty(); }); + + if (needs_full_child) { + // Add all column IDs from current child node to max_column_id + // This efficiently handles all nested/complex cases in one loop + uint64_t start_id = child.get_column_id(); + uint64_t max_column_id = child.get_max_column_id(); + for (uint64_t id = start_id; id <= max_column_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + } else { + // Store current size to check if recursive call added any columns + size_t before_size = column_ids.size(); + + // Recursively extract from child + extract_nested_column_ids(child, child_paths, column_ids); + + // Check if recursive call added any columns + if (column_ids.size() > before_size) { + has_child_columns = true; + } + } + } + } + + // If any child columns were added, also add the parent column ID + // This ensures parent struct/container nodes are included when their children are needed + if (has_child_columns) { + // Set automatically handles deduplication, so no need to check if it already exists + column_ids.insert(field_schema.get_column_id()); + } +} + +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.h b/be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.h new file mode 100644 index 00000000000000..6b57a0a3a3846c --- /dev/null +++ b/be/src/vec/exec/format/table/hive/hive_parquet_nested_column_utils.h @@ -0,0 +1,41 @@ +// 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. + +#pragma once + +#include +#include +#include +#include +#include + +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +struct FieldSchema; + +class HiveParquetNestedColumnUtils { +public: + static void extract_nested_column_ids(const FieldSchema& field_schema, + const std::vector>& paths, + std::set& column_ids); +}; + +#include "common/compile_check_end.h" +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/hive_reader.cpp b/be/src/vec/exec/format/table/hive_reader.cpp index a454118b244cf7..9f23c23f0bf67b 100644 --- a/be/src/vec/exec/format/table/hive_reader.cpp +++ b/be/src/vec/exec/format/table/hive_reader.cpp @@ -21,6 +21,9 @@ #include "common/status.h" #include "runtime/runtime_state.h" +#include "vec/exec/format/table/hive/hive_orc_nested_column_utils.h" +#include "vec/exec/format/table/hive/hive_parquet_nested_column_utils.h" +#include "vec/exec/format/table/nested_column_access_helper.h" namespace doris::vectorized { #include "common/compile_check_begin.h" @@ -51,7 +54,7 @@ Status HiveOrcReader::init_reader( // hive1 / use index std::map slot_map; // table_name to slot for (const auto& slot : tuple_descriptor->slots()) { - slot_map.emplace(slot->col_name(), slot); + slot_map.emplace(slot->col_name_lower_case(), slot); } // For top-level columns, use indexes to match, and for sub-columns, still use name to match columns. @@ -77,10 +80,134 @@ Status HiveOrcReader::init_reader( } } + auto column_id_result = ColumnIdResult(); + if (_state->query_options().hive_orc_use_column_names && !is_hive_col_name) { + column_id_result = _create_column_ids(orc_type_ptr, tuple_descriptor); + } else { + column_id_result = + _create_column_ids_by_top_level_col_index(orc_type_ptr, tuple_descriptor); + } + + const auto& column_ids = column_id_result.column_ids; + const auto& filter_column_ids = column_id_result.filter_column_ids; + return orc_reader->init_reader(&read_table_col_names, table_col_name_to_value_range, conjuncts, false, tuple_descriptor, row_descriptor, not_single_slot_filter_conjuncts, slot_id_to_filter_conjuncts, - table_info_node_ptr); + table_info_node_ptr, column_ids, filter_column_ids); +} + +ColumnIdResult HiveOrcReader::_create_column_ids(const orc::Type* orc_type, + const TupleDescriptor* tuple_descriptor) { + // map top-level table column name (lower-cased) -> orc::Type* + std::unordered_map table_col_name_to_orc_type_map; + for (uint64_t i = 0; i < orc_type->getSubtypeCount(); ++i) { + auto orc_sub_type = orc_type->getSubtype(i); + if (!orc_sub_type) continue; + + std::string table_col_name = to_lower(orc_type->getFieldName(i)); + table_col_name_to_orc_type_map[table_col_name] = orc_sub_type; + } + + std::set column_ids; + std::set filter_column_ids; + + // helper to process access paths for a given top-level orc field + auto process_access_paths = [](const orc::Type* orc_field, + const std::vector& access_paths, + std::set& out_ids) { + process_nested_access_paths( + orc_field, access_paths, out_ids, + [](const orc::Type* type) { return type->getColumnId(); }, + [](const orc::Type* type) { return type->getMaximumColumnId(); }, + HiveOrcNestedColumnUtils::extract_nested_column_ids); + }; + + for (const auto* slot : tuple_descriptor->slots()) { + auto it = table_col_name_to_orc_type_map.find(slot->col_name_lower_case()); + if (it == table_col_name_to_orc_type_map.end()) { + // Column not found in file + continue; + } + const orc::Type* orc_field = it->second; + + // primitive (non-nested) types + if ((slot->col_type() != TYPE_STRUCT && slot->col_type() != TYPE_ARRAY && + slot->col_type() != TYPE_MAP)) { + column_ids.insert(orc_field->getColumnId()); + if (slot->is_predicate()) { + filter_column_ids.insert(orc_field->getColumnId()); + } + continue; + } + + // complex types + const auto& all_access_paths = slot->all_access_paths(); + process_access_paths(orc_field, all_access_paths, column_ids); + + const auto& predicate_access_paths = slot->predicate_access_paths(); + if (!predicate_access_paths.empty()) { + process_access_paths(orc_field, predicate_access_paths, filter_column_ids); + } + } + + return ColumnIdResult(std::move(column_ids), std::move(filter_column_ids)); +} + +ColumnIdResult HiveOrcReader::_create_column_ids_by_top_level_col_index( + const orc::Type* orc_type, const TupleDescriptor* tuple_descriptor) { + // map top-level table column position -> orc::Type* + std::unordered_map table_col_pos_to_orc_type_map; + for (uint64_t i = 0; i < orc_type->getSubtypeCount(); ++i) { + auto orc_sub_type = orc_type->getSubtype(i); + if (!orc_sub_type) continue; + + table_col_pos_to_orc_type_map[i] = orc_sub_type; + } + + std::set column_ids; + std::set filter_column_ids; + + // helper to process access paths for a given top-level orc field + auto process_access_paths = [](const orc::Type* orc_field, + const std::vector& access_paths, + std::set& out_ids) { + process_nested_access_paths( + orc_field, access_paths, out_ids, + [](const orc::Type* type) { return type->getColumnId(); }, + [](const orc::Type* type) { return type->getMaximumColumnId(); }, + HiveOrcNestedColumnUtils::extract_nested_column_ids); + }; + + for (const auto* slot : tuple_descriptor->slots()) { + auto it = table_col_pos_to_orc_type_map.find(slot->col_pos()); + if (it == table_col_pos_to_orc_type_map.end()) { + // Column not found in file + continue; + } + const orc::Type* orc_field = it->second; + + // primitive (non-nested) types + if ((slot->col_type() != TYPE_STRUCT && slot->col_type() != TYPE_ARRAY && + slot->col_type() != TYPE_MAP)) { + column_ids.insert(orc_field->getColumnId()); + if (slot->is_predicate()) { + filter_column_ids.insert(orc_field->getColumnId()); + } + continue; + } + + const auto& all_access_paths = slot->all_access_paths(); + // complex types + process_access_paths(orc_field, all_access_paths, column_ids); + + const auto& predicate_access_paths = slot->predicate_access_paths(); + if (!predicate_access_paths.empty()) { + process_access_paths(orc_field, predicate_access_paths, filter_column_ids); + } + } + + return ColumnIdResult(std::move(column_ids), std::move(filter_column_ids)); } Status HiveParquetReader::init_reader( @@ -103,7 +230,7 @@ Status HiveParquetReader::init_reader( } else { // use idx std::map slot_map; //table_name to slot for (const auto& slot : tuple_descriptor->slots()) { - slot_map.emplace(slot->col_name(), slot); + slot_map.emplace(slot->col_name_lower_case(), slot); } // For top-level columns, use indexes to match, and for sub-columns, still use name to match columns. @@ -145,10 +272,144 @@ Status HiveParquetReader::init_reader( } } - return parquet_reader->init_reader(read_table_col_names, table_col_name_to_value_range, - conjuncts, tuple_descriptor, row_descriptor, - colname_to_slot_id, not_single_slot_filter_conjuncts, - slot_id_to_filter_conjuncts, table_info_node_ptr); + auto column_id_result = ColumnIdResult(); + if (_state->query_options().hive_parquet_use_column_names) { + column_id_result = _create_column_ids(field_desc, tuple_descriptor); + } else { + column_id_result = _create_column_ids_by_top_level_col_index(field_desc, tuple_descriptor); + } + + const auto& column_ids = column_id_result.column_ids; + const auto& filter_column_ids = column_id_result.filter_column_ids; + + RETURN_IF_ERROR(init_row_filters()); + + return parquet_reader->init_reader( + read_table_col_names, table_col_name_to_value_range, conjuncts, tuple_descriptor, + row_descriptor, colname_to_slot_id, not_single_slot_filter_conjuncts, + slot_id_to_filter_conjuncts, table_info_node_ptr, true, column_ids, filter_column_ids); +} + +ColumnIdResult HiveParquetReader::_create_column_ids(const FieldDescriptor* field_desc, + const TupleDescriptor* tuple_descriptor) { + // First, assign column IDs to the field descriptor + auto* mutable_field_desc = const_cast(field_desc); + mutable_field_desc->assign_ids(); + + // map top-level table column name (lower-cased) -> FieldSchema* + std::unordered_map table_col_name_to_field_schema_map; + for (int i = 0; i < field_desc->size(); ++i) { + auto field_schema = field_desc->get_column(i); + if (!field_schema) continue; + + table_col_name_to_field_schema_map[field_schema->lower_case_name] = field_schema; + } + + std::set column_ids; + std::set filter_column_ids; + + // helper to process access paths for a given top-level parquet field + auto process_access_paths = [](const FieldSchema* parquet_field, + const std::vector& access_paths, + std::set& out_ids) { + process_nested_access_paths( + parquet_field, access_paths, out_ids, + [](const FieldSchema* field) { return field->get_column_id(); }, + [](const FieldSchema* field) { return field->get_max_column_id(); }, + HiveParquetNestedColumnUtils::extract_nested_column_ids); + }; + + for (const auto* slot : tuple_descriptor->slots()) { + auto it = table_col_name_to_field_schema_map.find(slot->col_name_lower_case()); + if (it == table_col_name_to_field_schema_map.end()) { + // Column not found in file + continue; + } + auto field_schema = it->second; + + // primitive (non-nested) types + if ((slot->col_type() != TYPE_STRUCT && slot->col_type() != TYPE_ARRAY && + slot->col_type() != TYPE_MAP)) { + column_ids.insert(field_schema->column_id); + + if (slot->is_predicate()) { + filter_column_ids.insert(field_schema->column_id); + } + continue; + } + + // complex types + const auto& all_access_paths = slot->all_access_paths(); + process_access_paths(field_schema, all_access_paths, column_ids); + + const auto& predicate_access_paths = slot->predicate_access_paths(); + if (!predicate_access_paths.empty()) { + process_access_paths(field_schema, predicate_access_paths, filter_column_ids); + } + } + + return ColumnIdResult(std::move(column_ids), std::move(filter_column_ids)); +} + +ColumnIdResult HiveParquetReader::_create_column_ids_by_top_level_col_index( + const FieldDescriptor* field_desc, const TupleDescriptor* tuple_descriptor) { + // First, assign column IDs to the field descriptor + auto* mutable_field_desc = const_cast(field_desc); + mutable_field_desc->assign_ids(); + + // map top-level table column position -> FieldSchema* + std::unordered_map table_col_pos_to_field_schema_map; + for (int i = 0; i < field_desc->size(); ++i) { + auto field_schema = field_desc->get_column(i); + if (!field_schema) continue; + + table_col_pos_to_field_schema_map[i] = field_schema; + } + + std::set column_ids; + std::set filter_column_ids; + + // helper to process access paths for a given top-level parquet field + auto process_access_paths = [](const FieldSchema* parquet_field, + const std::vector& access_paths, + std::set& out_ids) { + process_nested_access_paths( + parquet_field, access_paths, out_ids, + [](const FieldSchema* field) { return field->get_column_id(); }, + [](const FieldSchema* field) { return field->get_max_column_id(); }, + HiveParquetNestedColumnUtils::extract_nested_column_ids); + }; + + for (const auto* slot : tuple_descriptor->slots()) { + auto it = table_col_pos_to_field_schema_map.find(slot->col_pos()); + if (it == table_col_pos_to_field_schema_map.end()) { + // Column not found in file + continue; + } + auto field_schema = it->second; + + // primitive (non-nested) types + if ((slot->col_type() != TYPE_STRUCT && slot->col_type() != TYPE_ARRAY && + slot->col_type() != TYPE_MAP)) { + column_ids.insert(field_schema->column_id); + + if (slot->is_predicate()) { + filter_column_ids.insert(field_schema->column_id); + } + continue; + } + + // complex types + const auto& all_access_paths = slot->all_access_paths(); + process_access_paths(field_schema, all_access_paths, column_ids); + + const auto& predicate_access_paths = slot->predicate_access_paths(); + if (!predicate_access_paths.empty()) { + process_access_paths(field_schema, predicate_access_paths, filter_column_ids); + } + } + + return ColumnIdResult(std::move(column_ids), std::move(filter_column_ids)); } #include "common/compile_check_end.h" diff --git a/be/src/vec/exec/format/table/hive_reader.h b/be/src/vec/exec/format/table/hive_reader.h index 6acd344e4176f3..b9592c43243492 100644 --- a/be/src/vec/exec/format/table/hive_reader.h +++ b/be/src/vec/exec/format/table/hive_reader.h @@ -66,6 +66,13 @@ class HiveOrcReader final : public HiveReader { const RowDescriptor* row_descriptor, const VExprContextSPtrs* not_single_slot_filter_conjuncts, const std::unordered_map* slot_id_to_filter_conjuncts); + +private: + static ColumnIdResult _create_column_ids(const orc::Type* orc_type, + const TupleDescriptor* tuple_descriptor); + + static ColumnIdResult _create_column_ids_by_top_level_col_index( + const orc::Type* orc_type, const TupleDescriptor* tuple_descriptor); }; class HiveParquetReader final : public HiveReader { @@ -88,6 +95,13 @@ class HiveParquetReader final : public HiveReader { const std::unordered_map* colname_to_slot_id, const VExprContextSPtrs* not_single_slot_filter_conjuncts, const std::unordered_map* slot_id_to_filter_conjuncts); + +private: + static ColumnIdResult _create_column_ids(const FieldDescriptor* field_desc, + const TupleDescriptor* tuple_descriptor); + + static ColumnIdResult _create_column_ids_by_top_level_col_index( + const FieldDescriptor* field_desc, const TupleDescriptor* tuple_descriptor); }; #include "common/compile_check_end.h" } // namespace doris::vectorized \ No newline at end of file diff --git a/be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.cpp b/be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.cpp new file mode 100644 index 00000000000000..42141589c8a794 --- /dev/null +++ b/be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.cpp @@ -0,0 +1,168 @@ +// 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/exec/format/table/iceberg/iceberg_orc_nested_column_utils.h" + +#include +#include +#include +#include +#include +#include + +#include "orc/Type.hh" +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +void IcebergOrcNestedColumnUtils::extract_nested_column_ids( + const orc::Type& type, const std::vector>& paths, + std::set& column_ids) { + // Group paths by first field_id + std::unordered_map>> child_paths_by_field_id; + + for (const auto& path : paths) { + if (!path.empty()) { + std::string first_field_id = path[0]; + std::vector remaining; + if (path.size() > 1) { + remaining.assign(path.begin() + 1, path.end()); + } + child_paths_by_field_id[first_field_id].push_back(std::move(remaining)); + } + } + + // For MAP type, normalize wildcard "*" to explicit KEYS/VALUES access + // Wildcard in MAP context means accessing both map keys and values + // Normalization logic: + // path: ["map_col", "*"] → ["map_col", "VALUES"] + ["map_col", "KEYS"] + // path: ["map_col", "*", "field"] → ["map_col", "VALUES", "field"] + ["map_col", "KEYS"] + if (type.getKind() == orc::TypeKind::MAP) { + auto wildcard_it = child_paths_by_field_id.find("*"); + if (wildcard_it != child_paths_by_field_id.end()) { + auto& wildcard_paths = wildcard_it->second; + + // All wildcard paths go to VALUES + auto& values_paths = child_paths_by_field_id["VALUES"]; + values_paths.insert(values_paths.end(), wildcard_paths.begin(), wildcard_paths.end()); + + // Always add KEYS for wildcard access + auto& keys_paths = child_paths_by_field_id["KEYS"]; + // Add an empty path to request full KEYS + std::vector empty_path; + keys_paths.push_back(empty_path); + + // Remove wildcard entry as it's been expanded + child_paths_by_field_id.erase(wildcard_it); + } + } + + bool has_child_columns = false; + // Efficiently traverse children + for (uint64_t i = 0; i < type.getSubtypeCount(); ++i) { + const orc::Type* child = type.getSubtype(i); + + std::string child_field_id; + switch (type.getKind()) { + case orc::TypeKind::STRUCT: + if (!child->hasAttributeKey(ICEBERG_ORC_ATTRIBUTE)) { + continue; + } + child_field_id = child->getAttributeValue(ICEBERG_ORC_ATTRIBUTE); + break; + case orc::TypeKind::LIST: + child_field_id = "*"; + break; + case orc::TypeKind::MAP: + // After wildcard normalization above, all MAP accesses are explicit KEYS/VALUES + // Simply assign the appropriate field name based on which child we're processing + if (i == 0) { + child_field_id = "KEYS"; + } else if (i == 1) { + child_field_id = "VALUES"; + } + // Special handling for Orc MAP structure: + // When accessing only VALUES, we still need KEY structure for deduplicate_keys + // Check if we're at key child (i==0) and only VALUES is requested (no KEYS) + if (i == 0) { + bool has_keys_access = + child_paths_by_field_id.find("KEYS") != child_paths_by_field_id.end(); + bool has_values_access = + child_paths_by_field_id.find("VALUES") != child_paths_by_field_id.end(); + + // If only VALUES is accessed (not KEYS), still include key structure for deduplicate_keys + if (!has_keys_access && has_values_access) { + uint64_t key_start_id = child->getColumnId(); + uint64_t key_max_id = child->getMaximumColumnId(); + for (uint64_t id = key_start_id; id <= key_max_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + continue; // Skip further processing of key child + } + } + break; + default: + child_field_id = ""; + break; + } + + if (child_field_id.empty() || child_field_id == "-1") { + continue; + } + + auto child_paths_it = child_paths_by_field_id.find(child_field_id); + if (child_paths_it != child_paths_by_field_id.end()) { + const auto& child_paths = child_paths_it->second; + + // Check if any child path is empty (meaning full child needed) + bool needs_full_child = + std::any_of(child_paths.begin(), child_paths.end(), + [](const std::vector& path) { return path.empty(); }); + + if (needs_full_child) { + uint64_t start_id = child->getColumnId(); + uint64_t max_column_id = child->getMaximumColumnId(); + for (uint64_t id = start_id; id <= max_column_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + } else { + // Store current size to check if recursive call added any columns + size_t before_size = column_ids.size(); + + // Recursively extract from child + extract_nested_column_ids(*child, child_paths, column_ids); + + // Check if recursive call added any columns + if (column_ids.size() > before_size) { + has_child_columns = true; + } + } + } + } + + // If any child columns were added, also add the parent column ID + // This ensures parent struct/container nodes are included when their children are needed + if (has_child_columns) { + // Set automatically handles deduplication, so no need to check if it already exists + column_ids.insert(type.getColumnId()); + } +} + +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.h b/be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.h new file mode 100644 index 00000000000000..5a5fe33dd4f32f --- /dev/null +++ b/be/src/vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.h @@ -0,0 +1,44 @@ +// 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. + +#pragma once + +#include +#include +#include + +#include "vec/exec/format/table/table_format_reader.h" + +namespace orc { +class Type; +} // namespace orc + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +class IcebergOrcNestedColumnUtils { +public: + static void extract_nested_column_ids(const orc::Type& type, + const std::vector>& paths, + std::set& column_ids); + +private: + static constexpr const char* ICEBERG_ORC_ATTRIBUTE = "iceberg.id"; +}; + +#include "common/compile_check_end.h" +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.cpp b/be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.cpp new file mode 100644 index 00000000000000..48c508390eadaa --- /dev/null +++ b/be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.cpp @@ -0,0 +1,172 @@ +// 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/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "vec/exec/format/parquet/schema_desc.h" +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +void IcebergParquetNestedColumnUtils::extract_nested_column_ids( + const FieldSchema& field_schema, const std::vector>& paths, + std::set& column_ids) { + // Group paths by first field_id + std::unordered_map>> child_paths_by_field_id; + + for (const auto& path : paths) { + if (!path.empty()) { + std::string first_field_id = path[0]; + std::vector remaining; + if (path.size() > 1) { + remaining.assign(path.begin() + 1, path.end()); + } + child_paths_by_field_id[first_field_id].push_back(std::move(remaining)); + } + } + + // Track whether any child column was added to determine if parent should be included + bool has_child_columns = false; + + // For MAP type, normalize wildcard "*" to explicit KEYS/VALUES access + // Wildcard in MAP context means accessing both map keys and values + // Normalization logic: + // path: ["map_col", "*"] → ["map_col", "VALUES"] + ["map_col", "KEYS"] + // path: ["map_col", "*", "field"] → ["map_col", "VALUES", "field"] + ["map_col", "KEYS"] + if (field_schema.data_type->get_primitive_type() == PrimitiveType::TYPE_MAP) { + auto wildcard_it = child_paths_by_field_id.find("*"); + if (wildcard_it != child_paths_by_field_id.end()) { + auto& wildcard_paths = wildcard_it->second; + + // All wildcard paths go to VALUES + auto& values_paths = child_paths_by_field_id["VALUES"]; + values_paths.insert(values_paths.end(), wildcard_paths.begin(), wildcard_paths.end()); + + // Always add KEYS for wildcard access + auto& keys_paths = child_paths_by_field_id["KEYS"]; + // Add an empty path to request full KEYS + std::vector empty_path; + keys_paths.push_back(empty_path); + + // Remove wildcard entry as it's been expanded + child_paths_by_field_id.erase(wildcard_it); + } + } + + // Efficiently traverse children + for (uint64_t i = 0; i < field_schema.children.size(); ++i) { + const auto& child = field_schema.children[i]; + + std::string child_field_id; + + bool is_list = field_schema.data_type->get_primitive_type() == PrimitiveType::TYPE_ARRAY; + bool is_map = field_schema.data_type->get_primitive_type() == PrimitiveType::TYPE_MAP; + + if (is_list) { + child_field_id = "*"; + } else if (is_map) { + // After wildcard normalization above, all MAP accesses are explicit KEYS/VALUES + // Simply assign the appropriate field name based on which child we're processing + if (i == 0) { + child_field_id = "KEYS"; + } else if (i == 1) { + child_field_id = "VALUES"; + } + + // Special handling for Parquet MAP structure: + // When accessing only VALUES, we still need KEY structure for levels + // Check if we're at key child (i==0) and only VALUES is requested (no KEYS) + if (i == 0) { + bool has_keys_access = + child_paths_by_field_id.find("KEYS") != child_paths_by_field_id.end(); + bool has_values_access = + child_paths_by_field_id.find("VALUES") != child_paths_by_field_id.end(); + + // If only VALUES is accessed (not KEYS), still include key structure for RL/DL + if (!has_keys_access && has_values_access) { + // For map_values() queries, we need key's structure for correct RL/DL parsing. + // If key is a nested type (e.g., STRUCT), RL/DL info is stored at leaf columns. + // Add all column IDs from key's start to max (all leaves + intermediate nodes). + uint64_t key_start_id = child.get_column_id(); + uint64_t key_max_id = child.get_max_column_id(); + for (uint64_t id = key_start_id; id <= key_max_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + continue; // Skip further processing of key child + } + } + + } else { + child_field_id = std::to_string(child.field_id); + } + + if (child_field_id.empty() || child_field_id == "-1") { + continue; + } + + auto child_paths_it = child_paths_by_field_id.find(child_field_id); + if (child_paths_it != child_paths_by_field_id.end()) { + const auto& child_paths = child_paths_it->second; + + // Check if any child path is empty (meaning full child needed) + bool needs_full_child = + std::any_of(child_paths.begin(), child_paths.end(), + [](const std::vector& path) { return path.empty(); }); + + if (needs_full_child) { + // Add all column IDs from current child node to max_column_id + // This efficiently handles all nested/complex cases in one loop + uint64_t start_id = child.get_column_id(); + uint64_t max_column_id = child.get_max_column_id(); + for (uint64_t id = start_id; id <= max_column_id; ++id) { + column_ids.insert(id); + } + has_child_columns = true; + } else { + // Store current size to check if recursive call added any columns + size_t before_size = column_ids.size(); + + // Recursively extract from child + extract_nested_column_ids(child, child_paths, column_ids); + + // Check if recursive call added any columns + if (column_ids.size() > before_size) { + has_child_columns = true; + } + } + } + } + + // If any child columns were added, also add the parent column ID + // This ensures parent struct/container nodes are included when their children are needed + if (has_child_columns) { + // Set automatically handles deduplication, so no need to check if it already exists + column_ids.insert(field_schema.get_column_id()); + } +} + +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.h b/be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.h new file mode 100644 index 00000000000000..58237d8182b4dc --- /dev/null +++ b/be/src/vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.h @@ -0,0 +1,42 @@ +// 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. + +#pragma once + +#include +#include +#include +#include +#include + +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +class FieldDescriptor; +struct FieldSchema; + +class IcebergParquetNestedColumnUtils { +public: + static void extract_nested_column_ids(const FieldSchema& field_schema, + const std::vector>& paths, + std::set& column_ids); +}; + +#include "common/compile_check_end.h" +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/iceberg_reader.cpp b/be/src/vec/exec/format/table/iceberg_reader.cpp index 9b78f11a17742a..4bacac75df91fe 100644 --- a/be/src/vec/exec/format/table/iceberg_reader.cpp +++ b/be/src/vec/exec/format/table/iceberg_reader.cpp @@ -17,6 +17,7 @@ #include "iceberg_reader.h" +#include #include #include #include @@ -52,6 +53,9 @@ #include "vec/exec/format/orc/vorc_reader.h" #include "vec/exec/format/parquet/schema_desc.h" #include "vec/exec/format/parquet/vparquet_column_chunk_reader.h" +#include "vec/exec/format/table/iceberg/iceberg_orc_nested_column_utils.h" +#include "vec/exec/format/table/iceberg/iceberg_parquet_nested_column_utils.h" +#include "vec/exec/format/table/nested_column_access_helper.h" #include "vec/exec/format/table/table_format_reader.h" namespace cctz { @@ -459,11 +463,86 @@ Status IcebergParquetReader::init_reader( } _all_required_col_names = file_col_names; + + auto column_id_result = _create_column_ids(field_desc, tuple_descriptor); + auto& column_ids = column_id_result.column_ids; + const auto& filter_column_ids = column_id_result.filter_column_ids; + RETURN_IF_ERROR(init_row_filters()); - return parquet_reader->init_reader(_all_required_col_names, colname_to_value_range, conjuncts, - tuple_descriptor, row_descriptor, colname_to_slot_id, - not_single_slot_filter_conjuncts, - slot_id_to_filter_conjuncts, table_info_node_ptr); + for (int i = 0; i < field_desc->size(); ++i) { + auto field_schema = field_desc->get_column(i); + std::string col_name = field_schema->name; + if (std::find(_expand_col_names.begin(), _expand_col_names.end(), col_name) != + _expand_col_names.end()) { + column_ids.insert(field_schema->get_column_id()); + } + } + return parquet_reader->init_reader( + _all_required_col_names, colname_to_value_range, conjuncts, tuple_descriptor, + row_descriptor, colname_to_slot_id, not_single_slot_filter_conjuncts, + slot_id_to_filter_conjuncts, table_info_node_ptr, true, column_ids, filter_column_ids); +} + +ColumnIdResult IcebergParquetReader::_create_column_ids(const FieldDescriptor* field_desc, + const TupleDescriptor* tuple_descriptor) { + // First, assign column IDs to the field descriptor + auto* mutable_field_desc = const_cast(field_desc); + mutable_field_desc->assign_ids(); + + // map top-level table column iceberg_id -> FieldSchema* + std::unordered_map iceberg_id_to_field_schema_map; + + for (int i = 0; i < field_desc->size(); ++i) { + auto field_schema = field_desc->get_column(i); + if (!field_schema) continue; + + int iceberg_id = field_schema->field_id; + iceberg_id_to_field_schema_map[iceberg_id] = field_schema; + } + + std::set column_ids; + std::set filter_column_ids; + + // helper to process access paths for a given top-level parquet field + auto process_access_paths = [](const FieldSchema* parquet_field, + const std::vector& access_paths, + std::set& out_ids) { + process_nested_access_paths( + parquet_field, access_paths, out_ids, + [](const FieldSchema* field) { return field->get_column_id(); }, + [](const FieldSchema* field) { return field->get_max_column_id(); }, + IcebergParquetNestedColumnUtils::extract_nested_column_ids); + }; + + for (const auto* slot : tuple_descriptor->slots()) { + auto it = iceberg_id_to_field_schema_map.find(slot->col_unique_id()); + if (it == iceberg_id_to_field_schema_map.end()) { + // Column not found in file (e.g., partition column, added column) + continue; + } + auto field_schema = it->second; + + // primitive (non-nested) types: direct mapping by name + if ((slot->col_type() != TYPE_STRUCT && slot->col_type() != TYPE_ARRAY && + slot->col_type() != TYPE_MAP)) { + column_ids.insert(field_schema->column_id); + + if (slot->is_predicate()) { + filter_column_ids.insert(field_schema->column_id); + } + continue; + } + + // complex types: + const auto& all_access_paths = slot->all_access_paths(); + process_access_paths(field_schema, all_access_paths, column_ids); + + const auto& predicate_access_paths = slot->predicate_access_paths(); + if (!predicate_access_paths.empty()) { + process_access_paths(field_schema, predicate_access_paths, filter_column_ids); + } + } + return ColumnIdResult(std::move(column_ids), std::move(filter_column_ids)); } Status IcebergParquetReader ::_read_position_delete_file(const TFileRangeDesc* delete_range, @@ -541,11 +620,83 @@ Status IcebergOrcReader::init_reader( } } + auto column_id_result = _create_column_ids(orc_type_ptr, tuple_descriptor); + auto& column_ids = column_id_result.column_ids; + const auto& filter_column_ids = column_id_result.filter_column_ids; + RETURN_IF_ERROR(init_row_filters()); + for (uint64_t i = 0; i < orc_type_ptr->getSubtypeCount(); ++i) { + const orc::Type* sub_type = orc_type_ptr->getSubtype(i); + std::string col_name = orc_type_ptr->getFieldName(i); + if (std::find(_expand_col_names.begin(), _expand_col_names.end(), col_name) != + _expand_col_names.end()) { + column_ids.insert(sub_type->getColumnId()); + } + } return orc_reader->init_reader(&_all_required_col_names, colname_to_value_range, conjuncts, false, tuple_descriptor, row_descriptor, not_single_slot_filter_conjuncts, slot_id_to_filter_conjuncts, - table_info_node_ptr); + table_info_node_ptr, column_ids, filter_column_ids); +} + +ColumnIdResult IcebergOrcReader::_create_column_ids(const orc::Type* orc_type, + const TupleDescriptor* tuple_descriptor) { + // map top-level table column iceberg_id -> orc::Type* + std::unordered_map iceberg_id_to_orc_type_map; + for (uint64_t i = 0; i < orc_type->getSubtypeCount(); ++i) { + auto orc_sub_type = orc_type->getSubtype(i); + if (!orc_sub_type) continue; + + if (!orc_sub_type->hasAttributeKey(ICEBERG_ORC_ATTRIBUTE)) { + continue; + } + int iceberg_id = std::stoi(orc_sub_type->getAttributeValue(ICEBERG_ORC_ATTRIBUTE)); + iceberg_id_to_orc_type_map[iceberg_id] = orc_sub_type; + } + + std::set column_ids; + std::set filter_column_ids; + + // helper to process access paths for a given top-level orc field + auto process_access_paths = [](const orc::Type* orc_field, + const std::vector& access_paths, + std::set& out_ids) { + process_nested_access_paths( + orc_field, access_paths, out_ids, + [](const orc::Type* type) { return type->getColumnId(); }, + [](const orc::Type* type) { return type->getMaximumColumnId(); }, + IcebergOrcNestedColumnUtils::extract_nested_column_ids); + }; + + for (const auto* slot : tuple_descriptor->slots()) { + auto it = iceberg_id_to_orc_type_map.find(slot->col_unique_id()); + if (it == iceberg_id_to_orc_type_map.end()) { + // Column not found in file + continue; + } + const orc::Type* orc_field = it->second; + + // primitive (non-nested) types + if ((slot->col_type() != TYPE_STRUCT && slot->col_type() != TYPE_ARRAY && + slot->col_type() != TYPE_MAP)) { + column_ids.insert(orc_field->getColumnId()); + if (slot->is_predicate()) { + filter_column_ids.insert(orc_field->getColumnId()); + } + continue; + } + + // complex types + const auto& all_access_paths = slot->all_access_paths(); + process_access_paths(orc_field, all_access_paths, column_ids); + + const auto& predicate_access_paths = slot->predicate_access_paths(); + if (!predicate_access_paths.empty()) { + process_access_paths(orc_field, predicate_access_paths, filter_column_ids); + } + } + + return ColumnIdResult(std::move(column_ids), std::move(filter_column_ids)); } Status IcebergOrcReader::_read_position_delete_file(const TFileRangeDesc* delete_range, diff --git a/be/src/vec/exec/format/table/iceberg_reader.h b/be/src/vec/exec/format/table/iceberg_reader.h index 188e31f03786ef..0d2519079264d4 100644 --- a/be/src/vec/exec/format/table/iceberg_reader.h +++ b/be/src/vec/exec/format/table/iceberg_reader.h @@ -188,6 +188,9 @@ class IcebergParquetReader final : public IcebergTableReader { } private: + static ColumnIdResult _create_column_ids(const FieldDescriptor* field_desc, + const TupleDescriptor* tuple_descriptor); + Status _read_position_delete_file(const TFileRangeDesc* delete_range, DeleteFile* position_delete) final; }; @@ -227,6 +230,10 @@ class IcebergOrcReader final : public IcebergTableReader { _meta_cache); } +private: + static ColumnIdResult _create_column_ids(const orc::Type* orc_type, + const TupleDescriptor* tuple_descriptor); + private: static const std::string ICEBERG_ORC_ATTRIBUTE; }; diff --git a/be/src/vec/exec/format/table/nested_column_access_helper.h b/be/src/vec/exec/format/table/nested_column_access_helper.h new file mode 100644 index 00000000000000..316cfb7aebe328 --- /dev/null +++ b/be/src/vec/exec/format/table/nested_column_access_helper.h @@ -0,0 +1,82 @@ +// 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. + +#pragma once + +#include +#include +#include + +#include "vec/exec/format/table/table_format_reader.h" + +namespace doris::vectorized { +#include "common/compile_check_begin.h" + +// Helper that normalizes access paths and delegates nested column id extraction. +// The caller provides how to access the column id range for the concrete field type +// (Parquet FieldSchema, ORC Type, etc.) plus a nested extractor implementation. +template +void process_nested_access_paths(const FieldType* field, + const std::vector& access_paths, + std::set& out_ids, ColumnIdGetter&& column_id_getter, + MaxColumnIdGetter&& max_column_id_getter, + ExtractNestedFunc&& extract_nested) { + if (field == nullptr) { + return; + } + + const bool access_paths_empty = access_paths.empty(); + std::vector> paths; + paths.reserve(access_paths.size()); + bool has_top_level_only = false; + + for (const auto& access_path : access_paths) { + const std::vector* path_ptr = nullptr; + if (access_path.type == TAccessPathType::DATA) { + path_ptr = &access_path.data_access_path.path; + } else if (access_path.type == TAccessPathType::META) { + path_ptr = &access_path.meta_access_path.path; + } else { + continue; + } + + const auto& path = *path_ptr; + std::vector remaining_path; + if (path.size() > 1) { + remaining_path.assign(path.begin() + 1, path.end()); + } + if (remaining_path.empty()) { + has_top_level_only = true; + } + paths.push_back(std::move(remaining_path)); + } + + const uint64_t column_id = column_id_getter(field); + if (has_top_level_only || access_paths_empty) { + const uint64_t max_column_id = max_column_id_getter(field); + for (uint64_t id = column_id; id <= max_column_id; ++id) { + out_ids.insert(id); + } + } else if (!paths.empty()) { + out_ids.insert(column_id); + extract_nested(*field, paths, out_ids); + } +} + +#include "common/compile_check_end.h" +} // namespace doris::vectorized diff --git a/be/src/vec/exec/format/table/table_format_reader.cpp b/be/src/vec/exec/format/table/table_format_reader.cpp index b3b7e1df3369b6..2c614777a890f3 100644 --- a/be/src/vec/exec/format/table/table_format_reader.cpp +++ b/be/src/vec/exec/format/table/table_format_reader.cpp @@ -76,8 +76,7 @@ Status TableSchemaChangeHelper::BuildTableInfoUtil::by_parquet_name( if (file_field.data_type->get_primitive_type() != TYPE_MAP) [[unlikely]] { return SCHEMA_ERROR; } - MOCK_REMOVE(DCHECK(file_field.children.size() == 1)); - MOCK_REMOVE(DCHECK(file_field.children[0].children.size() == 2)); + MOCK_REMOVE(DCHECK(file_field.children.size() == 2)); std::shared_ptr key_node = nullptr; { @@ -85,8 +84,7 @@ Status TableSchemaChangeHelper::BuildTableInfoUtil::by_parquet_name( assert_cast(remove_nullable(table_data_type).get()) ->get_key_type()); - RETURN_IF_ERROR( - by_parquet_name(key_type, file_field.children[0].children[0], key_node)); + RETURN_IF_ERROR(by_parquet_name(key_type, file_field.children[0], key_node)); } std::shared_ptr value_node = nullptr; @@ -95,8 +93,7 @@ Status TableSchemaChangeHelper::BuildTableInfoUtil::by_parquet_name( assert_cast(remove_nullable(table_data_type).get()) ->get_value_type()); - RETURN_IF_ERROR( - by_parquet_name(value_type, file_field.children[0].children[1], value_node)); + RETURN_IF_ERROR(by_parquet_name(value_type, file_field.children[1], value_node)); } node = std::make_shared(key_node, value_node); break; @@ -430,19 +427,17 @@ Status TableSchemaChangeHelper::BuildTableInfoUtil::by_parquet_field_id( MOCK_REMOVE(DCHECK(table_schema.nestedField.map_field.key_field.field_ptr != nullptr)); MOCK_REMOVE(DCHECK(table_schema.nestedField.map_field.value_field.field_ptr != nullptr)); - MOCK_REMOVE(DCHECK(parquet_field.children.size() == 1)); - MOCK_REMOVE(DCHECK(parquet_field.children[0].children.size() == 2)); + MOCK_REMOVE(DCHECK(parquet_field.children.size() == 2)); std::shared_ptr key_node = nullptr; std::shared_ptr value_node = nullptr; RETURN_IF_ERROR(by_parquet_field_id(*table_schema.nestedField.map_field.key_field.field_ptr, - parquet_field.children[0].children[0], key_node, - exist_field_id)); + parquet_field.children[0], key_node, exist_field_id)); - RETURN_IF_ERROR(by_parquet_field_id( - *table_schema.nestedField.map_field.value_field.field_ptr, - parquet_field.children[0].children[1], value_node, exist_field_id)); + RETURN_IF_ERROR( + by_parquet_field_id(*table_schema.nestedField.map_field.value_field.field_ptr, + parquet_field.children[1], value_node, exist_field_id)); node = std::make_shared(key_node, value_node); break; diff --git a/be/src/vec/exec/format/table/table_format_reader.h b/be/src/vec/exec/format/table/table_format_reader.h index 1f2a41af93055e..00442dc45f992f 100644 --- a/be/src/vec/exec/format/table/table_format_reader.h +++ b/be/src/vec/exec/format/table/table_format_reader.h @@ -133,6 +133,13 @@ class TableSchemaChangeHelper { throw std::logic_error("get_children_node should not be called on base TableInfoNode"); }; + virtual std::shared_ptr get_children_node_by_file_column_name( + std::string file_column_name) const { + throw std::logic_error( + "get_children_node_by_file_column_name should not be called on base " + "TableInfoNode"); + }; + virtual std::string children_file_column_name(std::string table_column_name) const { throw std::logic_error( "children_file_column_name should not be called on base TableInfoNode"); @@ -184,6 +191,19 @@ class TableSchemaChangeHelper { return children.at(table_column_name).node; } + std::shared_ptr get_children_node_by_file_column_name( + std::string file_column_name) const override { + // Search for the child by file column name + for (const auto& [table_name, child] : children) { + if (child.exists && child.column_name == file_column_name) { + return child.node; + } + } + // Not found - throw or return nullptr + throw std::runtime_error("File column name '" + file_column_name + + "' not found in struct children"); + } + std::string children_file_column_name(std::string table_column_name) const override { DCHECK(children.contains(table_column_name)); DCHECK(children_column_exists(table_column_name)); @@ -238,6 +258,11 @@ class TableSchemaChangeHelper { return get_instance(); }; + std::shared_ptr get_children_node_by_file_column_name( + std::string file_column_name) const override { + return get_instance(); + }; + std::string children_file_column_name(std::string table_column_name) const override { return table_column_name; } @@ -388,5 +413,16 @@ class TableSchemaChangeHelper { }; }; +struct ColumnIdResult { + std::set column_ids; + std::set filter_column_ids; + + ColumnIdResult() = default; // Add default constructor + + ColumnIdResult(std::set column_ids_, std::set filter_column_ids_) + : column_ids(std::move(column_ids_)), + filter_column_ids(std::move(filter_column_ids_)) {} +}; + #include "common/compile_check_end.h" } // namespace doris::vectorized diff --git a/be/src/vec/exec/scan/file_scanner.cpp b/be/src/vec/exec/scan/file_scanner.cpp index 9d0149f42025a3..9b7a805fa4936f 100644 --- a/be/src/vec/exec/scan/file_scanner.cpp +++ b/be/src/vec/exec/scan/file_scanner.cpp @@ -328,7 +328,7 @@ Status FileScanner::_process_runtime_filters_partition_prune(bool& can_filter_al return Status::OK(); } -Status FileScanner::_process_conjuncts_for_dict_filter() { +Status FileScanner::_process_conjuncts() { _slot_id_to_filter_conjuncts.clear(); _not_single_slot_filter_conjuncts.clear(); for (auto& conjunct : _push_down_conjuncts) { @@ -366,7 +366,7 @@ Status FileScanner::_process_late_arrival_conjuncts() { for (size_t i = 0; i != _conjuncts.size(); ++i) { RETURN_IF_ERROR(_conjuncts[i]->clone(_state, _push_down_conjuncts[i])); } - RETURN_IF_ERROR(_process_conjuncts_for_dict_filter()); + RETURN_IF_ERROR(_process_conjuncts()); _discard_conjuncts(); } if (_applied_rf_num == _total_rf_num) { @@ -379,6 +379,8 @@ void FileScanner::_get_slot_ids(VExpr* expr, std::vector* slot_ids) { for (auto& child_expr : expr->children()) { if (child_expr->is_slot_ref()) { VSlotRef* slot_ref = reinterpret_cast(child_expr.get()); + SlotDescriptor* slot_desc = _state->desc_tbl().get_slot_descriptor(slot_ref->slot_id()); + slot_desc->set_is_predicate(true); slot_ids->emplace_back(slot_ref->slot_id()); } else { _get_slot_ids(child_expr.get(), slot_ids); diff --git a/be/src/vec/exec/scan/file_scanner.h b/be/src/vec/exec/scan/file_scanner.h index 1a44d06c77b6e8..8c4682ca89f180 100644 --- a/be/src/vec/exec/scan/file_scanner.h +++ b/be/src/vec/exec/scan/file_scanner.h @@ -252,7 +252,7 @@ class FileScanner : public Scanner { void _init_runtime_filter_partition_prune_ctxs(); void _init_runtime_filter_partition_prune_block(); Status _process_runtime_filters_partition_prune(bool& is_partition_pruned); - Status _process_conjuncts_for_dict_filter(); + Status _process_conjuncts(); Status _process_late_arrival_conjuncts(); void _get_slot_ids(VExpr* expr, std::vector* slot_ids); Status _generate_truncate_columns(bool need_to_get_parsed_schema); diff --git a/be/src/vec/exec/scan/olap_scanner.cpp b/be/src/vec/exec/scan/olap_scanner.cpp index b6a5dbc663da25..7112a5a4183484 100644 --- a/be/src/vec/exec/scan/olap_scanner.cpp +++ b/be/src/vec/exec/scan/olap_scanner.cpp @@ -83,6 +83,8 @@ OlapScanner::OlapScanner(pipeline::ScanLocalStateBase* parent, OlapScanner::Para .function_filters {}, .delete_predicates {}, .target_cast_type_for_variants {}, + .all_access_paths {}, + .predicate_access_paths {}, .rs_splits {}, .return_columns {}, .output_columns {}, @@ -264,7 +266,7 @@ Status OlapScanner::prepare() { // Add newly created tablet schema to schema cache if it does not have virtual columns. if (cached_schema == nullptr && !schema_key.empty() && - tablet_schema->num_virtual_columns() == 0) { + tablet_schema->num_virtual_columns() == 0 && !tablet_schema->has_pruned_columns()) { SchemaCache::instance()->insert_schema(schema_key, tablet_schema); } @@ -539,6 +541,24 @@ Status OlapScanner::_init_return_columns() { _vir_col_idx_to_type[idx_in_block]->get_name()); } + const auto& column = tablet_schema->column(index); + if (!slot->all_access_paths().empty()) { + _tablet_reader_params.all_access_paths.insert( + {column.unique_id(), slot->all_access_paths()}); + } + + if (!slot->predicate_access_paths().empty()) { + _tablet_reader_params.predicate_access_paths.insert( + {column.unique_id(), slot->predicate_access_paths()}); + } + + if ((slot->type()->get_primitive_type() == PrimitiveType::TYPE_STRUCT || + slot->type()->get_primitive_type() == PrimitiveType::TYPE_MAP || + slot->type()->get_primitive_type() == PrimitiveType::TYPE_ARRAY) && + !slot->all_access_paths().empty()) { + tablet_schema->add_pruned_columns_data_type(column.unique_id(), slot->type()); + } + _return_columns.push_back(index); if (slot->is_nullable() && !tablet_schema->column(index).is_nullable()) { _tablet_columns_convert_to_null_set.emplace(index); diff --git a/be/src/vec/functions/function.cpp b/be/src/vec/functions/function.cpp index dea9eab86b278c..9acee35a4a8eb9 100644 --- a/be/src/vec/functions/function.cpp +++ b/be/src/vec/functions/function.cpp @@ -276,6 +276,9 @@ DataTypePtr FunctionBuilderImpl::get_return_type(const ColumnsWithTypeAndName& a create_block_with_nested_columns(Block(arguments), numbers, false); auto return_type = get_return_type_impl( ColumnsWithTypeAndName(nested_block.begin(), nested_block.end())); + if (!return_type) { + return nullptr; + } return make_nullable(return_type); } } diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/00000-0-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc b/be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/00000-0-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc new file mode 100644 index 0000000000000000000000000000000000000000..832aaef64a0caa79567e697f60cc8acc6970f633 GIT binary patch literal 2277 zcmZ8hc{J2(AAe>u3#OT|&4ijMUSb+Mmx{53HpZ^a&00!Bq^P(v%C!w?k|ip%yq1u9 z3*FH>G-GRUW3oiodQoY?+TkQfvT z=tHFv4gmllDPT|}ISibDBd=otKLEzM#sY!?jOK;+){bTPH5W+6JyBIlJi+MFR@%DW z`wplfQ88a4km{ur13B;m=?|sv3eUth9&Lz+!eHBP41^jbTN8&#GFZnR(eXmo zkL$!hq9RvC=|iHF7&D?3FY52EdXXd@6iGDd$CnP!s-^cG>IeVt%7t2yS<~Oenm}UJ zR^29GP#bVKxV{kyI%H)QV6LqG=QpP)&=eyE-owM=Ai^GDPa{9`+(6~PfDzQLy4t>G zh>Y;o+AxOqBu_dTK+A4fk~yRV@?Z*JGeo4kN~DOv zlh7C(fkf_ru>ckTArcN}0}v%?-R-7;1EW{rbAP)$W0q{y2zzPj9z#{V3$^afAZA~(b z>+1? zsSP*|m4LG8C}ePbb28ExkF$O&@|OKoaV=zGM#GMp@yy;*KfR@rT$Hq@OH1{q?k#RN zEK&|}YnO9KnO=ip&42k@!v*p3j1ym&*jO}ZYh#MQ$3Weh420c+zgO*U6rY0mbblmP}DAVc`zsNZPb)mL>GhGGF zd83lxt~D#P3gVPG)b?F7F}|$SJ(t*rFrM|8GuGFFbM7~>E@xT#-o9n|!DjfnU^cVj zJoU!c&znluAJEY16l{s@E46Bem3XR`wN$@;K0{fqMk9UV1mpQq!b#?=FhADZ>UK0* zm`a`K2k%TrNUq3OCj+-T3X31;uaBj!MOQ!dJfh3Fw%*nEM%zms1redl{DIl=Co z`GEPOgL=0rid6=h&Xl4rwZ1pq+b@x}-|TC zr{-pD-Zp(t@L_Jo`nL~^54Il20fD*pAWxw){oL+B(VSJA4=?dd~^VBTpUY3y~X>Gs8R7 zTo2`WCyxchmP;t_t{bU^mCAhODn*gq_ia*?RI7}J2I~Azdm#l*dJ*dLv-oqb z&Jy9>6i}S`a+%pNz3A*wGDmD1_7+Toq=OM@b6PYX{B=i{T=aVw!<3dO+y0}I? zsiSObz>#sX$JKX*DQPVyik-PRnn|pt?bIQistcfhknuiHfF40*T2+I1DxW#q9EX}s} zpVOC$qWpS@E*eQJsro19zdet0%r zwWPwrVC%m}{JVHJhr*g$Ys?SU#Gn+PA20T?YWVWvVHK_D#O<5h3vw4mj1Vci)Ri?~ zXsA4-VIu1WV|rTF9{G#WyE96<+bmDLkc@~f?BRN&?dY3CrkRowmY-gl4UJzpLwf#) zS$nc2;5)-u+h0zGjIh2ueC#x-a2|*aR5@;p%Qr F`5(!yrfC2G literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/00001-1-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc b/be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/00001-1-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc new file mode 100644 index 0000000000000000000000000000000000000000..36f589e393e5cf5f7782da7d455648ef5eec48b4 GIT binary patch literal 2334 zcmZ8fc{J2}AO6maVQgcJvCS>b*s?@4_AJBHwIqfSB5E+U#F#;p-iDG_u6?qOvQ{Ld zvUJJNkbMa!bt&5og@kimm$%-b(>cBGAK!C6zu);h&+~bn&&Sc3Bng0sAX)$cCj(7> zDJ22}0HDPXaI_#o426*+lYu(`v#&n*&;SIlf^=1p*A8tc;WdZA@0IMVnc_ohcyl2M z>AW7!j$+bpKoI=I_)~dqmt=mAM4wLr*Y+k!G2!?6O6J58R(W=Kg%hGo`1~lFrwG4e znxxvvC$ix~oWJX;^C6Pj201(qhv$P&o#L6oYj$Q_l5+o7kHU9wPz1_1fJeZwzX$qgEj4F112np2|G6z$EGRHeX6Gkcu5@~M&Gzle`t z<&uB4#NZFbnA-EfT13yuN)cb3147!&UrPS~B-yxn9eY-!=48 z90dNPvfr~tA>fK4B2Z0TH2=wA$iQmX_n&(b@_Y$hZ6t+4@q&?H1iV`B5K$4wf&g7U zUgkSqVt02w!Uz@u#X`uj5I>;z)tCP&=ycd7KM1CM1j@%7+Owb=O`4z}UzTN22*r894h;T|GmbRS?5B5a&jX zIihcbqtF?Vd`3zH!N3^j78DW^b`fV8MKjdX#gW74A$*Xt-yT>0yCGKqM7z5BZ0&9P z)w{av#T@!5^ghk*!QMV0U9TgQk##RLlYvgQJhOWpU=P)s&2j?Z#{vAfh_d(3ksMDV zanOHkKG>H?T;dul**&l#@>_rGKaCQhoO8#WTRna@%F)h?>;24D3`%h4{x}pC0LQy6 zkt`jA0QbNb!PYu-mAgmg7;j_q(yR#+^|*H+cHSSRP-2WNR;9W|yq(JwtSlW}Y*@H@ zT=q%tHR8q@>{hK!Fh8@1DgkHFXaGK+xA8)7R0{AtVfaAiss$d0GXM zU|_cqv1d$45BClL>6A8PyN(#?YWe#*VIv)70W_yYpMC#=VtJwJ*V`K#A-#2j6VDGV zKEz5qH7yIjIHAU{4!HGzexRG#kmmdKLdTaOt;8m}*W|>>tYX)ktahKqBIg2~zhrFQ zW~dz!$Qma0j=HheW^Awy|C;-90MDOTTu4+%1R*3OE-ET0DI&i23yDG_MNmjFH2u)Q?p~Tq z5z@_LvDwwk6-zHm8BiK{aw=^AKZCu`#0Xo)SLbB?m?bSuiIm4wk=x?r#o)zJQn>hQ<5>ek!$fEGsE)i zt8eZ!{JkUi3<_pF+WR`%+pt`2$ICViUT2#UPEiuYMYRo-x3^U)zvx(YW#{HRoN{5G zy?v0kd@Gmp5S8hkmvvS-1L8uH7!$?ovrI6J(c&ljq&Y{DGYOb>Db0lFLt6Y#3I&~v ziCt69my3HA+vvyAINmsZX74l;jN+x%G0khq6crys6N8nN^e#%8RAY*OdW+N;vAl$bFmAIYR^!$R{ywV)b9ZltY_(q<$@OS`%nnb|O|6?VNf?~NH9c35P z1bApgqC7;~xF}anHnF0jqB^cPE)T_~1p?$TV{Oay0Ys{@L#iM$P7s+Sh%BPU5?}Zk z|4qbCv2zRaamiITnRS$;4nNg)NB##s$p<=PH> zHHu!ZS*`ZwXsL8&ADXVs>c0Gbv*mM3jA+T)XCu3~`^|%ziOrX|DWazZGIe^6m#F!8 z{`+EhAuhb&Qb9ebu9s!_k4m?JZNgBczi0YL3SOOwrkggHEH=~&&z;!pX*g|XZtGMx z@=ecJEipT`Q!0xZ_&d55o0*XXuNqO6^SwwLG+CYP+_E{pKQwk%?g z4Ho7UB}(3mYdwY*E=#>2B>ac|pvt7e`m{>N?aX4$NBh|JG31q%5k&FiA~BvbVV2%Ru+EPwyhEmUQD!zU;-`%IX$!6nae)%}5G`hW z8;tsN&;|zSBswdQUEQ_~j?ErH)hRj8$aJh^KeK5G(6+BS$2@U`<(X=I3rm_@pr;Ln zcaqE5=0|I^-;P#Qd}@SeB_zZ|Cb{QUs<_3p>AH5yQM(}OQBp^dp~Tu7UXdN=QGeol z2O>v1S*#ng@2j(0TO+Gw2?vC}#cpk#uQ1wBZ?Rym-o(g9l)&CjTF4!pxDvr`s#A@P z-rV{+JoM?q0R7|3^-_Zc_Zn{S$5&JSLuszU|ESl?dJ$So_QkfFjO;`Od~5G{&0U#H z1%A*>Ox_TFn+?g%NO6++T`exw+#+v;$*g6LFqiSE*gRGfL?gUbXwIx?38I?q?~_9` z$>l1(tDDroyslV&oV;e{-WKpE=5xwp3mD|@@=?jDLt zY=cEo^U)B~iDP8^Oe?9WF)5=l7#ry%#nxKuBtz4NNHeB%s;#lLrp2-Ezk9p?z2){e zK4utZxcmR#$M5~#`@i>i)W0_6?lhHa;6v>2y_-m_In0wKq^csYew+7dTUy{J%7c7MDJM%BtCP(I zxKZOtVNwB&1u=mwju=ojS~bYhL`X$pR&jDf(v)T&CkGNpL`i06IE5jRA|XGoB;iI3 zqy-kF4YJ=aBt;5QP*KQvkq_~brsp{Ya-x5eC8J}H6JTr!O=13vd=sB2Xo94XKpo4h zYzI+vUe&hDWSbN@$Ea8x`IhAh&q11ilTng~SV;)-s^$ZS6_j_j>JUAmYOEGPITbC3 z$bjfMqZA?*n`b39tTxD+Pp^T-h1H}K5s^oF>8tgS0Y1n^M2###pW7u-c1ch_d5PnF zR`|y%jj>5XHPWX}SY)0}WPsIJU$pibrn!Qw&?aEUa}fm#)o-ZyfNsb%rP8%%oIW(ObIO#7I}~1 zAxrpKl@AaAFT&nZN2p<*b9hhNyf?B7N*$Cu%QS=crq&gDHA7J~4y%M! zu#xu(lF#34ymC=|^~5q2RLL4E>U1GgIF7`d$L&G0lYx`PNJ#Rb<2cXFw6&0B6@^6= zLeTgS@Ywp?SyCD)s?gU&QAMUVF{E$gk&LL}&Qbz5ZD=;JVgx}F>!r;Jsz@({qFgU< ztXO4qYauoa_0dG*5jKplHasMR0HMk7gAmfeLHQ%7jiAK6D0z#VHW>k)9H@!`D%v|9 zsEVCtC4!3fP5>&M&mLeBCq|&fswYt4CRiyztYB9p#?Edey5-Y@I*9<%6ap|N#jV#U zG1q8&MH!WAG(9c=b)v)61iV&)fy!H;1j605N= zw?dAYvfaxOV{dKD-V!?dF<4|g@UaFJV1t&L4J#*ypve+cc#rk>ov2uXv?Q?2PGeP8 z04*f|T#h$)AS0{*Rl-?lGT|)fNT?#u;27>V&uK3y#glQ7SGi(!P zuwyWbZ2t|J@Pg7-s?VGYZVNo5OSG!A)4c#Di-oq`P& zYKvh@t&gbsQycvXbQmvhiHU^qEmnbY&6=N+9Idbqcvq{-#X|sAkem-7$i)X55^HjN zNIdgcPTBUw@y44mdPYOmx_Jf(Hc`(;3?r5sjD2xAV(u8D7Yq=|#R~>PH*qgUof0g+ zXuL*t3AR}?#RZBv(K)&RB>k4XO}y29tn0tcHchh=!^GXeV=Xr$;R{B z=PmkW>)-cyKVNh!SIm3ph0oSJee~gL2bDJ-+&P0kexSXX-IF^xIzkUd78#2^p#1&PXdyd4M=IHznm8Q)Z{0pAx?K z=^e*1ww3L9_q|`&Z10(#Thw;BxF9!cM)5ljFQ5I<=HBYG$~mvC$ZQ$b20!^r&(N%t z-+nSY9Q@Dqm#U{Pf6Cw8pL_P)s`;D0Td}`vFVXkIpZzOq&axf7#|v1lcHpg{NL|*C z`!?)s8SHxQ27h{QcmLCKo*Wu#`EN_-qR!zPM}8_*&)V8u(VhQSs%>N16Kmv)q{zL$ z<-+0izJZ}9cMc7mq~7Y8UH0Lr>#Zj*zxkW%*;jlYKbP5j_t_J@b*I(W-xRJ@eACyf zzWUm%8+3o!@0&4P(nPoHE zyW4VK$Ud{~%O%IFdcWE=<9^?fd%Et~b+hq-XZP37+tO1yT*L0T`o|CUpZMSRFV9^N Uyje%>$-8wR>x*;OWhdMI4?ghjdH?_b literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_orc/metadata/snap-2197982135324349212-1-6a876742-85c2-4f84-ae24-292482fa9288.avro b/be/test/exec/test_data/complex_user_profiles_iceberg_orc/metadata/snap-2197982135324349212-1-6a876742-85c2-4f84-ae24-292482fa9288.avro new file mode 100644 index 0000000000000000000000000000000000000000..7218d1326d3025eff65b9440d715ffc5383897d5 GIT binary patch literal 4264 zcmbVPTWB0r7;YDlD%zLCR%}U+gLo;4%xtpVWTC~@q}Up5+HIjy!g4ZmHaj|(?aY~M z(h?9U2(<(s3iY9izNkgXgHNq58YFqw76b)_QmlQD`qEku)c?%ooHM&Sd+~8+&wSs1 z{>%4&b7bz#&0DwO1lwVPxt>X@3YgH9Yfgc>HTp@U@Y|2c(&l*c60Ghzl!WicS&+eAj{fwKTSc@+P?FjbQui8|;$fui zHHbx8BG-x%g-=cg#L-E`3G6xIiMUfKDaWT!bP6?U#7U8&2KEs)48m?67B$L}R*<-C z6Y|p&-?ZC+CPB&Jgcd3x-?WKpk3H8^vJ{Y= zcxtid;U)MRhTR6Ok9z^ARTW`p zDUz=m8%h`+%R)R(w1BOkS#&0(4isb|box$8!a3WG6gzD=4N}E{MU@hZDJ>M^QV14| zzgL-qi4sDZWL1f@nDfsh(u=~kQ1}+Ax*o!C?Qk|(g0hL_1rgNi|ARPutAAo`d3JeN zfoZcr8seogzRWLH4s08PVz8?atk*<3JKjev0_EzVR^_%xDt^D%p_A7^f8_0c`d*b}}kH4c1PVKn4 zW%cMs=I+6Pd2{HGFW!IYyuJTl`tWC`bKiWhc4Xkg0}rk}cl*}9uQtA3+;np7wc^I) z=8db<*I$2V`(rmAtgl@jSiku5Qy1>OyRv#_`OedeKQ0UgZ+-r0{fB)|{{F%z>*r=Z z-u>ROM_2D3tlznK>y-oE(MPVF`|j}b>wnL#l>fZDLx1D`<=emhb?@4);syKCxBoN; F`X9?xvl{>a literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00000-0-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00000-0-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..160d000fed6c4705de25e468f285e56efe21ec71 GIT binary patch literal 4068 zcma)9Z)g-p6rbC>>|K(}A4_K4lS7V04~v)d*5ovXt0>hXR!fLYNfmAHZa2x+z1z6A zr=${Sixh;=7Ln3^DHg0BL`n-5ME#&&+7#?RX+cE#QHoIe4+^#leKWhWJ9pP@5-zzn zGw;3M`#+QM9TO@>xF0Kc>C{_4ifJssGJz8aZTS4D$7pH?LJ{Qtz=48C@VQ?fpNhBf zokFMw*mjskMbGT9W@~k;1_C*}4d46o!#BHJ0Wnbg8A4GIhzh71zSK>_nSCXrmf7!s zR2Glo#gFbj>~53#z?T9G(ewK8%uAMi1Vq;2JiheK9}heaIG}k?B#I6{w-kT+;LhzH z`@_>;-AT3~1nd`nzqPOY`owi$--%zux9{Hh*7KXwzAD1pSPcf1i2FmYy6$h+t0lu6 zs#sOfum(bL`R4~`+5rvUJ^?grB4&M`cNi%9QM9Kc+Mzsnw*?z{djsOV?M)0%vy{k9A z=xfvWJ!;WMlmHsln_4BLJMrLWmysG!;ooZeDYY-CR|qWPZglC0G#v7$f;( zmUK8~B!A4349AS*j#q~yG$n_faKgeyH6_CzZY#ku25^kzj^keZ;gn^CJB^Vbr{oxk zx3`^^5_lZqic)E53YR_VN(7r8d0xQN9=RCBhduIsKrY4b$%waovjZPsa$+DC$7dPG z#RPT;2f#lX*xlij%BBvLhGXlIEEw9PfN&DXSglmm*P}u#od)ItlH+r>HEj^yT_P$7 za=fHzwqCEpIzdDPS*$y@t~(&qONHoWtYSFxu+{JC5#;WQW!X@;B}cF0*sdoK?gH7U zS#l-^7+ss0lqg2UsyU^K1AJXBMh9(3&?hr}9dol*O$UxOE=RIrHENDM|8m9Bhy&@s z7O~c-mUSC8*D~q&tW_=>V2OamLNZ+>zQ*L3Y1ADoP!n`huj(~oLdFGPkx^X50$AT+ z>c@0*avhR{R62Dnn@HnWYCTFo?HC$PN`kaa8qX$*L0bisgf{ri7VJVbKnFvT5RxAC z;sNPwC*Fp#Q)!%Z6;msy>T#)@ohr7pV9OFfnp?ExoQHe258!_4#1klcB|`8DB6u>& z^3U?_Wt*CCKr(^1*wo)m3&7`lzv+y}KG%mO>C-N}2W8I-;n=jODDn%^G;l&-+1v;y z64>@#9_$%U3&3D9-$xu8b*g zT{J3=l2hEHK|@o<@;PPN&`qtbj2%3okR3IrkgEvzVU<&C{b<9mbvOWNJ;!vJR&7RE z$hjh$d=V-cDg*|=OUV}-_QkxbE)=fag%+bnd{y2p*`#W^WY&Gtm({h!*X7=?;i^bP zd51=QNpcCVTyAS17u?n1;>&uVLRP&T!uSkVq-a(HUL$@&)FAgJ7FgZiiMvv6Y-qvj}3 zI=)$h!I+^Cw5|>VP}A$532&1@()3{%T!ssSj}(M w3gs=sBYLHRa{vGU literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00001-1-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00001-1-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..3ec61d58469d9f5ca7b1b7074a2cefc6711fc97c GIT binary patch literal 4020 zcma)9e`p(39DluBl53mQ>iUk$2qPS8m@KWiwdvXt#yS{|F=kOKWp2|XcTI0z?z-eM zC|jXU89JdN2+sa7{7V!>=1>?op-7p3=%0c*_Q&uK=|Be?6Lc#0eed4gy)@0*lD6OX z-uL_ce1E@}$%*GRjBqbj@%_86e=DW1080r=2<`srng7uA1VRGxe&ApS&f@RaE`FS7 z;WH8H1h#`tDg8p#bZ3D%i}&MyzWm^7)MJi?O20rT0?ZKsb;G~m{7Cw_;%n)Nvj&s8 zyY$C}_$E?EoqBr0t{9e42dSMnhacU3`xmiAYMx<5&_nB`h0kLX2N?UUPyfz8hI`_| zuissM_v8w27w|E>c=4yT?iTj@fg{_&k&;sytP|%C7}cU_4VIlMNRyadU%U4{iy0RN zh#3t-gobzzNkj&Z;@|%K>yuWf4+Cb%4a(>9134|X7etQXSMi-YKQ3-dVG))w9P@KG z)3?SuGv5=J6ac58wNhPE?hHftXNrhkWOkB2siCb|@lAmC(#3%VpJKaf5qyG?t0F$n$dzcIVL66p*zRH+FLf|_N%FJ-`oDdLqi(Te z8BkML>_>`V>Qe&32_QwgST*`lUQDIHv^-Mcb2VqiB)o@WC@(1SqORABdL7mh5fPMF z-K`mh3qn0qh;E8y)18N{UQdspbeA2crki%rh0YcaJ%w-=$VRN9JJsjYc4bPY7-h$H zi)9!1x;%_1Z9UMZ`1+!AvyN>5#}1DpQFa=(TbqBS?C8XSRA@`gZd6M~4K{cB((zfR zR5HO50mt%*RDt*^Dxzi9T`W)&U;el#F%JJwks6)hcTZ)$LAC+UEdXn{;>@(WflipRK3Fdimw24$9Gn_;j?LAAdq&wvC3-5>WM zMS|YC%cDLZsLR_(win^a1I-&l$?2fV*z}?ECe9{}-`S#kUS8?|vBC({G&|nkJ3nWr<0@PYjk2p|RqtrP)Yb7^R-G{oORuZr zFP~G%j+Rx)wFCUH%BnTvOv9`hZ~)Rq*4Je@c12ytdLnxR5h~eM2n>LCQ6M%Hh_P#} zEnKS$>x>=_RIwYeN!3izst2ZTs%u}M%ezb4t0EEQ9U2WJ$%VUhxv@|#yqDXHZ|Z>t zS!FqdaoJvxsyhvMc?1d3!rWVsCq9o&Aq?bBE-b)@RY5)gWuv0Kg3Ub$ONu@=+N)Zh z1C6UH@+fI9xw#QxRq^kc_8MDk2}9z&dbS|i6w;9(q-;pFR}gqZo=w2U1{rN~4fL?J zIvy|v<6vDcX<-Ajv~zPAtSf<bh6zYj3P-+O7(v6PPs+ju{F;>+0kJQjW|OYiAmU zJ5a5q&lDXy)P#YT5(z{Cy)6&y=X;>Q_(sE;ZzO-*>*eK`6hI0DozFb)^8rq0v b4Ch95y;OWUc>`Y2kN=?e;7i*id|&?`o6F~1 literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00002-2-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00002-2-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..b0f56644ae51c004d148c80491e125b8093a0acc GIT binary patch literal 4043 zcma)9U1%It6uvvV*`H*)iIO|al%*^~yF|K)J0_cK!ctmnF%+pG7>JctW@jeJ=wv3H zoh^hmP)Z4?;13jvP%6|SBBHd^YSSn-FV;Tvp)V>3`VgcbNCl|~6+Cx-?`AVi!e%-5 z+;h%%?)kfSCk{-C7~vi);A`hU|0kEn3@p<)jZoj0&;Ey|4pnLRo85sakNINqlF30Pz#d^Xzj+s z_~XC-{k5Y_>-|70MX=^HS(-IHx4wD!%iGB|4RDLNACIHlOJAHN^nMk0`=Sqh**y266AY#2Eh&**WS>KS;Be6oRx^N2}v_-;AMb*L9!IpfCX5p;UoC!`pxfC zZHE6s8w`_#5K{zznBkvdcrNXi4n<;yXT9w%s#mj+8z-MBf#99YF>X8?dc*Y~orto!N z;zk;uCTxIz+&kW3OLbj^Qp1Toh+{Nm3c4T*WWtc<)jg<^$mc=0g1FRzWzJ|s_D~X4 z7%n9#ilsIhuuc;dhD$bVOI2-9$~j67Ga+mCBCvW~I}Fz)o2I2`hGeS^oH+C}!kwTS z*Cl(Z*QbryDb~S|O~aOC8{|4&j1H$I!5-(^>sXjG4HYDIx)NF0Y#O$;_?m1gIkR5Zz!L^1E7^RFoHfBEbgf}y#&JQ_)p^w*E)-k-u8*d(@IkGY-Yz!~hBSaB^;ihMTd24Occxc+VOD$}onCM0aL3_s_9*Dp$ebqs;E6}k81M8z96sBDi>P=J zo)}NY@J5AW{bhCrG$8u^un#E`{dO*mdWE3g-$BxT7A|1u-X!9ugL3o6k27#m-l*|g zJI!8>vDaguR~trs&Q-#NmkSND(gWdpFNdqpx-ff~ZGgBV3(l8jUuRE)TFt$cIOmFj zb2)dEyP~1)lk?ok;Q_?1r&y+#Wmh_Tqvnj0tct zG-X>T3GP?wp&4yRP|PO0JA#CWVeWOv6P?GF5C(e3mX_e- zRY4^H_2xvhfvryvmX!0<8wgHA9!((TO);m*MX=+og|R>|7zZ1ANemmHt({xTU_<$fVf{NVv1n%n_=zMy z=>%@|hhxTpaO&#V65kDG>e4g(D!iee{6X)+@9qis8UH^EF6=A- literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00003-3-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00003-3-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..dee411d7ef76e49ecb105b33cba2d42d97c131bb GIT binary patch literal 4082 zcma)9U2GIp6uz@N-Q8}N($?O|3~tC~LN_I}Yln7AX)39)HAsYzYK26I%n!6L>9N`0@4YfjDO2YXnCSYX9hw1+@KTgji(#tFu4BU=WYs zkN^Jg(y}UhhCwl~8FR#KZ^Aq9PnZ6<6tVCjk8d@D zf?ywvq9}ZHuay$R`9k7plQ`*3_kfe}yqXv)f|Gvy6h89Kcb~CUPJRIgmXk1iY&6Ox z)6mIsYtB%0Z7+aRaE3Q$-n|^E0-v_Q%hC5gG`#WN`9}xk3tz5LPY({-u-oq+eYHAp z4|eO7x4t<3^|o{0{`JxeXV@L*05*YNWAKd&pP#6v`^G&m2LUQ1Z>bk)-UiiztmRW# zqd=ah6LP9xXV7~B<%;2z_}A+nTx}e{0SvXW>Lwu+0Mr^%-4?tG&n#T{jgqt2m+dFr zv!WmvZop6ApBL`jsgCk1gx;npU5-E+D4kAsc1c}5X$BcHU4T5y;3EvaeDdJga2!Wr zBZNavC_;dS5?n!q6kPQrB9#~^>$;|o5luawQ%fbXHzey>dv9~Oq-E=2@0p@Jq2^&1 zd=BAf@zL8SZ$ZHqQ8Y7)C`gdRC2>L45DXHU0|Fm$)C@~k&;bE5OdrSm!WH;fg>F5w zs3%M?s?eop6t;yY@L@-H-ouC^E{Ma`m+!G79(e5N344#Z`|CvDxf(L@pn)}#z{4+} zw}?|tAhVZg-{U%3Ac3#zKX=ZtrB-+Nrxd`4xBrC+Z9G+tAjfEp=? zZn9a;+y`4tmY)FMkTr~=qUo}!mM}Zqf^ZbD!MtpawmNHlY?PxMSwlDFtO<5ei=&P< zI{4!qe|6(ILs!9Kg=G=T8fD!q?t4CKDC7WfFP4yAE@adqY_4?B;hd4lXb?#Nhtje5 z068nmvw5v#;s6an&8r1fCm|#(0w*(~YxoHNBDT%*@d0%(?DXukR zp1T#pn^5u|T$Hsas5mG=j@u8G#J@8DcxNW~{mzrnPb|azD0w#sqsFRWu!qqR7oM08CDW<79-A|8Q7)g@g{cjag7PNSu5i?mRi?+;W^m$ysP0TQN20 z>_(RsZurv6O;e6{(xxi8&}1C5r%X*Yl^fc_G`OZTm#9cD)M?z8@Y54o~rzB7PUQA#p0#JdjEI;XhlkU-IUrhsQ1N*OGYzvStkz7^FDR@8J;1nIb8b$Vll zQczv(oJ9Plak;psteTyLVq!uqmNY|8NGYj1B_-N3Wi78HluVD**DZCeSJIhv-92hH py}r9k>08&8Rb*A_mDHZDK1IpMtA#W0KKuVa=-~$V^B4Zw{|^wp1H1qL literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00004-4-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00004-4-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..4264e841218c55bc066041117939f7c6083e68b7 GIT binary patch literal 4067 zcma)9U1$_n6uvt<`;%l7(~>*P$Rf+2gT>8ur^zOput-!C5h=koG}vmH-I*k#lbJZX zs{~1rJ`|rsf(Vu3OMMWu1zRkw6)G0mV%t0vp?xSq!9v@I;H&nBo;$yHvKf=G$)0=f zIp;g~{N7CNIU-|(`>}|hef06uOdd0^%;GFUJ8!@IFPh$iP#U>EaIg)R@z;;Oy_@Xd zTSTY_*bdl=d9twAw$7NqUcwXj=ieS*@z~R$+Ak1F0(+7{Irti@ju!T5s$v%o`(jsb zeD^r*qQr_#&gq7tYR1Bxu6V|Mb?4Jty&Ym;oP(A`xAEWKuRh&3;ju5Dzx*)u9Cqoo z)Q8Itj@$$G348?q^uvW;JMWT6_;k^1`1|EYJsr&N2h0#6RH;-3%W`=HL?&?^-@AYR5}U^?EYldm=7lhU zh~gx}lE2##%E0#ly*a0wvm|D3SeAOmvQNSi1dDh#{_)Re-5qLfp>@;{BZLC>0>{(aO{)RFAz~ zCCKcO1s?uTTUkF$0Oga^amI@U_=OHd=scDLOyF7KY)>xFW$`397YTW88Xxzl&l1@5 z$ZJeME++$qCn34Q;&Ta)c_oF9dgS#qp7F>F8GO;_xSGW$$TqT`sgO}3%87GbO3)x+>T4a>4s-Bemy6SMnYM7SGdlZMio8t`dzc8YT_8kX5o8ZF@K zb}>>;A%Z^M*OywDvrG**wz?d-hSfG(_Tt+OOC=Y`hqk26_IzElVRM@=otd-hbsa2W zaJrJq*T`L2o;CDl3p0)hnxV~WCNZJl0{EU0UBwJopE9)5nlZH_26tq+Y3>Aw)!d22JL3!P=FBg5MMFJs?$n1%h`W>F7%9u0 z>lz?~jqlSN8g$;-QnN7!9i0EN>#W#XT+qaE5r#&)(GrWIdo-x4;&{0z&ghz$V05AgvXBU4~`Oic3XT%77mqlW`k-mHwMno*2qVETr-Mgv{$l#N$KJW5}v8c32+ym`5?P%fO<@!}iaK!&J# zF@(k$uSis_HoQrKfXHF&4TuvR$A}99xnoO9@bR*s5`cQWB3{A9HwaV8d4|NRS{nnI z$|~|)iI?2ih%l?@mrlIK4qHN(xbLA&h(=sG61ddsQt=9c+mHtpuz8)#DRLR~cx!Py zU<}&9np%>>0_Z5`Xd0|Ze>u#5=am+3tf-qU5mF~GYcOmx4uq3e$CeO(XhE@0wYApZ zyj?i0*-hOt3vx*wD#?YN^|o%P1+_jbSBK>Cm|Cfi4h?IK%Ggj@t&Wx(s-npwvNl|< Ys%l+%Nw^E|>*s&a4fx+~68^paAK0w`g#Z8m literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00005-5-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00005-5-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..0264972b11dc412c6c4609641e8a0d43eecc7ae7 GIT binary patch literal 4047 zcma)9UuYaf7@zFj?Ol>f8f|9TEk`+)=7{tXZ%wXA<5}85wbWWdYiOu#W$$*9Y}xFk zcbj5p^PuKQq*f@k6&j^##rnUXSS`{@kvu524~n4Rn<$i`FH%LpZ)X3^-Q}8uOY+Uk z_xpa|%=c&JMz`(NFv49}#aC`V`%Oy<3ouOJ1VX)^Joq0P--b{exj(S54rlQ%U;cU} z+Ms75)Cy{kRrC@`?VF0Gu0ALbj4=-L(2k?_3Kr91){{h-_$KvD{xV9n+p{gQ+KoVLG~FmThYCaocq03fLILkK*&+ zzwrB-29vi?ok<#Ynj$gyRqhiMIpHS^Ct^X7yyey)M-(}fIfagzgiz$#F{jwhWq=~{ zBTgyd2OYfeMSj_jGA#Qdx4d?lh$`}Ovm8j+s3|i1;ieLPxPZnN`DOp;6*=yOhg*%Z zqm`rdq`m2sl)$5KqDVg*k_FQk6A(^<7`63j(u4BRR0@>yNRH1` z$`dBl-65j9AjfsXsE}$E#t8}$WU=a02yp<^$v|u}S~8tEnCf!v2y%O=T&@_VtvjTO zqdV?LxDBuoOLxY)ec7HIlNd*-Y&&|%0lhYtBgTpm?8&~p*vwSfCZMs-)kv1gv$j*2 zd%9FM=mt`uFQPp=T_hElT<@dfQ{`gO1WyDk=98%c-D^~iT4vS30&{^_WSZF2g|tiH zpN#4n7Qp+MMUD|`Yy*-6C8b==K=nqI9+ZI8F%6uQ1Zj&jnn@JGdI}{8^#)ZI&O$Ok z=|YeYlJ0ckZfUU?F1dN${Bvu-{Lig;JIY*! zOCzb|MeuyskGCIZFS?BKurvd@g}QRC8v=K2x!0}pKAc&DC26q@??sslLUSKjGBFPh zNET=oYC1*D0ND91QnSW0zekz>Xv4cu<|N#1ZSL-O*6*IrTAHiOiQUp+06|p!W)w;^ zs*STe@mG}i^L855+p8vqhEB6-mvj(7KLlixs}G~ zjz}jmOVPrzy>i(}aALW>x~wkm+8yfJr%8MSWp2Qw>A4mL!*`99d`+P2!;9u?292O{mwuQ{;qy&+s%Kbzxar=)?t-xdcr}SOtyS zyI_Z+RFoWm72MlNW>*#LjNMi4h^JbjJG$11`;l}rE(w{0bf&eNUSe{mSt8J8C;O|V zDQMU77p=!tXKse5BP!ewvn5B(s_s&sX{aN)tU6&5%c!a&PaRk3jFwgD?F0HS%BmG| zbk?j8SO7H1`nIgHJ*m!TUC2WLgdv-PzyWv_1+akt=G|^h=^D3C=k#D;%DWhAOik!k zHE?}JTSI{@_eyPUik>LHq2T~Y@7>koHix+IdTtJ1aR(Yi)r%o?%jSkuqdW@_kRTvh z7<&ui#K*Db2m{=q`FZ$wS&$D%y-v~Gz{)!aQ;NMgnwzSRfyQMOeVa5#uIxmZRs6H2 zxy1%w!Xt4XKdXS&9O L@O^j`zRLd(#+2!{ literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00006-6-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00006-6-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..3db75d8c01a16285d9b3ecca26ef1dc35fd5b5a5 GIT binary patch literal 4077 zcma)9UuaWT7(cm5Z<02x-RL>oD?zf04IQRku5C1yApV(Kk>QH9qxe6$_qM%Tn#7x% zLUDyn81umg9edcAhz=*653-ka;&iwdAH+TQGKL5nn*(7onCxK;_vbtJ?@8jdEp76h zbH3mA`_B3PoYV2`du5DpFP8ARU;n+(k;EJfV>pJ;z?U!mgQm741hVx53n{!2pMCKC zJK;9HcM(c})|gf?7E-Sk4Mi`4eirY*f1bN>BWCOKzTIyT3WI)_L*4MTF_%wG)QpCr zr6x?k4d7Ay!7rcO?QX+e@NjX!O%yAsmvwEX3Yc}k_T<``7up~T4kU~&{`gJL*#q0Q zIoj9$dwgciGt{sAaAf}V-G^?1`VPDgfA`fNH`~?YA$KDL9Ga#3ADXfDzfGGf>g6G& zItK>U;tam}@b?cBZG5`t9tQ?C&~T)29)EUa>0bM>ee5aIsN{0F!K|Fk1LRHoHvap) zzkcgUVjhM(=G_Q>9zxV`n2*rU^&u36?}>&ntygBKxN|`%gGj@$x2n9A+F91;N-zOd zM(`{6r;Cr@549P+i&~6Qcc?X>MdEXuD8$^fVMNS{a7fm2g3T0BXc{tV-A$Px3e96i zG47>;DEKm?5OaeM{;@Z_U6ENPPYBPbCnTZ} zb>hSD zOoDO_3DKHSoz|)DE*|ALAzD;bL#x+e9HS6U;OnNLX(oVrERZ!BQFL!{6ED;j95 zwKWn-wNWvRg(FH;r5i~4zVMaCTuC!va-EBg&Q?n$9X#PMpGzbQbgvO1Qr7Dx<}4Sq zvNoqxs0%5Zz&#nsHq3$d9c67^D^IRRgcFnE^)!@zMC?Z~NF80p3Br-BWIP=!_;uw= z1PyrA=FdVlKnX*T5F#hn;68FWj<=%pR1zm_!RhH^3 zrFt00drKTq~zf!s>qd6d2b&l@Kn{m8g}T0Nkt@-3&w z$bP^TXalEz;EN-%9Oru>2-mxD8l^AsD{(k2#InAROalTU;NAkhL?h5X%d#$0)}Om+ z1WrXMYd?>~DKF)mwq!M;sMCVnlIO`sA#yncxWXnh;NCKVd-1R=cj)<@@4=%ey-eRD zt6;Hv8ElXzC1L`sU|&~)b$7wWtjo(Du~ZM}hVJ#?Aw=#+373wMPvd>`Rug)3MT53G zGgMb*p?wQq$B#?qLQRuKCAcvfiYa9zdudQtrO|9gn%1?lT9-x-9GB>foRR2l1o|+_ zNQQQ-p&J@309wnqw#wDYjI@}sAsao2g$x9N1Mph%V8b5Fx$Oe!+PBc+^oVE5xhR`V zO&7~`&-E2;ZT4*0S8T8;dZO%x@*a}j!>h+_@p1lj9SmP_2Qoy}i6L~(U_+8xZNP)X z3yAE;z6^0<2LMiFda+8D!wRQhsX7^ Nf6-DGLgVm{{{I6W`pN(R literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00007-7-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/00007-7-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..4838bb7d6e72ca53ed8a1f4cf400aafb5b7529ee GIT binary patch literal 4147 zcma)A3v3is6n!&0-EP~Zh0;6Dm=!leSwYIWW4ooTjVUSy8bc6^5*2m2Go=I5nYz2J zpdl(T7$b>@)fi(8Q6VInNMeXTB1F-c#vjICB1BM#_zffk`~luK|Lt}yP1}9*=H7em z=iK{VyL{0K83-idYB+KDrCrqt;P5d9F+%3rkmz$*oKFDH{wckGg#@08gF#>mSz9jRsgZGbDoIky=uZAFb`3 z$=h_pu&b}Cay;tQgkDovxWe- z*J29OMLUI|7aYW47W{hfwek9HV1e_BCKJM<(tKLlMrekybMOBirNA77(!JD=lSEMP zT37;K?c4HtLz#z%3E5?*vw_egX0zD^89CD_XBe{Y=?toV$-u`9eDL|UKWh`{5jJEv<*o7B0Xwv%cTdwCgXmYx~H&OD=5Jx137+ z7+ZeJH|C;8zwX&{{EF?V-1z0g%S3j^o*nuTPZ?65QA(Ol?gCSd{_cdWm zl)a}8esZv(8=31T!DTM>xEg;b5zw<{Xos=!Q)lX^qck19qfa_Xi=@#4i8L=|*~qaP zaRw_2F|Pw~={Er@@`Tv0YkabcLS2~afk=HRnMGk*DVGDus6$pn^0^wkjCq8_*FGmh zuRX%yYmb8vyq-A;w?qLZr&gfG&X+|2e}yc?JPII?vy?NT*U{^gb-K9*qr6pDH7mJT z)rdLyYOuSV%ndi85OinQ z)J|&Zd>n2hsUvuZ#l>tCz3lL6>($h)q-}l^!;dj2O%Y1lSD4V=VW77gLEsNegFccv zjYmx-Ae$XF%piY1N>UJi0toI<2;2Rl5qSRDdgvmlKOzaJbplv2F@P}1D79>eJ9!h8 zun67^5&XeIi%`BB20lT7zo@50IE07U#Q|gU)8bR$LmUEo(@BVVBZ~r;?}mZTQ{b%) z6nGp@-?B`)E#fqW4fg`W?`BY#CUf#JCrmaI!=Pg`v3#F4fJsvC;^l~f#yBxZvj=MT zUP;H<9_0CF7*tIC9Zk>?N`Ej=cSXb&`$)z?gHy+5_^UH9#=X-aMN(U_cib2&z`0#) z0~!1%YS^st2C_GrGo9gp-lGUVOs84gTtgA&M2Wb{r;R%W?7pvdJKpQCIKP?Y&oiiJ zw?N5k7u=a2hWeJ~Zu<L=hXsTmAW!5(txfRYC-C{;{l28$So2*4NxARTBN*o?}(n)@C9mXEuJmIGS^5O zTO5_EeHB}?q7piQN2IUT>Z`e@O+~o!5GFX?=9_X4suEKJic#=gpVHPs-d4N0msf)@h6AaYQ91M3v7V@V2qz115x z;DLj16J)YV}4U^bRZedq=e5f}wnJRLd81%S_5?xiu{(=k|~2hMH9S+vJW` y{8LTM_AhL0({kC)){NS*Fq2aiO>UR9woHer_AB$my?D9(|8Klj5waZrUGN{sR~e1~ literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00000-30938ed9-31af-46c8-9274-506c7f2709c9.metadata.json b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00000-30938ed9-31af-46c8-9274-506c7f2709c9.metadata.json new file mode 100644 index 00000000000000..e6fc794e81ff1d --- /dev/null +++ b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00000-30938ed9-31af-46c8-9274-506c7f2709c9.metadata.json @@ -0,0 +1,145 @@ +{ + "format-version" : 2, + "table-uuid" : "baf92432-1443-47fd-971a-0a9df2432e4a", + "location" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/complex_user_profiles_iceberg", + "last-sequence-number" : 0, + "last-updated-ms" : 1758188914000, + "last-column-id" : 18, + "current-schema-id" : 0, + "schemas" : [ { + "type" : "struct", + "schema-id" : 0, + "fields" : [ { + "id" : 1, + "name" : "id", + "required" : false, + "type" : "long" + }, { + "id" : 2, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 3, + "name" : "profile", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 4, + "name" : "address", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 7, + "name" : "street", + "required" : false, + "type" : "string" + }, { + "id" : 8, + "name" : "city", + "required" : false, + "type" : "string" + }, { + "id" : 9, + "name" : "coordinates", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 10, + "name" : "lat", + "required" : false, + "type" : "double" + }, { + "id" : 11, + "name" : "lng", + "required" : false, + "type" : "double" + } ] + } + } ] + } + }, { + "id" : 5, + "name" : "contact", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 12, + "name" : "email", + "required" : false, + "type" : "string" + }, { + "id" : 13, + "name" : "phone", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 14, + "name" : "country_code", + "required" : false, + "type" : "string" + }, { + "id" : 15, + "name" : "number", + "required" : false, + "type" : "string" + } ] + } + } ] + } + }, { + "id" : 6, + "name" : "hobbies", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 16, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 17, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 18, + "name" : "level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + } ] + } + } ] + } ], + "default-spec-id" : 0, + "partition-specs" : [ { + "spec-id" : 0, + "fields" : [ ] + } ], + "last-partition-id" : 999, + "default-sort-order-id" : 0, + "sort-orders" : [ { + "order-id" : 0, + "fields" : [ ] + } ], + "properties" : { + "owner" : "hive", + "write.format.default" : "parquet", + "write.parquet.compression-codec" : "zstd" + }, + "current-snapshot-id" : -1, + "refs" : { }, + "snapshots" : [ ], + "statistics" : [ ], + "partition-statistics" : [ ], + "snapshot-log" : [ ], + "metadata-log" : [ ] +} \ No newline at end of file diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00001-b1b4732d-f823-4900-8185-3eb3cb23e4a9.metadata.json b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00001-b1b4732d-f823-4900-8185-3eb3cb23e4a9.metadata.json new file mode 100644 index 00000000000000..d52c580cbf2b50 --- /dev/null +++ b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/00001-b1b4732d-f823-4900-8185-3eb3cb23e4a9.metadata.json @@ -0,0 +1,176 @@ +{ + "format-version" : 2, + "table-uuid" : "baf92432-1443-47fd-971a-0a9df2432e4a", + "location" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/complex_user_profiles_iceberg", + "last-sequence-number" : 1, + "last-updated-ms" : 1758188959726, + "last-column-id" : 18, + "current-schema-id" : 0, + "schemas" : [ { + "type" : "struct", + "schema-id" : 0, + "fields" : [ { + "id" : 1, + "name" : "id", + "required" : false, + "type" : "long" + }, { + "id" : 2, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 3, + "name" : "profile", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 4, + "name" : "address", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 7, + "name" : "street", + "required" : false, + "type" : "string" + }, { + "id" : 8, + "name" : "city", + "required" : false, + "type" : "string" + }, { + "id" : 9, + "name" : "coordinates", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 10, + "name" : "lat", + "required" : false, + "type" : "double" + }, { + "id" : 11, + "name" : "lng", + "required" : false, + "type" : "double" + } ] + } + } ] + } + }, { + "id" : 5, + "name" : "contact", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 12, + "name" : "email", + "required" : false, + "type" : "string" + }, { + "id" : 13, + "name" : "phone", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 14, + "name" : "country_code", + "required" : false, + "type" : "string" + }, { + "id" : 15, + "name" : "number", + "required" : false, + "type" : "string" + } ] + } + } ] + } + }, { + "id" : 6, + "name" : "hobbies", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 16, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 17, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 18, + "name" : "level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + } ] + } + } ] + } ], + "default-spec-id" : 0, + "partition-specs" : [ { + "spec-id" : 0, + "fields" : [ ] + } ], + "last-partition-id" : 999, + "default-sort-order-id" : 0, + "sort-orders" : [ { + "order-id" : 0, + "fields" : [ ] + } ], + "properties" : { + "owner" : "hive", + "write.format.default" : "parquet", + "write.parquet.compression-codec" : "zstd" + }, + "current-snapshot-id" : 1689809712605583552, + "refs" : { + "main" : { + "snapshot-id" : 1689809712605583552, + "type" : "branch" + } + }, + "snapshots" : [ { + "sequence-number" : 1, + "snapshot-id" : 1689809712605583552, + "timestamp-ms" : 1758188959726, + "summary" : { + "operation" : "append", + "spark.app.id" : "application_1738810850199_0668", + "added-data-files" : "8", + "added-records" : "10", + "added-files-size" : "32551", + "changed-partition-count" : "1", + "total-records" : "10", + "total-files-size" : "32551", + "total-data-files" : "8", + "total-delete-files" : "0", + "total-position-deletes" : "0", + "total-equality-deletes" : "0" + }, + "manifest-list" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/complex_user_profiles_iceberg/metadata/snap-1689809712605583552-1-51fb6058-7fc2-4791-96a9-f3111933728a.avro", + "schema-id" : 0 + } ], + "statistics" : [ ], + "partition-statistics" : [ ], + "snapshot-log" : [ { + "timestamp-ms" : 1758188959726, + "snapshot-id" : 1689809712605583552 + } ], + "metadata-log" : [ { + "timestamp-ms" : 1758188914000, + "metadata-file" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/complex_user_profiles_iceberg/metadata/00000-30938ed9-31af-46c8-9274-506c7f2709c9.metadata.json" + } ] +} \ No newline at end of file diff --git a/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/51fb6058-7fc2-4791-96a9-f3111933728a-m0.avro b/be/test/exec/test_data/complex_user_profiles_iceberg_parquet/metadata/51fb6058-7fc2-4791-96a9-f3111933728a-m0.avro new file mode 100644 index 0000000000000000000000000000000000000000..201c7908bc407eea5e10bc56c039284cd1d0536c GIT binary patch literal 8783 zcmb_h3se;K8aIoe3!nkfQNDM)PG*ql06(5;h?|)`?XJ!|6<#i5+bJ+d=zsK+U zec%84K9V(y9vb3DX$_bOy%%7U(76^&5+R{z(yFB;QVI9XWLzhSkVz$a95d=DNyI{% zg!u%PO3bKAlN=WQgD^6nI3q5M2FsVbBkuYaS@}%4ygulaHb$<((fQ#eA;T}PdI^2xX zSYJGVL167+G@_pD*AZ3?z}*o^SO~un1j@bNj(e)SJn&=Z!Bk$UmN3&OOEx#aJusfI zKq^3E+~~m;ml(hzS{Vp)Uq}TDtkM!zGfn2IwS>-tL?+3^42K0s%vO^IBfH^-6QrR$ zqy|Ex!MjBYBTg|P$BdW>Gt+FI!$6MxZ%M?1u@@4cX9*1p{5N7*n5UrOW?BNM!<#kP zg(xhqRC$l1StK!qt5_?i@|KgB7NiMq(oS*{YR2^#MXQ0sB$Icd>R>-Y(I{`x~ z83XL+xKhZl*m2g3S||fStJxaJU05hFTaAoIZ0S=;B|1!xT8*?Mg85u52^LEN^%FB| zF*P6lo=TI8q%k#8P4!u1h)ARkrBSuL_Hw4V1(`$~fN{@-9V{l-0qm~G>If}(L}qed zQV^ksXafc@nj#=s6r)xO!BG~1!fBi^LpnfDQ1he^5(WH2ji7uwK67a0m@F4t&jMmW zX@j8Mo`E1ftN{sx7G)Krr^G_pIBkGtr9v#9m^5Z-!pW7%M5wTG^#o~Ri>IA2E|O;f zS0L^T#6S@NFp++kMiL;j? zC*W|l5E_XLT#FjhxNgmaT0nhtppl4L7_2!DAzTO11o&YPV!>hZ2d6TD68A+(7Vc^j z7vTPZN&%okWW9k(;cAvAs1R8npknzf1x(T!t)RuqfSAG!p=KSFgeG~$PHZG|OU(wg z9|1&Q20*72=U*ewTtmba<$+v7kX`}EBE<>^9OSBkd#1tSN@_;U{SKBq9DpTP^nz{j zPD$X2ZE{5~!D2c+CSL)sAQm;gJaQTAk!*5t@h}qE7^&6(%)yN2s3Co*X-Fu;v#?%3 zhlILM)GjJB64op1SbrhbUymRmQ$^NTEtdWTiK%At-c&P0TqsLWAjdsOVl<02PVBgz8WI5nZyQyATS z_Bt93r};%L7aqe@Ml6kjxfSG?L$>>JBp0_fj@}Y<_C2tOd*Gc73Ka~BaWt%2!UUQu zoC5DL`@Tc5&oNp&*e0eiMUVh3QU|!))!e}t!3QW6oCQrLI16-mR1v~)Oz1b57hpI$ zRxz`z)*o00b_7@u*UC=L!bl1<)I?w{p2FQRB5qiR!G?-yi@}zf9Z}h**8UaH!M(f@4kWm51rokn;Zpg)p%T9Ag5515BBDwKG4no&=FCI80@O~k}8rfwa=%G&t*aN%q2?5wSeA0k_ zK(K36_5;ys_JNrr?%xITg|v5R)q85b`;?K3Ql|Iji#u!He7W!l0qn$0v>Wp!ya8Md z_Sj7eYJ|7PwQ+W%hp&!ZZT#in+2B|Hj!NigVFiIs5$&S07R(bk=+ZqmwX5f1<=j|X1Eznu1mE=7ORVLjvb?9Hsrw z`woq1@>4EZe`MC$w&fwAwvZMgDN)bdfPTr28Fs1stL(m-QO{_6Pc?G?73J!u>okdHpVwEv z^2w#b8bjJ+i+Y=xPN{zJ zba{T@?sbSs?fre@+}dLA9on^qA@kna8GPI}EEt>r$lI;6gMvpWB2DqL&;4}?zV7?U zw|8un>qb|@NxM$LYbxXmrv8?`U`5!Gvijy4ay>fk-0)<}x@+f}s5Rd4pWpX+X8MW4 zg)7G`T%VoO{_2mH5&DCV9v+at!UuYHsbAzl-zCj6V6REJw)wRYC9;Ij;pLVWX3o4M zUHke4|GVF+8do;g5$!o`H*fE$`TW4XKXR@`uHKZpYm?Rb#YFA0%CDxS+^kQ#J)+{3 zh(%AnzcMm-v8KkSx@^owrS}^j7bHrx%7QzE-|ksS<(+Q1J8VLwG+&`qz2No9u6*B* zEO|7cjS$_46^4;;)>Ivm1Z(8@9Kh)tPkAAIwTg-(mO%~ECWZB<8EIszP zD(AE9k3RYCytXI)>Ud&R;4MSL%^CM=4~Mkj1?Vnb~xc&C)zHCSsvtbZdhoWjQ-@Haj|(?aZ01 zYl+yRFN#n0Mf64Dn?-!^p;i!LUuwmos06&ci9TrsK~NF=&s@$qv%9kwA9wc5_xc&GIN@VIUg z%kY)*`uVOCO-vhbA_nrQXF8kk+i-QjIpyk@ny!PMe(EG@nY4i(t)P&dqvlORDHm0B zd!`%PBF?6aZn+ZnX_sOPu>g^8zCe)apjw*}KM6Mm)+FF2_Nd9?srpT#SAm%aZaS1l zU4cK*$z>Gy#6Z+VEzhK#@fIXl-E}Al-;c8(gFO=c=_9v}XoH|6wPmC(8kpi4q%9i6 zB3+Sd^Ad$m&IQELN!1DL8u3KjsgzXWQz$xxS`Ff)NKp&>2pa}rHxG*%Wl1YaT($}M z8H(?e+kz%R$>D?+Dk0yrgKAEq3PY*-4sQAlm!=AmzF2&MRfRS%jqcEgMV;+pVV&Yv zbvMYW)Cras1cmh4C^;tONIfP&lIKmILZ^oV(ie3lKG_FYPJYx1#$ep#uxI+k+ns37 zZFR+(%5#(gcC1$hG`Z<{1_pxi3}oWU#Yz$|5H?9bCaPR7KKV=@qA6WhoWQaakezsH zvFG77{0+lygVyoqo#N;f)l$;aDNSTLfKA7TA!Wb`Zq0Qqf*p7eiQ;K50JW+k?6f2K zYOtY%;jt{l<3wB73OYq+LFzz37DA`*q$HeY2a#f@2d6>mIIyTvW-+COq9lc2!T5XC z8cdWB(j==&q{WAs#Dy40Hu}Wau7!-qDgO8<62)D8B8bsd@SGO=FlZhAt(?i-^X`!Sp z%xi@?wOB087K??0z++>Y-y)t5i!4`|O4K(WiGEHyXzB!Z#AdwauRO>*8Mbqvvpp9X zfbcSEYP-kFxZ4QCYuVS~m+{_!&GYvC1?6f}+4F_+Uw^ zKZ8Wx-o32=C(!0OfiM9>z>Z=H1X+=jB{dgzAcHiOu*wMbK(Nkn*51Zo80I030w+~x zIcYD8Fbrj72+JV&j&<;*%|ZsB+$i1VL4b?8@ufL3K3}4;KM@q7NXh;jnIYMyJqa{1 zNl`&k>p3Gospjjl7Cd-O6r1N~WO$w*$qonxQQjmyBNHU)>4mQf8Q?m@jE2Zd9a}z^ zORmQjm`FI*v0L~9$%Am^mcGOy6rZGtF-wzxl>1pXI;) zaCY~Oe6fCRb!YmQYgcpR?{{|mk3PAv`@oM|KixR<a*t1LsA^XUZeG4rZ43XVrS3|Ot5VDmerI1tzWi3RSC}~BO z?2(;h@cm}y>ibmh^NK~WBBv>PqjdTQYFlYzJjz?W^uV11@wB3cdaTT#d+N!r9r0#d6dsJ#{>B zN#m){-q{gBS{H+7+%N_*+KvM!Ru)oyEm5yw+T19%=d@1HPO6pwtzwkK4-WXrAa9g` zyc*I8)^WZ4t$5ysQNjs?v@@F|0N#<7Jh+xhz6Jx=kVr9a6hbh=i4LIuEtQp()k!!C zj{23291xk4EHX1ubZ0tR94!lumK#U=D+Z9U% z`%efO=^%mbzd1$$9HVBT=Vmd7{w0VOk^KY-Sq>n>kkv!cgu+y3L`F*QCZ zl>ykwJNfGY{zvl(%Xl>et>{w@0RB6xe*^*Y66@%{1jPWs>h#_U{HQhJHlBhm3P@lI z4p@FAsbmjS@&~1BB&?1)uuC1KjzU!9afyU_Yr3L;7mFx0s8(X%r~n!0kX@sRt%a?l zsl7r7N-G@+VBp{NQd5ZUtxvyxEF6`~c_w@g$>TON!DYQml zVRVlH#~rTic>K$y40)6~{Fh5aoh^r)T_89@j!ADnEFsov`^lWxJ}n9Oa{&4Gb{w;< zgP{e^oH`M-3lV!~qZ-4{2d_rU#)>2oE8zby2{^4v#31(>9Y_y>R1$^@r)jw$BxIiM z1}G#7J9^y}f?bfM`ER5DA3;DRn3IW;JrV;RF}07T;w$i}M-a#l^~2z>rB@GqG|0^@Ji~qD|DWPMw?c+Uz-j8(R`Yv`L|K_*G#(o zn&Q_?`co&haB50jUP?5BA-C}Fv-{7J3e-_U=KoWaWXKM|0TAt%7!}%Q+^Mp9V3hxh z;(8#P9`Z!s0A8vf`7?W?TMJW(d57pD*z;m^0RT|)*SkoEc!6v_6}YeuiJWLn?Oi4m zc7~u3BGoYl{~m7#((kOmoa$j_>0##XVgADq{|0dN+1bb@f5AcV*m z!k1dp-2evtHA9Z(w-zp2BgPAQ*-0~G2Zuj}C6=ne|AbW_1|ydQ0wl|i9FHD#MzA2B za{lh}U#XN)u#{17mw^KNGlDTZ3d73u-;UeCMI4CCN>2%D6#`h(e?ZU#?cpP6g(a;$0EbL5!GiX_ z0jJ4_z=DHO2aWo1T`llfy3k|djI(SOg&?1BXkon39$rWnUvF^16k?+SuVgv! zNRFtes3;>VCrexa5y{H}5M&kX;qC3=<8FyTyMjN&U059H+mn2T1A?qEE~l*gd;_q7 zqzygrtwn+`g*w5sH1Rl1&O?j14Hb~LcR`S`ue*m2Y0VsblWBPPxnhDmTu2vSV!|MC z6?vqbk}^^bDd%B+%GZayQ%wfh4M8ra&;e){EGB>ilmb%M3-G}BxO#<>7KoVuG9VMb z0F1ZC8E;273>teTfXrwf&}!AWmH(jAEOugCxwk(?F;F+q@#5j-k* z6(U1|ZFyOF1&afu%T6FL=_7bl3oL+Sfb!ZdSdSnNZ0KPhceFdk8{(JoCd)iAetU>0H8I>*ULA+$|H>Ifi*z4#JC!x1Ki0AieQ1Pfjv=s?XR7??EJbt8Um+i3yb+cDEHM4d!wJ|m(;gi`xF_h5dw9{6f%~@g%k2zCnYo}0YfA75K zX(3&G&o7ZIrX%_otR??R=M$ScdPX>3X@O`q`G{8s3%j${#b&m}*OQmSg|@l2 zDz6utW(SKI-pp8UBBsIP3y2yU2J8d?mU)|>`@o5(V*{r&*WVY|`$O(WU zEp0{a$2gAjV``tB;HZ_ntGB7AUj9_E772Uh+q|)-=5kns)*!0(MdP)3)&-YZ(S2hX zUFhs>;TxaF8>(I$de@k-zQ2Ag!FJB{;0b8WaL^?bJJ*}tzUA(%8hS5G zjLPn~b1n5Xt#esxc|TGb7)rvM1s*oBs=0N^sSR%$59v>DPw(EU+{&!BNWOztzu-P% zm6x#l(aHQ!FaAL(wYlzgu7xH-ru+WVaPN%u9L&#(vv1V5-182vIaDVXxo=Y!&_I`M zOnkrUatHPI=9(HgH@Ws1*086^@CJFLGhfVrE7%w@8y!FL7AYfD9gynbsZ=f8K2;jt znXB3SMHvwlHYDz+%W*;y$*WveD@1t?TKJqtXLuFLkY92g4;5$%Nz3*HwI`(R8OK7J0}PiIWPSt!#A+z%@dr)9>>CiZ(Or) z_h|&rlm`ZM-YfVPSo>JeQ!!-muxj_Ebqd{^2I6j0QC(rS=OVX^UM1eq`SH1`KXhT_ zTmBw5wS?Rs=J|TvbEjh|?dei<+dp7n>afzQ^hGrqlIOEN&EP87G{##l5+$BIl`NB= zfN@SQ`vBkQXF}o{=alY=1=sG4-w22+ez=v{oxferIc?iH=J-J;vQXk&8C~Sc?JXh0 zartzw5L1cwuzMFDjq+vakDM;fNq3Np_t0#9Wgbo| zA$lC&qw+DZbJ$9qy2vAlicPq|H?L06jT2RZcjcT!*6xhSeS$iU0gov{0zrFoDIJdbm^;m zC*y;`u|D)oeBH@Au_xypgFi*GpKaLQ+?*eBUGody`_mwuM-!%US+YP@6g%qczzXHs zzY6So&M_fQd#|zMku>Ub8~T*E$!t8U;g!N()k4oUe_q2Nk-jT43fwGqSBedBFs+hK z!!?J`DCWmwz1cw#lliZW+~o6CN2ZG6_~jddvXnu$!S@kxm(zmk3fyYI!a^pe(`d1^p< zhKW2)hAHDKvA3KyCBq#Trzhi{1RAG|C}(_`In*m=r&!m(v{^(5EAulmzGo_Y>u#0d zy`vT%{OYSz;{vv{+7*uN>hez>=^Z~mn|xF>eMP{2`DLSz1>+swyJov~IlI|eWw$g^ z<%wFI%5h~ksVrtRExtXB8y0!1bj>99bIY_O@0mX1lgBz(o(4%D;Y+p5-uPPTaV*D2 z!qj|#{s)hBriQtyl1x4G7uW6u@grl!6dZZY-Vc-!NmpF;{fC^ZC`OD3>oGVj#Zs-y z;t#qQc=H84KHDra8LoZ4tqqstyov0THyd(MniyrzHh6uQe*R*Q}X0uWp zsLvRh{q3Z^u5uouvE|4Mg{<=`Ge!PSP|P0UvQoCFtZd2fAC{cFClab$%F7Ktzc{hm1-Iq9c;5&+um$P`` zqEqXnAFBW-AF_O)s7|#WtJu}!EsKBEq)k~Zl|}vHRBu#bHGE0WB)M~Pxt23!I6C}t z_D{Dwk^HwVsT$U*n_6upx-u;s$d4_QwXbCozA9VPYVhJPrqD%1;QRxAx7{_?bxIAJ zT@OrF;*}O6l%qRton8JiDQ%39ZCm5YOn7}W!^cx(wwzzP z%q8aJpr4nJmLrv-QbDNhnO)_R@h1;W?my^O-c*Fno;Em_HrC0Ot-4|sbdYU0e)?WD zDrLYoES~99(y_Cp!Yt`bw0^AC=n{u}R57&@^oFaFzU{OLI#>6)2bmhaw>|nIi@N2! zw_DlWDu#h66g-&j*arOM&DbND0l#7@QG~2^Z~2`)90oSXl>VSKam@>Pc(p=K!?o}R zr!IvhN!SV!E z=Vx5GF;MQzM`N8N5uv@eHs#FHPj?uP&uk!LQ{@8d3t21st{+8jL`yJ z&&$F1@`Qq#lhWA=!{>Z&qZ*&7^Q9V6?V%_-JoZ}SA?Kr6hjC{qeES=VTdhjyjyIpGV;2CVEW|675rP0zcb6-#%no8i}EUMjq{jkWg`BJ6t5 zSe#uo+&C(w!|mUZg@udU4@>11VLj3>iT;shS#H`L=lST#1G{6=!&aS3h<1^+nDML- zAvZJKDP2m;gMz!h@d?i`>7Q;~yuDXO`aA#B0MfiiaVXPiW%q-hI-HNgVr13XPIU;O zYut||UA9Ut{+!{4o3i|I3l9&$wYO$2%)G2!?isVsrJ}iQ?rC(6X+yd0h)|+g*s#76 z^rQn9WlG2HY7w^E@^ka~Yf|!O9?n%dt+TT!gwYDN(lt!TyuT)UmddHp5}Dz-;#^|) zEP5-YA@VAHv(__(ada5nes?cQ%iLanH+XIRsrMC=L$jLeTN{Jh zHZPfdzNEp5nfnKsPpjl-EzvpYaJ65+iE`78wJrAC;g}gHN;r_?GLw0(r(?bKx>@b( zM%jo^+O(L~GjmqE^aS?Ee1zBe-j>9&VNDOjcZ{dM|{Sq-1j2I^6nO|MseKPWOE_>Q;zZ)0aiQ{(n7aI~?>R?p{T~FcRS4>y;{WJwPOTJLEI_?V=Rwb1 zc~-hH;XoVO@HDq{eJ*kS2L_w*A_*AL)zF7>;XcYsvAZIpb5F s->;c#TOE0YEvdDX-sYmMU}b@E<8YKh6cB^NTN+uq=w&$E%o4@(A7gjLwEzGB literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00000-daa20949-0948-4f33-bcf4-5b6bcb0cd400.metadata.json b/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00000-daa20949-0948-4f33-bcf4-5b6bcb0cd400.metadata.json new file mode 100644 index 00000000000000..174f7a92c79562 --- /dev/null +++ b/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00000-daa20949-0948-4f33-bcf4-5b6bcb0cd400.metadata.json @@ -0,0 +1,548 @@ +{ + "format-version" : 2, + "table-uuid" : "a93bcb6d-568f-4fc2-8235-dc8e218c1beb", + "location" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_orc", + "last-sequence-number" : 0, + "last-updated-ms" : 1760884376565, + "last-column-id" : 92, + "current-schema-id" : 0, + "schemas" : [ { + "type" : "struct", + "schema-id" : 0, + "fields" : [ { + "id" : 1, + "name" : "id", + "required" : false, + "type" : "long" + }, { + "id" : 2, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 3, + "name" : "profile", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 9, + "name" : "address", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 12, + "name" : "street", + "required" : false, + "type" : "string" + }, { + "id" : 13, + "name" : "city", + "required" : false, + "type" : "string" + }, { + "id" : 14, + "name" : "coordinates", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 15, + "name" : "lat", + "required" : false, + "type" : "double" + }, { + "id" : 16, + "name" : "lng", + "required" : false, + "type" : "double" + } ] + } + } ] + } + }, { + "id" : 10, + "name" : "contact", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 17, + "name" : "email", + "required" : false, + "type" : "string" + }, { + "id" : 18, + "name" : "phone", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 19, + "name" : "country_code", + "required" : false, + "type" : "string" + }, { + "id" : 20, + "name" : "number", + "required" : false, + "type" : "string" + } ] + } + } ] + } + }, { + "id" : 11, + "name" : "hobbies", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 21, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 22, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 23, + "name" : "level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + } ] + } + }, { + "id" : 4, + "name" : "tags", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 24, + "element" : "string", + "element-required" : false + } + }, { + "id" : 5, + "name" : "friends", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 25, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 26, + "name" : "user_id", + "required" : false, + "type" : "long" + }, { + "id" : 27, + "name" : "nickname", + "required" : false, + "type" : "string" + }, { + "id" : 28, + "name" : "friendship_level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + }, { + "id" : 6, + "name" : "recent_activity", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 29, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 30, + "name" : "action", + "required" : false, + "type" : "string" + }, { + "id" : 31, + "name" : "details", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 32, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 33, + "name" : "key", + "required" : false, + "type" : "string" + }, { + "id" : 34, + "name" : "value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 7, + "name" : "attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 35, + "key" : "string", + "value-id" : 36, + "value" : "string", + "value-required" : false + } + }, { + "id" : 8, + "name" : "complex_attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 37, + "key" : "string", + "value-id" : 38, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 39, + "name" : "metadata", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 43, + "name" : "version", + "required" : false, + "type" : "string" + }, { + "id" : 44, + "name" : "created_time", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 45, + "name" : "last_updated", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 46, + "name" : "quality_score", + "required" : false, + "type" : "double" + } ] + } + }, { + "id" : 40, + "name" : "historical_scores", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 47, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 48, + "name" : "period", + "required" : false, + "type" : "string" + }, { + "id" : 49, + "name" : "score", + "required" : false, + "type" : "double" + }, { + "id" : 50, + "name" : "components", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 52, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 53, + "name" : "component_name", + "required" : false, + "type" : "string" + }, { + "id" : 54, + "name" : "weight", + "required" : false, + "type" : "float" + }, { + "id" : 55, + "name" : "sub_scores", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 56, + "key" : "string", + "value-id" : 57, + "value" : "double", + "value-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 51, + "name" : "trends", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 58, + "name" : "direction", + "required" : false, + "type" : "string" + }, { + "id" : 59, + "name" : "magnitude", + "required" : false, + "type" : "double" + }, { + "id" : 60, + "name" : "confidence_interval", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 61, + "name" : "lower", + "required" : false, + "type" : "double" + }, { + "id" : 62, + "name" : "upper", + "required" : false, + "type" : "double" + } ] + } + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 41, + "name" : "hierarchical_data", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 63, + "key" : "string", + "value-id" : 64, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 65, + "name" : "category", + "required" : false, + "type" : "string" + }, { + "id" : 66, + "name" : "sub_items", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 68, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 69, + "name" : "item_id", + "required" : false, + "type" : "long" + }, { + "id" : 70, + "name" : "properties", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 72, + "key" : "string", + "value-id" : 73, + "value" : "string", + "value-required" : false + } + }, { + "id" : 71, + "name" : "metrics", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 74, + "name" : "value", + "required" : false, + "type" : "double" + }, { + "id" : 75, + "name" : "unit", + "required" : false, + "type" : "string" + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 67, + "name" : "summary", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 76, + "name" : "total_count", + "required" : false, + "type" : "int" + }, { + "id" : 77, + "name" : "average_value", + "required" : false, + "type" : "double" + } ] + } + } ] + }, + "value-required" : false + } + }, { + "id" : 42, + "name" : "validation_rules", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 78, + "name" : "required", + "required" : false, + "type" : "boolean" + }, { + "id" : 79, + "name" : "constraints", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 81, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 82, + "name" : "rule_type", + "required" : false, + "type" : "string" + }, { + "id" : 83, + "name" : "parameters", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 85, + "key" : "string", + "value-id" : 86, + "value" : "string", + "value-required" : false + } + }, { + "id" : 84, + "name" : "error_message", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + }, { + "id" : 80, + "name" : "complex_constraint", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 87, + "name" : "logic_operator", + "required" : false, + "type" : "string" + }, { + "id" : 88, + "name" : "operands", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 89, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 90, + "name" : "field_path", + "required" : false, + "type" : "string" + }, { + "id" : 91, + "name" : "operator", + "required" : false, + "type" : "string" + }, { + "id" : 92, + "name" : "comparison_value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + } + } ] + } + } ] + }, + "value-required" : false + } + } ] + } ], + "default-spec-id" : 0, + "partition-specs" : [ { + "spec-id" : 0, + "fields" : [ ] + } ], + "last-partition-id" : 999, + "default-sort-order-id" : 0, + "sort-orders" : [ { + "order-id" : 0, + "fields" : [ ] + } ], + "properties" : { + "owner" : "hive", + "write.format.default" : "orc", + "write.parquet.compression-codec" : "zstd" + }, + "current-snapshot-id" : -1, + "refs" : { }, + "snapshots" : [ ], + "statistics" : [ ], + "partition-statistics" : [ ], + "snapshot-log" : [ ], + "metadata-log" : [ ] +} \ No newline at end of file diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00001-5c6ddc20-6aa8-4864-9d15-546dd5a6bae4.metadata.json b/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00001-5c6ddc20-6aa8-4864-9d15-546dd5a6bae4.metadata.json new file mode 100644 index 00000000000000..3fc692fea56e77 --- /dev/null +++ b/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/00001-5c6ddc20-6aa8-4864-9d15-546dd5a6bae4.metadata.json @@ -0,0 +1,579 @@ +{ + "format-version" : 2, + "table-uuid" : "a93bcb6d-568f-4fc2-8235-dc8e218c1beb", + "location" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_orc", + "last-sequence-number" : 1, + "last-updated-ms" : 1760884424603, + "last-column-id" : 92, + "current-schema-id" : 0, + "schemas" : [ { + "type" : "struct", + "schema-id" : 0, + "fields" : [ { + "id" : 1, + "name" : "id", + "required" : false, + "type" : "long" + }, { + "id" : 2, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 3, + "name" : "profile", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 9, + "name" : "address", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 12, + "name" : "street", + "required" : false, + "type" : "string" + }, { + "id" : 13, + "name" : "city", + "required" : false, + "type" : "string" + }, { + "id" : 14, + "name" : "coordinates", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 15, + "name" : "lat", + "required" : false, + "type" : "double" + }, { + "id" : 16, + "name" : "lng", + "required" : false, + "type" : "double" + } ] + } + } ] + } + }, { + "id" : 10, + "name" : "contact", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 17, + "name" : "email", + "required" : false, + "type" : "string" + }, { + "id" : 18, + "name" : "phone", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 19, + "name" : "country_code", + "required" : false, + "type" : "string" + }, { + "id" : 20, + "name" : "number", + "required" : false, + "type" : "string" + } ] + } + } ] + } + }, { + "id" : 11, + "name" : "hobbies", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 21, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 22, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 23, + "name" : "level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + } ] + } + }, { + "id" : 4, + "name" : "tags", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 24, + "element" : "string", + "element-required" : false + } + }, { + "id" : 5, + "name" : "friends", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 25, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 26, + "name" : "user_id", + "required" : false, + "type" : "long" + }, { + "id" : 27, + "name" : "nickname", + "required" : false, + "type" : "string" + }, { + "id" : 28, + "name" : "friendship_level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + }, { + "id" : 6, + "name" : "recent_activity", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 29, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 30, + "name" : "action", + "required" : false, + "type" : "string" + }, { + "id" : 31, + "name" : "details", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 32, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 33, + "name" : "key", + "required" : false, + "type" : "string" + }, { + "id" : 34, + "name" : "value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 7, + "name" : "attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 35, + "key" : "string", + "value-id" : 36, + "value" : "string", + "value-required" : false + } + }, { + "id" : 8, + "name" : "complex_attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 37, + "key" : "string", + "value-id" : 38, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 39, + "name" : "metadata", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 43, + "name" : "version", + "required" : false, + "type" : "string" + }, { + "id" : 44, + "name" : "created_time", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 45, + "name" : "last_updated", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 46, + "name" : "quality_score", + "required" : false, + "type" : "double" + } ] + } + }, { + "id" : 40, + "name" : "historical_scores", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 47, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 48, + "name" : "period", + "required" : false, + "type" : "string" + }, { + "id" : 49, + "name" : "score", + "required" : false, + "type" : "double" + }, { + "id" : 50, + "name" : "components", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 52, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 53, + "name" : "component_name", + "required" : false, + "type" : "string" + }, { + "id" : 54, + "name" : "weight", + "required" : false, + "type" : "float" + }, { + "id" : 55, + "name" : "sub_scores", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 56, + "key" : "string", + "value-id" : 57, + "value" : "double", + "value-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 51, + "name" : "trends", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 58, + "name" : "direction", + "required" : false, + "type" : "string" + }, { + "id" : 59, + "name" : "magnitude", + "required" : false, + "type" : "double" + }, { + "id" : 60, + "name" : "confidence_interval", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 61, + "name" : "lower", + "required" : false, + "type" : "double" + }, { + "id" : 62, + "name" : "upper", + "required" : false, + "type" : "double" + } ] + } + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 41, + "name" : "hierarchical_data", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 63, + "key" : "string", + "value-id" : 64, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 65, + "name" : "category", + "required" : false, + "type" : "string" + }, { + "id" : 66, + "name" : "sub_items", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 68, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 69, + "name" : "item_id", + "required" : false, + "type" : "long" + }, { + "id" : 70, + "name" : "properties", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 72, + "key" : "string", + "value-id" : 73, + "value" : "string", + "value-required" : false + } + }, { + "id" : 71, + "name" : "metrics", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 74, + "name" : "value", + "required" : false, + "type" : "double" + }, { + "id" : 75, + "name" : "unit", + "required" : false, + "type" : "string" + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 67, + "name" : "summary", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 76, + "name" : "total_count", + "required" : false, + "type" : "int" + }, { + "id" : 77, + "name" : "average_value", + "required" : false, + "type" : "double" + } ] + } + } ] + }, + "value-required" : false + } + }, { + "id" : 42, + "name" : "validation_rules", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 78, + "name" : "required", + "required" : false, + "type" : "boolean" + }, { + "id" : 79, + "name" : "constraints", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 81, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 82, + "name" : "rule_type", + "required" : false, + "type" : "string" + }, { + "id" : 83, + "name" : "parameters", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 85, + "key" : "string", + "value-id" : 86, + "value" : "string", + "value-required" : false + } + }, { + "id" : 84, + "name" : "error_message", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + }, { + "id" : 80, + "name" : "complex_constraint", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 87, + "name" : "logic_operator", + "required" : false, + "type" : "string" + }, { + "id" : 88, + "name" : "operands", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 89, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 90, + "name" : "field_path", + "required" : false, + "type" : "string" + }, { + "id" : 91, + "name" : "operator", + "required" : false, + "type" : "string" + }, { + "id" : 92, + "name" : "comparison_value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + } + } ] + } + } ] + }, + "value-required" : false + } + } ] + } ], + "default-spec-id" : 0, + "partition-specs" : [ { + "spec-id" : 0, + "fields" : [ ] + } ], + "last-partition-id" : 999, + "default-sort-order-id" : 0, + "sort-orders" : [ { + "order-id" : 0, + "fields" : [ ] + } ], + "properties" : { + "owner" : "hive", + "write.format.default" : "orc", + "write.parquet.compression-codec" : "zstd" + }, + "current-snapshot-id" : 514179801967160228, + "refs" : { + "main" : { + "snapshot-id" : 514179801967160228, + "type" : "branch" + } + }, + "snapshots" : [ { + "sequence-number" : 1, + "snapshot-id" : 514179801967160228, + "timestamp-ms" : 1760884424603, + "summary" : { + "operation" : "append", + "spark.app.id" : "application_1738810850199_0681", + "added-data-files" : "1", + "added-records" : "1", + "added-files-size" : "7181", + "changed-partition-count" : "1", + "total-records" : "1", + "total-files-size" : "7181", + "total-data-files" : "1", + "total-delete-files" : "0", + "total-position-deletes" : "0", + "total-equality-deletes" : "0" + }, + "manifest-list" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_orc/metadata/snap-514179801967160228-1-d9aed717-61ef-422b-b044-a16ca31f9e86.avro", + "schema-id" : 0 + } ], + "statistics" : [ ], + "partition-statistics" : [ ], + "snapshot-log" : [ { + "timestamp-ms" : 1760884424603, + "snapshot-id" : 514179801967160228 + } ], + "metadata-log" : [ { + "timestamp-ms" : 1760884376565, + "metadata-file" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_orc/metadata/00000-daa20949-0948-4f33-bcf4-5b6bcb0cd400.metadata.json" + } ] +} \ No newline at end of file diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/d9aed717-61ef-422b-b044-a16ca31f9e86-m0.avro b/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/d9aed717-61ef-422b-b044-a16ca31f9e86-m0.avro new file mode 100644 index 00000000000000..d8b578a8f86bfc --- /dev/null +++ b/be/test/exec/test_data/nested_user_profiles_iceberg_orc/metadata/d9aed717-61ef-422b-b044-a16ca31f9e86-m0.avro @@ -0,0 +1 @@ +Obj schema]{"type":"struct","schema-id":0,"fields":[{"id":1,"name":"id","required":false,"type":"long"},{"id":2,"name":"name","required":false,"type":"string"},{"id":3,"name":"profile","required":false,"type":{"type":"struct","fields":[{"id":9,"name":"address","required":false,"type":{"type":"struct","fields":[{"id":12,"name":"street","required":false,"type":"string"},{"id":13,"name":"city","required":false,"type":"string"},{"id":14,"name":"coordinates","required":false,"type":{"type":"struct","fields":[{"id":15,"name":"lat","required":false,"type":"double"},{"id":16,"name":"lng","required":false,"type":"double"}]}}]}},{"id":10,"name":"contact","required":false,"type":{"type":"struct","fields":[{"id":17,"name":"email","required":false,"type":"string"},{"id":18,"name":"phone","required":false,"type":{"type":"struct","fields":[{"id":19,"name":"country_code","required":false,"type":"string"},{"id":20,"name":"number","required":false,"type":"string"}]}}]}},{"id":11,"name":"hobbies","required":false,"type":{"type":"list","element-id":21,"element":{"type":"struct","fields":[{"id":22,"name":"name","required":false,"type":"string"},{"id":23,"name":"level","required":false,"type":"int"}]},"element-required":false}}]}},{"id":4,"name":"tags","required":false,"type":{"type":"list","element-id":24,"element":"string","element-required":false}},{"id":5,"name":"friends","required":false,"type":{"type":"list","element-id":25,"element":{"type":"struct","fields":[{"id":26,"name":"user_id","required":false,"type":"long"},{"id":27,"name":"nickname","required":false,"type":"string"},{"id":28,"name":"friendship_level","required":false,"type":"int"}]},"element-required":false}},{"id":6,"name":"recent_activity","required":false,"type":{"type":"list","element-id":29,"element":{"type":"struct","fields":[{"id":30,"name":"action","required":false,"type":"string"},{"id":31,"name":"details","required":false,"type":{"type":"list","element-id":32,"element":{"type":"struct","fields":[{"id":33,"name":"key","required":false,"type":"string"},{"id":34,"name":"value","required":false,"type":"string"}]},"element-required":false}}]},"element-required":false}},{"id":7,"name":"attributes","required":false,"type":{"type":"map","key-id":35,"key":"string","value-id":36,"value":"string","value-required":false}},{"id":8,"name":"complex_attributes","required":false,"type":{"type":"map","key-id":37,"key":"string","value-id":38,"value":{"type":"struct","fields":[{"id":39,"name":"metadata","required":false,"type":{"type":"struct","fields":[{"id":43,"name":"version","required":false,"type":"string"},{"id":44,"name":"created_time","required":false,"type":"timestamptz"},{"id":45,"name":"last_updated","required":false,"type":"timestamptz"},{"id":46,"name":"quality_score","required":false,"type":"double"}]}},{"id":40,"name":"historical_scores","required":false,"type":{"type":"list","element-id":47,"element":{"type":"struct","fields":[{"id":48,"name":"period","required":false,"type":"string"},{"id":49,"name":"score","required":false,"type":"double"},{"id":50,"name":"components","required":false,"type":{"type":"list","element-id":52,"element":{"type":"struct","fields":[{"id":53,"name":"component_name","required":false,"type":"string"},{"id":54,"name":"weight","required":false,"type":"float"},{"id":55,"name":"sub_scores","required":false,"type":{"type":"map","key-id":56,"key":"string","value-id":57,"value":"double","value-required":false}}]},"element-required":false}},{"id":51,"name":"trends","required":false,"type":{"type":"struct","fields":[{"id":58,"name":"direction","required":false,"type":"string"},{"id":59,"name":"magnitude","required":false,"type":"double"},{"id":60,"name":"confidence_interval","required":false,"type":{"type":"struct","fields":[{"id":61,"name":"lower","required":false,"type":"double"},{"id":62,"name":"upper","required":false,"type":"double"}]}}]}}]},"element-required":false}},{"id":41,"name":"hierarchical_data","required":false,"type":{"type":"map","key-id":63,"key":"string","value-id":64,"value":{"type":"struct","fields":[{"id":65,"name":"category","required":false,"type":"string"},{"id":66,"name":"sub_items","required":false,"type":{"type":"list","element-id":68,"element":{"type":"struct","fields":[{"id":69,"name":"item_id","required":false,"type":"long"},{"id":70,"name":"properties","required":false,"type":{"type":"map","key-id":72,"key":"string","value-id":73,"value":"string","value-required":false}},{"id":71,"name":"metrics","required":false,"type":{"type":"struct","fields":[{"id":74,"name":"value","required":false,"type":"double"},{"id":75,"name":"unit","required":false,"type":"string"}]}}]},"element-required":false}},{"id":67,"name":"summary","required":false,"type":{"type":"struct","fields":[{"id":76,"name":"total_count","required":false,"type":"int"},{"id":77,"name":"average_value","required":false,"type":"double"}]}}]},"value-required":false}},{"id":42,"name":"validation_rules","required":false,"type":{"type":"struct","fields":[{"id":78,"name":"required","required":false,"type":"boolean"},{"id":79,"name":"constraints","required":false,"type":{"type":"list","element-id":81,"element":{"type":"struct","fields":[{"id":82,"name":"rule_type","required":false,"type":"string"},{"id":83,"name":"parameters","required":false,"type":{"type":"map","key-id":85,"key":"string","value-id":86,"value":"string","value-required":false}},{"id":84,"name":"error_message","required":false,"type":"string"}]},"element-required":false}},{"id":80,"name":"complex_constraint","required":false,"type":{"type":"struct","fields":[{"id":87,"name":"logic_operator","required":false,"type":"string"},{"id":88,"name":"operands","required":false,"type":{"type":"list","element-id":89,"element":{"type":"struct","fields":[{"id":90,"name":"field_path","required":false,"type":"string"},{"id":91,"name":"operator","required":false,"type":"string"},{"id":92,"name":"comparison_value","required":false,"type":"string"}]},"element-required":false}}]}}]}}]},"value-required":false}}]}avro.schema5{"type":"record","name":"manifest_entry","fields":[{"name":"status","type":"int","field-id":0},{"name":"snapshot_id","type":["null","long"],"default":null,"field-id":1},{"name":"sequence_number","type":["null","long"],"default":null,"field-id":3},{"name":"file_sequence_number","type":["null","long"],"default":null,"field-id":4},{"name":"data_file","type":{"type":"record","name":"r2","fields":[{"name":"content","type":"int","doc":"Contents of the file: 0=data, 1=position deletes, 2=equality deletes","field-id":134},{"name":"file_path","type":"string","doc":"Location URI with FS scheme","field-id":100},{"name":"file_format","type":"string","doc":"File format name: avro, orc, or parquet","field-id":101},{"name":"partition","type":{"type":"record","name":"r102","fields":[]},"doc":"Partition data tuple, schema based on the partition spec","field-id":102},{"name":"record_count","type":"long","doc":"Number of records in the file","field-id":103},{"name":"file_size_in_bytes","type":"long","doc":"Total file size in bytes","field-id":104},{"name":"column_sizes","type":["null",{"type":"array","items":{"type":"record","name":"k117_v118","fields":[{"name":"key","type":"int","field-id":117},{"name":"value","type":"long","field-id":118}]},"logicalType":"map"}],"doc":"Map of column id to total size on disk","default":null,"field-id":108},{"name":"value_counts","type":["null",{"type":"array","items":{"type":"record","name":"k119_v120","fields":[{"name":"key","type":"int","field-id":119},{"name":"value","type":"long","field-id":120}]},"logicalType":"map"}],"doc":"Map of column id to total count, including null and NaN","default":null,"field-id":109},{"name":"null_value_counts","type":["null",{"type":"array","items":{"type":"record","name":"k121_v122","fields":[{"name":"key","type":"int","field-id":121},{"name":"value","type":"long","field-id":122}]},"logicalType":"map"}],"doc":"Map of column id to null value count","default":null,"field-id":110},{"name":"nan_value_counts","type":["null",{"type":"array","items":{"type":"record","name":"k138_v139","fields":[{"name":"key","type":"int","field-id":138},{"name":"value","type":"long","field-id":139}]},"logicalType":"map"}],"doc":"Map of column id to number of NaN values in the column","default":null,"field-id":137},{"name":"lower_bounds","type":["null",{"type":"array","items":{"type":"record","name":"k126_v127","fields":[{"name":"key","type":"int","field-id":126},{"name":"value","type":"bytes","field-id":127}]},"logicalType":"map"}],"doc":"Map of column id to lower bound","default":null,"field-id":125},{"name":"upper_bounds","type":["null",{"type":"array","items":{"type":"record","name":"k129_v130","fields":[{"name":"key","type":"int","field-id":129},{"name":"value","type":"bytes","field-id":130}]},"logicalType":"map"}],"doc":"Map of column id to upper bound","default":null,"field-id":128},{"name":"key_metadata","type":["null","bytes"],"doc":"Encryption key metadata blob","default":null,"field-id":131},{"name":"split_offsets","type":["null",{"type":"array","items":"long","element-id":133}],"doc":"Splittable offsets","default":null,"field-id":132},{"name":"equality_ids","type":["null",{"type":"array","items":"int","element-id":136}],"doc":"Equality comparison field IDs","default":null,"field-id":135},{"name":"sort_order_id","type":["null","int"],"doc":"Sort order ID","default":null,"field-id":140}]},"field-id":2}]}avro.codecdeflateformat-version2"partition-spec-id0iceberg.schema+{"type":"struct","schema-id":0,"fields":[{"id":0,"name":"status","required":true,"type":"int"},{"id":1,"name":"snapshot_id","required":false,"type":"long"},{"id":3,"name":"sequence_number","required":false,"type":"long"},{"id":4,"name":"file_sequence_number","required":false,"type":"long"},{"id":2,"name":"data_file","required":true,"type":{"type":"struct","fields":[{"id":134,"name":"content","required":true,"type":"int","doc":"Contents of the file: 0=data, 1=position deletes, 2=equality deletes"},{"id":100,"name":"file_path","required":true,"type":"string","doc":"Location URI with FS scheme"},{"id":101,"name":"file_format","required":true,"type":"string","doc":"File format name: avro, orc, or parquet"},{"id":102,"name":"partition","required":true,"type":{"type":"struct","fields":[]},"doc":"Partition data tuple, schema based on the partition spec"},{"id":103,"name":"record_count","required":true,"type":"long","doc":"Number of records in the file"},{"id":104,"name":"file_size_in_bytes","required":true,"type":"long","doc":"Total file size in bytes"},{"id":108,"name":"column_sizes","required":false,"type":{"type":"map","key-id":117,"key":"int","value-id":118,"value":"long","value-required":true},"doc":"Map of column id to total size on disk"},{"id":109,"name":"value_counts","required":false,"type":{"type":"map","key-id":119,"key":"int","value-id":120,"value":"long","value-required":true},"doc":"Map of column id to total count, including null and NaN"},{"id":110,"name":"null_value_counts","required":false,"type":{"type":"map","key-id":121,"key":"int","value-id":122,"value":"long","value-required":true},"doc":"Map of column id to null value count"},{"id":137,"name":"nan_value_counts","required":false,"type":{"type":"map","key-id":138,"key":"int","value-id":139,"value":"long","value-required":true},"doc":"Map of column id to number of NaN values in the column"},{"id":125,"name":"lower_bounds","required":false,"type":{"type":"map","key-id":126,"key":"int","value-id":127,"value":"binary","value-required":true},"doc":"Map of column id to lower bound"},{"id":128,"name":"upper_bounds","required":false,"type":{"type":"map","key-id":129,"key":"int","value-id":130,"value":"binary","value-required":true},"doc":"Map of column id to upper bound"},{"id":131,"name":"key_metadata","required":false,"type":"binary","doc":"Encryption key metadata blob"},{"id":132,"name":"split_offsets","required":false,"type":{"type":"list","element-id":133,"element":"long","element-required":true},"doc":"Splittable offsets"},{"id":135,"name":"equality_ids","required":false,"type":{"type":"list","element-id":136,"element":"int","element-required":true},"doc":"Equality comparison field IDs"},{"id":140,"name":"sort_order_id","required":false,"type":"int","doc":"Sort order ID"}]}}]}partition-spec[]contentdatav7lrPKq=lXY~, ð,5;3*baia6_kێͮ"!!!co{B=l}8s8̇m7 `bg4{dxN7̕N j`9QcmzA[]s{r.6[A7n3}Vo7\3S65jV}׈5Vq+ިeX=i٥;y~o/HI"-я sTIGAAJ* ,1'8&}:\.箨"Xd[,OD\ܐw7 pC#J?&H"/(M%^!^[H{G}ʾ'>~@\dNp8łӬp?gXrs<*ks gEqHA *@9@\aul봻9ѵ.a0rP6QT*ò-;+amiݜ2iW親,=QCFDe$aJ}50HzKI|f`cUvmg9foseJB>ifcT%eoO5P(XD>eP?3wTT z&wu;Ad4BPgox8{JiswG&>vdw|jeTnhZ8eBeRy?A+o}uIv2ixqojUBT_d|IuU7JQLhZ8Z7Pd(FFg5QR#1I`gw$JBHkbbMhRHBDMa&sI>#&QbHGp_GfN zx}NLAwurMNqg$?oeaxlULM%Y!o2vww4q9wc;wRz8z?uZyz#cVOJXOCz^eQm(z)gqp zs4MU%nm>dBpBRX`sOg!sJ>G%@tGf;*;rnqGWUyzVKYirZ5UmrGq_&LIg9fHJhqQwR zu}DYc+KfculjVRoI;lE=y+}L}cPb^7_!Npxp=O;pDN@wLKEj4U*v-SDMp@E|5|?d4 zeg@(@;x?g4P;xk-g-XabZKIl&sKQXHzJnWn-KD95q%RhqU{#@YOrtyWU{Mcru&_?? ztGXLxRq8307X*d$S|~XtM2i%<3dmXjZ~g3%xMP}noQ;_Xbd z=QcZHP31XC0Xx<$1Df3QJOh0}c?L3ZJcyR!F)x5^RYTZm zMeD21h7yLyvJj6Gtzau?Upli=2MV$fI(;W4;XK)o6gyow4N}8_MU^s(DZMC4QV14| zzgJy^i4u!6$*L0VV$T0UvU*YY77E`&HP=HJt{u)MOHekkED%AX@jr;ew}vOy)=#eI z6qq&}RzoZ*rFDL>N?_XwN}KYFB0Izn~~^3O-ko z@@J69;@#Z|Z~|?H69^A50PHZHK#&zVSyFT11~N!f39Ag@4g~8oXYK9_24No1CvZ~r z04MF{5C);F4B!|9-&7l4+AC!6$&J$K9R#?j8`sRC@wtY|_C!#KA|>)UG(#e%T?sTX zNl`&k>YS0ERP%K>3m&{Cip}#gG(69bjqG{z#{H+&vANGiug8;H+Ot;>ECM`kN*A38(+V>_3MQTTQ9$~Wc{!+_w(v|PftEj zIsDr{?{A*HSUx}T=l+E=*N!$0Km5@7cb-^X+J5cy?c)ABYq!39{cUC9?5+>y3g_yl z^55S1IJf7;x#P=YpMP`iO5T3;$?@6iKYn%ba!$X!yuJR%Pk#m9FXXpJ+r#`1*Q>BB literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/data/00000-9-a7e0135f-d581-40e4-8d56-a929aded99e4-0-00001.parquet b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/data/00000-9-a7e0135f-d581-40e4-8d56-a929aded99e4-0-00001.parquet new file mode 100644 index 0000000000000000000000000000000000000000..014ad37712213d79b31298d28d3ffcaf8abbd32c GIT binary patch literal 21586 zcmd5^4|G)3nSV2xOoo68$bFsI)TUEO5h2aL34x{v@@J_cMI{z(OPpk0$mk@KP9_Mp zdNg%e=@ioR`mNo6WAAieQ zIp4BEmixhlIGfHM{P$;0gnajbUsy_MIh4aMiZ*KYV^Amg$^zD0Id*sWBO-n*wdF1ijRRFrUn-yKDL8pS_>;TtzgvwWrL`gygO-Nh;(W##NN3jx z#h?0zpZ^TuL%G9{Ce<=85S^GcH{GXR7szbZhf7!2~ zkE)k{PF)UJIiO0SD^|Z$B)(A*xY(e3kVz7Ja+F_zH+J&jdblEA9sgd2oJDA+sh^SXYhqqJh<^)lR=NKpD7^ zUBUkKr30t@1N$ifz~J=2{WX{WqQgG|$+n{AyxA(AU55wcm{ios{OEx*Nz#6ch)(ewb2q zQNq(fL2@dHj^qyZP#DwnzJ15e_5R5VL(=pTVrd(wgruE+ec@3*iI&9UA0#~U>|RL# zsUUh`>pgEE7Zd?pC+7f8gcc#06ytaJ77P@%5dsmnSfUzQ&)ZusXv_&I#jVQ=V6K&7s6A?A?1@c}#8G%iP|N(B`!R<$QM zd%u)QUTxOI-MV$GAB{wHtKeC7i|(lLZXuc|UDQ_wCHD%d zCt^$=Dx{3dvOubdR~z+_z9B+&57eO&$fT1s3}lKDM$@>0tQAV8^%+xUxN{I5MCD;n z$g%<`Wz)PYs|Q?`P4luW5+pU%3!3=^vl6I@d%haCRqGia#?W7kTVir*halNBE?4r& z8^+>uw+2wTl;+}^cm<|r<96YX8dT=}O*|Ab*hJmg4bBtOoW8e8OkXu|*)r&=^#lbQ=`Y4D7ZgoH7%W9S#?2L&a-btk zJQ_i5sR^YfUh=ZRCMM?**hDss%dny)zSi0?wj8sARa0xPWGhAMu@K9O=Jqh_70r*kXYcAMzkSIKS^%`H(yb|%U;gd~fYVtgvb?hw5v$FZA5^Vw?EJTRVhi{70R z6xpWp6xqh}*=EUj`voj7Zr(IeHSe6HZhm``VsT=!YCe0RY95@TnvXKYVTY}HH-3O^ zmEv~9*`N@&xrTj5b|1WmZItaJA5@y`t7QY??%f|!gxfAw&GjEmOCOymW~Ya&)RP{@!}kyX#}heIwJ9f~TjkHGnseo56NS(Whs!wSw?u1M8zEV(M)FlFCA=JL|BC7K==^FkPiP!xo!>W@I4M?@YCl zky{t#^H`j z+&d=prAdK$jV0>Vdgz=csjK>O-Q5`=3A1R@uI(UQBk@Q!GgM$<4#CN~ zkK&O<(_I15GBaGpVW6+fI%}M4X9L+OQb?_K*~N<4af4I|hCtEiqJV9C`2vnhR$WX+ z#+E3ei<-$*=oubz@?G#(tBWc&kmxbIuR3U|qWv*IPYw$qhTIYHf3;Ak7PaX?wPP(g*!I+woTv@wu5*Lb5 z$ggKpLxry4LGW_YxPGH?od(BwUl>khF^sx~dUAQE^K&G8QXfJzm(TR1vTnC){pF>s zA6v9a_;Aq4XL4y6`z9A9NvU+XcN6z&vK5|=u=vA6BVCGZbWxwn_IyRvB_i==mwgQE zqqjPl)qRD|EayKo+^u1UlLKS=V9)@{UEi4}Mp2}kfixwdUKhi-bOy04BDA21#`ULG z4`d3%X{U1y5nhPY(wj*;13gYxW&qEjV2UKN)=fc`+1#y8zVkNmZFmp{>--YY!R}5z zmG9}}mgnB5*t~X31@7Qjz`+f4Aigu?LXP!_B^>x;BqVPeM<&V?oPO5>cZW*5;2tpJ zd4WhMFKh^LLnCVgd%;a{;pE29m_RqX5O}gugK~?)RfVWW*ir7@1erW?T!(BG`b36d zXy~#{(+myw_owpfK(ih5fL>H~VdJLGv^3E5A;qP?kc77}7mH|vc*uD~R`_LFx+bJNABgS2Yb%T_Eb}8J| zSee5#$X6-I%e%+6-k#B{_bsFIJSU&e<-7VZbwX2!dqjy-8A_`Gi|r5?&(C6Sqo<49 znZn2i<)ex+#(QZX&^-3o7+QZvaIEglIN5X;3h6#@d)xr&@^hu^HToyg2v6lRL+}N6 zI_UPf*X?jkZOz$aeGChLHB+q^J^ZHG1UqccwU^h&I`nFXZrRo}wFaVlQQl%n1z}=Y z_79e@DfY3Cv$BG&$1ll4(zy`_;@!(iZ@i~@DL ztaD_2BdQuM?nXO{dpkUfEuJrsYA(chu9>obvxM39(MEQqRlgnUO+m7G@x&#suzPVQ zG?j}ux<#7$drfKoL((2-B27oIOj_+~x};cBvofQ4j0;|BuL2PS%jF^6BEkM%Q}E_b zLGUlQ;NxWr#x5vD4GBI@g5|=KZjoSruPJyp3EtLB8b67h6Q6xWUFlYnTwI@h8*c3w zZTV`nK0p{{p=-1|O;|r5SjU=KuT{UVQo+)Wkg#}3>nUV8#wGTRpzEOZGx`S%qGif> zhGgt-Vf9x17OWu))dOURikNe!5Ze-k!Q~>HZjr(Ly{6PxNb2zxGWZ!Tb!ybAS*apS zRN1_)mbI)L#Swe0y&(j$jy8yqYkYCJ?q^DQ`%^4#Kh(-P5Xi_g;hM3fxTQH1jMy}K zN05jjv{)GDD~C|b_-2aQb|n;gzLhmt^`{^TnFk8B^Wxs41?QZ#@4#JzpRYG!sfll_ zoBX~-{O(DzW~=@r?Fw>!OJw2iVJS;{?v<7H%^-kR7H&eI{7WoJxHdNJCR{@7I*V~@{b^Ds4GE6J7KZajMO8Q{CNVm8veZ3~WGlcKtC&-l>KOhbF$lq=_W8uVO(4wUgC=ju+FuWC6 z`2&=djZLk1Ozw4=fHz%@w7jQ-GUSdpj^6Otdk+DN#(j3Ht|R-v>U) z=3s1JBm?&ShOOqd80KqxV+c@Wd}C`;#5eXUReXDTO?8fuI>$aq@qOfj(hK+e?OqV; zZF-fB4@D|ck9-ghCY^)y5Aa0GgmjVuW6NB6FxgitE&MJ*QVV<>(&y{}h=KLwHmz=v z_58gi)RAR?x^FI7Z}*2J)cf8w>y5Vd=&m?&=rr7Re+ba!7P4*;bbqf2{XT;JXAXVa z#qSezzC5a+Z@XAp9oyT&>S!sedwNaij}r99FDI+7|FDeNzVfVIv?lAz1Y!GT`%7Tk z;oVmEegj0$rn~p53H65r_4UiyGCYXZNvLH`Z-G!nB_~&dxj|`JVx+Fa+~+sjKx~`< zFt38x8BC)vMH=>8?twLaU%S3mw!^1l^*bkOvfWuZjIt z!oGe!1;xpaNJ}4jFR@qaC39aGMeMwNcL+#mKH(j{r{~kG{rX2`+SvDAnpy56D41cJ65s0|MWDD9 z-3@Za!+8@56o0R&!QM|JP@1r28B2jBh5umk8j71r!f^ z>t#H=y8ykLJ<5K2>k$C*Y>;kI0Qh@N$Y%)hz6BHjyFP{;gtDK`d>c$^TZx0Bh3H)$ z>%hSz`~U|3YYN`99D@J6fF&>)Op}pUj;(xx&HXD+KGpkE91=Z}jZDKMnR_Zq{sp+A z9uwv+f_dLUdL%ooU_MgD5HBC5v0vs(onbp|uYu$abzVy~fLos7Qhg@!{e=9;LaNPA zTq+IxJ|H(z6IBl}v!#k;%6gN4snFHgs6 zRnhr2Uk9`p^Bz;5mzQJGII@UVt4>@d_33*j5v6GK&S%kfCs&1@GfrHF{ECBk{1*_b zwu$U*vh*X1DZd_@A(53+!24o-6l7|%)iXqm%~XzcQwR^Akls=HAYkdM(68h%!qU{H zMYdi8Up=#!Vb8w)^vw6iBx)C#8>H7>3&}|C@{pr$LCsNmP59rs1`a*`cf1U2cz@9Q z_PV(i*V}#dCmTBAR@?$={5DY@B$N*=VHaEWBh&0~eat@m@hNmi{CvDuh}R5OHw^Xk z;Rsv&RKph&ble~@CxHVC!##z>jD&k>W+t7O(>No+_vVKZb3XgU1obq{NYI%Y+>dWF z67t|fVh*UC8Io5vH?TT!`wW+)S&?wcKq3IZtEY;rMUjaUe}UrsDind9tyqb}f*w}A zsqBz~J|?dwt&V%nFqjva)YPa+t3;;}&w;R2DPWvh45lAjiKJqP4fbG0iF9rl=Q5Q~ zn%XoSTxGh_V?{;x`P*;Dj|hY&gp&v!vBMn9VQdv2m-{20W92PtT&D6Pui!dWgj}JQa>S1c;C8gJB1^^Fb0O=;x z~!u6dA2OA|^p$xRX9);rctw*TW0p3)s2aPJSm9 z!GoCA1vIas)bga9L){zbLFBFgXjEt2{y87(WOVL9^k$M z>%okajYk=;t?+vJoV%qREY#-<9Tog!d-yPS}=EVxFFcaf(8$GeETSvoYtiz;P63JU*OIvKh!#(waYFmx=?+c3cxR2=Z=SDp(j z>e_TwCpLP5c`K6#>ZgOwcpWF0q5EtoRn$m4ukDl|muXAr%555`X{*j4xY6?lP_T%x zRn}=*O&P&n?at-0PHI5SakKPj(JR&OaB6Qyq?SKU+qE^+yGp@kP*Ej()vgNz{Yq0X zxw4{nthOVl1IKDRV(A>mYP%j@o|mG6fhoPpnI+nFf|3s#+G)Wul=4BNrdATK8}!o32ZDw>Gu6G&RmnC%b30 xv^qV>*)5If_F0WR>6Fvd*5tG{wx`qGsY~&i8(xb4|NLXUcsc$XH~ep+{|iI=WDWoT literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00000-ed5ae7dc-be1a-410b-ae74-7cf04ad10765.metadata.json b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00000-ed5ae7dc-be1a-410b-ae74-7cf04ad10765.metadata.json new file mode 100644 index 00000000000000..8bf743851ffc2e --- /dev/null +++ b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00000-ed5ae7dc-be1a-410b-ae74-7cf04ad10765.metadata.json @@ -0,0 +1,548 @@ +{ + "format-version" : 2, + "table-uuid" : "d3b72ae1-4880-4c3e-9111-ca1af3cc9c7c", + "location" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_parquet", + "last-sequence-number" : 0, + "last-updated-ms" : 1760884395135, + "last-column-id" : 92, + "current-schema-id" : 0, + "schemas" : [ { + "type" : "struct", + "schema-id" : 0, + "fields" : [ { + "id" : 1, + "name" : "id", + "required" : false, + "type" : "long" + }, { + "id" : 2, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 3, + "name" : "profile", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 9, + "name" : "address", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 12, + "name" : "street", + "required" : false, + "type" : "string" + }, { + "id" : 13, + "name" : "city", + "required" : false, + "type" : "string" + }, { + "id" : 14, + "name" : "coordinates", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 15, + "name" : "lat", + "required" : false, + "type" : "double" + }, { + "id" : 16, + "name" : "lng", + "required" : false, + "type" : "double" + } ] + } + } ] + } + }, { + "id" : 10, + "name" : "contact", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 17, + "name" : "email", + "required" : false, + "type" : "string" + }, { + "id" : 18, + "name" : "phone", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 19, + "name" : "country_code", + "required" : false, + "type" : "string" + }, { + "id" : 20, + "name" : "number", + "required" : false, + "type" : "string" + } ] + } + } ] + } + }, { + "id" : 11, + "name" : "hobbies", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 21, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 22, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 23, + "name" : "level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + } ] + } + }, { + "id" : 4, + "name" : "tags", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 24, + "element" : "string", + "element-required" : false + } + }, { + "id" : 5, + "name" : "friends", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 25, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 26, + "name" : "user_id", + "required" : false, + "type" : "long" + }, { + "id" : 27, + "name" : "nickname", + "required" : false, + "type" : "string" + }, { + "id" : 28, + "name" : "friendship_level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + }, { + "id" : 6, + "name" : "recent_activity", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 29, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 30, + "name" : "action", + "required" : false, + "type" : "string" + }, { + "id" : 31, + "name" : "details", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 32, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 33, + "name" : "key", + "required" : false, + "type" : "string" + }, { + "id" : 34, + "name" : "value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 7, + "name" : "attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 35, + "key" : "string", + "value-id" : 36, + "value" : "string", + "value-required" : false + } + }, { + "id" : 8, + "name" : "complex_attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 37, + "key" : "string", + "value-id" : 38, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 39, + "name" : "metadata", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 43, + "name" : "version", + "required" : false, + "type" : "string" + }, { + "id" : 44, + "name" : "created_time", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 45, + "name" : "last_updated", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 46, + "name" : "quality_score", + "required" : false, + "type" : "double" + } ] + } + }, { + "id" : 40, + "name" : "historical_scores", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 47, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 48, + "name" : "period", + "required" : false, + "type" : "string" + }, { + "id" : 49, + "name" : "score", + "required" : false, + "type" : "double" + }, { + "id" : 50, + "name" : "components", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 52, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 53, + "name" : "component_name", + "required" : false, + "type" : "string" + }, { + "id" : 54, + "name" : "weight", + "required" : false, + "type" : "float" + }, { + "id" : 55, + "name" : "sub_scores", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 56, + "key" : "string", + "value-id" : 57, + "value" : "double", + "value-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 51, + "name" : "trends", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 58, + "name" : "direction", + "required" : false, + "type" : "string" + }, { + "id" : 59, + "name" : "magnitude", + "required" : false, + "type" : "double" + }, { + "id" : 60, + "name" : "confidence_interval", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 61, + "name" : "lower", + "required" : false, + "type" : "double" + }, { + "id" : 62, + "name" : "upper", + "required" : false, + "type" : "double" + } ] + } + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 41, + "name" : "hierarchical_data", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 63, + "key" : "string", + "value-id" : 64, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 65, + "name" : "category", + "required" : false, + "type" : "string" + }, { + "id" : 66, + "name" : "sub_items", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 68, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 69, + "name" : "item_id", + "required" : false, + "type" : "long" + }, { + "id" : 70, + "name" : "properties", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 72, + "key" : "string", + "value-id" : 73, + "value" : "string", + "value-required" : false + } + }, { + "id" : 71, + "name" : "metrics", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 74, + "name" : "value", + "required" : false, + "type" : "double" + }, { + "id" : 75, + "name" : "unit", + "required" : false, + "type" : "string" + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 67, + "name" : "summary", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 76, + "name" : "total_count", + "required" : false, + "type" : "int" + }, { + "id" : 77, + "name" : "average_value", + "required" : false, + "type" : "double" + } ] + } + } ] + }, + "value-required" : false + } + }, { + "id" : 42, + "name" : "validation_rules", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 78, + "name" : "required", + "required" : false, + "type" : "boolean" + }, { + "id" : 79, + "name" : "constraints", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 81, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 82, + "name" : "rule_type", + "required" : false, + "type" : "string" + }, { + "id" : 83, + "name" : "parameters", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 85, + "key" : "string", + "value-id" : 86, + "value" : "string", + "value-required" : false + } + }, { + "id" : 84, + "name" : "error_message", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + }, { + "id" : 80, + "name" : "complex_constraint", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 87, + "name" : "logic_operator", + "required" : false, + "type" : "string" + }, { + "id" : 88, + "name" : "operands", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 89, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 90, + "name" : "field_path", + "required" : false, + "type" : "string" + }, { + "id" : 91, + "name" : "operator", + "required" : false, + "type" : "string" + }, { + "id" : 92, + "name" : "comparison_value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + } + } ] + } + } ] + }, + "value-required" : false + } + } ] + } ], + "default-spec-id" : 0, + "partition-specs" : [ { + "spec-id" : 0, + "fields" : [ ] + } ], + "last-partition-id" : 999, + "default-sort-order-id" : 0, + "sort-orders" : [ { + "order-id" : 0, + "fields" : [ ] + } ], + "properties" : { + "owner" : "hive", + "write.format.default" : "parquet", + "write.parquet.compression-codec" : "zstd" + }, + "current-snapshot-id" : -1, + "refs" : { }, + "snapshots" : [ ], + "statistics" : [ ], + "partition-statistics" : [ ], + "snapshot-log" : [ ], + "metadata-log" : [ ] +} \ No newline at end of file diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00001-a1156265-e89e-4c9f-a0fb-7f3075d4e8f9.metadata.json b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00001-a1156265-e89e-4c9f-a0fb-7f3075d4e8f9.metadata.json new file mode 100644 index 00000000000000..de90e000742a66 --- /dev/null +++ b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/00001-a1156265-e89e-4c9f-a0fb-7f3075d4e8f9.metadata.json @@ -0,0 +1,579 @@ +{ + "format-version" : 2, + "table-uuid" : "d3b72ae1-4880-4c3e-9111-ca1af3cc9c7c", + "location" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_parquet", + "last-sequence-number" : 1, + "last-updated-ms" : 1760884432817, + "last-column-id" : 92, + "current-schema-id" : 0, + "schemas" : [ { + "type" : "struct", + "schema-id" : 0, + "fields" : [ { + "id" : 1, + "name" : "id", + "required" : false, + "type" : "long" + }, { + "id" : 2, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 3, + "name" : "profile", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 9, + "name" : "address", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 12, + "name" : "street", + "required" : false, + "type" : "string" + }, { + "id" : 13, + "name" : "city", + "required" : false, + "type" : "string" + }, { + "id" : 14, + "name" : "coordinates", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 15, + "name" : "lat", + "required" : false, + "type" : "double" + }, { + "id" : 16, + "name" : "lng", + "required" : false, + "type" : "double" + } ] + } + } ] + } + }, { + "id" : 10, + "name" : "contact", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 17, + "name" : "email", + "required" : false, + "type" : "string" + }, { + "id" : 18, + "name" : "phone", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 19, + "name" : "country_code", + "required" : false, + "type" : "string" + }, { + "id" : 20, + "name" : "number", + "required" : false, + "type" : "string" + } ] + } + } ] + } + }, { + "id" : 11, + "name" : "hobbies", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 21, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 22, + "name" : "name", + "required" : false, + "type" : "string" + }, { + "id" : 23, + "name" : "level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + } ] + } + }, { + "id" : 4, + "name" : "tags", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 24, + "element" : "string", + "element-required" : false + } + }, { + "id" : 5, + "name" : "friends", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 25, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 26, + "name" : "user_id", + "required" : false, + "type" : "long" + }, { + "id" : 27, + "name" : "nickname", + "required" : false, + "type" : "string" + }, { + "id" : 28, + "name" : "friendship_level", + "required" : false, + "type" : "int" + } ] + }, + "element-required" : false + } + }, { + "id" : 6, + "name" : "recent_activity", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 29, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 30, + "name" : "action", + "required" : false, + "type" : "string" + }, { + "id" : 31, + "name" : "details", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 32, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 33, + "name" : "key", + "required" : false, + "type" : "string" + }, { + "id" : 34, + "name" : "value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 7, + "name" : "attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 35, + "key" : "string", + "value-id" : 36, + "value" : "string", + "value-required" : false + } + }, { + "id" : 8, + "name" : "complex_attributes", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 37, + "key" : "string", + "value-id" : 38, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 39, + "name" : "metadata", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 43, + "name" : "version", + "required" : false, + "type" : "string" + }, { + "id" : 44, + "name" : "created_time", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 45, + "name" : "last_updated", + "required" : false, + "type" : "timestamptz" + }, { + "id" : 46, + "name" : "quality_score", + "required" : false, + "type" : "double" + } ] + } + }, { + "id" : 40, + "name" : "historical_scores", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 47, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 48, + "name" : "period", + "required" : false, + "type" : "string" + }, { + "id" : 49, + "name" : "score", + "required" : false, + "type" : "double" + }, { + "id" : 50, + "name" : "components", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 52, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 53, + "name" : "component_name", + "required" : false, + "type" : "string" + }, { + "id" : 54, + "name" : "weight", + "required" : false, + "type" : "float" + }, { + "id" : 55, + "name" : "sub_scores", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 56, + "key" : "string", + "value-id" : 57, + "value" : "double", + "value-required" : false + } + } ] + }, + "element-required" : false + } + }, { + "id" : 51, + "name" : "trends", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 58, + "name" : "direction", + "required" : false, + "type" : "string" + }, { + "id" : 59, + "name" : "magnitude", + "required" : false, + "type" : "double" + }, { + "id" : 60, + "name" : "confidence_interval", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 61, + "name" : "lower", + "required" : false, + "type" : "double" + }, { + "id" : 62, + "name" : "upper", + "required" : false, + "type" : "double" + } ] + } + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 41, + "name" : "hierarchical_data", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 63, + "key" : "string", + "value-id" : 64, + "value" : { + "type" : "struct", + "fields" : [ { + "id" : 65, + "name" : "category", + "required" : false, + "type" : "string" + }, { + "id" : 66, + "name" : "sub_items", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 68, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 69, + "name" : "item_id", + "required" : false, + "type" : "long" + }, { + "id" : 70, + "name" : "properties", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 72, + "key" : "string", + "value-id" : 73, + "value" : "string", + "value-required" : false + } + }, { + "id" : 71, + "name" : "metrics", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 74, + "name" : "value", + "required" : false, + "type" : "double" + }, { + "id" : 75, + "name" : "unit", + "required" : false, + "type" : "string" + } ] + } + } ] + }, + "element-required" : false + } + }, { + "id" : 67, + "name" : "summary", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 76, + "name" : "total_count", + "required" : false, + "type" : "int" + }, { + "id" : 77, + "name" : "average_value", + "required" : false, + "type" : "double" + } ] + } + } ] + }, + "value-required" : false + } + }, { + "id" : 42, + "name" : "validation_rules", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 78, + "name" : "required", + "required" : false, + "type" : "boolean" + }, { + "id" : 79, + "name" : "constraints", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 81, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 82, + "name" : "rule_type", + "required" : false, + "type" : "string" + }, { + "id" : 83, + "name" : "parameters", + "required" : false, + "type" : { + "type" : "map", + "key-id" : 85, + "key" : "string", + "value-id" : 86, + "value" : "string", + "value-required" : false + } + }, { + "id" : 84, + "name" : "error_message", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + }, { + "id" : 80, + "name" : "complex_constraint", + "required" : false, + "type" : { + "type" : "struct", + "fields" : [ { + "id" : 87, + "name" : "logic_operator", + "required" : false, + "type" : "string" + }, { + "id" : 88, + "name" : "operands", + "required" : false, + "type" : { + "type" : "list", + "element-id" : 89, + "element" : { + "type" : "struct", + "fields" : [ { + "id" : 90, + "name" : "field_path", + "required" : false, + "type" : "string" + }, { + "id" : 91, + "name" : "operator", + "required" : false, + "type" : "string" + }, { + "id" : 92, + "name" : "comparison_value", + "required" : false, + "type" : "string" + } ] + }, + "element-required" : false + } + } ] + } + } ] + } + } ] + }, + "value-required" : false + } + } ] + } ], + "default-spec-id" : 0, + "partition-specs" : [ { + "spec-id" : 0, + "fields" : [ ] + } ], + "last-partition-id" : 999, + "default-sort-order-id" : 0, + "sort-orders" : [ { + "order-id" : 0, + "fields" : [ ] + } ], + "properties" : { + "owner" : "hive", + "write.format.default" : "parquet", + "write.parquet.compression-codec" : "zstd" + }, + "current-snapshot-id" : 6622777947381868002, + "refs" : { + "main" : { + "snapshot-id" : 6622777947381868002, + "type" : "branch" + } + }, + "snapshots" : [ { + "sequence-number" : 1, + "snapshot-id" : 6622777947381868002, + "timestamp-ms" : 1760884432817, + "summary" : { + "operation" : "append", + "spark.app.id" : "application_1738810850199_0681", + "added-data-files" : "1", + "added-records" : "1", + "added-files-size" : "21586", + "changed-partition-count" : "1", + "total-records" : "1", + "total-files-size" : "21586", + "total-data-files" : "1", + "total-delete-files" : "0", + "total-position-deletes" : "0", + "total-equality-deletes" : "0" + }, + "manifest-list" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_parquet/metadata/snap-6622777947381868002-1-bee22dff-a1d3-420d-bfba-c1b4193ab0df.avro", + "schema-id" : 0 + } ], + "statistics" : [ ], + "partition-statistics" : [ ], + "snapshot-log" : [ { + "timestamp-ms" : 1760884432817, + "snapshot-id" : 6622777947381868002 + } ], + "metadata-log" : [ { + "timestamp-ms" : 1760884395135, + "metadata-file" : "hdfs://hdfs-cluster/user/hive/warehouse/cqtest.db/nested_user_profiles_iceberg_parquet/metadata/00000-ed5ae7dc-be1a-410b-ae74-7cf04ad10765.metadata.json" + } ] +} \ No newline at end of file diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/bee22dff-a1d3-420d-bfba-c1b4193ab0df-m0.avro b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/bee22dff-a1d3-420d-bfba-c1b4193ab0df-m0.avro new file mode 100644 index 00000000000000..6071b684120876 --- /dev/null +++ b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/bee22dff-a1d3-420d-bfba-c1b4193ab0df-m0.avro @@ -0,0 +1,5 @@ +Obj schema]{"type":"struct","schema-id":0,"fields":[{"id":1,"name":"id","required":false,"type":"long"},{"id":2,"name":"name","required":false,"type":"string"},{"id":3,"name":"profile","required":false,"type":{"type":"struct","fields":[{"id":9,"name":"address","required":false,"type":{"type":"struct","fields":[{"id":12,"name":"street","required":false,"type":"string"},{"id":13,"name":"city","required":false,"type":"string"},{"id":14,"name":"coordinates","required":false,"type":{"type":"struct","fields":[{"id":15,"name":"lat","required":false,"type":"double"},{"id":16,"name":"lng","required":false,"type":"double"}]}}]}},{"id":10,"name":"contact","required":false,"type":{"type":"struct","fields":[{"id":17,"name":"email","required":false,"type":"string"},{"id":18,"name":"phone","required":false,"type":{"type":"struct","fields":[{"id":19,"name":"country_code","required":false,"type":"string"},{"id":20,"name":"number","required":false,"type":"string"}]}}]}},{"id":11,"name":"hobbies","required":false,"type":{"type":"list","element-id":21,"element":{"type":"struct","fields":[{"id":22,"name":"name","required":false,"type":"string"},{"id":23,"name":"level","required":false,"type":"int"}]},"element-required":false}}]}},{"id":4,"name":"tags","required":false,"type":{"type":"list","element-id":24,"element":"string","element-required":false}},{"id":5,"name":"friends","required":false,"type":{"type":"list","element-id":25,"element":{"type":"struct","fields":[{"id":26,"name":"user_id","required":false,"type":"long"},{"id":27,"name":"nickname","required":false,"type":"string"},{"id":28,"name":"friendship_level","required":false,"type":"int"}]},"element-required":false}},{"id":6,"name":"recent_activity","required":false,"type":{"type":"list","element-id":29,"element":{"type":"struct","fields":[{"id":30,"name":"action","required":false,"type":"string"},{"id":31,"name":"details","required":false,"type":{"type":"list","element-id":32,"element":{"type":"struct","fields":[{"id":33,"name":"key","required":false,"type":"string"},{"id":34,"name":"value","required":false,"type":"string"}]},"element-required":false}}]},"element-required":false}},{"id":7,"name":"attributes","required":false,"type":{"type":"map","key-id":35,"key":"string","value-id":36,"value":"string","value-required":false}},{"id":8,"name":"complex_attributes","required":false,"type":{"type":"map","key-id":37,"key":"string","value-id":38,"value":{"type":"struct","fields":[{"id":39,"name":"metadata","required":false,"type":{"type":"struct","fields":[{"id":43,"name":"version","required":false,"type":"string"},{"id":44,"name":"created_time","required":false,"type":"timestamptz"},{"id":45,"name":"last_updated","required":false,"type":"timestamptz"},{"id":46,"name":"quality_score","required":false,"type":"double"}]}},{"id":40,"name":"historical_scores","required":false,"type":{"type":"list","element-id":47,"element":{"type":"struct","fields":[{"id":48,"name":"period","required":false,"type":"string"},{"id":49,"name":"score","required":false,"type":"double"},{"id":50,"name":"components","required":false,"type":{"type":"list","element-id":52,"element":{"type":"struct","fields":[{"id":53,"name":"component_name","required":false,"type":"string"},{"id":54,"name":"weight","required":false,"type":"float"},{"id":55,"name":"sub_scores","required":false,"type":{"type":"map","key-id":56,"key":"string","value-id":57,"value":"double","value-required":false}}]},"element-required":false}},{"id":51,"name":"trends","required":false,"type":{"type":"struct","fields":[{"id":58,"name":"direction","required":false,"type":"string"},{"id":59,"name":"magnitude","required":false,"type":"double"},{"id":60,"name":"confidence_interval","required":false,"type":{"type":"struct","fields":[{"id":61,"name":"lower","required":false,"type":"double"},{"id":62,"name":"upper","required":false,"type":"double"}]}}]}}]},"element-required":false}},{"id":41,"name":"hierarchical_data","required":false,"type":{"type":"map","key-id":63,"key":"string","value-id":64,"value":{"type":"struct","fields":[{"id":65,"name":"category","required":false,"type":"string"},{"id":66,"name":"sub_items","required":false,"type":{"type":"list","element-id":68,"element":{"type":"struct","fields":[{"id":69,"name":"item_id","required":false,"type":"long"},{"id":70,"name":"properties","required":false,"type":{"type":"map","key-id":72,"key":"string","value-id":73,"value":"string","value-required":false}},{"id":71,"name":"metrics","required":false,"type":{"type":"struct","fields":[{"id":74,"name":"value","required":false,"type":"double"},{"id":75,"name":"unit","required":false,"type":"string"}]}}]},"element-required":false}},{"id":67,"name":"summary","required":false,"type":{"type":"struct","fields":[{"id":76,"name":"total_count","required":false,"type":"int"},{"id":77,"name":"average_value","required":false,"type":"double"}]}}]},"value-required":false}},{"id":42,"name":"validation_rules","required":false,"type":{"type":"struct","fields":[{"id":78,"name":"required","required":false,"type":"boolean"},{"id":79,"name":"constraints","required":false,"type":{"type":"list","element-id":81,"element":{"type":"struct","fields":[{"id":82,"name":"rule_type","required":false,"type":"string"},{"id":83,"name":"parameters","required":false,"type":{"type":"map","key-id":85,"key":"string","value-id":86,"value":"string","value-required":false}},{"id":84,"name":"error_message","required":false,"type":"string"}]},"element-required":false}},{"id":80,"name":"complex_constraint","required":false,"type":{"type":"struct","fields":[{"id":87,"name":"logic_operator","required":false,"type":"string"},{"id":88,"name":"operands","required":false,"type":{"type":"list","element-id":89,"element":{"type":"struct","fields":[{"id":90,"name":"field_path","required":false,"type":"string"},{"id":91,"name":"operator","required":false,"type":"string"},{"id":92,"name":"comparison_value","required":false,"type":"string"}]},"element-required":false}}]}}]}}]},"value-required":false}}]}avro.schema5{"type":"record","name":"manifest_entry","fields":[{"name":"status","type":"int","field-id":0},{"name":"snapshot_id","type":["null","long"],"default":null,"field-id":1},{"name":"sequence_number","type":["null","long"],"default":null,"field-id":3},{"name":"file_sequence_number","type":["null","long"],"default":null,"field-id":4},{"name":"data_file","type":{"type":"record","name":"r2","fields":[{"name":"content","type":"int","doc":"Contents of the file: 0=data, 1=position deletes, 2=equality deletes","field-id":134},{"name":"file_path","type":"string","doc":"Location URI with FS scheme","field-id":100},{"name":"file_format","type":"string","doc":"File format name: avro, orc, or parquet","field-id":101},{"name":"partition","type":{"type":"record","name":"r102","fields":[]},"doc":"Partition data tuple, schema based on the partition spec","field-id":102},{"name":"record_count","type":"long","doc":"Number of records in the file","field-id":103},{"name":"file_size_in_bytes","type":"long","doc":"Total file size in bytes","field-id":104},{"name":"column_sizes","type":["null",{"type":"array","items":{"type":"record","name":"k117_v118","fields":[{"name":"key","type":"int","field-id":117},{"name":"value","type":"long","field-id":118}]},"logicalType":"map"}],"doc":"Map of column id to total size on disk","default":null,"field-id":108},{"name":"value_counts","type":["null",{"type":"array","items":{"type":"record","name":"k119_v120","fields":[{"name":"key","type":"int","field-id":119},{"name":"value","type":"long","field-id":120}]},"logicalType":"map"}],"doc":"Map of column id to total count, including null and NaN","default":null,"field-id":109},{"name":"null_value_counts","type":["null",{"type":"array","items":{"type":"record","name":"k121_v122","fields":[{"name":"key","type":"int","field-id":121},{"name":"value","type":"long","field-id":122}]},"logicalType":"map"}],"doc":"Map of column id to null value count","default":null,"field-id":110},{"name":"nan_value_counts","type":["null",{"type":"array","items":{"type":"record","name":"k138_v139","fields":[{"name":"key","type":"int","field-id":138},{"name":"value","type":"long","field-id":139}]},"logicalType":"map"}],"doc":"Map of column id to number of NaN values in the column","default":null,"field-id":137},{"name":"lower_bounds","type":["null",{"type":"array","items":{"type":"record","name":"k126_v127","fields":[{"name":"key","type":"int","field-id":126},{"name":"value","type":"bytes","field-id":127}]},"logicalType":"map"}],"doc":"Map of column id to lower bound","default":null,"field-id":125},{"name":"upper_bounds","type":["null",{"type":"array","items":{"type":"record","name":"k129_v130","fields":[{"name":"key","type":"int","field-id":129},{"name":"value","type":"bytes","field-id":130}]},"logicalType":"map"}],"doc":"Map of column id to upper bound","default":null,"field-id":128},{"name":"key_metadata","type":["null","bytes"],"doc":"Encryption key metadata blob","default":null,"field-id":131},{"name":"split_offsets","type":["null",{"type":"array","items":"long","element-id":133}],"doc":"Splittable offsets","default":null,"field-id":132},{"name":"equality_ids","type":["null",{"type":"array","items":"int","element-id":136}],"doc":"Equality comparison field IDs","default":null,"field-id":135},{"name":"sort_order_id","type":["null","int"],"doc":"Sort order ID","default":null,"field-id":140}]},"field-id":2}]}avro.codecdeflateformat-version2"partition-spec-id0iceberg.schema+{"type":"struct","schema-id":0,"fields":[{"id":0,"name":"status","required":true,"type":"int"},{"id":1,"name":"snapshot_id","required":false,"type":"long"},{"id":3,"name":"sequence_number","required":false,"type":"long"},{"id":4,"name":"file_sequence_number","required":false,"type":"long"},{"id":2,"name":"data_file","required":true,"type":{"type":"struct","fields":[{"id":134,"name":"content","required":true,"type":"int","doc":"Contents of the file: 0=data, 1=position deletes, 2=equality deletes"},{"id":100,"name":"file_path","required":true,"type":"string","doc":"Location URI with FS scheme"},{"id":101,"name":"file_format","required":true,"type":"string","doc":"File format name: avro, orc, or parquet"},{"id":102,"name":"partition","required":true,"type":{"type":"struct","fields":[]},"doc":"Partition data tuple, schema based on the partition spec"},{"id":103,"name":"record_count","required":true,"type":"long","doc":"Number of records in the file"},{"id":104,"name":"file_size_in_bytes","required":true,"type":"long","doc":"Total file size in bytes"},{"id":108,"name":"column_sizes","required":false,"type":{"type":"map","key-id":117,"key":"int","value-id":118,"value":"long","value-required":true},"doc":"Map of column id to total size on disk"},{"id":109,"name":"value_counts","required":false,"type":{"type":"map","key-id":119,"key":"int","value-id":120,"value":"long","value-required":true},"doc":"Map of column id to total count, including null and NaN"},{"id":110,"name":"null_value_counts","required":false,"type":{"type":"map","key-id":121,"key":"int","value-id":122,"value":"long","value-required":true},"doc":"Map of column id to null value count"},{"id":137,"name":"nan_value_counts","required":false,"type":{"type":"map","key-id":138,"key":"int","value-id":139,"value":"long","value-required":true},"doc":"Map of column id to number of NaN values in the column"},{"id":125,"name":"lower_bounds","required":false,"type":{"type":"map","key-id":126,"key":"int","value-id":127,"value":"binary","value-required":true},"doc":"Map of column id to lower bound"},{"id":128,"name":"upper_bounds","required":false,"type":{"type":"map","key-id":129,"key":"int","value-id":130,"value":"binary","value-required":true},"doc":"Map of column id to upper bound"},{"id":131,"name":"key_metadata","required":false,"type":"binary","doc":"Encryption key metadata blob"},{"id":132,"name":"split_offsets","required":false,"type":{"type":"list","element-id":133,"element":"long","element-required":true},"doc":"Splittable offsets"},{"id":135,"name":"equality_ids","required":false,"type":{"type":"list","element-id":136,"element":"int","element-required":true},"doc":"Equality comparison field IDs"},{"id":140,"name":"sort_order_id","required":false,"type":"int","doc":"Sort order ID"}]}}]}partition-spec[]contentdatab}zdɤb +ŒkaǟLr!AB^riHgD*?bCKbrrM% AC)!H)M:({wx~{߾FxIeT :X4VfW,+ -XZ`qv@-Լ37Zbh|4nTU%Gb\T.iRh,RH,$%-,HTTqExU$љN ggZ@D:ri1\䄜K#] R;GXaܘl'qʚ픑62FX +C4_mQm-`:> `Mnam a]lak|lGn& %i p(h&7EӔ)CYZ.eSԢ6uHm CDB#m# vv߁7 0 Q8LB`4d P 0ЄEXG@!l"l!;{GlShH`,q 泌a ;㓵rUHԴ+’ + 3J*MmMXYȗHٓ[DŽxʝ,??ν +:Ԛ&k(N)] H$"J!)d>_N 7x3EuRsOq~_΁b}zdɤb \ No newline at end of file diff --git a/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/snap-6622777947381868002-1-bee22dff-a1d3-420d-bfba-c1b4193ab0df.avro b/be/test/exec/test_data/nested_user_profiles_iceberg_parquet/metadata/snap-6622777947381868002-1-bee22dff-a1d3-420d-bfba-c1b4193ab0df.avro new file mode 100644 index 0000000000000000000000000000000000000000..a3eee4e6a11a2076d81b9683abda6330bdbefe19 GIT binary patch literal 4262 zcmbVPON`q@7%p3NL87e6t4L6l!Cg^=vdGRpl8vZj5GeefBwh! ze}1NV?53%mc-?a!@%1{f@y719LR$@@loXHXu4gDY#lbfFZDYr*5ua9SrbXa!%_NrL zE2Sgto)ZmB>u@3l@~LM!Yw+7}b->y0>X@3YgPuRQikc>^qm?oW**WTrX(*+6Rqf<@ zu`S}P$>^3VVIOiSwh#*t`Q{0NOb1n4l=w-wF|Z~9H?T)d7Ei@*5WND-JaE&YJnAz1 ziB^|U;1dH;7d1VTcE_8SV0G7_Bz!;4f(-U#^rw&98lrWAlGK)vy3fEA=a9C~AQtI~ zTq{TvK6y1Dj!r60U{{GJ;!dTc9G^nbDb%bJCq;^y*hknf2)lV$)F?~Zyu@Xjke`wG z_Pb4J5|kWHXrU7FO}nTTB&sl!itpftUw3J$AnA+6Cs@`9j{UJE71q#UVp5+pfp`V=}n9FT#iPsJw(0L#gbTEQ5OyBzk+pm=)|?YYgK zSW|h9QoxS&%YY^~J%}LZ$wM@yM-(TpECpmIo?7gA zxCMX1u-l+@{CT%Hdh=>A>FJavG9AFCJcvZ`kQabj)ev@Ck$lzJ zP{Qz77UFTDb!-LQqO&MRvn>mdx+4rh}kD4SSb5J98yKZwJ(#wXS~M>{zMrp*Rv zh?h#S!!K42Y#W1Ou&WTP*F`!9-bXC}>|NnD)?I_>Q*d<)Q?fG=LtuJvVIiL{6bg%T zh1sH3Tqvq)ei!iAn9i&d&xb`ek>8!D?@T266WT6QC$J;d;x+%}{k)T5I|n-3bCCfE zFQcZmd%TQ$jX=ESJ=hDT2kWB*P=vSm7;B&PPsF12vhanU!IKiJOamY&@|=PXmbCga zNaXF^-wJR7t-uL{2^ax(98)03<~dnXb72QENK*+bk6{l4>jG!(Zwy9Z9?>XpQgxP- z_Ol41P?krq41#a2i!W^!GWg_1=`{}mT-1#(&9U+M5|#alpb$k$_UG6P$v*8%povL} z3X)pS8Tm;yUyrrm!E2(}JU?T@^ZZD5Kro2%Cg~ZQAW2U@d{xK**BNFsL|$sx^0{1c zJ+{C^!m+O1!XHQ;ge$l7B^IgZBJW(`2qOC-*i%}aSc75Cpr0KP87=mq4ULFkP2HJ0 zl3}!c42fWcWfgy+roBfdsp-IOW{Wud9391k2r{vs(tcxXvTWm#vK9iD)eAgF6!ZXt z0k2O(!!chX*@jz~YukeCPtQztu1;>-`b~S!D}PK)d^mCU8y9ceRCjE<^Tu!1$$RSG zzSO=leQ@cH*OqRjTi$Q{zWLU@Mdg9z+l!Zfcyr~%3zy#cyS;JX^7czNukYwAUHNSL zUi$NavtQ*-bsl>9Ywh%^y?6e?cmHf{|9Ia|e@-1+`C@rW^&a2c_~7*Q_db62#pm{1 xJwJW+lNIyfUk+cG3|0@nO-_Au=H&N}UVQ!d%fH_E>-xXvt|`|(f2=#q{{Ux=sE7an literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/nested_user_profiles_orc/_SUCCESS b/be/test/exec/test_data/nested_user_profiles_orc/_SUCCESS new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/be/test/exec/test_data/nested_user_profiles_orc/part-00000-62614f23-05d1-4043-a533-b155ef52b720-c000.snappy.orc b/be/test/exec/test_data/nested_user_profiles_orc/part-00000-62614f23-05d1-4043-a533-b155ef52b720-c000.snappy.orc new file mode 100644 index 0000000000000000000000000000000000000000..8a0f8bc17b489dc46110b5908447293c2d4b9334 GIT binary patch literal 8396 zcmdT}eQX@Zb)Pxz-pwv=$-UK)8m=hmc)F8Fk#{k*!0&WqYjexX3>Lx%TqzKX`sDu8|1W*m7 zX@H_gkp5;*D;{ZDHjoxg4%pe*nKy6V*SvY}-OSwa03oW^kQkjMo#^gR>j)u+pHaih zJi3Q_X2}f3qpFN?%(OBZZdTbuVI?0LDOkqC9@l3{4YHcFEGj|!W?l@1y-W3XDSsDJ$FRw6catE*)u2jK_EpPp zTF$mmF3eK}MZPBv_dS=6!iha$lTsPFw{BnBP%31k} z@GrHyd*JG@*UeX6`Q95PJx4%Ux3s$}L zx4$KR!OaM3nHK)NSNu+&Ne0|bi`&`G$vY_TK|$g+a6cZY8yMChU5z>CVAhDh685P6 z5v!OkRfL2VhK-&E90IvIrkhbz($)|je#JYBJt3#ID|-9}CSS8$hi8}+-5{BGkT z$sYzKdt6GI;C&iZ`FLTqP%@;`_6wG97h8_0aAERfy0mN=b#qo$xQUu`u~qz4`#$el z{CU^n&qHfRvG*=_Zv#^Bt98Xp*$@r)ZbI7)(2aWycfs2p{cR6_`{9Y$IAhL1ej}9( zxSi_R#>gg&2Y@l4N`gM1qX+9$3OBKNpH0W0hRN*?|5%}vOIHkU^(_wnBXDgwQWQtZ zS4>yns`G~1;SIB7J3G02F&%qhICkObPD9=33p?4?B~PuDE1^Xzv}y_T|B2t7Q4ks6`o37OH=Dd!;EFh-!xA+@zwDlFNn7Q&u<1y@nLD6X=2el53%TdA}M z2cv)c`)GP*eqs8| zVn=7}Hh|pdunL3$H}FH(4eg?Yd@y#yf@xwPy6x;nx4NSne^rrHhxZcV#!(LfD=|xd z-)Wzz!ZZ;g0-|bg5#LAIG>Rp{FfjuNrZcFuUBVa9rM+@(ph~4^Ue?VAqKz=MDN~d8#kJOrJn}utFN>i zgKHiVu=FNOVg!Np^;s)@)xDLfcM>QZtDFD50bH~MK?++xo1{KQl4lgwPUe%^ ziZfaSg&Y3D8M+DOZt)M!_4_OkmulwUbuB??!(Q zp1oQ>3-L}lN!qYF%)5YdpLUBxuxpgZK+k?a9{?Tg+BoarQQ$g=uTG41;fZMp7U%o1 z=OJx{BtT6!o*rQC1ymn!9_H#t38E`ZBn#Ihi z7$b1~Ec8Uc8x%3{{7EpqeJArXGxHT!!#8%r-b{8vx_c8)c?bJ-`hR7Qmb# z)UNMvMuS`f6F~>ANf?E`6Bs%7VUz>5#ep>)*jCOk+UmgWc3}5vH=sTp>I(vQ$eC$# zV8h%G#f5=kAB3~dnTg2EPxUBQzDc5(XxCoGqlY@U0_J4B17imtJe|;07y5BI1XAPZ z9Rk}4ynA9r=vIerL(r{G4oBYu#9{eUApNmX}Apq9UYPT@pTk7Fz7Jx1Ozn1 z8{yW5ur3+9L6Qzx!wxIQ40cZqs#9!I z8){2TDX%Ir+)ah0fEpA5LMos=rVNgYF#LmMqo61orGkOEkbD0dO=`~^>EE}t5=2@8 z3L>~vy%r6*@c>c+F)T-w*Rnmp|Dm-Vcp)s^r496pn6{>nBhSa0LvFNyt+l@)fwsx} zgDG!KwgrX})T*Ko@L^S%6o)+AYE0W@;+-BRSNQg&meh{v7*T%S2dURoP@>=MLNfiZ zY9f1sBHK=Bv0v&=okVV*`#Un+jvTzE^r86VUea*3m(ZUlMPX-CB_kI5#9oYjc-CvHl;fKKjs&;MSpGc|;;M@_?{UY-ZD5Eb<{54TN-DhIAjWk}vbs}t_ zQA1siQa_@T0ABF@lDxus!iR;B;~9h!N9!sjs(a3j&ysCzC%LVFLG}Mt4VV1t&SOKBPVtY z^k*G|N+;)J>!Q@-gxBqKW^jm^npZot0PUXv>3dg4*q_7WqZ^RdrM51J0rE(&-L zQa>sOMaGfxYr}u=Iiz<^k~i!pzS#We4;gZ}6F;rC(ih)zgO!qjtA zibee*C8BZ+LLUnQc-o!kMD-u&`^DF zjixW1&7zx6tiwMT|tvy#s*$lB0*{n*85G_DTJG{lM2dxq?MYNvl3y>XZmVh(`GkYYunO_r`bf7Sp#@wn__- z63g3}tNFGmqQ{2(D|T@qFy7JJG|6^_chaK2b+_qlyBI0tO<&fkAcau=L$=tSut6h< zy&<#is&(CzuccSll<(2M;9gd5c*6T+f0Hgn_sjk}6W~%h(DlTW$#PhpO;^%pV8t$1 z3MD&}UR@|>3J{|hvP$VvX2qsW^8Rrh2yMXHh5SNkZ52Wtq?3{Mj)R@1?;6r``c}%H zDWQ65Wfv+obnIVEmn#cv#Vp+sGPP&du)K0z$;zMmL_1RkBI?dEDot18WiyulnZhDJW$u49~S$=QaRE0qxD@QfY z^g^@wY{%10gQQy?4A%AZ_L&V$U1TBpjV|wVmc6`EG1cVO(mCJ&fAqWD02raY01u7`HZz-=TU{YmOgc!cu)LQ-_b!+ zUM)Oll}vf9SRDQ0iGP-#k%o@R&yXlx>Q4?&m<(JwWieBsU+S|fRt}a~Ud!durR#EM zw1qsW^ytS&o-%zjGW_Ln6-NThRbZ~B4|;(v=y!>v*wW~jJOqRB*_t$dVyY4}r8STz z-=n)pc=!vElapqBr2qjgSWn{srlAZ}QWs9WLF(j0v^6n3bJk=f>)AE%mregmFpoo! zw%cCD-$>8Dc${RKn*17P-Fgy>fz=Tc_FD*kE6EVN0%G>pk)vU-X~A7|&ohiIk$!o^Fb zx@23c*##tbE80QYM|AqtV7g?N3;CvdIDtzeVDn&`$_u6Cc)FO*tXT0AKg~UU$B=vD zees?I9dLrGfh|GR!2fShmHa?Z_4*&_?*C=KT1*9g5mOC3I;Mg+e(hqa`R!w>A0~q0 z@1Tzksid(|Lof4-zjb~iLaNZikgB<&bk+W!@xKvJ4g6XJRIP46_3vjGYW=@S!4%>4 z|4}#<*$Af^c4#DS{-s}v7hmrn@#Y~v5tZU#HIn*D%jP($y(W%od%7=q1G!L&F3R2U gBk>;gkB08y>+1+{h`;?ON<#VMf7aE_%pGs}A3OLL(f|Me literal 0 HcmV?d00001 diff --git a/be/test/exec/test_data/nested_user_profiles_parquet/_SUCCESS b/be/test/exec/test_data/nested_user_profiles_parquet/_SUCCESS new file mode 100644 index 00000000000000..e69de29bb2d1d6 diff --git a/be/test/exec/test_data/nested_user_profiles_parquet/part-00000-64a7a390-1a03-4efc-ab51-557e9369a1f9-c000.snappy.parquet b/be/test/exec/test_data/nested_user_profiles_parquet/part-00000-64a7a390-1a03-4efc-ab51-557e9369a1f9-c000.snappy.parquet new file mode 100644 index 0000000000000000000000000000000000000000..73ae0061c21e1e421fa7ebeda26643116e2b19c4 GIT binary patch literal 21157 zcmd5^4Rn-Mdj4iInM^{EAGx118X=A{iwH4+fDyCE-?EgAltQrh8z-4B$;f18oJ>&k z*n`Si7L`&KIhb;+Qr3fP>sdWpWdV0N*7Z;ptYtl}MOW<>m3nAbDOk(l*go(5?%!m> zWD=0=V3IrcyZ3#c_vhaG-uK?m#j}^xF^i34W7vt0w|;a{74zb2fCVfoQ01}Q4{Cy} ziamL%_YI%XpmGvgSqoF0$?AD22aP7NTK2@ho!lX)_=$?$T!Ka=UTYZs)J>UMeN!}^ ztX`T$^9Y;B-up@KFU;l_FA&X%^djfp>RVEo6=*w_h1u!N&-{$wxpx2dv4^}yDHf?fk zT`jd;$eP$&CpJASun-8XqK5C0?J$AG->6z?Y@>#=E-W$&NCVmpIWFifB#x zKKAV9*UZj#v*=7D(3`-O;s?!VvRUlI^`r!|MrVNXgLRN`_S~jIR;z=Rv)4yN)M5QTf6}MEt@_EV@Ot&mz z6Hk+@F=u7GjqogHOW689-}j=a(FsPk1iEoYzJ5wg-SmccwR`1i`I zdp0Q3<7sG&D^IDv-cydoZJp6fv@Ppoc>8+x>d*JTY-%gyn#6)h>b>0h^D}WL8B46< za?NDF+V=dD!wvP0Qw*9sBfub?ak}C?T`lcSG~1Jr1M{t|zkY9o(Mu|itWknr^mk=l zO)dP82K&yxd+FWbjhGEkUpdKoW>@WeXzzw~?-!isUL6l5IvvkwIdr{F(o~# zL{R!*+Y6nV(1t^+u7yYMd2BF*Tvz{_pB{f6hM@_HkCVOM6@Ug{CxcXSZeJE92Q!6)1lv*%9q`lUQ92u|0dNa!+9O&9h3&eY2L82PRm}vp@l# zKPCBTPB_%N{c+RJ*)n5oDgmZi~}wEO9sdmiQPBCzLb7p);DK4XYF>E@}=f4#-D zhR_WrGfx>`cc#*3=`z{=m3^-sf;E(L>vW_tt6FG+Ct2S5*S~$`tg_IQ z@b9EKe9(R#u$|iQ<~vwolwX8h(^Ql20pCumyu5a9Dv`>N^_Rx)rx88}{|@fi_17?n z>UM?M&D!HBZ9w}aPK?i!(M$*RBY1oM;k{jFg+~JMPxURNYBJ@)-JiZ@PT0znM7V@H zkT~f!@-$itfA!+geE~yfVl5N{3#Q+U=7RPMpZxbW(~OEX_jI)7WBj@0goR>)jZYl; zo!NdwL+&i(LAxoeo~_;fm(QCESk7z!vNSyAr!rkp8k^Hu1KahxA3tsS>t)i=@V^Ec zSm

qgl-3wB9sgb^ZM#hcIy}*BEQ`m`7G7&D?ogbn^YPC*OLt&1YYK{~v#3 z3J{jPFikas2TkZV^>k;eTb=5JL+s?5{KyCY)N3vSa!ux%f+@%dvlq<+pSv*NPwjsD z8FRGONjSCm>4suVWvtF?o+^5;FyN80tWu&?s*x7?3fiQDokbEg#Eh6OU!l zcs$GqFhfD}o6#sB!%EPQMf0(YCh=Gn&Bro`#A8`B9*@qC8$-ca<%%FthoCIPuhf{`p5k4yQI2xajVQ3EJ#qNOerEWyfW zG#B=`MX8C_H{GiQ%NP34BBm>Sv`~QqU$1nv>l9d%08A}U`mx6o3VJ*S8Na*Gz<6TC z(QV7biV_OSlF_e1FCNg5{$ey4(PycEyZ5Ov8kb;ofQ+<8XarS-)__p3;A4YKKrR8$ zi7XnAp+z}2RoMYH2lKlXsh6m7@Db=Phg!A<<;y~D#E?a zbS8jY-CI^o>cG6aH9 zbE(TLK*kPqLBv=z8%565HQGw-6totYA9kp0%OEA>#9FfPE(iN?s!Bw=vn@Sobai5` z+YY~{Cz^npV+^G-4iO*K38zYB;%(7{TREU61qgrI$;4AJVF^AwN)^=#k{xFqFW z(T-$1+Y{qDx)_7JJsxwCZB9!(iESE;Bd3JYMCx8A<7&6GCk>?ttvZ=#rmd6fmD{dZ zZvsSNe4&{@o5(q6r!OZp#IsIUG1}#$lp510B^_d71k9{EyA-KIKDXtJ6%0N2B^*c1 zjzY)WMSVR`p9Wmk-P6?-&8#A=(eyMdo65rB_;e^dGYY3h3e6p5gmWa=#i2SldP}A! zfdL7HSm+$cIQR6xYFrvj(@D(bICv=9)yj!lOLkRSjeAlG61R|tw&2BDDt`juHN%}u zCY5RF!fFF~v<}papb^V;;i3dm+ifjmmM8|J?i1iut#r1Kx1!^YT~C$gDVWMLJnbP4lii<6#jFN`b%X}R&&B_f?)Ym(kfq~GSG zHz9pd8JcGK1EB^P0LZ0ZEcu+>t@fRfO`gV_G(yf7a5Ym5InPYqJLfRl-gpgLXhlvG z;LT$T&birMj+T&ArYCfXB+aiix$Prv?_WboJbUu!ZxPK@8>j6Vb8Jll%! z%MH6YyG}b1`3&s(NzC+D2M9&BG+{kF7qB)@X6;tw9b}pXENuu0i${MsQ6I;+z-~gn zM#>D)4={+5$zu!gI5U|=tjIQ`WDE1~i$oqNoLp>MDHJZ#OS(h~&#yJPzCc{J)sUr6 zbFSkpe`vY#FcFsWP*jG3auoaQ`|SJCt8qHG$mCT}CbUc@uM?AxYFMKcIZ4@R%mxE7 zaRXXt&u7!%J?U?BvtU7<5`$bm%89w(OjbvT)z)iSjTJeJBr#1q{!jxCigSeEloNIm ztq4C)q#*;t4@ymXpA)?U*Rm;Agc9F0L;6DtWYC;LQijIdq|YrlR~j-$ z5e^d1KeJbRK#Z7*d@5EZon~Hj*Mu_CK@3QYg<3=MJ zYZReeouxJEO{R~32O_^bh0TEr4Zu`MMQmHq9AiT!d36a)`>8cqZX=doO`)-I1Q!T| zoGRGT+pm7)O<=7!a#3Sm-Z-xUF#6_}^V*o8c5yvSWw%<9H*hfTf?8e>l&cT5*DDiy zJmu_fjKIL6?6vzFh>UM0?>C9}hI(?lPexWTe`vf9lj~r3=j7CEhzAiA(jUt{3b62%QA5LNZg4rybsl@82jn8VMiEZqLPG90 zj`OTf`@wmd<2*2$VjsR(4Mv~2yKZIC1Eb;c^3Xw-fUTce)506(!@@tWCzs!GvGlI{ zia?aV+0U8U#Fm}|yc1Kwj*A=R!H4_{aN;OL)|kMaBVcFh*>o$ic8pZjc>v}n7C5fk zfots;D2|pBy0M{4q`3TA6W?CK_tG>{+%e#DhvklQSDcaV$WdsYqy_}=*~sCp@qj(e z;l{~OP#qYVfDg~dB>wp{nop18{5imV?;8XxQY{=PdBAaoNrz6Tg8aA&8aBR}KtJP} zolcX^L0f8e|2L;uBN3E0uLta>J$A1LK=?Z8o}vW-oVZcTX{9(+qmq`D{`JV7^+|g0~ol|RyvxUUzy^i~LP+DQ_xm!Wx%yh1d4@C-T zj|H)dS(c_Bz!N1C(oepNA@}Zew2OHi=>T{3Jdco6qE5{YuZN&LdDf{*q`mxF6Y3iT z^=q!Z?UzcZTh5#I`pY7^*+UMUhTHZ_0bQQM>JmZEuQj2+Ptf-^km1){c7dStWT%3@ z<}#^uoDmDHqolN+Q)@y$LC{Zg=tlwFos&C@(|VsAYu-%YW*_%tczCXpL3SGGLdCgPOtA2s2%ez>b*i zN|=y8BFMXMpf&q6AiGoZu5VJw^29))^x8D-ogN1_aU-`|JyPAs@00LffK7Kxc-aK|_#Xl6bB%1G71@1-Os^EV5)LqX z$m13BScQY5RN(F_5W{VTBHiDBXM8gOZX7FzW|5lobo9BZ4AQ!1r>FTnMwF<~Ahm>+zbHe}nck}!7^F~p09 zX`GzpO`KjkX19ZLqq_2>3cxL|L8&?u`DsGFX(mPH>&9O|5$T0sk_@!LeX`g=fm zbT%7n*=w)1y^(;ue&QIkm=p}AG95M1bQHJMYWT&q8j;csmQJmyubE;6ug+`HeNUnW zXY%*-IN6#^>fRc8^C$S>wGV{p#zJ^T7`GjI+OpwEVSd)%9iDO917W%{gGccgsztLz zD%pW=$(}?a+M2-A_GqHpnG}{J!!sUu@WDx{E2p43g9lzi97K0<*-o)92CcY~H>f`D zwLR5^l+hO`)N^(*>5kty^ww7b6_H{j#TmS6AC9GZ$R4I?3PMhBLkO!D*ZGbI2cSM+ z1ML{%C|lt#MqYjiQuP?Lk@%^(>Rt>(^IoOuIB34^8Tw%R52(ul8)#*V<8=i=$sWyQ zqU5;Z_GL4l3e?jAQ^J7by0GujEmDOhOqbs}oD3@Tw9-$15}3P9JlVYn^G|pNH5!~x z7M`u>POE~Y)X=Yzv=Np|VmNQc?nkxSRpd=u-G8uiVc%=H zn$r2Rb77_SxdW^KDE0MgQT4Qda@}jfilBCaf{v@TD{d7l0*dF55#ic^qBdwa{C?hG zyAORBp3_LtC+-Tc(q30IjY_D(oxrpnxPbju&Q0Nc#j{T&g&mBpIObl$9vUVkKmnIi zft8G+is>XmLWN3eq)10KuYGGObP2pW8|@-(7fHxGOFt($-f`hgSzX-3p7bm+GP2Ghrc9ByO7w}I-lwYvd;0C*FxVQ0j|MoeV|2s@I@BN}Y3R5=s$8Y96zC z-?tbPF=c`RQt&q&RF6ULWB7UDV7m_(I~Ubpfc2~&C(-8ajQ2^tD-o2=ig8=jxPXG? z8KB}YXfILkg(wn=?~vz0aj2l+*FZ<{Cz3R5wP(>fU9c-N-H3Qg~;9!qv|5y2&e=&oAm^H6xvVApM%Jr45$S(Ck~(!;Sn8m_Bti$$Hf>2*$hZ9^>98oe5?@8K=@ R|Ihzfhi|m3#rPjo{vR +#include +#include + +#include +#include +#include +#include + +#include "agent/be_exec_version_manager.h" +#include "common/config.h" +#include "gen_cpp/olap_file.pb.h" +#include "gen_cpp/segment_v2.pb.h" +#include "io/fs/file_reader.h" +#include "mock/mock_segment.h" +#include "olap/rowset/segment_v2/column_reader_cache.h" +#include "olap/rowset/segment_v2/segment.h" +#include "olap/rowset/segment_v2/variant/variant_column_reader.h" +#include "olap/tablet_schema.h" +#include "vec/json/path_in_data.h" + +namespace doris::segment_v2 { +class ColumnReaderTest : public ::testing::Test { +protected: + void SetUp() override {} + void TearDown() override {} +}; + +TEST_F(ColumnReaderTest, StructAccessPaths) { + auto create_struct_iterator = []() { + auto null_reader = std::make_shared(); + auto null_iterator = std::make_unique(null_reader); + + std::vector sub_column_iterators; + auto sub_reader1 = std::make_shared(); + auto sub_iterator1 = std::make_unique(sub_reader1); + sub_iterator1->set_column_name("sub_col_1"); + auto sub_reader2 = std::make_shared(); + auto sub_iterator2 = std::make_unique(sub_reader2); + sub_iterator2->set_column_name("sub_col_2"); + + sub_column_iterators.emplace_back(std::move(sub_iterator1)); + sub_column_iterators.emplace_back(std::move(sub_iterator2)); + auto iterator = std::make_unique(std::make_shared(), + std::move(null_iterator), + std::move(sub_column_iterators)); + return iterator; + }; + + auto iterator = create_struct_iterator(); + auto st = iterator->set_access_paths(TColumnAccessPaths {}, TColumnAccessPaths {}); + + ASSERT_TRUE(st.ok()) << "failed to set access paths: " << st.to_string(); + ASSERT_EQ(iterator->_reading_flag, ColumnIterator::ReadingFlag::NORMAL_READING); + + TColumnAccessPaths all_access_paths; + all_access_paths.emplace_back(); + + TColumnAccessPaths predicate_access_paths; + predicate_access_paths.emplace_back(); + + st = iterator->set_access_paths(all_access_paths, predicate_access_paths); + // empty paths leads to error + ASSERT_FALSE(st.ok()); + + // Only reading sub_col_1 + // sub_col_2 should be set to SKIP_READING + all_access_paths[0].data_access_path.path = {"self", "sub_col_1"}; + + predicate_access_paths[0].data_access_path.path = {"self", "sub_col_1"}; + + st = iterator->set_access_paths(all_access_paths, predicate_access_paths); + // invalid name leads to error + ASSERT_FALSE(st.ok()); + + iterator->set_column_name("self"); + // now column name is "self", should be ok + st = iterator->set_access_paths(all_access_paths, predicate_access_paths); + ASSERT_TRUE(st.ok()) << "failed to set access paths: " << st.to_string(); + ASSERT_EQ(iterator->_reading_flag, ColumnIterator::ReadingFlag::READING_FOR_PREDICATE); + + ASSERT_EQ(iterator->_sub_column_iterators[0]->_reading_flag, + ColumnIterator::ReadingFlag::READING_FOR_PREDICATE); + ASSERT_EQ(iterator->_sub_column_iterators[1]->_reading_flag, + ColumnIterator::ReadingFlag::SKIP_READING); + + // Reading all sub columns + all_access_paths[0].data_access_path.path = {"self"}; + iterator = create_struct_iterator(); + iterator->set_column_name("self"); + st = iterator->set_access_paths(all_access_paths, predicate_access_paths); + + ASSERT_TRUE(st.ok()) << "failed to set access paths: " << st.to_string(); + ASSERT_EQ(iterator->_reading_flag, ColumnIterator::ReadingFlag::READING_FOR_PREDICATE); + + ASSERT_EQ(iterator->_sub_column_iterators[0]->_reading_flag, + ColumnIterator::ReadingFlag::READING_FOR_PREDICATE); + ASSERT_EQ(iterator->_sub_column_iterators[1]->_reading_flag, + ColumnIterator::ReadingFlag::NEED_TO_READ); +} + +TEST_F(ColumnReaderTest, MultiAccessPaths) { + auto create_struct_iterator = []() { + auto null_reader = std::make_shared(); + auto null_iterator = std::make_unique(null_reader); + + std::vector sub_column_iterators; + auto sub_reader1 = std::make_shared(); + auto sub_iterator1 = std::make_unique(sub_reader1); + sub_iterator1->set_column_name("sub_col_1"); + auto sub_reader2 = std::make_shared(); + auto sub_iterator2 = std::make_unique(sub_reader2); + sub_iterator2->set_column_name("sub_col_2"); + + sub_column_iterators.emplace_back(std::move(sub_iterator1)); + sub_column_iterators.emplace_back(std::move(sub_iterator2)); + auto iterator = std::make_unique(std::make_shared(), + std::move(null_iterator), + std::move(sub_column_iterators)); + return iterator; + }; + + auto create_struct_iterator2 = [](ColumnIteratorUPtr&& nested_iterator) { + auto null_reader = std::make_shared(); + auto null_iterator = std::make_unique(null_reader); + + std::vector sub_column_iterators; + auto sub_reader1 = std::make_shared(); + auto sub_iterator1 = std::make_unique(sub_reader1); + sub_iterator1->set_column_name("sub_col_1"); + + sub_column_iterators.emplace_back(std::move(sub_iterator1)); + sub_column_iterators.emplace_back(std::move(nested_iterator)); + auto iterator = std::make_unique(std::make_shared(), + std::move(null_iterator), + std::move(sub_column_iterators)); + return iterator; + }; + + auto struct_iterator = create_struct_iterator(); + struct_iterator->set_column_name("struct"); + + auto map_iterator = std::make_unique( + std::make_shared(), + std::make_unique(std::make_shared()), // null iterator + std::make_unique( + std::make_unique(std::make_shared())), + std::make_unique(std::make_shared()), + std::move(struct_iterator)); + + auto array_iterator = std::make_unique( + std::make_shared(), + std::make_unique( + std::make_unique(std::make_shared())), + std::move(map_iterator), + std::make_unique(std::make_shared())); + + // here create: + // struct< + // sub_col_1, + // sub_col_2: array< + // map< + // key, + // value: struct< + // sub_col_1, + // sub_col_2 + // > + // > + // > + // > + array_iterator->set_column_name("sub_col_2"); + auto iterator = create_struct_iterator2(std::move(array_iterator)); + TColumnAccessPaths all_access_paths; + all_access_paths.emplace_back(); + + // all access paths: + // self.sub_col_2.*.KEYS + // predicates paths empty + all_access_paths[0].data_access_path.path = {"self", "sub_col_2", "*", "KEYS"}; + + TColumnAccessPaths predicate_access_paths; + + iterator->set_column_name("self"); + auto st = iterator->set_access_paths(all_access_paths, predicate_access_paths); + + ASSERT_TRUE(st.ok()) << "failed to set access paths: " << st.to_string(); + ASSERT_EQ(iterator->_reading_flag, ColumnIterator::ReadingFlag::NEED_TO_READ); + + ASSERT_EQ(iterator->_sub_column_iterators[0]->_reading_flag, + ColumnIterator::ReadingFlag::SKIP_READING); + ASSERT_EQ(iterator->_sub_column_iterators[1]->_reading_flag, + ColumnIterator::ReadingFlag::NEED_TO_READ); + + auto* array_iter = + static_cast(iterator->_sub_column_iterators[1].get()); + ASSERT_EQ(array_iter->_item_iterator->_reading_flag, ColumnIterator::ReadingFlag::NEED_TO_READ); + + auto* map_iter = static_cast(array_iter->_item_iterator.get()); + ASSERT_EQ(map_iter->_key_iterator->_reading_flag, ColumnIterator::ReadingFlag::NEED_TO_READ); + ASSERT_EQ(map_iter->_val_iterator->_reading_flag, ColumnIterator::ReadingFlag::SKIP_READING); +} +} // namespace doris::segment_v2 \ No newline at end of file diff --git a/be/test/vec/exec/format/parquet/parquet_thrift_test.cpp b/be/test/vec/exec/format/parquet/parquet_thrift_test.cpp index fbc1c7309548e0..6ae25f936aa3ab 100644 --- a/be/test/vec/exec/format/parquet/parquet_thrift_test.cpp +++ b/be/test/vec/exec/format/parquet/parquet_thrift_test.cpp @@ -140,20 +140,18 @@ TEST_F(ParquetThriftReaderTest, complex_nested_file) { ASSERT_EQ(schemaDescriptor.get_column_index("hobby"), 2); auto hobby = schemaDescriptor.get_column("hobby"); - // should be parsed as ARRAY>> - ASSERT_TRUE(hobby->children.size() == 1 && hobby->children[0].children.size() == 1 && - hobby->children[0].children[0].children.size() == 2); + // should be parsed as ARRAY> + ASSERT_TRUE(hobby->children.size() == 1 && hobby->children[0].children.size() == 2); ASSERT_TRUE(hobby->data_type->get_primitive_type() == TYPE_ARRAY && - hobby->children[0].data_type->get_primitive_type() == TYPE_MAP && - hobby->children[0].children[0].data_type->get_primitive_type() == TYPE_STRUCT); + hobby->children[0].data_type->get_primitive_type() == TYPE_MAP); // hobby(opt) --- bag(rep) --- array_element(opt) --- map(rep) // \------- key(req) // \------- value(opt) // R=0,D=1 R=1,D=2 R=1,D=3 R=2,D=4 // \------ R=2,D=4 // \------ R=2,D=5 - auto h_key = hobby->children[0].children[0].children[0]; - auto h_value = hobby->children[0].children[0].children[1]; + auto h_key = hobby->children[0].children[0]; + auto h_value = hobby->children[0].children[1]; ASSERT_TRUE(h_key.repetition_level == 2 && h_key.definition_level == 4); ASSERT_TRUE(h_value.repetition_level == 2 && h_value.definition_level == 5); diff --git a/be/test/vec/exec/format/table/hive/hive_reader_create_column_ids_test.cpp b/be/test/vec/exec/format/table/hive/hive_reader_create_column_ids_test.cpp new file mode 100644 index 00000000000000..eea631928578f4 --- /dev/null +++ b/be/test/vec/exec/format/table/hive/hive_reader_create_column_ids_test.cpp @@ -0,0 +1,1193 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "common/object_pool.h" +#include "exec/olap_common.h" +#include "io/fs/file_meta_cache.h" +#include "io/fs/file_reader_writer_fwd.h" +#include "io/fs/file_system.h" +#include "io/fs/local_file_system.h" +#include "runtime/descriptors.h" +#include "runtime/runtime_state.h" +#include "util/timezone_utils.h" +#include "vec/columns/column.h" +#include "vec/columns/column_array.h" +#include "vec/columns/column_nullable.h" +#include "vec/columns/column_struct.h" +#include "vec/core/block.h" +#include "vec/core/column_with_type_and_name.h" +#include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_array.h" +#include "vec/data_types/data_type_factory.hpp" +#include "vec/data_types/data_type_nullable.h" +#include "vec/data_types/data_type_number.h" +#include "vec/data_types/data_type_string.h" +#include "vec/data_types/data_type_struct.h" +#include "vec/exec/format/parquet/vparquet_reader.h" +#include "vec/exec/format/table/hive_reader.h" + +namespace doris::vectorized { + +// Define the column access path configuration structure +struct ColumnAccessPathConfig { + std::string column_name; + std::vector> all_column_paths; // For all_column_access_paths + std::vector> predicate_paths; // For predicate_column_access_paths +}; + +// ORC column IDs are assigned in a tree-increment order, root is 0 and children increment sequentially. +// 0: struct (table/root) +// 1: id (bigint) +// 2: name (string) +// 3: profile (struct) +// 4: address (struct) +// 5: street (string) +// 6: city (string) +// 7: coordinates (struct) +// 8: lat (double) +// 9: lng (double) +// 10: contact (struct) +// 11: email (string) +// 12: phone (struct) +// 13: country_code (string) +// 14: number (string) +// 15: hobbies (array) +// 16: element (struct) +// 17: name (string) +// 18: level (int) +// 19: tags (array) +// 20: element (string) +// 21: friends (array) +// 22: element (struct) +// 23: user_id (bigint) +// 24: nickname (string) +// 25: friendship_level (int) +// 26: recent_activity (array) +// 27: element (struct) +// 28: action (string) +// 29: details (array) +// 30: element (struct) +// 31: key (string) +// 32: value (string) +// 33: attributes (map) +// 34: key (string) +// 35: value (string) +// 36: complex_attributes (map) +// 37: key (string) +// 38: value (struct) +// 39: metadata (struct) +// 40: version (string) +// 41: created_time (timestamp) +// 42: last_updated (timestamp) +// 43: quality_score (double) +// 44: historical_scores (array) +// 45: element (struct) +// 46: period (string) +// 47: score (double) +// 48: components (array) +// 49: element (struct) +// 50: component_name (string) +// 51: weight (float) +// 52: sub_scores (map) +// 53: key (string) +// 54: value (double) +// 55: trends (struct) +// 56: direction (string) +// 57: magnitude (double) +// 58: confidence_interval (struct) +// 59: lower (double) +// 60: upper (double) +// 61: hierarchical_data (map) +// 62: key (string) +// 63: value (struct) +// 64: category (string) +// 65: sub_items (array) +// 66: element (struct) +// 67: item_id (bigint) +// 68: properties (map) +// 69: key (string) +// 70: value (string) +// 71: metrics (struct) +// 72: value (double) +// 73: unit (string) +// 74: summary (struct) +// 75: total_count (int) +// 76: average_value (double) +// 77: validation_rules (struct) +// 78: required (boolean) +// 79: constraints (array) +// 80: element (struct) +// 81: rule_type (string) +// 82: parameters (map) +// 83: key (string) +// 84: value (string) +// 85: error_message (string) +// 86: complex_constraint (struct) +// 87: logic_operator (string) +// 88: operands (array) +// 89: element (struct) +// 90: field_path (string) +// 91: operator (string) +// 92: comparison_value (string) + +class HiveReaderCreateColumnIdsTest : public ::testing::Test { +protected: + void SetUp() override { + cache = std::make_unique(1024); + + // Setup timezone + doris::TimezoneUtils::find_cctz_time_zone(doris::TimezoneUtils::default_time_zone, + timezone_obj); + } + + void TearDown() override { cache.reset(); } + + // Helper function to create tuple descriptor + const TupleDescriptor* create_tuple_descriptor( + DescriptorTbl** desc_tbl, ObjectPool& obj_pool, TDescriptorTable& t_desc_table, + TTableDescriptor& t_table_desc, const std::vector& column_names, + const std::vector& column_positions, + const std::vector& column_types, + const std::vector& access_configs = {}) { + // Create table descriptor with complex schema + auto create_table_desc = [this, &access_configs]( + TDescriptorTable& t_desc_table, + TTableDescriptor& t_table_desc, + const std::vector& table_column_names, + const std::vector& table_column_positions, + const std::vector& types) { + t_table_desc.__set_id(0); + t_table_desc.__set_tableType(TTableType::HIVE_TABLE); + t_table_desc.__set_numCols(0); + t_table_desc.__set_numClusteringCols(0); + t_desc_table.tableDescriptors.push_back(t_table_desc); + t_desc_table.__isset.tableDescriptors = true; + for (int i = 0; i < table_column_names.size(); i++) { + TSlotDescriptor tslot_desc; + TTypeDesc type; + if (table_column_names[i] == "id") { + // id: bigint + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(TPrimitiveType::BIGINT); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "name") { + // name: string + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(TPrimitiveType::STRING); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "tags") { + // tags: array + TTypeNode array_node; + array_node.__set_type(TTypeNodeType::ARRAY); + array_node.__set_contains_nulls({true}); + type.types.push_back(array_node); + TTypeNode element_node; + element_node.__set_type(TTypeNodeType::SCALAR); + TScalarType element_scalar; + element_scalar.__set_type(TPrimitiveType::STRING); + element_node.__set_scalar_type(element_scalar); + type.types.push_back(element_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "friends") { + // friends: array> + TTypeNode array_node; + array_node.__set_type(TTypeNodeType::ARRAY); + array_node.__set_contains_nulls({true}); + type.types.push_back(array_node); + TTypeNode element_struct_node; + element_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector element_fields; + TStructField user_id_field; + user_id_field.__set_name("user_id"); + user_id_field.__set_contains_null(true); + element_fields.push_back(user_id_field); + TStructField nickname_field; + nickname_field.__set_name("nickname"); + nickname_field.__set_contains_null(true); + element_fields.push_back(nickname_field); + TStructField friendship_level_field; + friendship_level_field.__set_name("friendship_level"); + friendship_level_field.__set_contains_null(true); + element_fields.push_back(friendship_level_field); + element_struct_node.__set_struct_fields(element_fields); + type.types.push_back(element_struct_node); + // user_id: bigint + TTypeNode user_id_node; + user_id_node.__set_type(TTypeNodeType::SCALAR); + TScalarType user_id_scalar; + user_id_scalar.__set_type(TPrimitiveType::BIGINT); + user_id_node.__set_scalar_type(user_id_scalar); + type.types.push_back(user_id_node); + // nickname: string + TTypeNode nickname_node; + nickname_node.__set_type(TTypeNodeType::SCALAR); + TScalarType nickname_scalar; + nickname_scalar.__set_type(TPrimitiveType::STRING); + nickname_node.__set_scalar_type(nickname_scalar); + type.types.push_back(nickname_node); + // friendship_level: int + TTypeNode friendship_level_node; + friendship_level_node.__set_type(TTypeNodeType::SCALAR); + TScalarType friendship_level_scalar; + friendship_level_scalar.__set_type(TPrimitiveType::INT); + friendship_level_node.__set_scalar_type(friendship_level_scalar); + type.types.push_back(friendship_level_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "recent_activity") { + // recent_activity: array>>> + TTypeNode array_node; + array_node.__set_type(TTypeNodeType::ARRAY); + array_node.__set_contains_nulls({true}); + type.types.push_back(array_node); + TTypeNode element_struct_node; + element_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector element_fields; + TStructField action_field; + action_field.__set_name("action"); + action_field.__set_contains_null(true); + element_fields.push_back(action_field); + TStructField details_field; + details_field.__set_name("details"); + details_field.__set_contains_null(true); + element_fields.push_back(details_field); + element_struct_node.__set_struct_fields(element_fields); + type.types.push_back(element_struct_node); + // action: string + TTypeNode action_node; + action_node.__set_type(TTypeNodeType::SCALAR); + TScalarType action_scalar; + action_scalar.__set_type(TPrimitiveType::STRING); + action_node.__set_scalar_type(action_scalar); + type.types.push_back(action_node); + // details: array> + TTypeNode details_array_node; + details_array_node.__set_type(TTypeNodeType::ARRAY); + details_array_node.__set_contains_nulls({true}); + type.types.push_back(details_array_node); + TTypeNode details_element_struct_node; + details_element_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector details_element_fields; + TStructField key_field; + key_field.__set_name("key"); + key_field.__set_contains_null(true); + details_element_fields.push_back(key_field); + TStructField value_field; + value_field.__set_name("value"); + value_field.__set_contains_null(true); + details_element_fields.push_back(value_field); + details_element_struct_node.__set_struct_fields(details_element_fields); + type.types.push_back(details_element_struct_node); + // key: string + TTypeNode key_node; + key_node.__set_type(TTypeNodeType::SCALAR); + TScalarType key_scalar; + key_scalar.__set_type(TPrimitiveType::STRING); + key_node.__set_scalar_type(key_scalar); + type.types.push_back(key_node); + // value: string + TTypeNode value_node; + value_node.__set_type(TTypeNodeType::SCALAR); + TScalarType value_scalar; + value_scalar.__set_type(TPrimitiveType::STRING); + value_node.__set_scalar_type(value_scalar); + type.types.push_back(value_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "attributes") { + // attributes: map + TTypeNode map_node; + map_node.__set_type(TTypeNodeType::MAP); + map_node.__set_contains_nulls({true, true}); + type.types.push_back(map_node); + // key: string + TTypeNode key_node; + key_node.__set_type(TTypeNodeType::SCALAR); + TScalarType key_scalar; + key_scalar.__set_type(TPrimitiveType::STRING); + key_node.__set_scalar_type(key_scalar); + type.types.push_back(key_node); + // value: string + TTypeNode value_node; + value_node.__set_type(TTypeNodeType::SCALAR); + TScalarType value_scalar; + value_scalar.__set_type(TPrimitiveType::STRING); + value_node.__set_scalar_type(value_scalar); + type.types.push_back(value_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "complex_attributes") { + // complex_attributes: map>> + TTypeNode map_node; + map_node.__set_type(TTypeNodeType::MAP); + map_node.__set_contains_nulls({true, true}); + type.types.push_back(map_node); + // key: string + TTypeNode key_node; + key_node.__set_type(TTypeNodeType::SCALAR); + TScalarType key_scalar; + key_scalar.__set_type(TPrimitiveType::STRING); + key_node.__set_scalar_type(key_scalar); + type.types.push_back(key_node); + // value: struct> + TTypeNode value_struct_node; + value_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector value_fields; + TStructField metadata_field; + metadata_field.__set_name("metadata"); + metadata_field.__set_contains_null(true); + value_fields.push_back(metadata_field); + value_struct_node.__set_struct_fields(value_fields); + type.types.push_back(value_struct_node); + // metadata: struct + TTypeNode metadata_struct_node; + metadata_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector metadata_fields; + TStructField version_field; + version_field.__set_name("version"); + version_field.__set_contains_null(true); + metadata_fields.push_back(version_field); + TStructField created_time_field; + created_time_field.__set_name("created_time"); + created_time_field.__set_contains_null(true); + metadata_fields.push_back(created_time_field); + TStructField last_updated_field; + last_updated_field.__set_name("last_updated"); + last_updated_field.__set_contains_null(true); + metadata_fields.push_back(last_updated_field); + metadata_struct_node.__set_struct_fields(metadata_fields); + type.types.push_back(metadata_struct_node); + // version: string + TTypeNode version_node; + version_node.__set_type(TTypeNodeType::SCALAR); + TScalarType version_scalar; + version_scalar.__set_type(TPrimitiveType::STRING); + version_node.__set_scalar_type(version_scalar); + type.types.push_back(version_node); + // created_time: timestamp + TTypeNode created_time_node; + created_time_node.__set_type(TTypeNodeType::SCALAR); + TScalarType created_time_scalar; + created_time_scalar.__set_type(TPrimitiveType::DATETIME); + created_time_node.__set_scalar_type(created_time_scalar); + type.types.push_back(created_time_node); + // last_updated: timestamp + TTypeNode last_updated_node; + last_updated_node.__set_type(TTypeNodeType::SCALAR); + TScalarType last_updated_scalar; + last_updated_scalar.__set_type(TPrimitiveType::DATETIME); + last_updated_node.__set_scalar_type(last_updated_scalar); + type.types.push_back(last_updated_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "profile") { + // STRUCT/ARRAY nodes need contains_nulls, SCALAR nodes do not + TTypeNode struct_node; + struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector struct_fields; + TStructField address_field; + address_field.__set_name("address"); + address_field.__set_contains_null(true); + struct_fields.push_back(address_field); + TStructField contact_field; + contact_field.__set_name("contact"); + contact_field.__set_contains_null(true); + struct_fields.push_back(contact_field); + TStructField hobbies_field; + hobbies_field.__set_name("hobbies"); + hobbies_field.__set_contains_null(true); + struct_fields.push_back(hobbies_field); + struct_node.__set_struct_fields(struct_fields); + type.types.push_back(struct_node); + TTypeNode address_node; + address_node.__set_type(TTypeNodeType::STRUCT); + std::vector address_fields; + TStructField street_field; + street_field.__set_name("street"); + street_field.__set_contains_null(true); + address_fields.push_back(street_field); + TStructField city_field; + city_field.__set_name("city"); + city_field.__set_contains_null(true); + address_fields.push_back(city_field); + TStructField coordinates_field; + coordinates_field.__set_name("coordinates"); + coordinates_field.__set_contains_null(true); + address_fields.push_back(coordinates_field); + address_node.__set_struct_fields(address_fields); + type.types.push_back(address_node); + TTypeNode street_node; + street_node.__set_type(TTypeNodeType::SCALAR); + TScalarType street_scalar; + street_scalar.__set_type(TPrimitiveType::STRING); + street_node.__set_scalar_type(street_scalar); + type.types.push_back(street_node); + TTypeNode city_node; + city_node.__set_type(TTypeNodeType::SCALAR); + TScalarType city_scalar; + city_scalar.__set_type(TPrimitiveType::STRING); + city_node.__set_scalar_type(city_scalar); + type.types.push_back(city_node); + TTypeNode coordinates_node; + coordinates_node.__set_type(TTypeNodeType::STRUCT); + std::vector coordinates_fields; + TStructField lat_field; + lat_field.__set_name("lat"); + lat_field.__set_contains_null(true); + coordinates_fields.push_back(lat_field); + TStructField lng_field; + lng_field.__set_name("lng"); + lng_field.__set_contains_null(true); + coordinates_fields.push_back(lng_field); + coordinates_node.__set_struct_fields(coordinates_fields); + type.types.push_back(coordinates_node); + TTypeNode lat_node; + lat_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lat_scalar; + lat_scalar.__set_type(TPrimitiveType::DOUBLE); + lat_node.__set_scalar_type(lat_scalar); + type.types.push_back(lat_node); + TTypeNode lng_node; + lng_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lng_scalar; + lng_scalar.__set_type(TPrimitiveType::DOUBLE); + lng_node.__set_scalar_type(lng_scalar); + type.types.push_back(lng_node); + TTypeNode contact_node; + contact_node.__set_type(TTypeNodeType::STRUCT); + std::vector contact_fields; + TStructField email_field; + email_field.__set_name("email"); + email_field.__set_contains_null(true); + contact_fields.push_back(email_field); + TStructField phone_field; + phone_field.__set_name("phone"); + phone_field.__set_contains_null(true); + contact_fields.push_back(phone_field); + contact_node.__set_struct_fields(contact_fields); + type.types.push_back(contact_node); + TTypeNode email_node; + email_node.__set_type(TTypeNodeType::SCALAR); + TScalarType email_scalar; + email_scalar.__set_type(TPrimitiveType::STRING); + email_node.__set_scalar_type(email_scalar); + type.types.push_back(email_node); + TTypeNode phone_node; + phone_node.__set_type(TTypeNodeType::STRUCT); + std::vector phone_fields; + TStructField country_code_field; + country_code_field.__set_name("country_code"); + country_code_field.__set_contains_null(true); + phone_fields.push_back(country_code_field); + TStructField number_field; + number_field.__set_name("number"); + number_field.__set_contains_null(true); + phone_fields.push_back(number_field); + phone_node.__set_struct_fields(phone_fields); + type.types.push_back(phone_node); + TTypeNode country_code_node; + country_code_node.__set_type(TTypeNodeType::SCALAR); + TScalarType country_code_scalar; + country_code_scalar.__set_type(TPrimitiveType::STRING); + country_code_node.__set_scalar_type(country_code_scalar); + type.types.push_back(country_code_node); + TTypeNode number_node; + number_node.__set_type(TTypeNodeType::SCALAR); + TScalarType number_scalar; + number_scalar.__set_type(TPrimitiveType::STRING); + number_node.__set_scalar_type(number_scalar); + type.types.push_back(number_node); + TTypeNode hobbies_node; + hobbies_node.__set_type(TTypeNodeType::ARRAY); + hobbies_node.__set_contains_nulls({true}); + type.types.push_back(hobbies_node); + TTypeNode hobby_element_node; + hobby_element_node.__set_type(TTypeNodeType::STRUCT); + std::vector hobby_element_fields; + TStructField hobby_name_field; + hobby_name_field.__set_name("name"); + hobby_name_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_name_field); + TStructField hobby_level_field; + hobby_level_field.__set_name("level"); + hobby_level_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_level_field); + hobby_element_node.__set_struct_fields(hobby_element_fields); + type.types.push_back(hobby_element_node); + TTypeNode hobby_name_node; + hobby_name_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_name_scalar; + hobby_name_scalar.__set_type(TPrimitiveType::STRING); + hobby_name_node.__set_scalar_type(hobby_name_scalar); + type.types.push_back(hobby_name_node); + TTypeNode hobby_level_node; + hobby_level_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_level_scalar; + hobby_level_scalar.__set_type(TPrimitiveType::INT); + hobby_level_node.__set_scalar_type(hobby_level_scalar); + type.types.push_back(hobby_level_node); + tslot_desc.__set_slotType(type); + } else { + // Regular types + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(types[i]); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } + tslot_desc.__set_id(i); + tslot_desc.__set_parent(0); + tslot_desc.__set_colName(table_column_names[i]); + tslot_desc.__set_columnPos(table_column_positions[i]); + tslot_desc.__set_byteOffset(0); + tslot_desc.__set_nullIndicatorByte(0); + tslot_desc.__set_nullIndicatorBit(-1); + tslot_desc.__set_slotIdx(0); + tslot_desc.__set_isMaterialized(true); + + // Use configuration to set column_access_paths + for (const auto& config : access_configs) { + set_column_access_paths(tslot_desc, config); + } + + t_desc_table.slotDescriptors.push_back(tslot_desc); + } + t_desc_table.__isset.slotDescriptors = true; + TTupleDescriptor t_tuple_desc; + t_tuple_desc.__set_id(0); + t_tuple_desc.__set_byteSize(16); + t_tuple_desc.__set_numNullBytes(0); + t_tuple_desc.__set_tableId(0); + t_tuple_desc.__isset.tableId = true; + t_desc_table.tupleDescriptors.push_back(t_tuple_desc); + }; + + create_table_desc(t_desc_table, t_table_desc, column_names, column_positions, column_types); + EXPECT_TRUE(DescriptorTbl::create(&obj_pool, t_desc_table, desc_tbl).ok()); + return (*desc_tbl)->get_tuple_descriptor(0); + } + + // Helper function: Set column access paths + void set_column_access_paths(TSlotDescriptor& tslot_desc, + const ColumnAccessPathConfig& config) { + if (config.column_name != tslot_desc.colName) { + return; // Not the target column, skip + } + + // Set all_column_access_paths + if (!config.all_column_paths.empty()) { + std::vector access_paths; + for (const auto& path_vector : config.all_column_paths) { + TColumnAccessPath access_path; + access_path.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path; + data_path.__set_path(path_vector); + access_path.__set_data_access_path(data_path); + access_paths.push_back(access_path); + } + tslot_desc.__set_all_access_paths(access_paths); + } + + // Set predicate_column_access_paths + if (!config.predicate_paths.empty()) { + std::vector access_paths; + for (const auto& path_vector : config.predicate_paths) { + TColumnAccessPath access_path; + access_path.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path; + data_path.__set_path(path_vector); + access_path.__set_data_access_path(data_path); + access_paths.push_back(access_path); + } + tslot_desc.__set_predicate_access_paths(access_paths); + } + } + + std::unique_ptr cache; + cctz::time_zone timezone_obj; + + // Helper function: Create and setup ParquetReader + std::tuple, const FieldDescriptor*> create_parquet_reader( + const std::string& test_file) { + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + return {nullptr, nullptr}; + } + + RuntimeState runtime_state((TQueryGlobals())); + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_PARQUET; + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); + scan_range.path = test_file; + RuntimeProfile profile("test_profile"); + + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + auto generic_reader = + ParquetReader::create_unique(&profile, scan_params, scan_range, 1024, &ctz, nullptr, + &runtime_state, cache.get()); + if (!generic_reader) { + return {nullptr, nullptr}; + } + + auto parquet_reader = static_cast(generic_reader.get()); + parquet_reader->set_file_reader(file_reader); + + const FieldDescriptor* field_desc = nullptr; + st = parquet_reader->get_file_metadata_schema(&field_desc); + if (!st.ok() || !field_desc) { + return {nullptr, nullptr}; + } + + auto hive_reader = std::make_unique( + std::move(generic_reader), &profile, &runtime_state, scan_params, scan_range, + nullptr, nullptr, cache.get()); + + return {std::move(hive_reader), field_desc}; + } + + // Helper function: Create and setup OrcReader + std::tuple, const orc::Type*> create_orc_reader( + const std::string& test_file) { + // Open the Hive Orc test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + return {nullptr, nullptr}; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_ORC; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create OrcReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = + OrcReader::create_unique(&profile, &runtime_state, scan_params, scan_range, 1024, + "CST", nullptr, cache.get()); + if (!generic_reader) { + return {nullptr, nullptr}; + } + + auto orc_reader = static_cast(generic_reader.get()); + // Get FieldDescriptor from Orc file + const orc::Type* orc_type_ptr = nullptr; + st = orc_reader->get_file_type(&orc_type_ptr); + if (!st.ok() || !orc_type_ptr) { + return {nullptr, nullptr}; + } + + // Create HiveOrcReader + auto hive_reader = std::make_unique(std::move(generic_reader), &profile, + &runtime_state, scan_params, scan_range, + nullptr, nullptr, cache.get()); + + return {std::move(hive_reader), orc_type_ptr}; + } + + // Helper function: Run Parquet test with different column ID extraction methods + void run_parquet_test(const std::vector& table_column_names, + const std::vector& access_configs, + const std::set& expected_column_ids, + const std::set& expected_filter_column_ids, + bool use_top_level_method = false, bool should_skip_assertion = false) { + std::string test_file = + "./be/test/exec/test_data/nested_user_profiles_parquet/" + "part-00000-64a7a390-1a03-4efc-ab51-557e9369a1f9-c000.snappy.parquet"; + + auto [hive_reader, field_desc] = create_parquet_reader(test_file); + if (!hive_reader || !field_desc) { + GTEST_SKIP() << "Test file not found or failed to create reader: " << test_file; + return; + } + + // Create tuple descriptor based on full schema + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + + // Define all columns according to the schema + std::vector all_table_column_names = {"id", "name", + "profile", "tags", + "friends", "recent_activity", + "attributes", "complex_attributes"}; + std::vector all_table_column_positions = {0, 1, 2, 3, 4, 5, 6, 7}; + std::vector all_table_column_types = { + TPrimitiveType::BIGINT, // id + TPrimitiveType::STRING, // name + TPrimitiveType::STRUCT, // profile + TPrimitiveType::ARRAY, // tags + TPrimitiveType::ARRAY, // friends + TPrimitiveType::ARRAY, // recent_activity + TPrimitiveType::MAP, // attributes + TPrimitiveType::MAP // complex_attributes + }; + + std::vector table_column_positions; + std::vector table_column_types; + for (const auto& col_name : table_column_names) { + auto it = std::find(all_table_column_names.begin(), all_table_column_names.end(), + col_name); + if (it != all_table_column_names.end()) { + int idx = std::distance(all_table_column_names.begin(), it); + table_column_positions.push_back(idx); + table_column_types.push_back(all_table_column_types[idx]); + } + } + + const TupleDescriptor* tuple_descriptor = create_tuple_descriptor( + &desc_tbl, obj_pool, t_desc_table, t_table_desc, table_column_names, + table_column_positions, table_column_types, access_configs); + + // Execute test based on method choice + ColumnIdResult actual_result; + if (use_top_level_method) { + actual_result = HiveParquetReader::_create_column_ids_by_top_level_col_index( + field_desc, tuple_descriptor); + } else { + actual_result = HiveParquetReader::_create_column_ids(field_desc, tuple_descriptor); + } + + if (!should_skip_assertion) { + EXPECT_EQ(actual_result.column_ids, expected_column_ids); + EXPECT_EQ(actual_result.filter_column_ids, expected_filter_column_ids); + } + } + + // Helper function: Run ORC test with different column ID extraction methods + void run_orc_test(const std::vector& table_column_names, + const std::vector& access_configs, + const std::set& expected_column_ids, + const std::set& expected_filter_column_ids, + bool use_top_level_method = false, bool should_skip_assertion = false) { + std::string test_file = + "./be/test/exec/test_data/nested_user_profiles_orc/" + "part-00000-62614f23-05d1-4043-a533-b155ef52b720-c000.snappy.orc"; + + auto [hive_reader, orc_type] = create_orc_reader(test_file); + if (!hive_reader || !orc_type) { + GTEST_SKIP() << "Test file not found or failed to create reader: " << test_file; + return; + } + + // Create tuple descriptor based on full schema + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + + // Define all columns according to the schema + std::vector all_table_column_names = {"id", "name", + "profile", "tags", + "friends", "recent_activity", + "attributes", "complex_attributes"}; + std::vector all_table_column_positions = {0, 1, 2, 3, 4, 5, 6, 7}; + std::vector all_table_column_types = { + TPrimitiveType::BIGINT, // id + TPrimitiveType::STRING, // name + TPrimitiveType::STRUCT, // profile + TPrimitiveType::ARRAY, // tags + TPrimitiveType::ARRAY, // friends + TPrimitiveType::ARRAY, // recent_activity + TPrimitiveType::MAP, // attributes + TPrimitiveType::MAP // complex_attributes + }; + + std::vector table_column_positions; + std::vector table_column_types; + for (const auto& col_name : table_column_names) { + auto it = std::find(all_table_column_names.begin(), all_table_column_names.end(), + col_name); + if (it != all_table_column_names.end()) { + int idx = std::distance(all_table_column_names.begin(), it); + table_column_positions.push_back(idx); + table_column_types.push_back(all_table_column_types[idx]); + } + } + + const TupleDescriptor* tuple_descriptor = create_tuple_descriptor( + &desc_tbl, obj_pool, t_desc_table, t_table_desc, table_column_names, + table_column_positions, table_column_types, access_configs); + + // Execute test based on method choice + ColumnIdResult actual_result; + if (use_top_level_method) { + actual_result = HiveOrcReader::_create_column_ids_by_top_level_col_index( + orc_type, tuple_descriptor); + } else { + actual_result = HiveOrcReader::_create_column_ids(orc_type, tuple_descriptor); + } + + if (!should_skip_assertion) { + EXPECT_EQ(actual_result.column_ids, expected_column_ids); + EXPECT_EQ(actual_result.filter_column_ids, expected_filter_column_ids); + } + } +}; + +TEST_F(HiveReaderCreateColumnIdsTest, test_create_column_ids_1) { + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {{"profile", "address", "coordinates", "lat"}, + {"profile", "address", "coordinates", "lng"}, + {"profile", "contact", "email"}, + {"profile", "hobbies", "*", "level"}}; + access_config.predicate_paths = {{"profile", "address", "coordinates", "lat"}, + {"profile", "contact", "email"}}; + + // column_ids should contain all necessary column IDs (set automatically deduplicates) + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 7, 8, 9, 10, 11, 15, 16, 18}; + std::set expected_filter_column_ids = {3, 4, 7, 8, 10, 11}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); + + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); +} + +TEST_F(HiveReaderCreateColumnIdsTest, test_create_column_ids_2) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 0: struct (table/root) + // 1: id (int64) + // 2: name (string) + // 3: profile (struct) + // 4: address (struct) + // 5: street (string) + // 6: city (string) + // 7: coordinates (struct) + // 8: lat (double) + // 9: lng (double) + // 10: contact (struct) + // 11: email (string) + // 12: phone (struct) + // 13: country_code (string) + // 14: number (string) + // 15: hobbies (list/array) + // 16: element (struct) + // 17: name (string) + // 18: level (int32) + + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {{"profile"}}; + access_config.predicate_paths = {{"profile", "address", "coordinates", "lat"}, + {"profile", "contact", "email"}}; + + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18}; + std::set expected_filter_column_ids = {3, 4, 7, 8, 10, 11}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); + + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); +} + +TEST_F(HiveReaderCreateColumnIdsTest, test_create_column_ids_3) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 0: struct (table/root) + // 1: id (int64) + // 2: name (string) + // 3: profile (struct) + // 4: address (struct) + // 5: street (string) + // 6: city (string) + // 7: coordinates (struct) + // 8: lat (double) + // 9: lng (double) + // 10: contact (struct) + // 11: email (string) + // 12: phone (struct) + // 13: country_code (string) + // 14: number (string) + // 15: hobbies (list/array) + // 16: element (struct) + // 17: name (string) + // 18: level (int32) + + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {{"profile", "contact"}, {"profile", "address"}}; + access_config.predicate_paths = {{"profile", "address", "coordinates"}, + {"profile", "contact", "email"}}; + + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; + std::set expected_filter_column_ids = {3, 4, 7, 8, 9, 10, 11}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); + + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); +} + +TEST_F(HiveReaderCreateColumnIdsTest, test_create_column_ids_4) { + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {}; + access_config.predicate_paths = {}; + + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18}; + std::set expected_filter_column_ids = {}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); + + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids, true); +} + +TEST_F(HiveReaderCreateColumnIdsTest, test_create_column_ids_5) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 19: tags (array) + // 20: element (string) + // 21: friends (array) + // 22: element (struct) + // 23: user_id (bigint) + // 24: nickname (string) + // 25: friendship_level (int) + // 26: recent_activity (array) + // 27: element (struct) + // 28: action (string) + // 29: details (array) + // 30: element (struct) + // 31: key (string) + // 32: value (string) + + std::vector access_configs; + + { + // Configure access paths for friends column + ColumnAccessPathConfig access_config; + access_config.column_name = "friends"; + + access_config.all_column_paths = {{"friends", "*", "nickname"}, + {"friends", "*", "friendship_level"}}; + access_config.predicate_paths = { + {"friends", "*", "nickname"}, + }; + access_configs.push_back(access_config); + } + + { + // Configure access paths for recent_activity column + ColumnAccessPathConfig access_config; + access_config.column_name = "recent_activity"; + + access_config.all_column_paths = {{"recent_activity", "*", "action"}, + {"recent_activity", "*", "details", "*", "value"}}; + access_config.predicate_paths = { + {"recent_activity", "*", "action"}, + }; + access_configs.push_back(access_config); + } + + std::vector table_column_names = {"name", "friends", "recent_activity"}; + std::set expected_column_ids = {2, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32}; + std::set expected_filter_column_ids = {21, 22, 24, 26, 27, 28}; + + run_parquet_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + run_parquet_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids, true); + + run_orc_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids, true); +} + +TEST_F(HiveReaderCreateColumnIdsTest, test_create_column_ids_6) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 33: attributes (map) + // 34: key (string) + // 35: value (string) + // 36: complex_attributes (map) + // 37: key (string) + // 38: value (struct) + // 39: metadata (struct) + // 40: version (string) + // 41: created_time (timestamp) + // 42: last_updated (timestamp) + // 43: quality_score (double) + // 44: historical_scores (array) + // 45: element (struct) + // 46: period (string) + // 47: score (double) + // 48: components (array) + // 49: element (struct) + // 50: component_name (string) + // 51: weight (float) + // 52: sub_scores (map) + // 53: key (string) + // 54: value (double) + // 55: trends (struct) + // 56: direction (string) + // 57: magnitude (double) + // 58: confidence_interval (struct) + // 59: lower (double) + // 60: upper (double) + // 61: hierarchical_data (map) + // 62: key (string) + // 63: value (struct) + // 64: category (string) + // 65: sub_items (array) + // 66: element (struct) + // 67: item_id (bigint) + // 68: properties (map) + // 69: key (string) + // 70: value (string) + // 71: metrics (struct) + // 72: value (double) + // 73: unit (string) + // 74: summary (struct) + // 75: total_count (int) + // 76: average_value (double) + // 77: validation_rules (struct) + // 78: required (boolean) + // 79: constraints (array) + // 80: element (struct) + // 81: rule_type (string) + // 82: parameters (map) + // 83: key (string) + // 84: value (string) + // 85: error_message (string) + // 86: complex_constraint (struct) + // 87: logic_operator (string) + // 88: operands (array) + // 89: element (struct) + // 90: field_path (string) + // 91: operator (string) + // 92: comparison_value (string) + std::vector access_configs; + + { + // Configure access paths for complex_attributes column + ColumnAccessPathConfig access_config; + access_config.column_name = "complex_attributes"; + + access_config.all_column_paths = { + {"complex_attributes", "*", "metadata", "version"}, + {"complex_attributes", "*", "historical_scores", "*", "components", "*", + "sub_scores"}, + {"complex_attributes", "*", "hierarchical_data", "VALUES"}, + {"complex_attributes", "VALUES", "validation_rules", "constraints", "*", + "parameters", "KEYS"}}; + access_config.predicate_paths = {{"complex_attributes", "*", "metadata", "version"} + + }; + access_configs.push_back(access_config); + } + + { + std::vector table_column_names = {"name", "complex_attributes"}; + // parquet values should access keys + std::set expected_column_ids = {2, 36, 37, 38, 39, 40, 44, 45, 48, 49, 52, 53, + 54, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 79, 80, 82, 83}; + std::set expected_filter_column_ids = {36, 37, 38, 39, 40}; + + run_parquet_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + run_parquet_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids, true); + } + + { + std::vector table_column_names = {"name", "complex_attributes"}; + // orc values should access keys because need to deduplicate by keys + std::set expected_column_ids = {2, 36, 37, 38, 39, 40, 44, 45, 48, 49, 52, 53, + 54, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 79, 80, 82, 83}; + std::set expected_filter_column_ids = {36, 37, 38, 39, 40}; + run_orc_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids, true); + } +} + +} // namespace doris::vectorized \ No newline at end of file diff --git a/be/test/vec/exec/format/table/hive/hive_reader_test.cpp b/be/test/vec/exec/format/table/hive/hive_reader_test.cpp new file mode 100644 index 00000000000000..993f1ba154b769 --- /dev/null +++ b/be/test/vec/exec/format/table/hive/hive_reader_test.cpp @@ -0,0 +1,741 @@ +// 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/exec/format/table/hive_reader.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "common/object_pool.h" +#include "exec/olap_common.h" +#include "io/fs/file_meta_cache.h" +#include "io/fs/file_reader_writer_fwd.h" +#include "io/fs/file_system.h" +#include "io/fs/local_file_system.h" +#include "runtime/descriptors.h" +#include "runtime/runtime_state.h" +#include "util/timezone_utils.h" +#include "vec/columns/column.h" +#include "vec/columns/column_array.h" +#include "vec/columns/column_nullable.h" +#include "vec/columns/column_struct.h" +#include "vec/core/block.h" +#include "vec/core/column_with_type_and_name.h" +#include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_array.h" +#include "vec/data_types/data_type_factory.hpp" +#include "vec/data_types/data_type_nullable.h" +#include "vec/data_types/data_type_number.h" +#include "vec/data_types/data_type_string.h" +#include "vec/data_types/data_type_struct.h" +#include "vec/exec/format/parquet/vparquet_reader.h" + +namespace doris::vectorized::table { + +class HiveReaderTest : public ::testing::Test { +protected: + void SetUp() override { + cache = std::make_unique(1024); + + // Setup timezone + doris::TimezoneUtils::find_cctz_time_zone(doris::TimezoneUtils::default_time_zone, + timezone_obj); + } + + void TearDown() override { cache.reset(); } + + // Helper function to create complex struct types for testing + void create_complex_struct_types(DataTypePtr& coordinates_struct_type, + DataTypePtr& address_struct_type, + DataTypePtr& phone_struct_type, + DataTypePtr& contact_struct_type, + DataTypePtr& hobby_element_struct_type, + DataTypePtr& hobbies_array_type, + DataTypePtr& profile_struct_type, DataTypePtr& name_type) { + // Create name column type (direct field) + name_type = make_nullable(std::make_shared()); + + // First create coordinates struct type + std::vector coordinates_types = { + make_nullable(std::make_shared()), // lat (field ID 10) + make_nullable(std::make_shared()) // lng (field ID 11) + }; + std::vector coordinates_names = {"lat", "lng"}; + coordinates_struct_type = make_nullable( + std::make_shared(coordinates_types, coordinates_names)); + + // Create address struct type (with street, city, coordinates) + std::vector address_types = { + make_nullable(std::make_shared()), // street (field ID 7) + make_nullable(std::make_shared()), // city (field ID 8) + coordinates_struct_type // coordinates (field ID 9) + }; + std::vector address_names = {"street", "city", "coordinates"}; + address_struct_type = + make_nullable(std::make_shared(address_types, address_names)); + + // Create phone struct type + std::vector phone_types = { + make_nullable(std::make_shared()), // country_code (field ID 14) + make_nullable(std::make_shared()) // number (field ID 15) + }; + std::vector phone_names = {"country_code", "number"}; + phone_struct_type = + make_nullable(std::make_shared(phone_types, phone_names)); + + // Create contact struct type (with email, phone) + std::vector contact_types = { + make_nullable(std::make_shared()), // email (field ID 12) + phone_struct_type // phone (field ID 13) + }; + std::vector contact_names = {"email", "phone"}; + contact_struct_type = + make_nullable(std::make_shared(contact_types, contact_names)); + + // Create hobby element struct type for array elements + std::vector hobby_element_types = { + make_nullable(std::make_shared()), // name (field ID 17) + make_nullable(std::make_shared()) // level (field ID 18) + }; + std::vector hobby_element_names = {"name", "level"}; + hobby_element_struct_type = make_nullable( + std::make_shared(hobby_element_types, hobby_element_names)); + + // Create hobbies array type + hobbies_array_type = + make_nullable(std::make_shared(hobby_element_struct_type)); + + // Create complete profile struct type (with address, contact, hobbies) + std::vector profile_types = { + address_struct_type, // address (field ID 4) + contact_struct_type, // contact (field ID 5) + hobbies_array_type // hobbies (field ID 6) + }; + std::vector profile_names = {"address", "contact", "hobbies"}; + profile_struct_type = + make_nullable(std::make_shared(profile_types, profile_names)); + } + + // Helper function to create tuple descriptor + const TupleDescriptor* create_tuple_descriptor( + DescriptorTbl** desc_tbl, ObjectPool& obj_pool, TDescriptorTable& t_desc_table, + TTableDescriptor& t_table_desc, const std::vector& column_names, + const std::vector& column_positions, + const std::vector& column_types) { + // Create table descriptor with complex schema + auto create_table_desc = [](TDescriptorTable& t_desc_table, TTableDescriptor& t_table_desc, + const std::vector& table_column_names, + const std::vector& table_column_positions, + const std::vector& types) { + t_table_desc.__set_id(0); + t_table_desc.__set_tableType(TTableType::OLAP_TABLE); + t_table_desc.__set_numCols(0); + t_table_desc.__set_numClusteringCols(0); + t_desc_table.tableDescriptors.push_back(t_table_desc); + t_desc_table.__isset.tableDescriptors = true; + for (int i = 0; i < table_column_names.size(); i++) { + TSlotDescriptor tslot_desc; + TTypeDesc type; + if (table_column_names[i] == "profile") { + // STRUCT/ARRAY nodes set contains_nulls; SCALAR nodes do not + TTypeNode struct_node; + struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector struct_fields; + TStructField address_field; + address_field.__set_name("address"); + address_field.__set_contains_null(true); + struct_fields.push_back(address_field); + TStructField contact_field; + contact_field.__set_name("contact"); + contact_field.__set_contains_null(true); + struct_fields.push_back(contact_field); + TStructField hobbies_field; + hobbies_field.__set_name("hobbies"); + hobbies_field.__set_contains_null(true); + struct_fields.push_back(hobbies_field); + struct_node.__set_struct_fields(struct_fields); + type.types.push_back(struct_node); + TTypeNode address_node; + address_node.__set_type(TTypeNodeType::STRUCT); + std::vector address_fields; + TStructField street_field; + street_field.__set_name("street"); + street_field.__set_contains_null(true); + address_fields.push_back(street_field); + TStructField city_field; + city_field.__set_name("city"); + city_field.__set_contains_null(true); + address_fields.push_back(city_field); + TStructField coordinates_field; + coordinates_field.__set_name("coordinates"); + coordinates_field.__set_contains_null(true); + address_fields.push_back(coordinates_field); + address_node.__set_struct_fields(address_fields); + type.types.push_back(address_node); + TTypeNode street_node; + street_node.__set_type(TTypeNodeType::SCALAR); + TScalarType street_scalar; + street_scalar.__set_type(TPrimitiveType::STRING); + street_node.__set_scalar_type(street_scalar); + type.types.push_back(street_node); + TTypeNode city_node; + city_node.__set_type(TTypeNodeType::SCALAR); + TScalarType city_scalar; + city_scalar.__set_type(TPrimitiveType::STRING); + city_node.__set_scalar_type(city_scalar); + type.types.push_back(city_node); + TTypeNode coordinates_node; + coordinates_node.__set_type(TTypeNodeType::STRUCT); + std::vector coordinates_fields; + TStructField lat_field; + lat_field.__set_name("lat"); + lat_field.__set_contains_null(true); + coordinates_fields.push_back(lat_field); + TStructField lng_field; + lng_field.__set_name("lng"); + lng_field.__set_contains_null(true); + coordinates_fields.push_back(lng_field); + coordinates_node.__set_struct_fields(coordinates_fields); + type.types.push_back(coordinates_node); + TTypeNode lat_node; + lat_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lat_scalar; + lat_scalar.__set_type(TPrimitiveType::DOUBLE); + lat_node.__set_scalar_type(lat_scalar); + type.types.push_back(lat_node); + TTypeNode lng_node; + lng_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lng_scalar; + lng_scalar.__set_type(TPrimitiveType::DOUBLE); + lng_node.__set_scalar_type(lng_scalar); + type.types.push_back(lng_node); + TTypeNode contact_node; + contact_node.__set_type(TTypeNodeType::STRUCT); + std::vector contact_fields; + TStructField email_field; + email_field.__set_name("email"); + email_field.__set_contains_null(true); + contact_fields.push_back(email_field); + TStructField phone_field; + phone_field.__set_name("phone"); + phone_field.__set_contains_null(true); + contact_fields.push_back(phone_field); + contact_node.__set_struct_fields(contact_fields); + type.types.push_back(contact_node); + TTypeNode email_node; + email_node.__set_type(TTypeNodeType::SCALAR); + TScalarType email_scalar; + email_scalar.__set_type(TPrimitiveType::STRING); + email_node.__set_scalar_type(email_scalar); + type.types.push_back(email_node); + TTypeNode phone_node; + phone_node.__set_type(TTypeNodeType::STRUCT); + std::vector phone_fields; + TStructField country_code_field; + country_code_field.__set_name("country_code"); + country_code_field.__set_contains_null(true); + phone_fields.push_back(country_code_field); + TStructField number_field; + number_field.__set_name("number"); + number_field.__set_contains_null(true); + phone_fields.push_back(number_field); + phone_node.__set_struct_fields(phone_fields); + type.types.push_back(phone_node); + TTypeNode country_code_node; + country_code_node.__set_type(TTypeNodeType::SCALAR); + TScalarType country_code_scalar; + country_code_scalar.__set_type(TPrimitiveType::STRING); + country_code_node.__set_scalar_type(country_code_scalar); + type.types.push_back(country_code_node); + TTypeNode number_node; + number_node.__set_type(TTypeNodeType::SCALAR); + TScalarType number_scalar; + number_scalar.__set_type(TPrimitiveType::STRING); + number_node.__set_scalar_type(number_scalar); + type.types.push_back(number_node); + TTypeNode hobbies_node; + hobbies_node.__set_type(TTypeNodeType::ARRAY); + hobbies_node.__set_contains_nulls({true}); + type.types.push_back(hobbies_node); + TTypeNode hobby_element_node; + hobby_element_node.__set_type(TTypeNodeType::STRUCT); + std::vector hobby_element_fields; + TStructField hobby_name_field; + hobby_name_field.__set_name("name"); + hobby_name_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_name_field); + TStructField hobby_level_field; + hobby_level_field.__set_name("level"); + hobby_level_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_level_field); + hobby_element_node.__set_struct_fields(hobby_element_fields); + type.types.push_back(hobby_element_node); + TTypeNode hobby_name_node; + hobby_name_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_name_scalar; + hobby_name_scalar.__set_type(TPrimitiveType::STRING); + hobby_name_node.__set_scalar_type(hobby_name_scalar); + type.types.push_back(hobby_name_node); + TTypeNode hobby_level_node; + hobby_level_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_level_scalar; + hobby_level_scalar.__set_type(TPrimitiveType::INT); + hobby_level_node.__set_scalar_type(hobby_level_scalar); + type.types.push_back(hobby_level_node); + tslot_desc.__set_slotType(type); + } else { + // Regular type + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(types[i]); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } + tslot_desc.__set_id(i); + tslot_desc.__set_parent(0); + tslot_desc.__set_colName(table_column_names[i]); + tslot_desc.__set_columnPos(table_column_positions[i]); + tslot_desc.__set_byteOffset(0); + tslot_desc.__set_nullIndicatorByte(0); + tslot_desc.__set_nullIndicatorBit(-1); + tslot_desc.__set_slotIdx(0); + tslot_desc.__set_isMaterialized(true); + // Set column_access_paths only for the profile field + if (table_column_names[i] == "profile") { + { + std::vector access_paths; + // address.coordinates.lat + TColumnAccessPath path1; + path1.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path1; + data_path1.__set_path({"profile", "address", "coordinates", "lat"}); + path1.__set_data_access_path(data_path1); + access_paths.push_back(path1); + // address.coordinates.lng + TColumnAccessPath path2; + path2.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path2; + data_path2.__set_path({"profile", "address", "coordinates", "lng"}); + path2.__set_data_access_path(data_path2); + access_paths.push_back(path2); + // contact.email + TColumnAccessPath path3; + path3.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path3; + data_path3.__set_path({"profile", "contact", "email"}); + path3.__set_data_access_path(data_path3); + access_paths.push_back(path3); + // hobbies[].element.level + TColumnAccessPath path4; + path4.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path4; + data_path4.__set_path({"profile", "hobbies", "*", "level"}); + path4.__set_data_access_path(data_path4); + access_paths.push_back(path4); + tslot_desc.__set_all_access_paths(access_paths); + } + } + t_desc_table.slotDescriptors.push_back(tslot_desc); + } + t_desc_table.__isset.slotDescriptors = true; + TTupleDescriptor t_tuple_desc; + t_tuple_desc.__set_id(0); + t_tuple_desc.__set_byteSize(16); + t_tuple_desc.__set_numNullBytes(0); + t_tuple_desc.__set_tableId(0); + t_tuple_desc.__isset.tableId = true; + t_desc_table.tupleDescriptors.push_back(t_tuple_desc); + }; + + create_table_desc(t_desc_table, t_table_desc, column_names, column_positions, column_types); + EXPECT_TRUE(DescriptorTbl::create(&obj_pool, t_desc_table, desc_tbl).ok()); + return (*desc_tbl)->get_tuple_descriptor(0); + } + + // Helper function to recursively print column row counts and check size > 0 + void verify_test_results(Block& block, size_t read_rows) { + // Verify that we read some data + EXPECT_GT(read_rows, 0) << "Should read at least one row"; + EXPECT_EQ(block.rows(), read_rows); + + // Verify column count matches expected (2 columns: name, profile) + EXPECT_EQ(block.columns(), 2); + + // Verify column names and types + auto columns_with_names = block.get_columns_with_type_and_name(); + std::vector expected_column_names = {"name", "profile"}; + for (size_t i = 0; i < expected_column_names.size(); i++) { + EXPECT_EQ(columns_with_names[i].name, expected_column_names[i]); + } + + // Verify column types + EXPECT_TRUE(columns_with_names[0].type->get_name().find("String") != + std::string::npos); // name is STRING + EXPECT_TRUE(columns_with_names[1].type->get_name().find("Struct") != + std::string::npos); // profile is STRUCT + + // Print row count for each column and nested subcolumns + std::cout << "Block rows: " << block.rows() << std::endl; + + // Helper function to recursively print column row counts + std::function + print_column_rows = [&](const ColumnPtr& col, const DataTypePtr& type, + const std::string& name, int depth) { + std::string indent(depth * 2, ' '); + std::cout << indent << name << " row count: " << col->size() << std::endl; + EXPECT_GT(col->size(), 0) << name << " column/subcolumn size should be > 0"; + + // Check if it's a nullable column + if (const auto* nullable_col = typeid_cast(col.get())) { + auto nested_type = + assert_cast(type.get())->get_nested_type(); + + // Only add ".nested" suffix for non-leaf (complex) nullable columns + // Leaf columns like String, Int, etc. should not get the ".nested" suffix + bool is_complex_type = + (typeid_cast(nested_type.get()) != + nullptr) || + (typeid_cast(nested_type.get()) != nullptr) || + (typeid_cast(nested_type.get()) != nullptr); + + std::string nested_name = is_complex_type ? name + ".nested" : name; + print_column_rows(nullable_col->get_nested_column_ptr(), nested_type, + nested_name, depth + (is_complex_type ? 1 : 0)); + } + // Check if it's a struct column + else if (const auto* struct_col = typeid_cast(col.get())) { + auto struct_type = assert_cast(type.get()); + for (size_t i = 0; i < struct_col->tuple_size(); ++i) { + std::string field_name = struct_type->get_element_name(i); + auto field_type = struct_type->get_element(i); + print_column_rows(struct_col->get_column_ptr(i), field_type, + name + "." + field_name, depth + 1); + } + } + // Check if it's an array column + else if (const auto* array_col = typeid_cast(col.get())) { + auto array_type = assert_cast(type.get()); + auto element_type = array_type->get_nested_type(); + print_column_rows(array_col->get_data_ptr(), element_type, name + ".data", + depth + 1); + } + }; + + // Print row counts for all columns + for (size_t i = 0; i < block.columns(); ++i) { + const auto& column_with_name = block.get_by_position(i); + print_column_rows(column_with_name.column, column_with_name.type, column_with_name.name, + 0); + EXPECT_EQ(column_with_name.column->size(), block.rows()) + << "Column " << column_with_name.name << " size mismatch"; + } + } + + std::unique_ptr cache; + cctz::time_zone timezone_obj; +}; + +// Test reading real Hive Parquet file using HiveTableReader +TEST_F(HiveReaderTest, read_hive_parquet_file) { + // Read only: name, profile.address.coordinates.lat, profile.address.coordinates.lng, profile.contact.email + // Setup table descriptor for test columns with new schema: + /** + Schema: + message table { + required int64 id = 1; + required binary name (STRING) = 2; + required group profile = 3 { + optional group address = 4 { + optional binary street (STRING) = 7; + optional binary city (STRING) = 8; + optional group coordinates = 9 { + optional double lat = 10; + optional double lng = 11; + } + } + optional group contact = 5 { + optional binary email (STRING) = 12; + optional group phone = 13 { + optional binary country_code (STRING) = 14; + optional binary number (STRING) = 15; + } + } + optional group hobbies (LIST) = 6 { + repeated group list { + optional group element = 16 { + optional binary name (STRING) = 17; + optional int32 level = 18; + } + } + } + } + } + */ + + // Open the Hive Parquet test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + std::string test_file = + "./be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/" + "00000-0-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet"; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + GTEST_SKIP() << "Test file not found: " << test_file; + return; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_PARQUET; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create ParquetReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = ParquetReader::create_unique(&profile, scan_params, scan_range, 1024, + &ctz, nullptr, &runtime_state, cache.get()); + ASSERT_NE(generic_reader, nullptr); + + // Set file reader for the generic reader + auto parquet_reader = static_cast(generic_reader.get()); + parquet_reader->set_file_reader(file_reader); + + // Create HiveParquetReader + auto hive_reader = std::make_unique(std::move(generic_reader), &profile, + &runtime_state, scan_params, scan_range, + nullptr, nullptr, cache.get()); + + // Create complex struct types using helper function + DataTypePtr coordinates_struct_type, address_struct_type, phone_struct_type; + DataTypePtr contact_struct_type, hobby_element_struct_type, hobbies_array_type; + DataTypePtr profile_struct_type, name_type; + create_complex_struct_types(coordinates_struct_type, address_struct_type, phone_struct_type, + contact_struct_type, hobby_element_struct_type, hobbies_array_type, + profile_struct_type, name_type); + + // Create tuple descriptor using helper function + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + std::vector table_column_names = {"name", "profile"}; + std::vector table_column_positions = {1, 2}; + std::vector table_column_types = { + TPrimitiveType::STRING, TPrimitiveType::STRUCT // profile 用 STRUCT 类型 + }; + const TupleDescriptor* tuple_descriptor = + create_tuple_descriptor(&desc_tbl, obj_pool, t_desc_table, t_table_desc, + table_column_names, table_column_positions, table_column_types); + + VExprContextSPtrs conjuncts; // Empty conjuncts for this test + std::vector table_col_names = {"name", "profile"}; + const RowDescriptor* row_descriptor = nullptr; + const std::unordered_map* colname_to_slot_id = nullptr; + const VExprContextSPtrs* not_single_slot_filter_conjuncts = nullptr; + const std::unordered_map* slot_id_to_filter_conjuncts = nullptr; + + st = hive_reader->init_reader(table_col_names, nullptr, conjuncts, tuple_descriptor, + row_descriptor, colname_to_slot_id, + not_single_slot_filter_conjuncts, slot_id_to_filter_conjuncts); + ASSERT_TRUE(st.ok()) << st; + + std::unordered_map> + partition_columns; + std::unordered_map missing_columns; + ASSERT_TRUE(hive_reader->set_fill_columns(partition_columns, missing_columns).ok()); + + // Create block for reading nested structure (not flattened) + Block block; + { + MutableColumnPtr name_column = name_type->create_column(); + block.insert(ColumnWithTypeAndName(std::move(name_column), name_type, "name")); + // Add profile column (nested struct) + MutableColumnPtr profile_column = profile_struct_type->create_column(); + block.insert( + ColumnWithTypeAndName(std::move(profile_column), profile_struct_type, "profile")); + } + + // Read data from the file + size_t read_rows = 0; + bool eof = false; + st = hive_reader->get_next_block(&block, &read_rows, &eof); + ASSERT_TRUE(st.ok()) << st; + + // Verify test results using helper function + verify_test_results(block, read_rows); +} + +// Test reading real Hive Orc file using HiveTableReader +TEST_F(HiveReaderTest, read_hive_rrc_file) { + // Read only: name, profile.address.coordinates.lat, profile.address.coordinates.lng, profile.contact.email + // Setup table descriptor for test columns with new schema: + /** + Schema: + message table { + required int64 id = 1; + required binary name (STRING) = 2; + required group profile = 3 { + optional group address = 4 { + optional binary street (STRING) = 7; + optional binary city (STRING) = 8; + optional group coordinates = 9 { + optional double lat = 10; + optional double lng = 11; + } + } + optional group contact = 5 { + optional binary email (STRING) = 12; + optional group phone = 13 { + optional binary country_code (STRING) = 14; + optional binary number (STRING) = 15; + } + } + optional group hobbies (LIST) = 6 { + repeated group list { + optional group element = 16 { + optional binary name (STRING) = 17; + optional int32 level = 18; + } + } + } + } + } + */ + // Open the Hive Orc test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + std::string test_file = + "./be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/" + "00000-0-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc"; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + GTEST_SKIP() << "Test file not found: " << test_file; + return; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_ORC; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create OrcReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = OrcReader::create_unique(&profile, &runtime_state, scan_params, + scan_range, 1024, "CST", nullptr, cache.get()); + ASSERT_NE(generic_reader, nullptr); + + // Create HiveOrcReader + auto hive_reader = + std::make_unique(std::move(generic_reader), &profile, &runtime_state, + scan_params, scan_range, nullptr, nullptr, cache.get()); + + // Create complex struct types using helper function + DataTypePtr coordinates_struct_type, address_struct_type, phone_struct_type; + DataTypePtr contact_struct_type, hobby_element_struct_type, hobbies_array_type; + DataTypePtr profile_struct_type, name_type; + create_complex_struct_types(coordinates_struct_type, address_struct_type, phone_struct_type, + contact_struct_type, hobby_element_struct_type, hobbies_array_type, + profile_struct_type, name_type); + + // Create tuple descriptor using helper function + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + std::vector table_column_names = {"name", "profile"}; + std::vector table_column_positions = {1, 2}; + std::vector table_column_types = { + TPrimitiveType::STRING, TPrimitiveType::STRUCT // profile 用 STRUCT 类型 + }; + const TupleDescriptor* tuple_descriptor = + create_tuple_descriptor(&desc_tbl, obj_pool, t_desc_table, t_table_desc, + table_column_names, table_column_positions, table_column_types); + + VExprContextSPtrs conjuncts; // Empty conjuncts for this test + std::vector table_col_names = {"name", "profile"}; + const RowDescriptor* row_descriptor = nullptr; + const VExprContextSPtrs* not_single_slot_filter_conjuncts = nullptr; + const std::unordered_map* slot_id_to_filter_conjuncts = nullptr; + + st = hive_reader->init_reader(table_col_names, nullptr, conjuncts, tuple_descriptor, + row_descriptor, not_single_slot_filter_conjuncts, + slot_id_to_filter_conjuncts); + ASSERT_TRUE(st.ok()) << st; + + std::unordered_map> + partition_columns; + std::unordered_map missing_columns; + ASSERT_TRUE(hive_reader->set_fill_columns(partition_columns, missing_columns).ok()); + + // Create block for reading nested structure (not flattened) + Block block; + + { + MutableColumnPtr name_column = name_type->create_column(); + block.insert(ColumnWithTypeAndName(std::move(name_column), name_type, "name")); + // Add profile column (nested struct) + MutableColumnPtr profile_column = profile_struct_type->create_column(); + block.insert( + ColumnWithTypeAndName(std::move(profile_column), profile_struct_type, "profile")); + } + + // Read data from the file + size_t read_rows = 0; + bool eof = false; + st = hive_reader->get_next_block(&block, &read_rows, &eof); + ASSERT_TRUE(st.ok()) << st; + + // Verify test results using helper function + verify_test_results(block, read_rows); +} + +} // namespace doris::vectorized::table diff --git a/be/test/vec/exec/format/table/iceberg/iceberg_reader_create_column_ids_test.cpp b/be/test/vec/exec/format/table/iceberg/iceberg_reader_create_column_ids_test.cpp new file mode 100644 index 00000000000000..d897f0e47621c5 --- /dev/null +++ b/be/test/vec/exec/format/table/iceberg/iceberg_reader_create_column_ids_test.cpp @@ -0,0 +1,1184 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "common/object_pool.h" +#include "exec/olap_common.h" +#include "io/fs/file_meta_cache.h" +#include "io/fs/file_reader_writer_fwd.h" +#include "io/fs/file_system.h" +#include "io/fs/local_file_system.h" +#include "runtime/descriptors.h" +#include "runtime/runtime_state.h" +#include "util/timezone_utils.h" +#include "vec/columns/column.h" +#include "vec/columns/column_array.h" +#include "vec/columns/column_nullable.h" +#include "vec/columns/column_struct.h" +#include "vec/core/block.h" +#include "vec/core/column_with_type_and_name.h" +#include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_array.h" +#include "vec/data_types/data_type_factory.hpp" +#include "vec/data_types/data_type_nullable.h" +#include "vec/data_types/data_type_number.h" +#include "vec/data_types/data_type_string.h" +#include "vec/data_types/data_type_struct.h" +#include "vec/exec/format/parquet/vparquet_reader.h" +#include "vec/exec/format/table/iceberg_reader.h" + +namespace doris::vectorized { + +// Define the column access path configuration structure +struct ColumnAccessPathConfig { + std::string column_name; + std::vector> all_column_paths; // For all_column_access_paths + std::vector> predicate_paths; // For predicate_column_access_paths +}; + +// Iceberg column ID assignment (based on Protobuf schema definition) +// 1: id (int64) +// 2: name (string) +// 3: profile (struct) +// 9: address (struct) +// 12: street (string) +// 13: city (string) +// 14: coordinates (struct) +// 15: lat (double) +// 16: lng (double) +// 10: contact (struct) +// 17: email (string) +// 18: phone (struct) +// 19: country_code (string) +// 20: number (string) +// 11: hobbies (list) +// 21: element (struct) +// 22: name (string) +// 23: level (int32) +// 4: tags (list) +// 24: element (string) +// 5: friends (list) +// 25: element (struct) +// 26: user_id (int64) +// 27: nickname (string) +// 28: friendship_level (int32) +// 6: recent_activity (list) +// 29: element (struct) +// 30: action (string) +// 31: details (list) +// 32: element (struct) +// 33: key (string) +// 34: value (string) +// 7: attributes (map) +// 35: key (string) +// 36: value (string) +// 8: complex_attributes (map) +// 37: key (string) +// 38: value (struct) +// 39: metadata (struct) +// 43: version (string) +// 44: created_time (timestamp) +// 45: last_updated (timestamp) +// 46: quality_score (double) +// 40: historical_scores (list) +// 47: element (struct) +// 48: period (string) +// 49: score (double) +// 50: components (list) +// 52: element (struct) +// 53: component_name (string) +// 54: weight (float) +// 55: sub_scores (map) +// 56: key (string) +// 57: value (double) +// 51: trends (struct) +// 58: direction (string) +// 59: magnitude (double) +// 60: confidence_interval (struct) +// 61: lower (double) +// 62: upper (double) +// 41: hierarchical_data (map) +// 63: key (string) +// 64: value (struct) +// 65: category (string) +// 66: sub_items (list) +// 68: element (struct) +// 69: item_id (int64) +// 70: properties (map) +// 72: key (string) +// 73: value (string) +// 71: metrics (struct) +// 74: value (double) +// 75: unit (string) +// 67: summary (struct) +// 76: total_count (int32) +// 77: average_value (double) +// 42: validation_rules (struct) +// 78: required (boolean) +// 79: constraints (list) +// 81: element (struct) +// 82: rule_type (string) +// 83: parameters (map) +// 85: key (string) +// 86: value (string) +// 84: error_message (string) +// 80: complex_constraint (struct) +// 87: logic_operator (string) +// 88: operands (list) +// 89: element (struct) +// 90: field_path (string) +// 91: operator (string) +// 92: comparison_value (string) + +class IcebergReaderCreateColumnIdsTest : public ::testing::Test { +protected: + void SetUp() override { + cache = std::make_unique(1024); + + // Setup timezone + doris::TimezoneUtils::find_cctz_time_zone(doris::TimezoneUtils::default_time_zone, + timezone_obj); + } + + void TearDown() override { cache.reset(); } + + // Helper function to map column name to Iceberg field ID + int get_iceberg_field_id(const std::string& column_name) { + // Mapping based on the Iceberg schema definition in comments + static const std::unordered_map column_to_field_id = { + {"id", 1}, {"name", 2}, + {"profile", 3}, {"tags", 4}, + {"friends", 5}, {"recent_activity", 6}, + {"attributes", 7}, {"complex_attributes", 8}}; + + auto it = column_to_field_id.find(column_name); + if (it != column_to_field_id.end()) { + return it->second; + } + return -1; // Invalid field ID + } + + // Helper function to create tuple descriptor + const TupleDescriptor* create_tuple_descriptor( + DescriptorTbl** desc_tbl, ObjectPool& obj_pool, TDescriptorTable& t_desc_table, + TTableDescriptor& t_table_desc, const std::vector& column_names, + const std::vector& column_positions, + const std::vector& column_types, + const std::vector& access_configs = {}) { + // Create table descriptor with complex schema + auto create_table_desc = [this, &access_configs]( + TDescriptorTable& t_desc_table, + TTableDescriptor& t_table_desc, + const std::vector& table_column_names, + const std::vector& table_column_positions, + const std::vector& types) { + t_table_desc.__set_id(0); + t_table_desc.__set_tableType(TTableType::HIVE_TABLE); + t_table_desc.__set_numCols(0); + t_table_desc.__set_numClusteringCols(0); + t_desc_table.tableDescriptors.push_back(t_table_desc); + t_desc_table.__isset.tableDescriptors = true; + for (int i = 0; i < table_column_names.size(); i++) { + TSlotDescriptor tslot_desc; + TTypeDesc type; + if (table_column_names[i] == "id") { + // id: bigint + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(TPrimitiveType::BIGINT); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "name") { + // name: string + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(TPrimitiveType::STRING); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "tags") { + // tags: array + TTypeNode array_node; + array_node.__set_type(TTypeNodeType::ARRAY); + array_node.__set_contains_nulls({true}); + type.types.push_back(array_node); + TTypeNode element_node; + element_node.__set_type(TTypeNodeType::SCALAR); + TScalarType element_scalar; + element_scalar.__set_type(TPrimitiveType::STRING); + element_node.__set_scalar_type(element_scalar); + type.types.push_back(element_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "friends") { + // friends: array> + TTypeNode array_node; + array_node.__set_type(TTypeNodeType::ARRAY); + array_node.__set_contains_nulls({true}); + type.types.push_back(array_node); + TTypeNode element_struct_node; + element_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector element_fields; + TStructField user_id_field; + user_id_field.__set_name("user_id"); + user_id_field.__set_contains_null(true); + element_fields.push_back(user_id_field); + TStructField nickname_field; + nickname_field.__set_name("nickname"); + nickname_field.__set_contains_null(true); + element_fields.push_back(nickname_field); + TStructField friendship_level_field; + friendship_level_field.__set_name("friendship_level"); + friendship_level_field.__set_contains_null(true); + element_fields.push_back(friendship_level_field); + element_struct_node.__set_struct_fields(element_fields); + type.types.push_back(element_struct_node); + // user_id: bigint + TTypeNode user_id_node; + user_id_node.__set_type(TTypeNodeType::SCALAR); + TScalarType user_id_scalar; + user_id_scalar.__set_type(TPrimitiveType::BIGINT); + user_id_node.__set_scalar_type(user_id_scalar); + type.types.push_back(user_id_node); + // nickname: string + TTypeNode nickname_node; + nickname_node.__set_type(TTypeNodeType::SCALAR); + TScalarType nickname_scalar; + nickname_scalar.__set_type(TPrimitiveType::STRING); + nickname_node.__set_scalar_type(nickname_scalar); + type.types.push_back(nickname_node); + // friendship_level: int + TTypeNode friendship_level_node; + friendship_level_node.__set_type(TTypeNodeType::SCALAR); + TScalarType friendship_level_scalar; + friendship_level_scalar.__set_type(TPrimitiveType::INT); + friendship_level_node.__set_scalar_type(friendship_level_scalar); + type.types.push_back(friendship_level_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "recent_activity") { + // recent_activity: array>>> + TTypeNode array_node; + array_node.__set_type(TTypeNodeType::ARRAY); + array_node.__set_contains_nulls({true}); + type.types.push_back(array_node); + TTypeNode element_struct_node; + element_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector element_fields; + TStructField action_field; + action_field.__set_name("action"); + action_field.__set_contains_null(true); + element_fields.push_back(action_field); + TStructField details_field; + details_field.__set_name("details"); + details_field.__set_contains_null(true); + element_fields.push_back(details_field); + element_struct_node.__set_struct_fields(element_fields); + type.types.push_back(element_struct_node); + // action: string + TTypeNode action_node; + action_node.__set_type(TTypeNodeType::SCALAR); + TScalarType action_scalar; + action_scalar.__set_type(TPrimitiveType::STRING); + action_node.__set_scalar_type(action_scalar); + type.types.push_back(action_node); + // details: array> + TTypeNode details_array_node; + details_array_node.__set_type(TTypeNodeType::ARRAY); + details_array_node.__set_contains_nulls({true}); + type.types.push_back(details_array_node); + TTypeNode details_element_struct_node; + details_element_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector details_element_fields; + TStructField key_field; + key_field.__set_name("key"); + key_field.__set_contains_null(true); + details_element_fields.push_back(key_field); + TStructField value_field; + value_field.__set_name("value"); + value_field.__set_contains_null(true); + details_element_fields.push_back(value_field); + details_element_struct_node.__set_struct_fields(details_element_fields); + type.types.push_back(details_element_struct_node); + // key: string + TTypeNode key_node; + key_node.__set_type(TTypeNodeType::SCALAR); + TScalarType key_scalar; + key_scalar.__set_type(TPrimitiveType::STRING); + key_node.__set_scalar_type(key_scalar); + type.types.push_back(key_node); + // value: string + TTypeNode value_node; + value_node.__set_type(TTypeNodeType::SCALAR); + TScalarType value_scalar; + value_scalar.__set_type(TPrimitiveType::STRING); + value_node.__set_scalar_type(value_scalar); + type.types.push_back(value_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "attributes") { + // attributes: map + TTypeNode map_node; + map_node.__set_type(TTypeNodeType::MAP); + map_node.__set_contains_nulls({true, true}); + type.types.push_back(map_node); + // key: string + TTypeNode key_node; + key_node.__set_type(TTypeNodeType::SCALAR); + TScalarType key_scalar; + key_scalar.__set_type(TPrimitiveType::STRING); + key_node.__set_scalar_type(key_scalar); + type.types.push_back(key_node); + // value: string + TTypeNode value_node; + value_node.__set_type(TTypeNodeType::SCALAR); + TScalarType value_scalar; + value_scalar.__set_type(TPrimitiveType::STRING); + value_node.__set_scalar_type(value_scalar); + type.types.push_back(value_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "complex_attributes") { + // complex_attributes: map>> + TTypeNode map_node; + map_node.__set_type(TTypeNodeType::MAP); + map_node.__set_contains_nulls({true, true}); + type.types.push_back(map_node); + // key: string + TTypeNode key_node; + key_node.__set_type(TTypeNodeType::SCALAR); + TScalarType key_scalar; + key_scalar.__set_type(TPrimitiveType::STRING); + key_node.__set_scalar_type(key_scalar); + type.types.push_back(key_node); + // value: struct> + TTypeNode value_struct_node; + value_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector value_fields; + TStructField metadata_field; + metadata_field.__set_name("metadata"); + metadata_field.__set_contains_null(true); + value_fields.push_back(metadata_field); + value_struct_node.__set_struct_fields(value_fields); + type.types.push_back(value_struct_node); + // metadata: struct + TTypeNode metadata_struct_node; + metadata_struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector metadata_fields; + TStructField version_field; + version_field.__set_name("version"); + version_field.__set_contains_null(true); + metadata_fields.push_back(version_field); + TStructField created_time_field; + created_time_field.__set_name("created_time"); + created_time_field.__set_contains_null(true); + metadata_fields.push_back(created_time_field); + TStructField last_updated_field; + last_updated_field.__set_name("last_updated"); + last_updated_field.__set_contains_null(true); + metadata_fields.push_back(last_updated_field); + metadata_struct_node.__set_struct_fields(metadata_fields); + type.types.push_back(metadata_struct_node); + // version: string + TTypeNode version_node; + version_node.__set_type(TTypeNodeType::SCALAR); + TScalarType version_scalar; + version_scalar.__set_type(TPrimitiveType::STRING); + version_node.__set_scalar_type(version_scalar); + type.types.push_back(version_node); + // created_time: timestamp + TTypeNode created_time_node; + created_time_node.__set_type(TTypeNodeType::SCALAR); + TScalarType created_time_scalar; + created_time_scalar.__set_type(TPrimitiveType::DATETIME); + created_time_node.__set_scalar_type(created_time_scalar); + type.types.push_back(created_time_node); + // last_updated: timestamp + TTypeNode last_updated_node; + last_updated_node.__set_type(TTypeNodeType::SCALAR); + TScalarType last_updated_scalar; + last_updated_scalar.__set_type(TPrimitiveType::DATETIME); + last_updated_node.__set_scalar_type(last_updated_scalar); + type.types.push_back(last_updated_node); + tslot_desc.__set_slotType(type); + } else if (table_column_names[i] == "profile") { + // STRUCT/ARRAY 节点设置 contains_nulls,SCALAR 节点不设置 + TTypeNode struct_node; + struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector struct_fields; + TStructField address_field; + address_field.__set_name("address"); + address_field.__set_contains_null(true); + struct_fields.push_back(address_field); + TStructField contact_field; + contact_field.__set_name("contact"); + contact_field.__set_contains_null(true); + struct_fields.push_back(contact_field); + TStructField hobbies_field; + hobbies_field.__set_name("hobbies"); + hobbies_field.__set_contains_null(true); + struct_fields.push_back(hobbies_field); + struct_node.__set_struct_fields(struct_fields); + type.types.push_back(struct_node); + TTypeNode address_node; + address_node.__set_type(TTypeNodeType::STRUCT); + std::vector address_fields; + TStructField street_field; + street_field.__set_name("street"); + street_field.__set_contains_null(true); + address_fields.push_back(street_field); + TStructField city_field; + city_field.__set_name("city"); + city_field.__set_contains_null(true); + address_fields.push_back(city_field); + TStructField coordinates_field; + coordinates_field.__set_name("coordinates"); + coordinates_field.__set_contains_null(true); + address_fields.push_back(coordinates_field); + address_node.__set_struct_fields(address_fields); + type.types.push_back(address_node); + TTypeNode street_node; + street_node.__set_type(TTypeNodeType::SCALAR); + TScalarType street_scalar; + street_scalar.__set_type(TPrimitiveType::STRING); + street_node.__set_scalar_type(street_scalar); + type.types.push_back(street_node); + TTypeNode city_node; + city_node.__set_type(TTypeNodeType::SCALAR); + TScalarType city_scalar; + city_scalar.__set_type(TPrimitiveType::STRING); + city_node.__set_scalar_type(city_scalar); + type.types.push_back(city_node); + TTypeNode coordinates_node; + coordinates_node.__set_type(TTypeNodeType::STRUCT); + std::vector coordinates_fields; + TStructField lat_field; + lat_field.__set_name("lat"); + lat_field.__set_contains_null(true); + coordinates_fields.push_back(lat_field); + TStructField lng_field; + lng_field.__set_name("lng"); + lng_field.__set_contains_null(true); + coordinates_fields.push_back(lng_field); + coordinates_node.__set_struct_fields(coordinates_fields); + type.types.push_back(coordinates_node); + TTypeNode lat_node; + lat_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lat_scalar; + lat_scalar.__set_type(TPrimitiveType::DOUBLE); + lat_node.__set_scalar_type(lat_scalar); + type.types.push_back(lat_node); + TTypeNode lng_node; + lng_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lng_scalar; + lng_scalar.__set_type(TPrimitiveType::DOUBLE); + lng_node.__set_scalar_type(lng_scalar); + type.types.push_back(lng_node); + TTypeNode contact_node; + contact_node.__set_type(TTypeNodeType::STRUCT); + std::vector contact_fields; + TStructField email_field; + email_field.__set_name("email"); + email_field.__set_contains_null(true); + contact_fields.push_back(email_field); + TStructField phone_field; + phone_field.__set_name("phone"); + phone_field.__set_contains_null(true); + contact_fields.push_back(phone_field); + contact_node.__set_struct_fields(contact_fields); + type.types.push_back(contact_node); + TTypeNode email_node; + email_node.__set_type(TTypeNodeType::SCALAR); + TScalarType email_scalar; + email_scalar.__set_type(TPrimitiveType::STRING); + email_node.__set_scalar_type(email_scalar); + type.types.push_back(email_node); + TTypeNode phone_node; + phone_node.__set_type(TTypeNodeType::STRUCT); + std::vector phone_fields; + TStructField country_code_field; + country_code_field.__set_name("country_code"); + country_code_field.__set_contains_null(true); + phone_fields.push_back(country_code_field); + TStructField number_field; + number_field.__set_name("number"); + number_field.__set_contains_null(true); + phone_fields.push_back(number_field); + phone_node.__set_struct_fields(phone_fields); + type.types.push_back(phone_node); + TTypeNode country_code_node; + country_code_node.__set_type(TTypeNodeType::SCALAR); + TScalarType country_code_scalar; + country_code_scalar.__set_type(TPrimitiveType::STRING); + country_code_node.__set_scalar_type(country_code_scalar); + type.types.push_back(country_code_node); + TTypeNode number_node; + number_node.__set_type(TTypeNodeType::SCALAR); + TScalarType number_scalar; + number_scalar.__set_type(TPrimitiveType::STRING); + number_node.__set_scalar_type(number_scalar); + type.types.push_back(number_node); + TTypeNode hobbies_node; + hobbies_node.__set_type(TTypeNodeType::ARRAY); + hobbies_node.__set_contains_nulls({true}); + type.types.push_back(hobbies_node); + TTypeNode hobby_element_node; + hobby_element_node.__set_type(TTypeNodeType::STRUCT); + std::vector hobby_element_fields; + TStructField hobby_name_field; + hobby_name_field.__set_name("name"); + hobby_name_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_name_field); + TStructField hobby_level_field; + hobby_level_field.__set_name("level"); + hobby_level_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_level_field); + hobby_element_node.__set_struct_fields(hobby_element_fields); + type.types.push_back(hobby_element_node); + TTypeNode hobby_name_node; + hobby_name_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_name_scalar; + hobby_name_scalar.__set_type(TPrimitiveType::STRING); + hobby_name_node.__set_scalar_type(hobby_name_scalar); + type.types.push_back(hobby_name_node); + TTypeNode hobby_level_node; + hobby_level_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_level_scalar; + hobby_level_scalar.__set_type(TPrimitiveType::INT); + hobby_level_node.__set_scalar_type(hobby_level_scalar); + type.types.push_back(hobby_level_node); + tslot_desc.__set_slotType(type); + } else { + // 普通类型 + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(types[i]); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } + tslot_desc.__set_id(i); + tslot_desc.__set_parent(0); + tslot_desc.__set_colName(table_column_names[i]); + tslot_desc.__set_columnPos(table_column_positions[i]); + tslot_desc.__set_byteOffset(0); + tslot_desc.__set_nullIndicatorByte(0); + tslot_desc.__set_nullIndicatorBit(-1); + tslot_desc.__set_slotIdx(0); + tslot_desc.__set_isMaterialized(true); + + // Set Iceberg field ID (col_unique_id) + int iceberg_field_id = get_iceberg_field_id(table_column_names[i]); + if (iceberg_field_id > 0) { + tslot_desc.__set_col_unique_id(iceberg_field_id); + } + + // Use configuration to set column_access_paths + for (const auto& config : access_configs) { + set_column_access_paths(tslot_desc, config); + } + + t_desc_table.slotDescriptors.push_back(tslot_desc); + } + t_desc_table.__isset.slotDescriptors = true; + TTupleDescriptor t_tuple_desc; + t_tuple_desc.__set_id(0); + t_tuple_desc.__set_byteSize(16); + t_tuple_desc.__set_numNullBytes(0); + t_tuple_desc.__set_tableId(0); + t_tuple_desc.__isset.tableId = true; + t_desc_table.tupleDescriptors.push_back(t_tuple_desc); + }; + + create_table_desc(t_desc_table, t_table_desc, column_names, column_positions, column_types); + EXPECT_TRUE(DescriptorTbl::create(&obj_pool, t_desc_table, desc_tbl).ok()); + return (*desc_tbl)->get_tuple_descriptor(0); + } + + // Helper function: set column access paths on a slot descriptor + void set_column_access_paths(TSlotDescriptor& tslot_desc, + const ColumnAccessPathConfig& config) { + if (config.column_name != tslot_desc.colName) { + return; // Not the target column, skip + } + + // Set all_column_access_paths + if (!config.all_column_paths.empty()) { + std::vector access_paths; + for (const auto& path_vector : config.all_column_paths) { + TColumnAccessPath access_path; + access_path.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path; + data_path.__set_path(path_vector); + access_path.__set_data_access_path(data_path); + access_paths.push_back(access_path); + } + tslot_desc.__set_all_access_paths(access_paths); + } + + // Set predicate_column_access_paths + if (!config.predicate_paths.empty()) { + std::vector access_paths; + for (const auto& path_vector : config.predicate_paths) { + TColumnAccessPath access_path; + access_path.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path; + data_path.__set_path(path_vector); + access_path.__set_data_access_path(data_path); + access_paths.push_back(access_path); + } + tslot_desc.__set_predicate_access_paths(access_paths); + } + } + + std::unique_ptr cache; + cctz::time_zone timezone_obj; + + // Helper function: create and setup ParquetReader + std::tuple, const FieldDescriptor*> create_parquet_reader( + const std::string& test_file) { + // Open the Iceberg Parquet test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + return {nullptr, nullptr}; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_PARQUET; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create ParquetReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = + ParquetReader::create_unique(&profile, scan_params, scan_range, 1024, &ctz, nullptr, + &runtime_state, cache.get()); + if (!generic_reader) { + return {nullptr, nullptr}; + } + + // Set file reader for the generic reader + auto parquet_reader = static_cast(generic_reader.get()); + parquet_reader->set_file_reader(file_reader); + + const FieldDescriptor* field_desc = nullptr; + st = parquet_reader->get_file_metadata_schema(&field_desc); + if (!st.ok() || !field_desc) { + return {nullptr, nullptr}; + } + + // Create IcebergParquetReader + auto iceberg_reader = std::make_unique( + std::move(generic_reader), &profile, &runtime_state, scan_params, scan_range, + nullptr, nullptr, cache.get()); + + return {std::move(iceberg_reader), field_desc}; + } + + // Helper function: create and setup OrcReader + std::tuple, const orc::Type*> create_orc_reader( + const std::string& test_file) { + // Open the Iceberg Orc test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + return {nullptr, nullptr}; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_ORC; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create OrcReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = + OrcReader::create_unique(&profile, &runtime_state, scan_params, scan_range, 1024, + "CST", nullptr, cache.get()); + if (!generic_reader) { + return {nullptr, nullptr}; + } + + auto orc_reader = static_cast(generic_reader.get()); + // Get FieldDescriptor from Orc file + const orc::Type* orc_type_ptr = nullptr; + st = orc_reader->get_file_type(&orc_type_ptr); + if (!st.ok() || !orc_type_ptr) { + return {nullptr, nullptr}; + } + + // Create IcebergOrcReader + auto iceberg_reader = std::make_unique( + std::move(generic_reader), &profile, &runtime_state, scan_params, scan_range, + nullptr, nullptr, cache.get()); + + return {std::move(iceberg_reader), orc_type_ptr}; + } + + // Helper function: run Parquet test with different column ID extraction methods + void run_parquet_test(const std::vector& table_column_names, + const std::vector& access_configs, + const std::set& expected_column_ids, + const std::set& expected_filter_column_ids, + bool use_top_level_method = false, bool should_skip_assertion = false) { + std::string test_file = + "./be/test/exec/test_data/nested_user_profiles_iceberg_parquet/data/" + "00000-9-a7e0135f-d581-40e4-8d56-a929aded99e4-0-00001.parquet"; + + auto [iceberg_reader, field_desc] = create_parquet_reader(test_file); + if (!iceberg_reader || !field_desc) { + GTEST_SKIP() << "Test file not found or failed to create reader: " << test_file; + return; + } + + // Create tuple descriptor based on full schema + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + + // Define all columns according to the schema + std::vector all_table_column_names = {"id", "name", + "profile", "tags", + "friends", "recent_activity", + "attributes", "complex_attributes"}; + std::vector all_table_column_positions = {0, 1, 2, 3, 4, 5, 6, 7}; + std::vector all_table_column_types = { + TPrimitiveType::BIGINT, // id + TPrimitiveType::STRING, // name + TPrimitiveType::STRUCT, // profile + TPrimitiveType::ARRAY, // tags + TPrimitiveType::ARRAY, // friends + TPrimitiveType::ARRAY, // recent_activity + TPrimitiveType::MAP, // attributes + TPrimitiveType::MAP // complex_attributes + }; + + std::vector table_column_positions; + std::vector table_column_types; + for (const auto& col_name : table_column_names) { + auto it = std::find(all_table_column_names.begin(), all_table_column_names.end(), + col_name); + if (it != all_table_column_names.end()) { + int idx = std::distance(all_table_column_names.begin(), it); + table_column_positions.push_back(idx); + table_column_types.push_back(all_table_column_types[idx]); + } + } + + const TupleDescriptor* tuple_descriptor = create_tuple_descriptor( + &desc_tbl, obj_pool, t_desc_table, t_table_desc, table_column_names, + table_column_positions, table_column_types, access_configs); + + // Execute test based on method choice + ColumnIdResult actual_result; + if (use_top_level_method) { + // actual_result = IcebergParquetReader::_create_column_ids_by_top_level_col_index( + // field_desc, tuple_descriptor); + } else { + actual_result = IcebergParquetReader::_create_column_ids(field_desc, tuple_descriptor); + } + + if (!should_skip_assertion) { + EXPECT_EQ(actual_result.column_ids, expected_column_ids); + EXPECT_EQ(actual_result.filter_column_ids, expected_filter_column_ids); + } + } + + // Helper function: run Orc test with different column ID extraction methods + void run_orc_test(const std::vector& table_column_names, + const std::vector& access_configs, + const std::set& expected_column_ids, + const std::set& expected_filter_column_ids, + bool use_top_level_method = false, bool should_skip_assertion = false) { + std::string test_file = + "./be/test/exec/test_data/nested_user_profiles_iceberg_orc/data/" + "00000-8-5a144c37-16a4-47c6-96db-0007175b5c90-0-00001.orc"; + + auto [iceberg_reader, orc_type] = create_orc_reader(test_file); + if (!iceberg_reader || !orc_type) { + GTEST_SKIP() << "Test file not found or failed to create reader: " << test_file; + return; + } + + // Create tuple descriptor based on full schema + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + + // Define all columns according to the schema + std::vector all_table_column_names = {"id", "name", + "profile", "tags", + "friends", "recent_activity", + "attributes", "complex_attributes"}; + std::vector all_table_column_positions = {0, 1, 2, 3, 4, 5, 6, 7}; + std::vector all_table_column_types = { + TPrimitiveType::BIGINT, // id + TPrimitiveType::STRING, // name + TPrimitiveType::STRUCT, // profile + TPrimitiveType::ARRAY, // tags + TPrimitiveType::ARRAY, // friends + TPrimitiveType::ARRAY, // recent_activity + TPrimitiveType::MAP, // attributes + TPrimitiveType::MAP // complex_attributes + }; + + std::vector table_column_positions; + std::vector table_column_types; + for (const auto& col_name : table_column_names) { + auto it = std::find(all_table_column_names.begin(), all_table_column_names.end(), + col_name); + if (it != all_table_column_names.end()) { + int idx = std::distance(all_table_column_names.begin(), it); + table_column_positions.push_back(idx); + table_column_types.push_back(all_table_column_types[idx]); + } + } + + const TupleDescriptor* tuple_descriptor = create_tuple_descriptor( + &desc_tbl, obj_pool, t_desc_table, t_table_desc, table_column_names, + table_column_positions, table_column_types, access_configs); + + // Execute test based on method choice + ColumnIdResult actual_result; + if (use_top_level_method) { + // actual_result = IcebergOrcReader::_create_column_ids_by_top_level_col_index( + // orc_type, tuple_descriptor); + } else { + actual_result = IcebergOrcReader::_create_column_ids(orc_type, tuple_descriptor); + } + + if (!should_skip_assertion) { + EXPECT_EQ(actual_result.column_ids, expected_column_ids); + EXPECT_EQ(actual_result.filter_column_ids, expected_filter_column_ids); + } + } +}; + +TEST_F(IcebergReaderCreateColumnIdsTest, test_create_column_ids_1) { + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {{"3", "9", "14", "15"}, + {"3", "9", "14", "16"}, + {"3", "10", "17"}, + {"3", "11", "*", "23"}}; + access_config.predicate_paths = {{"3", "9", "14", "15"}, {"3", "10", "17"}}; + + std::vector table_column_names = {"name", "profile"}; + // column_ids should contain all necessary column IDs (set automatically deduplicates) + std::set expected_column_ids = {2, 3, 4, 7, 8, 9, 10, 11, 15, 16, 18}; + std::set expected_filter_column_ids = {3, 4, 7, 8, 10, 11}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); +} + +TEST_F(IcebergReaderCreateColumnIdsTest, test_create_column_ids_2) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 0: struct (table/root) + // 1: id (int64) + // 2: name (string) + // 3: profile (struct) + // 4: address (struct) + // 5: street (string) + // 6: city (string) + // 7: coordinates (struct) + // 8: lat (double) + // 9: lng (double) + // 10: contact (struct) + // 11: email (string) + // 12: phone (struct) + // 13: country_code (string) + // 14: number (string) + // 15: hobbies (list/array) + // 16: element (struct) + // 17: name (string) + // 18: level (int32) + + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {{"3"}}; + access_config.predicate_paths = {{"3", "9", "14", "15"}, {"3", "10", "17"}}; + + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18}; + std::set expected_filter_column_ids = {3, 4, 7, 8, 10, 11}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); +} + +TEST_F(IcebergReaderCreateColumnIdsTest, test_create_column_ids_3) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 0: struct (table/root) + // 1: id (int64) + // 2: name (string) + // 3: profile (struct) + // 4: address (struct) + // 5: street (string) + // 6: city (string) + // 7: coordinates (struct) + // 8: lat (double) + // 9: lng (double) + // 10: contact (struct) + // 11: email (string) + // 12: phone (struct) + // 13: country_code (string) + // 14: number (string) + // 15: hobbies (list/array) + // 16: element (struct) + // 17: name (string) + // 18: level (int32) + + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {{"3", "10"}, {"3", "9"}}; + access_config.predicate_paths = {{"3", "9", "14"}, {"3", "10", "17"}}; + + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; + std::set expected_filter_column_ids = {3, 4, 7, 8, 9, 10, 11}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); +} + +TEST_F(IcebergReaderCreateColumnIdsTest, test_create_column_ids_4) { + ColumnAccessPathConfig access_config; + access_config.column_name = "profile"; + + access_config.all_column_paths = {}; + access_config.predicate_paths = {}; + + std::vector table_column_names = {"name", "profile"}; + std::set expected_column_ids = {2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18}; + std::set expected_filter_column_ids = {}; + + run_parquet_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, {access_config}, expected_column_ids, + expected_filter_column_ids); +} + +TEST_F(IcebergReaderCreateColumnIdsTest, test_create_column_ids_5) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 19: tags (array) + // 20: element (string) + // 21: friends (array) + // 22: element (struct) + // 23: user_id (bigint) + // 24: nickname (string) + // 25: friendship_level (int) + // 26: recent_activity (array) + // 27: element (struct) + // 28: action (string) + // 29: details (array) + // 30: element (struct) + // 31: key (string) + // 32: value (string) + + std::vector access_configs; + + { + ColumnAccessPathConfig access_config; + access_config.column_name = "friends"; + + access_config.all_column_paths = {{"5", "*", "27"}, {"5", "*", "28"}}; + access_config.predicate_paths = { + {"5", "*", "27"}, + }; + access_configs.push_back(access_config); + } + + { + ColumnAccessPathConfig access_config; + access_config.column_name = "recent_activity"; + + access_config.all_column_paths = {{"6", "*", "30"}, {"6", "*", "31", "*", "34"}}; + access_config.predicate_paths = { + {"6", "*", "30"}, + }; + access_configs.push_back(access_config); + } + + std::vector table_column_names = {"name", "friends", "recent_activity"}; + std::set expected_column_ids = {2, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32}; + std::set expected_filter_column_ids = {21, 22, 24, 26, 27, 28}; + + run_parquet_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + run_orc_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); +} + +TEST_F(IcebergReaderCreateColumnIdsTest, test_create_column_ids_6) { + // ORC column IDs are assigned in a tree-like incremental manner: the root node is 0, and child nodes increase sequentially. + // Currently, Parquet uses a similar design. + // 33: attributes (map) + // 34: key (string) + // 35: value (string) + // 36: complex_attributes (map) + // 37: key (string) + // 38: value (struct) + // 39: metadata (struct) + // 40: version (string) + // 41: created_time (timestamp) + // 42: last_updated (timestamp) + // 43: quality_score (double) + // 44: historical_scores (array) + // 45: element (struct) + // 46: period (string) + // 47: score (double) + // 48: components (array) + // 49: element (struct) + // 50: component_name (string) + // 51: weight (float) + // 52: sub_scores (map) + // 53: key (string) + // 54: value (double) + // 55: trends (struct) + // 56: direction (string) + // 57: magnitude (double) + // 58: confidence_interval (struct) + // 59: lower (double) + // 60: upper (double) + // 61: hierarchical_data (map) + // 62: key (string) + // 63: value (struct) + // 64: category (string) + // 65: sub_items (array) + // 66: element (struct) + // 67: item_id (bigint) + // 68: properties (map) + // 69: key (string) + // 70: value (string) + // 71: metrics (struct) + // 72: value (double) + // 73: unit (string) + // 74: summary (struct) + // 75: total_count (int) + // 76: average_value (double) + // 77: validation_rules (struct) + // 78: required (boolean) + // 79: constraints (array) + // 80: element (struct) + // 81: rule_type (string) + // 82: parameters (map) + // 83: key (string) + // 84: value (string) + // 85: error_message (string) + // 86: complex_constraint (struct) + // 87: logic_operator (string) + // 88: operands (array) + // 89: element (struct) + // 90: field_path (string) + // 91: operator (string) + // 92: comparison_value (string) + std::vector access_configs; + + { + ColumnAccessPathConfig access_config; + access_config.column_name = "complex_attributes"; + + access_config.all_column_paths = {{"8", "*", "39", "43"}, + {"8", "*", "40", "*", "50", "*", "55"}, + {"8", "*", "41", "VALUES"}, + {"8", "VALUES", "42", "79", "*", "83", "KEYS"}}; + access_config.predicate_paths = {{"8", "*", "39", "43"}}; + access_configs.push_back(access_config); + } + + { + std::vector table_column_names = {"name", "complex_attributes"}; + // parquet values should access keys + std::set expected_column_ids = {2, 36, 37, 38, 39, 40, 44, 45, 48, 49, 52, 53, + 54, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 79, 80, 82, 83}; + std::set expected_filter_column_ids = {36, 37, 38, 39, 40}; + + run_parquet_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + } + + { + std::vector table_column_names = {"name", "complex_attributes"}; + // orc values should access keys because need to deduplicate by keys + std::set expected_column_ids = {2, 36, 37, 38, 39, 40, 44, 45, 48, 49, 52, 53, + 54, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 79, 80, 82, 83}; + std::set expected_filter_column_ids = {36, 37, 38, 39, 40}; + + run_orc_test(table_column_names, access_configs, expected_column_ids, + expected_filter_column_ids); + } +} + +} // namespace doris::vectorized \ No newline at end of file diff --git a/be/test/vec/exec/format/table/iceberg/iceberg_reader_test.cpp b/be/test/vec/exec/format/table/iceberg/iceberg_reader_test.cpp new file mode 100644 index 00000000000000..008ede4cf9b4f9 --- /dev/null +++ b/be/test/vec/exec/format/table/iceberg/iceberg_reader_test.cpp @@ -0,0 +1,733 @@ +// 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/exec/format/table/iceberg_reader.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "common/object_pool.h" +#include "exec/olap_common.h" +#include "io/fs/file_meta_cache.h" +#include "io/fs/file_reader_writer_fwd.h" +#include "io/fs/file_system.h" +#include "io/fs/local_file_system.h" +#include "runtime/descriptors.h" +#include "runtime/runtime_state.h" +#include "util/timezone_utils.h" +#include "vec/columns/column.h" +#include "vec/columns/column_array.h" +#include "vec/columns/column_nullable.h" +#include "vec/columns/column_struct.h" +#include "vec/core/block.h" +#include "vec/core/column_with_type_and_name.h" +#include "vec/data_types/data_type.h" +#include "vec/data_types/data_type_array.h" +#include "vec/data_types/data_type_factory.hpp" +#include "vec/data_types/data_type_nullable.h" +#include "vec/data_types/data_type_number.h" +#include "vec/data_types/data_type_string.h" +#include "vec/data_types/data_type_struct.h" +#include "vec/exec/format/parquet/vparquet_reader.h" + +namespace doris::vectorized { + +class IcebergReaderTest : public ::testing::Test { +protected: + void SetUp() override { + cache = std::make_unique(1024); + + // Setup timezone + doris::TimezoneUtils::find_cctz_time_zone(doris::TimezoneUtils::default_time_zone, + timezone_obj); + } + + void TearDown() override { cache.reset(); } + + // Helper function to create complex struct types for testing + void create_complex_struct_types(DataTypePtr& coordinates_struct_type, + DataTypePtr& address_struct_type, + DataTypePtr& phone_struct_type, + DataTypePtr& contact_struct_type, + DataTypePtr& hobby_element_struct_type, + DataTypePtr& hobbies_array_type, + DataTypePtr& profile_struct_type, DataTypePtr& name_type) { + // Create name column type (direct field) + name_type = make_nullable(std::make_shared()); + + // First create coordinates struct type + std::vector coordinates_types = { + make_nullable(std::make_shared()), // lat (field ID 10) + make_nullable(std::make_shared()) // lng (field ID 11) + }; + std::vector coordinates_names = {"lat", "lng"}; + coordinates_struct_type = make_nullable( + std::make_shared(coordinates_types, coordinates_names)); + + // Create address struct type (with street, city, coordinates) + std::vector address_types = { + make_nullable(std::make_shared()), // street (field ID 7) + make_nullable(std::make_shared()), // city (field ID 8) + coordinates_struct_type // coordinates (field ID 9) + }; + std::vector address_names = {"street", "city", "coordinates"}; + address_struct_type = + make_nullable(std::make_shared(address_types, address_names)); + + // Create phone struct type + std::vector phone_types = { + make_nullable(std::make_shared()), // country_code (field ID 14) + make_nullable(std::make_shared()) // number (field ID 15) + }; + std::vector phone_names = {"country_code", "number"}; + phone_struct_type = + make_nullable(std::make_shared(phone_types, phone_names)); + + // Create contact struct type (with email, phone) + std::vector contact_types = { + make_nullable(std::make_shared()), // email (field ID 12) + phone_struct_type // phone (field ID 13) + }; + std::vector contact_names = {"email", "phone"}; + contact_struct_type = + make_nullable(std::make_shared(contact_types, contact_names)); + + // Create hobby element struct type for array elements + std::vector hobby_element_types = { + make_nullable(std::make_shared()), // name (field ID 17) + make_nullable(std::make_shared()) // level (field ID 18) + }; + std::vector hobby_element_names = {"name", "level"}; + hobby_element_struct_type = make_nullable( + std::make_shared(hobby_element_types, hobby_element_names)); + + // Create hobbies array type + hobbies_array_type = + make_nullable(std::make_shared(hobby_element_struct_type)); + + // Create complete profile struct type (with address, contact, hobbies) + std::vector profile_types = { + address_struct_type, // address (field ID 4) + contact_struct_type, // contact (field ID 5) + hobbies_array_type // hobbies (field ID 6) + }; + std::vector profile_names = {"address", "contact", "hobbies"}; + profile_struct_type = + make_nullable(std::make_shared(profile_types, profile_names)); + } + + // Helper function to create tuple descriptor + const TupleDescriptor* create_tuple_descriptor(DescriptorTbl** desc_tbl, ObjectPool& obj_pool, + TDescriptorTable& t_desc_table, + TTableDescriptor& t_table_desc) { + std::vector table_column_names = {"name", "profile"}; + std::vector table_column_types = { + TPrimitiveType::STRING, TPrimitiveType::STRUCT // profile uses STRUCT type + }; + + // Create table descriptor with complex schema + auto create_table_desc = [](TDescriptorTable& t_desc_table, TTableDescriptor& t_table_desc, + const std::vector& table_column_names, + const std::vector& types) { + t_table_desc.__set_id(0); + t_table_desc.__set_tableType(TTableType::OLAP_TABLE); + t_table_desc.__set_numCols(0); + t_table_desc.__set_numClusteringCols(0); + t_desc_table.tableDescriptors.push_back(t_table_desc); + t_desc_table.__isset.tableDescriptors = true; + // iceberg_id must correspond to table_column_names order + std::vector iceberg_ids = {2, 3}; // name:2, profile:3 + for (int i = 0; i < table_column_names.size(); i++) { + TSlotDescriptor tslot_desc; + tslot_desc.__set_id(i); + tslot_desc.__set_parent(0); + tslot_desc.__set_col_unique_id(iceberg_ids[i]); + TTypeDesc type; + if (table_column_names[i] == "profile") { + // STRUCT/ARRAY nodes set contains_nulls; SCALAR nodes do not + TTypeNode struct_node; + struct_node.__set_type(TTypeNodeType::STRUCT); + std::vector struct_fields; + TStructField address_field; + address_field.__set_name("address"); + address_field.__set_contains_null(true); + struct_fields.push_back(address_field); + TStructField contact_field; + contact_field.__set_name("contact"); + contact_field.__set_contains_null(true); + struct_fields.push_back(contact_field); + TStructField hobbies_field; + hobbies_field.__set_name("hobbies"); + hobbies_field.__set_contains_null(true); + struct_fields.push_back(hobbies_field); + struct_node.__set_struct_fields(struct_fields); + type.types.push_back(struct_node); + TTypeNode address_node; + address_node.__set_type(TTypeNodeType::STRUCT); + std::vector address_fields; + TStructField street_field; + street_field.__set_name("street"); + street_field.__set_contains_null(true); + address_fields.push_back(street_field); + TStructField city_field; + city_field.__set_name("city"); + city_field.__set_contains_null(true); + address_fields.push_back(city_field); + TStructField coordinates_field; + coordinates_field.__set_name("coordinates"); + coordinates_field.__set_contains_null(true); + address_fields.push_back(coordinates_field); + address_node.__set_struct_fields(address_fields); + type.types.push_back(address_node); + TTypeNode street_node; + street_node.__set_type(TTypeNodeType::SCALAR); + TScalarType street_scalar; + street_scalar.__set_type(TPrimitiveType::STRING); + street_node.__set_scalar_type(street_scalar); + type.types.push_back(street_node); + TTypeNode city_node; + city_node.__set_type(TTypeNodeType::SCALAR); + TScalarType city_scalar; + city_scalar.__set_type(TPrimitiveType::STRING); + city_node.__set_scalar_type(city_scalar); + type.types.push_back(city_node); + TTypeNode coordinates_node; + coordinates_node.__set_type(TTypeNodeType::STRUCT); + std::vector coordinates_fields; + TStructField lat_field; + lat_field.__set_name("lat"); + lat_field.__set_contains_null(true); + coordinates_fields.push_back(lat_field); + TStructField lng_field; + lng_field.__set_name("lng"); + lng_field.__set_contains_null(true); + coordinates_fields.push_back(lng_field); + coordinates_node.__set_struct_fields(coordinates_fields); + type.types.push_back(coordinates_node); + TTypeNode lat_node; + lat_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lat_scalar; + lat_scalar.__set_type(TPrimitiveType::DOUBLE); + lat_node.__set_scalar_type(lat_scalar); + type.types.push_back(lat_node); + TTypeNode lng_node; + lng_node.__set_type(TTypeNodeType::SCALAR); + TScalarType lng_scalar; + lng_scalar.__set_type(TPrimitiveType::DOUBLE); + lng_node.__set_scalar_type(lng_scalar); + type.types.push_back(lng_node); + TTypeNode contact_node; + contact_node.__set_type(TTypeNodeType::STRUCT); + std::vector contact_fields; + TStructField email_field; + email_field.__set_name("email"); + email_field.__set_contains_null(true); + contact_fields.push_back(email_field); + TStructField phone_field; + phone_field.__set_name("phone"); + phone_field.__set_contains_null(true); + contact_fields.push_back(phone_field); + contact_node.__set_struct_fields(contact_fields); + type.types.push_back(contact_node); + TTypeNode email_node; + email_node.__set_type(TTypeNodeType::SCALAR); + TScalarType email_scalar; + email_scalar.__set_type(TPrimitiveType::STRING); + email_node.__set_scalar_type(email_scalar); + type.types.push_back(email_node); + TTypeNode phone_node; + phone_node.__set_type(TTypeNodeType::STRUCT); + std::vector phone_fields; + TStructField country_code_field; + country_code_field.__set_name("country_code"); + country_code_field.__set_contains_null(true); + phone_fields.push_back(country_code_field); + TStructField number_field; + number_field.__set_name("number"); + number_field.__set_contains_null(true); + phone_fields.push_back(number_field); + phone_node.__set_struct_fields(phone_fields); + type.types.push_back(phone_node); + TTypeNode country_code_node; + country_code_node.__set_type(TTypeNodeType::SCALAR); + TScalarType country_code_scalar; + country_code_scalar.__set_type(TPrimitiveType::STRING); + country_code_node.__set_scalar_type(country_code_scalar); + type.types.push_back(country_code_node); + TTypeNode number_node; + number_node.__set_type(TTypeNodeType::SCALAR); + TScalarType number_scalar; + number_scalar.__set_type(TPrimitiveType::STRING); + number_node.__set_scalar_type(number_scalar); + type.types.push_back(number_node); + TTypeNode hobbies_node; + hobbies_node.__set_type(TTypeNodeType::ARRAY); + hobbies_node.__set_contains_nulls({true}); + type.types.push_back(hobbies_node); + TTypeNode hobby_element_node; + hobby_element_node.__set_type(TTypeNodeType::STRUCT); + std::vector hobby_element_fields; + TStructField hobby_name_field; + hobby_name_field.__set_name("name"); + hobby_name_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_name_field); + TStructField hobby_level_field; + hobby_level_field.__set_name("level"); + hobby_level_field.__set_contains_null(true); + hobby_element_fields.push_back(hobby_level_field); + hobby_element_node.__set_struct_fields(hobby_element_fields); + type.types.push_back(hobby_element_node); + TTypeNode hobby_name_node; + hobby_name_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_name_scalar; + hobby_name_scalar.__set_type(TPrimitiveType::STRING); + hobby_name_node.__set_scalar_type(hobby_name_scalar); + type.types.push_back(hobby_name_node); + TTypeNode hobby_level_node; + hobby_level_node.__set_type(TTypeNodeType::SCALAR); + TScalarType hobby_level_scalar; + hobby_level_scalar.__set_type(TPrimitiveType::INT); + hobby_level_node.__set_scalar_type(hobby_level_scalar); + type.types.push_back(hobby_level_node); + tslot_desc.__set_slotType(type); + } else { + // Regular type + TTypeNode node; + node.__set_type(TTypeNodeType::SCALAR); + TScalarType scalar_type; + scalar_type.__set_type(types[i]); + node.__set_scalar_type(scalar_type); + type.types.push_back(node); + tslot_desc.__set_slotType(type); + } + tslot_desc.__set_columnPos(0); + tslot_desc.__set_byteOffset(0); + tslot_desc.__set_nullIndicatorByte(0); + tslot_desc.__set_nullIndicatorBit(-1); + tslot_desc.__set_colName(table_column_names[i]); + tslot_desc.__set_slotIdx(0); + tslot_desc.__set_isMaterialized(true); + // Set column_access_paths only for the profile field + if (table_column_names[i] == "profile") { + std::vector access_paths; + // address.coordinates.lat + TColumnAccessPath path1; + path1.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path1; + data_path1.__set_path({"3", "4", "9", "10"}); + path1.__set_data_access_path(data_path1); + access_paths.push_back(path1); + // address.coordinates.lng + TColumnAccessPath path2; + path2.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path2; + data_path2.__set_path({"3", "4", "9", "11"}); + path2.__set_data_access_path(data_path2); + access_paths.push_back(path2); + // contact.email + TColumnAccessPath path3; + path3.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path3; + data_path3.__set_path({"3", "5", "12"}); + path3.__set_data_access_path(data_path3); + access_paths.push_back(path3); + // hobbies[].element.level + TColumnAccessPath path4; + path4.__set_type(doris::TAccessPathType::DATA); + TDataAccessPath data_path4; + data_path4.__set_path({"3", "6", "*", "18"}); + path4.__set_data_access_path(data_path4); + access_paths.push_back(path4); + tslot_desc.__set_all_access_paths(access_paths); + } + t_desc_table.slotDescriptors.push_back(tslot_desc); + } + t_desc_table.__isset.slotDescriptors = true; + TTupleDescriptor t_tuple_desc; + t_tuple_desc.__set_id(0); + t_tuple_desc.__set_byteSize(16); + t_tuple_desc.__set_numNullBytes(0); + t_tuple_desc.__set_tableId(0); + t_tuple_desc.__isset.tableId = true; + t_desc_table.tupleDescriptors.push_back(t_tuple_desc); + }; + + create_table_desc(t_desc_table, t_table_desc, table_column_names, table_column_types); + EXPECT_TRUE(DescriptorTbl::create(&obj_pool, t_desc_table, desc_tbl).ok()); + return (*desc_tbl)->get_tuple_descriptor(0); + } + + // Helper function to verify test results + void verify_test_results(Block& block, size_t read_rows) { + // Verify that we read some data + EXPECT_GT(read_rows, 0) << "Should read at least one row"; + EXPECT_EQ(block.rows(), read_rows); + + // Verify column count matches expected (2 columns: name, profile) + EXPECT_EQ(block.columns(), 2); + + // Verify column names and types + auto columns_with_names = block.get_columns_with_type_and_name(); + std::vector expected_column_names = {"name", "profile"}; + for (size_t i = 0; i < expected_column_names.size(); i++) { + EXPECT_EQ(columns_with_names[i].name, expected_column_names[i]); + } + + // Verify column types + EXPECT_TRUE(columns_with_names[0].type->get_name().find("String") != + std::string::npos); // name is STRING + EXPECT_TRUE(columns_with_names[1].type->get_name().find("Struct") != + std::string::npos); // profile is STRUCT + + // Print row count for each column and nested subcolumns + std::cout << "Block rows: " << block.rows() << std::endl; + + // Helper function to recursively print column row counts and check size > 0 + std::function + print_column_rows = [&](const ColumnPtr& col, const DataTypePtr& type, + const std::string& name, int depth) { + std::string indent(depth * 2, ' '); + std::cout << indent << name << " row count: " << col->size() << std::endl; + EXPECT_GT(col->size(), 0) << name << " column/subcolumn size should be > 0"; + + // Check if it's a nullable column + if (const auto* nullable_col = typeid_cast(col.get())) { + auto nested_type = + assert_cast(type.get())->get_nested_type(); + + // Only add ".nested" suffix for non-leaf (complex) nullable columns + // Leaf columns like String, Int, etc. should not get the ".nested" suffix + bool is_complex_type = + (typeid_cast(nested_type.get()) != + nullptr) || + (typeid_cast(nested_type.get()) != nullptr) || + (typeid_cast(nested_type.get()) != nullptr); + + std::string nested_name = is_complex_type ? name + ".nested" : name; + print_column_rows(nullable_col->get_nested_column_ptr(), nested_type, + nested_name, depth + (is_complex_type ? 1 : 0)); + } + // Check if it's a struct column + else if (const auto* struct_col = typeid_cast(col.get())) { + auto struct_type = assert_cast(type.get()); + for (size_t i = 0; i < struct_col->tuple_size(); ++i) { + std::string field_name = struct_type->get_element_name(i); + auto field_type = struct_type->get_element(i); + print_column_rows(struct_col->get_column_ptr(i), field_type, + name + "." + field_name, depth + 1); + } + } + // Check if it's an array column + else if (const auto* array_col = typeid_cast(col.get())) { + auto array_type = assert_cast(type.get()); + auto element_type = array_type->get_nested_type(); + print_column_rows(array_col->get_data_ptr(), element_type, name + ".data", + depth + 1); + } + }; + + // Print row counts for all columns + for (size_t i = 0; i < block.columns(); ++i) { + const auto& column_with_name = block.get_by_position(i); + print_column_rows(column_with_name.column, column_with_name.type, column_with_name.name, + 0); + EXPECT_EQ(column_with_name.column->size(), block.rows()) + << "Column " << column_with_name.name << " size mismatch"; + } + } + + std::unique_ptr cache; + cctz::time_zone timezone_obj; +}; + +// Test reading real Iceberg Parquet file using IcebergTableReader +TEST_F(IcebergReaderTest, read_iceberg_parquet_file) { + // Read only: name, profile.address.coordinates.lat, profile.address.coordinates.lng, profile.contact.email + // Setup table descriptor for test columns with new schema: + /** + Schema: + message table { + required int64 id = 1; + required binary name (STRING) = 2; + required group profile = 3 { + optional group address = 4 { + optional binary street (STRING) = 7; + optional binary city (STRING) = 8; + optional group coordinates = 9 { + optional double lat = 10; + optional double lng = 11; + } + } + optional group contact = 5 { + optional binary email (STRING) = 12; + optional group phone = 13 { + optional binary country_code (STRING) = 14; + optional binary number (STRING) = 15; + } + } + optional group hobbies (LIST) = 6 { + repeated group list { + optional group element = 16 { + optional binary name (STRING) = 17; + optional int32 level = 18; + } + } + } + } + } + */ + + // Open the Iceberg Parquet test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + std::string test_file = + "./be/test/exec/test_data/complex_user_profiles_iceberg_parquet/data/" + "00000-0-a0022aad-d3b6-4e73-b181-f0a09aac7034-0-00001.parquet"; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + GTEST_SKIP() << "Test file not found: " << test_file; + return; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_PARQUET; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create ParquetReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = ParquetReader::create_unique(&profile, scan_params, scan_range, 1024, + &ctz, nullptr, &runtime_state, cache.get()); + ASSERT_NE(generic_reader, nullptr); + + // Set file reader for the generic reader + auto parquet_reader = static_cast(generic_reader.get()); + parquet_reader->set_file_reader(file_reader); + + // Create IcebergParquetReader + auto iceberg_reader = std::make_unique( + std::move(generic_reader), &profile, &runtime_state, scan_params, scan_range, nullptr, + nullptr, cache.get()); + + // Create complex struct types using helper function + DataTypePtr coordinates_struct_type, address_struct_type, phone_struct_type; + DataTypePtr contact_struct_type, hobby_element_struct_type, hobbies_array_type; + DataTypePtr profile_struct_type, name_type; + create_complex_struct_types(coordinates_struct_type, address_struct_type, phone_struct_type, + contact_struct_type, hobby_element_struct_type, hobbies_array_type, + profile_struct_type, name_type); + + // Create tuple descriptor using helper function + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + const TupleDescriptor* tuple_descriptor = + create_tuple_descriptor(&desc_tbl, obj_pool, t_desc_table, t_table_desc); + + VExprContextSPtrs conjuncts; // Empty conjuncts for this test + std::vector table_col_names = {"name", "profile"}; + const RowDescriptor* row_descriptor = nullptr; + const std::unordered_map* colname_to_slot_id = nullptr; + const VExprContextSPtrs* not_single_slot_filter_conjuncts = nullptr; + const std::unordered_map* slot_id_to_filter_conjuncts = nullptr; + + st = iceberg_reader->init_reader(table_col_names, nullptr, conjuncts, tuple_descriptor, + row_descriptor, colname_to_slot_id, + not_single_slot_filter_conjuncts, slot_id_to_filter_conjuncts); + ASSERT_TRUE(st.ok()) << st; + + std::unordered_map> + partition_columns; + std::unordered_map missing_columns; + ASSERT_TRUE(iceberg_reader->set_fill_columns(partition_columns, missing_columns).ok()); + + // Create block for reading nested structure (not flattened) + Block block; + { + MutableColumnPtr name_column = name_type->create_column(); + block.insert(ColumnWithTypeAndName(std::move(name_column), name_type, "name")); + // Add profile column (nested struct) + MutableColumnPtr profile_column = profile_struct_type->create_column(); + block.insert( + ColumnWithTypeAndName(std::move(profile_column), profile_struct_type, "profile")); + } + + // Read data from the file + size_t read_rows = 0; + bool eof = false; + st = iceberg_reader->get_next_block(&block, &read_rows, &eof); + ASSERT_TRUE(st.ok()) << st; + + // Verify test results using helper function + verify_test_results(block, read_rows); +} + +// Test reading real Iceberg Orc file using IcebergTableReader +TEST_F(IcebergReaderTest, read_iceberg_orc_file) { + // Read only: name, profile.address.coordinates.lat, profile.address.coordinates.lng, profile.contact.email + // Setup table descriptor for test columns with new schema: + /** + Schema: + message table { + required int64 id = 1; + required binary name (STRING) = 2; + required group profile = 3 { + optional group address = 4 { + optional binary street (STRING) = 7; + optional binary city (STRING) = 8; + optional group coordinates = 9 { + optional double lat = 10; + optional double lng = 11; + } + } + optional group contact = 5 { + optional binary email (STRING) = 12; + optional group phone = 13 { + optional binary country_code (STRING) = 14; + optional binary number (STRING) = 15; + } + } + optional group hobbies (LIST) = 6 { + repeated group list { + optional group element = 16 { + optional binary name (STRING) = 17; + optional int32 level = 18; + } + } + } + } + } + */ + + // Open the Iceberg Orc test file + auto local_fs = io::global_local_filesystem(); + io::FileReaderSPtr file_reader; + std::string test_file = + "./be/test/exec/test_data/complex_user_profiles_iceberg_orc/data/" + "00000-0-e4897963-0081-4127-bebe-35dc7dc1edeb-0-00001.orc"; + auto st = local_fs->open_file(test_file, &file_reader); + if (!st.ok()) { + GTEST_SKIP() << "Test file not found: " << test_file; + return; + } + + // Setup runtime state + RuntimeState runtime_state((TQueryGlobals())); + + // Setup scan parameters + TFileScanRangeParams scan_params; + scan_params.format_type = TFileFormatType::FORMAT_ORC; + + TFileRangeDesc scan_range; + scan_range.start_offset = 0; + scan_range.size = file_reader->size(); // Read entire file + scan_range.path = test_file; + + // Create mock profile + RuntimeProfile profile("test_profile"); + + // Create OrcReader as the underlying file format reader + cctz::time_zone ctz; + TimezoneUtils::find_cctz_time_zone(TimezoneUtils::default_time_zone, ctz); + + auto generic_reader = OrcReader::create_unique(&profile, &runtime_state, scan_params, + scan_range, 1024, "CST", nullptr, cache.get()); + ASSERT_NE(generic_reader, nullptr); + + // Create IcebergOrcReader + auto iceberg_reader = std::make_unique( + std::move(generic_reader), &profile, &runtime_state, scan_params, scan_range, nullptr, + nullptr, cache.get()); + + // Create complex struct types using helper function + DataTypePtr coordinates_struct_type, address_struct_type, phone_struct_type; + DataTypePtr contact_struct_type, hobby_element_struct_type, hobbies_array_type; + DataTypePtr profile_struct_type, name_type; + create_complex_struct_types(coordinates_struct_type, address_struct_type, phone_struct_type, + contact_struct_type, hobby_element_struct_type, hobbies_array_type, + profile_struct_type, name_type); + + // Create tuple descriptor using helper function + DescriptorTbl* desc_tbl; + ObjectPool obj_pool; + TDescriptorTable t_desc_table; + TTableDescriptor t_table_desc; + const TupleDescriptor* tuple_descriptor = + create_tuple_descriptor(&desc_tbl, obj_pool, t_desc_table, t_table_desc); + + VExprContextSPtrs conjuncts; // Empty conjuncts for this test + std::vector table_col_names = {"name", "profile"}; + const RowDescriptor* row_descriptor = nullptr; + const std::unordered_map* colname_to_slot_id = nullptr; + const VExprContextSPtrs* not_single_slot_filter_conjuncts = nullptr; + const std::unordered_map* slot_id_to_filter_conjuncts = nullptr; + + st = iceberg_reader->init_reader(table_col_names, nullptr, conjuncts, tuple_descriptor, + row_descriptor, colname_to_slot_id, + not_single_slot_filter_conjuncts, slot_id_to_filter_conjuncts); + ASSERT_TRUE(st.ok()) << st; + + std::unordered_map> + partition_columns; + std::unordered_map missing_columns; + ASSERT_TRUE(iceberg_reader->set_fill_columns(partition_columns, missing_columns).ok()); + + // Create block for reading nested structure (not flattened) + Block block; + { + MutableColumnPtr name_column = name_type->create_column(); + block.insert(ColumnWithTypeAndName(std::move(name_column), name_type, "name")); + // Add profile column (nested struct) + MutableColumnPtr profile_column = profile_struct_type->create_column(); + block.insert( + ColumnWithTypeAndName(std::move(profile_column), profile_struct_type, "profile")); + } + + // Read data from the file + size_t read_rows = 0; + bool eof = false; + st = iceberg_reader->get_next_block(&block, &read_rows, &eof); + ASSERT_TRUE(st.ok()) << st; + + // Verify test results using helper function + verify_test_results(block, read_rows); +} + +} // namespace doris::vectorized diff --git a/contrib/apache-orc b/contrib/apache-orc index 70b673c7d29969..c0a2043f07115c 160000 --- a/contrib/apache-orc +++ b/contrib/apache-orc @@ -1 +1 @@ -Subproject commit 70b673c7d299690ced7c4c600fabaee9e1601198 +Subproject commit c0a2043f07115c4209abd49fba88ac1c7c084a12 diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java new file mode 100644 index 00000000000000..3df7baada4daa0 --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java @@ -0,0 +1,38 @@ +// 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. +// This file is copied from +// https://github.com/apache/impala/blob/branch-2.9.0/fe/src/main/java/org/apache/impala/TupleDescriptor.java +// and modified by Doris + +package org.apache.doris.analysis; + +import org.apache.doris.nereids.types.DataType; +import org.apache.doris.thrift.TColumnAccessPath; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.util.List; + +/** AccessPathInfo */ +@Data +@AllArgsConstructor +public class AccessPathInfo { + private DataType prunedType; + private List allAccessPaths; + private List predicateAccessPaths; +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java index ad7700f77ab62d..af0231c4f094b3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotDescriptor.java @@ -23,6 +23,7 @@ import org.apache.doris.catalog.Column; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.Type; +import org.apache.doris.thrift.TColumnAccessPath; import org.apache.doris.thrift.TSlotDescriptor; import com.google.common.base.MoreObjects; @@ -57,6 +58,10 @@ public class SlotDescriptor { private boolean isNullable; private boolean isAutoInc = false; private Expr virtualColumn = null; + private List allAccessPaths; + private List predicateAccessPaths; + private List displayAllAccessPaths; + private List displayPredicateAccessPaths; public SlotDescriptor(SlotId id, TupleDescriptor parent) { @@ -86,6 +91,38 @@ public List getSubColLables() { return this.subColPath; } + public List getAllAccessPaths() { + return allAccessPaths; + } + + public void setAllAccessPaths(List allAccessPaths) { + this.allAccessPaths = allAccessPaths; + } + + public List getPredicateAccessPaths() { + return predicateAccessPaths; + } + + public void setPredicateAccessPaths(List predicateAccessPaths) { + this.predicateAccessPaths = predicateAccessPaths; + } + + public List getDisplayAllAccessPaths() { + return displayAllAccessPaths; + } + + public void setDisplayAllAccessPaths(List displayAllAccessPaths) { + this.displayAllAccessPaths = displayAllAccessPaths; + } + + public List getDisplayPredicateAccessPaths() { + return displayPredicateAccessPaths; + } + + public void setDisplayPredicateAccessPaths(List displayPredicateAccessPaths) { + this.displayPredicateAccessPaths = displayPredicateAccessPaths; + } + public TupleDescriptor getParent() { return parent; } @@ -185,6 +222,12 @@ public TSlotDescriptor toThrift() { if (virtualColumn != null) { tSlotDescriptor.setVirtualColumnExpr(virtualColumn.treeToThrift()); } + if (allAccessPaths != null) { + tSlotDescriptor.setAllAccessPaths(allAccessPaths); + } + if (predicateAccessPaths != null) { + tSlotDescriptor.setPredicateAccessPaths(predicateAccessPaths); + } return tSlotDescriptor; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/FileScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/FileScanNode.java index 8578b0948979ab..46c69247bf1bb8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/FileScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/FileScanNode.java @@ -50,6 +50,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import java.util.Collections; @@ -185,6 +186,8 @@ public int compare(TFileRangeDesc o1, TFileRangeDesc o2) { } output.append(String.format("numNodes=%s", numNodes)).append("\n"); + printNestedColumns(output, prefix, getTupleDesc()); + // pushdown agg output.append(prefix).append(String.format("pushdown agg=%s", pushDownAggNoGroupingOp)); if (pushDownAggNoGroupingOp.equals(TPushAggOp.COUNT)) { @@ -210,6 +213,11 @@ protected void setDefaultValueExprs(TableIf tbl, TExpr tExpr = new TExpr(); tExpr.setNodes(Lists.newArrayList()); + Map nameToSlotDesc = Maps.newLinkedHashMap(); + for (SlotDescriptor slot : desc.getSlots()) { + nameToSlotDesc.put(slot.getColumn().getName(), slot); + } + for (Column column : getColumns()) { Expr expr; Expression expression; @@ -225,7 +233,12 @@ protected void setDefaultValueExprs(TableIf tbl, if (useVarcharAsNull) { expression = new NullLiteral(VarcharType.SYSTEM_DEFAULT); } else { - expression = new NullLiteral(DataType.fromCatalogType(column.getType())); + SlotDescriptor slotDescriptor = nameToSlotDesc.get(column.getName()); + // the nested type(map/array/struct) maybe pruned, + // we should use the pruned type to avoid be core + expression = new NullLiteral(DataType.fromCatalogType( + slotDescriptor == null ? column.getType() : slotDescriptor.getType() + )); } } else { expression = null; diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java index 09c9526f08d33d..5fb1b791ab6e77 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HMSExternalTable.java @@ -60,6 +60,7 @@ import org.apache.doris.nereids.trees.plans.algebra.CatalogRelation; import org.apache.doris.nereids.trees.plans.logical.LogicalFileScan.SelectedPartitions; import org.apache.doris.qe.GlobalVariable; +import org.apache.doris.qe.SessionVariable; import org.apache.doris.statistics.AnalysisInfo; import org.apache.doris.statistics.BaseAnalysisTask; import org.apache.doris.statistics.ColumnStatistic; @@ -67,6 +68,7 @@ import org.apache.doris.statistics.HMSAnalysisTask; import org.apache.doris.statistics.StatsType; import org.apache.doris.statistics.util.StatisticsUtil; +import org.apache.doris.thrift.TFileFormatType; import org.apache.doris.thrift.THiveTable; import org.apache.doris.thrift.TTableDescriptor; import org.apache.doris.thrift.TTableType; @@ -1203,6 +1205,44 @@ public List getSupportedSysTables() { } } + public TFileFormatType getFileFormatType(SessionVariable sessionVariable) throws UserException { + TFileFormatType type = null; + Table table = getRemoteTable(); + String inputFormatName = table.getSd().getInputFormat(); + String hiveFormat = HiveMetaStoreClientHelper.HiveFileFormat.getFormat(inputFormatName); + if (hiveFormat.equals(HiveMetaStoreClientHelper.HiveFileFormat.PARQUET.getDesc())) { + type = TFileFormatType.FORMAT_PARQUET; + } else if (hiveFormat.equals(HiveMetaStoreClientHelper.HiveFileFormat.ORC.getDesc())) { + type = TFileFormatType.FORMAT_ORC; + } else if (hiveFormat.equals(HiveMetaStoreClientHelper.HiveFileFormat.TEXT_FILE.getDesc())) { + String serDeLib = table.getSd().getSerdeInfo().getSerializationLib(); + if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_JSON_SERDE) + || serDeLib.equals(HiveMetaStoreClientHelper.LEGACY_HIVE_JSON_SERDE)) { + type = TFileFormatType.FORMAT_JSON; + } else if (serDeLib.equals(HiveMetaStoreClientHelper.OPENX_JSON_SERDE)) { + if (!sessionVariable.isReadHiveJsonInOneColumn()) { + type = TFileFormatType.FORMAT_JSON; + } else if (sessionVariable.isReadHiveJsonInOneColumn() && firstColumnIsString()) { + type = TFileFormatType.FORMAT_CSV_PLAIN; + } else { + throw new UserException("You set read_hive_json_in_one_column = true, but the first column of " + + "table " + getName() + + " is not a string column."); + } + } else if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_TEXT_SERDE)) { + type = TFileFormatType.FORMAT_TEXT; + } else if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_OPEN_CSV_SERDE)) { + type = TFileFormatType.FORMAT_CSV_PLAIN; + } else if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_MULTI_DELIMIT_SERDE)) { + type = TFileFormatType.FORMAT_TEXT; + } else { + throw new UserException("Unsupported hive table serde: " + serDeLib); + } + } + return type; + } + + private Table loadHiveTable() { HMSCachedClient client = ((HMSExternalCatalog) catalog).getClient(); return client.getTable(getRemoteDbName(), remoteName); diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/source/HiveScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/source/HiveScanNode.java index a11dc6d247eba4..2a524a4138d33c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/source/HiveScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/source/HiveScanNode.java @@ -409,44 +409,9 @@ public TableIf getTargetTable() { @Override public TFileFormatType getFileFormatType() throws UserException { - TFileFormatType type = null; - Table table = hmsTable.getRemoteTable(); - String inputFormatName = table.getSd().getInputFormat(); - String hiveFormat = HiveMetaStoreClientHelper.HiveFileFormat.getFormat(inputFormatName); - if (hiveFormat.equals(HiveMetaStoreClientHelper.HiveFileFormat.PARQUET.getDesc())) { - type = TFileFormatType.FORMAT_PARQUET; - } else if (hiveFormat.equals(HiveMetaStoreClientHelper.HiveFileFormat.ORC.getDesc())) { - type = TFileFormatType.FORMAT_ORC; - } else if (hiveFormat.equals(HiveMetaStoreClientHelper.HiveFileFormat.TEXT_FILE.getDesc())) { - String serDeLib = table.getSd().getSerdeInfo().getSerializationLib(); - if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_JSON_SERDE) - || serDeLib.equals(HiveMetaStoreClientHelper.LEGACY_HIVE_JSON_SERDE)) { - type = TFileFormatType.FORMAT_JSON; - } else if (serDeLib.equals(HiveMetaStoreClientHelper.OPENX_JSON_SERDE)) { - if (!sessionVariable.isReadHiveJsonInOneColumn()) { - type = TFileFormatType.FORMAT_JSON; - } else if (sessionVariable.isReadHiveJsonInOneColumn() - && hmsTable.firstColumnIsString()) { - type = TFileFormatType.FORMAT_CSV_PLAIN; - } else { - throw new UserException("You set read_hive_json_in_one_column = true, but the first column of " - + "table " + hmsTable.getName() - + " is not a string column."); - } - } else if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_TEXT_SERDE)) { - type = TFileFormatType.FORMAT_TEXT; - } else if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_OPEN_CSV_SERDE)) { - type = TFileFormatType.FORMAT_CSV_PLAIN; - } else if (serDeLib.equals(HiveMetaStoreClientHelper.HIVE_MULTI_DELIMIT_SERDE)) { - type = TFileFormatType.FORMAT_TEXT; - } else { - throw new UserException("Unsupported hive table serde: " + serDeLib); - } - } - return type; + return hmsTable.getFileFormatType(sessionVariable); } - @Override protected void setScanParams(TFileRangeDesc rangeDesc, Split split) { if (split instanceof HiveSplit) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/StatementContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/StatementContext.java index 21128b0a364c5c..93a7af2d8e095a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/StatementContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/StatementContext.java @@ -289,6 +289,7 @@ public enum TableFrom { // For Iceberg rewrite operations: store file scan tasks to be used by IcebergScanNode // TODO: better solution? private List icebergRewriteFileScanTasks = null; + private boolean hasNestedColumns; public StatementContext() { this(ConnectContext.get(), null, 0); @@ -1048,4 +1049,12 @@ public boolean isSkipPrunePredicate() { public void setSkipPrunePredicate(boolean skipPrunePredicate) { this.skipPrunePredicate = skipPrunePredicate; } + + public boolean hasNestedColumns() { + return hasNestedColumns; + } + + public void setHasNestedColumns(boolean hasNestedColumns) { + this.hasNestedColumns = hasNestedColumns; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java index 4b84e792e2b93f..fb36b0399470eb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java @@ -838,10 +838,11 @@ private PlanFragment computePhysicalOlapScan(PhysicalOlapScan olapScan, PlanTran OlapTable olapTable = olapScan.getTable(); // generate real output tuple TupleDescriptor tupleDescriptor = generateTupleDesc(slots, olapTable, context); + List slotDescriptors = tupleDescriptor.getSlots(); // put virtual column expr into slot desc Map slotToVirtualColumnMap = olapScan.getSlotToVirtualColumnMap(); - for (SlotDescriptor slotDescriptor : tupleDescriptor.getSlots()) { + for (SlotDescriptor slotDescriptor : slotDescriptors) { ExprId exprId = context.findExprId(slotDescriptor.getId()); if (slotToVirtualColumnMap.containsKey(exprId)) { slotDescriptor.setVirtualColumn(ExpressionTranslator.translate( @@ -911,7 +912,7 @@ private PlanFragment computePhysicalOlapScan(PhysicalOlapScan olapScan, PlanTran && !isComplexDataType(slot.getDataType()) && !StatisticConstants.isSystemTable(olapTable) && !inVisibleCol) { - context.addUnknownStatsColumn(olapScanNode, tupleDescriptor.getSlots().get(i).getId()); + context.addUnknownStatsColumn(olapScanNode, slotDescriptors.get(i).getId()); } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java index 7e1c2b0c2cc44f..dd9486367c26c3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PlanTranslatorContext.java @@ -28,6 +28,7 @@ import org.apache.doris.catalog.TableIf; import org.apache.doris.common.IdGenerator; import org.apache.doris.nereids.CascadesContext; +import org.apache.doris.nereids.StatementContext; import org.apache.doris.nereids.processor.post.TopnFilterContext; import org.apache.doris.nereids.processor.post.runtimefilterv2.RuntimeFilterContextV2; import org.apache.doris.nereids.trees.expressions.CTEId; @@ -65,6 +66,7 @@ */ public class PlanTranslatorContext { private final ConnectContext connectContext; + private final StatementContext statementContext; private final List planFragments = Lists.newArrayList(); private DescriptorTable descTable; @@ -117,16 +119,20 @@ public class PlanTranslatorContext { private final Set virtualColumnIds = Sets.newHashSet(); + /** PlanTranslatorContext */ public PlanTranslatorContext(CascadesContext ctx) { this.connectContext = ctx.getConnectContext(); + this.statementContext = ctx.getStatementContext(); this.translator = new RuntimeFilterTranslator(ctx.getRuntimeFilterContext()); this.topnFilterContext = ctx.getTopnFilterContext(); this.runtimeFilterV2Context = ctx.getRuntimeFilterV2Context(); this.descTable = new DescriptorTable(); } + /** PlanTranslatorContext */ public PlanTranslatorContext(CascadesContext ctx, DescriptorTable descTable) { this.connectContext = ctx.getConnectContext(); + this.statementContext = ctx.getStatementContext(); this.translator = new RuntimeFilterTranslator(ctx.getRuntimeFilterContext()); this.topnFilterContext = ctx.getTopnFilterContext(); this.runtimeFilterV2Context = ctx.getRuntimeFilterV2Context(); @@ -139,6 +145,7 @@ public PlanTranslatorContext(CascadesContext ctx, DescriptorTable descTable) { @VisibleForTesting public PlanTranslatorContext() { this.connectContext = null; + this.statementContext = new StatementContext(); this.translator = null; this.topnFilterContext = new TopnFilterContext(); IdGenerator runtimeFilterIdGen = RuntimeFilterId.createGenerator(); @@ -178,6 +185,10 @@ public ConnectContext getConnectContext() { return connectContext; } + public StatementContext getStatementContext() { + return statementContext; + } + public Set getScanNodeWithUnknownColumnStats() { return statsUnknownColumnsMap.keySet(); } @@ -315,6 +326,13 @@ public SlotDescriptor createSlotDesc(TupleDescriptor tupleDesc, SlotReference sl } this.addExprIdSlotRefPair(slotReference.getExprId(), slotRef); slotDescriptor.setIsNullable(slotReference.nullable()); + + if (slotReference.getAllAccessPaths().isPresent()) { + slotDescriptor.setAllAccessPaths(slotReference.getAllAccessPaths().get()); + slotDescriptor.setPredicateAccessPaths(slotReference.getPredicateAccessPaths().get()); + slotDescriptor.setDisplayAllAccessPaths(slotReference.getDisplayAllAccessPaths().get()); + slotDescriptor.setDisplayPredicateAccessPaths(slotReference.getDisplayPredicateAccessPaths().get()); + } return slotDescriptor; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java index d5fb5787064b19..a814d903a34217 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/jobs/executor/Rewriter.java @@ -110,6 +110,7 @@ import org.apache.doris.nereids.rules.rewrite.MergeSetOperations; import org.apache.doris.nereids.rules.rewrite.MergeSetOperationsExcept; import org.apache.doris.nereids.rules.rewrite.MergeTopNs; +import org.apache.doris.nereids.rules.rewrite.NestedColumnPruning; import org.apache.doris.nereids.rules.rewrite.NormalizeSort; import org.apache.doris.nereids.rules.rewrite.OperativeColumnDerive; import org.apache.doris.nereids.rules.rewrite.OrExpansion; @@ -913,6 +914,11 @@ private static List getWholeTreeRewriteJobs( ) )); } + rewriteJobs.add( + topic("nested column prune", + custom(RuleType.NESTED_COLUMN_PRUNING, NestedColumnPruning::new) + ) + ); rewriteJobs.addAll(jobs( topic("rewrite cte sub-tree after sub path push down", custom(RuleType.CLEAR_CONTEXT_STATUS, ClearContextStatus::new), diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleSet.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleSet.java index 4e5d62f4cb2c25..a09ba2ebca5450 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleSet.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleSet.java @@ -124,6 +124,7 @@ import org.apache.doris.nereids.rules.rewrite.PushDownFilterThroughWindow; import org.apache.doris.nereids.rules.rewrite.PushDownJoinOtherCondition; import org.apache.doris.nereids.rules.rewrite.PushDownLimitDistinctThroughJoin; +import org.apache.doris.nereids.rules.rewrite.PushDownProject; import org.apache.doris.nereids.rules.rewrite.PushDownProjectThroughLimit; import org.apache.doris.nereids.rules.rewrite.PushDownTopNDistinctThroughJoin; import org.apache.doris.nereids.rules.rewrite.PushDownTopNThroughJoin; @@ -175,6 +176,7 @@ public class RuleSet { new PushDownFilterThroughSetOperation(), new PushDownFilterThroughGenerate(), new PushDownProjectThroughLimit(), + new PushDownProject(), new EliminateOuterJoin(), new MergeProjectable(), new MergeFilters(), diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java index 6179006391791e..aef4ddcbb7c38f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/RuleType.java @@ -195,6 +195,13 @@ public enum RuleType { PUSH_DOWN_PREDICATE_THROUGH_AGGREGATION(RuleTypeClass.REWRITE), PUSH_DOWN_PREDICATE_THROUGH_REPEAT(RuleTypeClass.REWRITE), PUSH_DOWN_EXPRESSIONS_IN_HASH_CONDITIONS(RuleTypeClass.REWRITE), + // Pushdown nested column project + PUSH_DOWN_NESTED_COLUMN_THROUGH_AGGREGATE(RuleTypeClass.REWRITE), + PUSH_DOWN_PROJECT_THROUGH_JOIN(RuleTypeClass.REWRITE), + PUSH_DOWN_PROJECT_THROUGH_UNION(RuleTypeClass.REWRITE), + PUSH_DOWN_PROJECT_THROUGH_WINDOW(RuleTypeClass.REWRITE), + PUSH_DOWN_PROJECT_THROUGH_PARTITION_TOP_N(RuleTypeClass.REWRITE), + // PUSH_DOWN_PROJECT_THROUGH_DEFER_MATERIALIZE_TOP_N(RuleTypeClass.REWRITE), // Pushdown filter PUSH_DOWN_FILTER_THROUGH_JOIN(RuleTypeClass.REWRITE), PUSH_DOWN_FILTER_THROUGH_LEFT_SEMI_JOIN(RuleTypeClass.REWRITE), @@ -219,6 +226,7 @@ public enum RuleType { ADD_PROJECT_FOR_JOIN(RuleTypeClass.REWRITE), ADD_PROJECT_FOR_UNIQUE_FUNCTION(RuleTypeClass.REWRITE), VARIANT_SUB_PATH_PRUNING(RuleTypeClass.REWRITE), + NESTED_COLUMN_PRUNING(RuleTypeClass.REWRITE), CLEAR_CONTEXT_STATUS(RuleTypeClass.REWRITE), COLUMN_PRUNING(RuleTypeClass.REWRITE), diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java index e502b19752425e..69ac0462b50018 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java @@ -427,7 +427,8 @@ private LogicalPlan getLogicalPlan(TableIf table, UnboundRelation unboundRelatio if (hmsTable.getDlaType() == DLAType.HUDI) { LogicalHudiScan hudiScan = new LogicalHudiScan(unboundRelation.getRelationId(), hmsTable, qualifierWithoutTableName, ImmutableList.of(), Optional.empty(), - unboundRelation.getTableSample(), unboundRelation.getTableSnapshot()); + unboundRelation.getTableSample(), unboundRelation.getTableSnapshot(), + Optional.empty()); hudiScan = hudiScan.withScanParams( hmsTable, Optional.ofNullable(unboundRelation.getScanParams())); return hudiScan; @@ -437,7 +438,7 @@ private LogicalPlan getLogicalPlan(TableIf table, UnboundRelation unboundRelatio ImmutableList.of(), unboundRelation.getTableSample(), unboundRelation.getTableSnapshot(), - Optional.ofNullable(unboundRelation.getScanParams())); + Optional.ofNullable(unboundRelation.getScanParams()), Optional.empty()); } case ICEBERG_EXTERNAL_TABLE: IcebergExternalTable icebergExternalTable = (IcebergExternalTable) table; @@ -467,7 +468,7 @@ private LogicalPlan getLogicalPlan(TableIf table, UnboundRelation unboundRelatio qualifierWithoutTableName, ImmutableList.of(), unboundRelation.getTableSample(), unboundRelation.getTableSnapshot(), - Optional.ofNullable(unboundRelation.getScanParams())); + Optional.ofNullable(unboundRelation.getScanParams()), Optional.empty()); case PAIMON_EXTERNAL_TABLE: case MAX_COMPUTE_EXTERNAL_TABLE: case TRINO_CONNECTOR_EXTERNAL_TABLE: @@ -476,7 +477,7 @@ private LogicalPlan getLogicalPlan(TableIf table, UnboundRelation unboundRelatio qualifierWithoutTableName, ImmutableList.of(), unboundRelation.getTableSample(), unboundRelation.getTableSnapshot(), - Optional.ofNullable(unboundRelation.getScanParams())); + Optional.ofNullable(unboundRelation.getScanParams()), Optional.empty()); case DORIS_EXTERNAL_TABLE: ConnectContext ctx = cascadesContext.getConnectContext(); RemoteDorisExternalTable externalTable = (RemoteDorisExternalTable) table; @@ -494,7 +495,7 @@ private LogicalPlan getLogicalPlan(TableIf table, UnboundRelation unboundRelatio qualifierWithoutTableName, ImmutableList.of(), unboundRelation.getTableSample(), unboundRelation.getTableSnapshot(), - Optional.ofNullable(unboundRelation.getScanParams())); + Optional.ofNullable(unboundRelation.getScanParams()), Optional.empty()); case SCHEMA: LogicalSchemaScan schemaScan = new LogicalSchemaScan(unboundRelation.getRelationId(), table, qualifierWithoutTableName); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java index e631ffe1c54b1e..6fe66e693dc1a3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java @@ -95,6 +95,7 @@ import org.apache.doris.nereids.types.BigIntType; import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.NestedColumnPrunable; import org.apache.doris.nereids.types.StringType; import org.apache.doris.nereids.types.StructField; import org.apache.doris.nereids.types.StructType; @@ -293,6 +294,9 @@ public Expression visitUnboundSlot(UnboundSlot unboundSlot, ExpressionRewriteCon } outerScope.get().getCorrelatedSlots().add((Slot) firstBound); } + if (firstBound.getDataType() instanceof NestedColumnPrunable) { + context.cascadesContext.getStatementContext().setHasNestedColumns(true); + } return firstBound; default: if (enableExactMatch) { @@ -312,6 +316,9 @@ public Expression visitUnboundSlot(UnboundSlot unboundSlot, ExpressionRewriteCon .filter(bound -> unboundSlot.getNameParts().size() == bound.getQualifier().size() + 1) .collect(Collectors.toList()); if (exactMatch.size() == 1) { + if (exactMatch.get(0).getDataType() instanceof NestedColumnPrunable) { + context.cascadesContext.getStatementContext().setHasNestedColumns(true); + } return exactMatch.get(0); } } @@ -348,6 +355,9 @@ public Expression visitUnboundStar(UnboundStar unboundStar, ExpressionRewriteCon if (!(slot instanceof SlotReference) || (((SlotReference) slot).isVisible()) || showHidden) { showSlots.add(slot); } + if (slot.getDataType() instanceof NestedColumnPrunable) { + context.cascadesContext.getStatementContext().setHasNestedColumns(true); + } } ImmutableList slots = showSlots.build(); switch (qualifier.size()) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java index a92855bef0fdb4..648b68cccc22fe 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/NormalizeAggregate.java @@ -30,6 +30,7 @@ import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.NamedExpression; import org.apache.doris.nereids.trees.expressions.OrderExpression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.SessionVarGuardExpr; import org.apache.doris.nereids.trees.expressions.Slot; import org.apache.doris.nereids.trees.expressions.SlotNotFromChildren; @@ -177,7 +178,7 @@ private LogicalPlan normalizeAgg(LogicalAggregate aggregate, Optional> buildRules() { + return ImmutableList.of( + matchesType(StructElement.class).then(NormalizeStructElement::normalize) + .toRule(ExpressionRuleType.NORMALIZE_STRUCT_ELEMENT) + ); + } + + private static StructElement normalize(StructElement structElement) { + Expression field = structElement.getArgument(1); + if (field instanceof IntegerLikeLiteral) { + int fieldIndex = ((Number) ((IntegerLikeLiteral) field).getValue()).intValue(); + StructType structType = (StructType) structElement.getArgument(0).getDataType(); + List fields = structType.getFields(); + if (fieldIndex >= 0 && fieldIndex <= fields.size()) { + return structElement.withChildren( + ImmutableList.of( + structElement.child(0), + new StringLiteral(fields.get(fieldIndex - 1).getName()) + ) + ); + } + } + return structElement; + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java new file mode 100644 index 00000000000000..4fe9e9e2f746fa --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java @@ -0,0 +1,511 @@ +// 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.nereids.rules.rewrite; + +import org.apache.doris.nereids.StatementContext; +import org.apache.doris.nereids.rules.rewrite.AccessPathExpressionCollector.CollectorContext; +import org.apache.doris.nereids.rules.rewrite.NestedColumnPruning.DataTypeAccessTree; +import org.apache.doris.nereids.trees.expressions.Alias; +import org.apache.doris.nereids.trees.expressions.ArrayItemReference; +import org.apache.doris.nereids.trees.expressions.ArrayItemReference.ArrayItemSlot; +import org.apache.doris.nereids.trees.expressions.Cast; +import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.SlotReference; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayCount; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayExists; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFilter; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFirst; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFirstIndex; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayLast; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayLastIndex; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayMap; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayMatchAll; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayMatchAny; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayReverseSplit; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArraySortBy; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArraySplit; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ElementAt; +import org.apache.doris.nereids.trees.expressions.functions.scalar.Lambda; +import org.apache.doris.nereids.trees.expressions.functions.scalar.MapContainsEntry; +import org.apache.doris.nereids.trees.expressions.functions.scalar.MapContainsKey; +import org.apache.doris.nereids.trees.expressions.functions.scalar.MapContainsValue; +import org.apache.doris.nereids.trees.expressions.functions.scalar.MapKeys; +import org.apache.doris.nereids.trees.expressions.functions.scalar.MapValues; +import org.apache.doris.nereids.trees.expressions.functions.scalar.StructElement; +import org.apache.doris.nereids.trees.expressions.literal.Literal; +import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionVisitor; +import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.NestedColumnPrunable; +import org.apache.doris.nereids.types.StructField; +import org.apache.doris.nereids.types.StructType; +import org.apache.doris.nereids.util.Utils; +import org.apache.doris.thrift.TAccessPathType; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Stack; + +/** + * collect the access path, for example: `select struct_element(s, 'data')` has access path: ['s', 'data'] + */ +public class AccessPathExpressionCollector extends DefaultExpressionVisitor { + private StatementContext statementContext; + private boolean bottomPredicate; + private Multimap slotToAccessPaths; + private Stack> nameToLambdaArguments = new Stack<>(); + + public AccessPathExpressionCollector( + StatementContext statementContext, Multimap slotToAccessPaths, + boolean bottomPredicate) { + this.statementContext = statementContext; + this.slotToAccessPaths = slotToAccessPaths; + this.bottomPredicate = bottomPredicate; + } + + public void collect(Expression expression) { + expression.accept(this, new CollectorContext(statementContext, bottomPredicate)); + } + + private Void continueCollectAccessPath(Expression expr, CollectorContext context) { + return expr.accept(this, context); + } + + @Override + public Void visit(Expression expr, CollectorContext context) { + for (Expression child : expr.children()) { + child.accept(this, new CollectorContext(context.statementContext, context.bottomFilter)); + } + return null; + } + + @Override + public Void visitSlotReference(SlotReference slotReference, CollectorContext context) { + DataType dataType = slotReference.getDataType(); + if (dataType instanceof NestedColumnPrunable) { + context.accessPathBuilder.addPrefix(slotReference.getName().toLowerCase()); + ImmutableList path = Utils.fastToImmutableList(context.accessPathBuilder.accessPath); + int slotId = slotReference.getExprId().asInt(); + slotToAccessPaths.put(slotId, new CollectAccessPathResult(path, context.bottomFilter, context.type)); + } + return null; + } + + @Override + public Void visitArrayItemSlot(ArrayItemSlot arrayItemSlot, CollectorContext context) { + if (nameToLambdaArguments.isEmpty()) { + return null; + } + context.accessPathBuilder.addPrefix("*"); + Expression argument = nameToLambdaArguments.peek().get(arrayItemSlot.getName()); + if (argument == null) { + return null; + } + return continueCollectAccessPath(argument, context); + } + + @Override + public Void visitAlias(Alias alias, CollectorContext context) { + return alias.child(0).accept(this, context); + } + + @Override + public Void visitCast(Cast cast, CollectorContext context) { + if (!context.accessPathBuilder.isEmpty() + && cast.getDataType() instanceof NestedColumnPrunable + && cast.child().getDataType() instanceof NestedColumnPrunable) { + + DataTypeAccessTree castTree = DataTypeAccessTree.of(cast.getDataType(), TAccessPathType.DATA); + DataTypeAccessTree originTree = DataTypeAccessTree.of(cast.child().getDataType(), TAccessPathType.DATA); + + List replacePath = new ArrayList<>(context.accessPathBuilder.getPathList()); + if (originTree.replacePathByAnotherTree(castTree, replacePath, 0)) { + CollectorContext castContext = new CollectorContext(context.statementContext, context.bottomFilter); + castContext.accessPathBuilder.accessPath.addAll(replacePath); + return continueCollectAccessPath(cast.child(), castContext); + } + } + return cast.child(0).accept(this, + new CollectorContext(context.statementContext, context.bottomFilter) + ); + } + + // array element at + @Override + public Void visitElementAt(ElementAt elementAt, CollectorContext context) { + List arguments = elementAt.getArguments(); + Expression first = arguments.get(0); + if (first.getDataType().isArrayType() || first.getDataType().isMapType()) { + context.accessPathBuilder.addPrefix("*"); + continueCollectAccessPath(first, context); + + for (int i = 1; i < arguments.size(); i++) { + visit(arguments.get(i), context); + } + return null; + } else { + return visit(elementAt, context); + } + } + + // struct element_at + @Override + public Void visitStructElement(StructElement structElement, CollectorContext context) { + List arguments = structElement.getArguments(); + Expression struct = arguments.get(0); + Expression fieldName = arguments.get(1); + DataType fieldType = fieldName.getDataType(); + + if (fieldName.isLiteral() && (fieldType.isIntegerLikeType() || fieldType.isStringLikeType())) { + if (fieldType.isIntegerLikeType()) { + int fieldIndex = ((Number) ((Literal) fieldName).getValue()).intValue(); + List fields = ((StructType) struct.getDataType()).getFields(); + if (fieldIndex >= 1 && fieldIndex <= fields.size()) { + String realFieldName = fields.get(fieldIndex - 1).getName(); + context.accessPathBuilder.addPrefix(realFieldName); + return continueCollectAccessPath(struct, context); + } + } + context.accessPathBuilder.addPrefix(((Literal) fieldName).getStringValue().toLowerCase()); + return continueCollectAccessPath(struct, context); + } + + for (Expression argument : arguments) { + visit(argument, context); + } + return null; + } + + @Override + public Void visitMapKeys(MapKeys mapKeys, CollectorContext context) { + context = new CollectorContext(context.statementContext, context.bottomFilter); + context.accessPathBuilder.addPrefix("KEYS"); + return continueCollectAccessPath(mapKeys.getArgument(0), context); + } + + @Override + public Void visitMapValues(MapValues mapValues, CollectorContext context) { + LinkedList suffixPath = context.accessPathBuilder.accessPath; + if (!suffixPath.isEmpty() && suffixPath.get(0).equals("*")) { + CollectorContext removeStarContext + = new CollectorContext(context.statementContext, context.bottomFilter); + removeStarContext.accessPathBuilder.accessPath.addAll(suffixPath.subList(1, suffixPath.size())); + removeStarContext.accessPathBuilder.addPrefix("VALUES"); + return continueCollectAccessPath(mapValues.getArgument(0), removeStarContext); + } + context.accessPathBuilder.addPrefix("VALUES"); + return continueCollectAccessPath(mapValues.getArgument(0), context); + } + + @Override + public Void visitMapContainsKey(MapContainsKey mapContainsKey, CollectorContext context) { + context.accessPathBuilder.addPrefix("KEYS"); + return continueCollectAccessPath(mapContainsKey.getArgument(0), context); + } + + @Override + public Void visitMapContainsValue(MapContainsValue mapContainsValue, CollectorContext context) { + context.accessPathBuilder.addPrefix("VALUES"); + return continueCollectAccessPath(mapContainsValue.getArgument(0), context); + } + + @Override + public Void visitMapContainsEntry(MapContainsEntry mapContainsEntry, CollectorContext context) { + context.accessPathBuilder.addPrefix("*"); + return continueCollectAccessPath(mapContainsEntry.getArgument(0), context); + } + + @Override + public Void visitArrayMap(ArrayMap arrayMap, CollectorContext context) { + // ARRAY_MAP(lambda, [ , ... ] ) + + Expression argument = arrayMap.getArgument(0); + if ((argument instanceof Lambda)) { + return collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayMap, context); + } + + @Override + public Void visitArrayCount(ArrayCount arrayCount, CollectorContext context) { + // ARRAY_COUNT(, [, ... ]) + + Expression argument = arrayCount.getArgument(0); + if ((argument instanceof Lambda)) { + return collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayCount, context); + } + + @Override + public Void visitArrayExists(ArrayExists arrayExists, CollectorContext context) { + // ARRAY_EXISTS([ , ] [, , ...] ) + + Expression argument = arrayExists.getArgument(0); + if ((argument instanceof Lambda)) { + return collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayExists, context); + } + + @Override + public Void visitArrayFilter(ArrayFilter arrayFilter, CollectorContext context) { + // ARRAY_FILTER(, ) + + Expression argument = arrayFilter.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayFilter, context); + } + + @Override + public Void visitArrayFirst(ArrayFirst arrayFirst, CollectorContext context) { + // ARRAY_FIRST(, ) + + Expression argument = arrayFirst.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayFirst, context); + } + + @Override + public Void visitArrayFirstIndex(ArrayFirstIndex arrayFirstIndex, CollectorContext context) { + // ARRAY_FIRST_INDEX(, [, ...]) + + Expression argument = arrayFirstIndex.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayFirstIndex, context); + } + + @Override + public Void visitArrayLast(ArrayLast arrayLast, CollectorContext context) { + // ARRAY_LAST(, ) + + Expression argument = arrayLast.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayLast, context); + } + + @Override + public Void visitArrayLastIndex(ArrayLastIndex arrayLastIndex, CollectorContext context) { + // ARRAY_LAST_INDEX(, [, ...]) + + Expression argument = arrayLastIndex.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayLastIndex, context); + } + + @Override + public Void visitArrayMatchAny(ArrayMatchAny arrayMatchAny, CollectorContext context) { + // array_match_any(lambda, [, ...]) + + Expression argument = arrayMatchAny.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayMatchAny, context); + } + + @Override + public Void visitArrayMatchAll(ArrayMatchAll arrayMatchAll, CollectorContext context) { + // array_match_all(lambda, [, ...]) + + Expression argument = arrayMatchAll.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayMatchAll, context); + } + + @Override + public Void visitArrayReverseSplit(ArrayReverseSplit arrayReverseSplit, CollectorContext context) { + // ARRAY_REVERSE_SPLIT(, [, ...]) + + Expression argument = arrayReverseSplit.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arrayReverseSplit, context); + } + + @Override + public Void visitArraySplit(ArraySplit arraySplit, CollectorContext context) { + // ARRAY_SPLIT(, arr [, ...]) + + Expression argument = arraySplit.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arraySplit, context); + } + + @Override + public Void visitArraySortBy(ArraySortBy arraySortBy, CollectorContext context) { + // ARRAY_SORTBY(, [, ...]) + + Expression argument = arraySortBy.getArgument(0); + if ((argument instanceof Lambda)) { + collectArrayPathInLambda((Lambda) argument, context); + } + return visit(arraySortBy, context); + } + + // @Override + // public Void visitIsNull(IsNull isNull, CollectorContext context) { + // if (context.accessPathBuilder.isEmpty()) { + // context.setType(TAccessPathType.META); + // return continueCollectAccessPath(isNull.child(), context); + // } + // return visit(isNull, context); + // } + + private Void collectArrayPathInLambda(Lambda lambda, CollectorContext context) { + List arguments = lambda.getArguments(); + Map nameToArray = Maps.newLinkedHashMap(); + for (Expression argument : arguments) { + if (argument instanceof ArrayItemReference) { + nameToArray.put(((ArrayItemReference) argument).getName(), argument.child(0)); + } + } + + List path = context.accessPathBuilder.getPathList(); + if (!path.isEmpty() && path.get(0).equals("*")) { + context.accessPathBuilder.removePrefix(); + } + + nameToLambdaArguments.push(nameToArray); + try { + continueCollectAccessPath(arguments.get(0), context); + } finally { + nameToLambdaArguments.pop(); + } + return null; + } + + /** CollectorContext */ + public static class CollectorContext { + private StatementContext statementContext; + private AccessPathBuilder accessPathBuilder; + private boolean bottomFilter; + private TAccessPathType type; + + public CollectorContext(StatementContext statementContext, boolean bottomFilter) { + this.statementContext = statementContext; + this.accessPathBuilder = new AccessPathBuilder(); + this.bottomFilter = bottomFilter; + this.type = TAccessPathType.DATA; + } + + public TAccessPathType getType() { + return type; + } + + public void setType(TAccessPathType type) { + this.type = type; + } + } + + private static class AccessPathBuilder { + private LinkedList accessPath; + + public AccessPathBuilder() { + accessPath = new LinkedList<>(); + } + + public AccessPathBuilder addPrefix(String prefix) { + accessPath.addFirst(prefix); + return this; + } + + public AccessPathBuilder removePrefix() { + accessPath.removeFirst(); + return this; + } + + public List getPathList() { + return accessPath; + } + + public boolean isEmpty() { + return accessPath.isEmpty(); + } + + @Override + public String toString() { + return String.join(".", accessPath); + } + } + + /** AccessPathIsPredicate */ + public static class CollectAccessPathResult { + private final List path; + private final boolean isPredicate; + private final TAccessPathType type; + + public CollectAccessPathResult(List path, boolean isPredicate, TAccessPathType type) { + this.path = path; + this.isPredicate = isPredicate; + this.type = type; + } + + public TAccessPathType getType() { + return type; + } + + public List getPath() { + return path; + } + + public boolean isPredicate() { + return isPredicate; + } + + @Override + public String toString() { + return String.join(".", path) + ", " + isPredicate; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) { + return false; + } + CollectAccessPathResult that = (CollectAccessPathResult) o; + return isPredicate == that.isPredicate && Objects.equals(path, that.path); + } + + @Override + public int hashCode() { + return path.hashCode(); + } + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java new file mode 100644 index 00000000000000..514f7bb1e8cfc1 --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java @@ -0,0 +1,176 @@ +// 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.nereids.rules.rewrite; + +import org.apache.doris.nereids.StatementContext; +import org.apache.doris.nereids.rules.rewrite.AccessPathExpressionCollector.CollectAccessPathResult; +import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.Slot; +import org.apache.doris.nereids.trees.plans.Plan; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTEAnchor; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTEConsumer; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTEProducer; +import org.apache.doris.nereids.trees.plans.logical.LogicalFileScan; +import org.apache.doris.nereids.trees.plans.logical.LogicalFilter; +import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan; +import org.apache.doris.nereids.trees.plans.logical.LogicalTVFRelation; +import org.apache.doris.nereids.trees.plans.logical.LogicalUnion; +import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanVisitor; +import org.apache.doris.nereids.types.NestedColumnPrunable; + +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +/** AccessPathPlanCollector */ +public class AccessPathPlanCollector extends DefaultPlanVisitor { + private Multimap allSlotToAccessPaths = LinkedHashMultimap.create(); + private Map> scanSlotToAccessPaths = new LinkedHashMap<>(); + + public Map> collect(Plan root, StatementContext context) { + root.accept(this, context); + return scanSlotToAccessPaths; + } + + @Override + public Void visitLogicalFilter(LogicalFilter filter, StatementContext context) { + boolean bottomFilter = filter.child().arity() == 0; + collectByExpressions(filter, context, bottomFilter); + return filter.child().accept(this, context); + } + + @Override + public Void visitLogicalCTEAnchor( + LogicalCTEAnchor cteAnchor, StatementContext context) { + // first, collect access paths in the outer slots, and propagate outer slot's access path to inner slots + cteAnchor.right().accept(this, context); + + // second, push down access path in the inner slots + cteAnchor.left().accept(this, context); + return null; + } + + @Override + public Void visitLogicalCTEConsumer(LogicalCTEConsumer cteConsumer, StatementContext context) { + // propagate outer slot's access path to inner slots + for (Entry slots : cteConsumer.getConsumerToProducerOutputMap().entrySet()) { + Slot outerSlot = slots.getKey(); + + if (outerSlot.getDataType() instanceof NestedColumnPrunable) { + int outerSlotId = outerSlot.getExprId().asInt(); + int innerSlotId = slots.getValue().getExprId().asInt(); + allSlotToAccessPaths.putAll(innerSlotId, allSlotToAccessPaths.get(outerSlotId)); + } + } + return null; + } + + @Override + public Void visitLogicalCTEProducer(LogicalCTEProducer cteProducer, StatementContext context) { + return cteProducer.child().accept(this, context); + } + + @Override + public Void visitLogicalUnion(LogicalUnion union, StatementContext context) { + // now we will not prune complex type through union, because we can not prune the complex type's literal, + // for example, we can not prune the literal now: array(map(1, named_struct('a', 100, 'b', 100))), + // so we can not prune this sql: + // select struct_element(map_values(s[0]), 'a') + // from ( + // select s from tbl + // union all + // select array(map(1, named_struct('a', 100, 'b', 100))) + // ) tbl; + // + // so we will not propagate access paths through the union + for (Plan child : union.children()) { + child.accept(this, context); + } + return null; + } + + @Override + public Void visitLogicalOlapScan(LogicalOlapScan olapScan, StatementContext context) { + for (Slot slot : olapScan.getOutput()) { + if (!(slot.getDataType() instanceof NestedColumnPrunable)) { + continue; + } + Collection accessPaths = allSlotToAccessPaths.get(slot.getExprId().asInt()); + if (!accessPaths.isEmpty()) { + scanSlotToAccessPaths.put(slot, new ArrayList<>(accessPaths)); + } + } + return null; + } + + @Override + public Void visitLogicalFileScan(LogicalFileScan fileScan, StatementContext context) { + for (Slot slot : fileScan.getOutput()) { + if (!(slot.getDataType() instanceof NestedColumnPrunable)) { + continue; + } + Collection accessPaths = allSlotToAccessPaths.get(slot.getExprId().asInt()); + if (!accessPaths.isEmpty()) { + scanSlotToAccessPaths.put(slot, new ArrayList<>(accessPaths)); + } + } + return null; + } + + @Override + public Void visitLogicalTVFRelation(LogicalTVFRelation tvfRelation, StatementContext context) { + for (Slot slot : tvfRelation.getOutput()) { + if (!(slot.getDataType() instanceof NestedColumnPrunable)) { + continue; + } + Collection accessPaths = allSlotToAccessPaths.get(slot.getExprId().asInt()); + if (!accessPaths.isEmpty()) { + scanSlotToAccessPaths.put(slot, new ArrayList<>(accessPaths)); + } + } + return null; + } + + @Override + public Void visit(Plan plan, StatementContext context) { + collectByExpressions(plan, context); + + for (Plan child : plan.children()) { + child.accept(this, context); + } + return null; + } + + private void collectByExpressions(Plan plan, StatementContext context) { + collectByExpressions(plan, context, false); + } + + private void collectByExpressions(Plan plan, StatementContext context, boolean bottomPredicate) { + AccessPathExpressionCollector exprCollector + = new AccessPathExpressionCollector(context, allSlotToAccessPaths, bottomPredicate); + for (Expression expression : plan.getExpressions()) { + exprCollector.collect(expression); + } + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java new file mode 100644 index 00000000000000..b03f183b115a7c --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java @@ -0,0 +1,486 @@ +// 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.nereids.rules.rewrite; + +import org.apache.doris.analysis.AccessPathInfo; +import org.apache.doris.common.Pair; +import org.apache.doris.nereids.StatementContext; +import org.apache.doris.nereids.exceptions.AnalysisException; +import org.apache.doris.nereids.jobs.JobContext; +import org.apache.doris.nereids.rules.rewrite.AccessPathExpressionCollector.CollectAccessPathResult; +import org.apache.doris.nereids.trees.expressions.Slot; +import org.apache.doris.nereids.trees.expressions.SlotReference; +import org.apache.doris.nereids.trees.plans.Plan; +import org.apache.doris.nereids.trees.plans.visitor.CustomRewriter; +import org.apache.doris.nereids.types.ArrayType; +import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.MapType; +import org.apache.doris.nereids.types.NullType; +import org.apache.doris.nereids.types.StructField; +import org.apache.doris.nereids.types.StructType; +import org.apache.doris.qe.SessionVariable; +import org.apache.doris.thrift.TAccessPathType; +import org.apache.doris.thrift.TColumnAccessPath; +import org.apache.doris.thrift.TDataAccessPath; +import org.apache.doris.thrift.TMetaAccessPath; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.TreeMultimap; +import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; + +/** + *

  • 1. prune the data type of struct/map + * + *

    for example, column s is a struct<id: int, value: double>, + * and `select struct(s, 'id') from tbl` will return the data type: `struct<id: int>` + *

    + *
  • + * + *
  • 2. collect the access paths + *

    for example, select struct(s, 'id'), struct(s, 'data') from tbl` will collect the access path: + * [s.id, s.data] + *

    + *
  • + */ +public class NestedColumnPruning implements CustomRewriter { + public static final Logger LOG = LogManager.getLogger(NestedColumnPruning.class); + + @Override + public Plan rewriteRoot(Plan plan, JobContext jobContext) { + try { + StatementContext statementContext = jobContext.getCascadesContext().getStatementContext(); + SessionVariable sessionVariable = statementContext.getConnectContext().getSessionVariable(); + if (!sessionVariable.enablePruneNestedColumns || !statementContext.hasNestedColumns()) { + return plan; + } + + AccessPathPlanCollector collector = new AccessPathPlanCollector(); + Map> slotToAccessPaths = collector.collect(plan, statementContext); + Map slotToResult = pruneDataType(slotToAccessPaths); + + if (!slotToResult.isEmpty()) { + Map slotIdToPruneType = Maps.newLinkedHashMap(); + for (Entry kv : slotToResult.entrySet()) { + Integer slotId = kv.getKey(); + AccessPathInfo accessPathInfo = kv.getValue(); + slotIdToPruneType.put(slotId, accessPathInfo); + } + return new SlotTypeReplacer(slotIdToPruneType, plan).replace(); + } + return plan; + } catch (Throwable t) { + LOG.warn("NestedColumnPruning failed.", t); + return plan; + } + } + + private static Map pruneDataType( + Map> slotToAccessPaths) { + Map result = new LinkedHashMap<>(); + Map slotIdToAllAccessTree = new LinkedHashMap<>(); + Map slotIdToPredicateAccessTree = new LinkedHashMap<>(); + + Comparator>> pathComparator = Comparator.comparing( + l -> StringUtils.join(l.second, ".")); + + Multimap>> allAccessPaths = TreeMultimap.create( + Comparator.naturalOrder(), pathComparator); + Multimap>> predicateAccessPaths = TreeMultimap.create( + Comparator.naturalOrder(), pathComparator); + + // first: build access data type tree + for (Entry> kv : slotToAccessPaths.entrySet()) { + Slot slot = kv.getKey(); + List collectAccessPathResults = kv.getValue(); + for (CollectAccessPathResult collectAccessPathResult : collectAccessPathResults) { + List path = collectAccessPathResult.getPath(); + TAccessPathType pathType = collectAccessPathResult.getType(); + DataTypeAccessTree allAccessTree = slotIdToAllAccessTree.computeIfAbsent( + slot, i -> DataTypeAccessTree.ofRoot(slot, pathType) + ); + allAccessTree.setAccessByPath(path, 0, pathType); + allAccessPaths.put(slot.getExprId().asInt(), Pair.of(pathType, path)); + + if (collectAccessPathResult.isPredicate()) { + DataTypeAccessTree predicateAccessTree = slotIdToPredicateAccessTree.computeIfAbsent( + slot, i -> DataTypeAccessTree.ofRoot(slot, pathType) + ); + predicateAccessTree.setAccessByPath(path, 0, pathType); + predicateAccessPaths.put( + slot.getExprId().asInt(), Pair.of(pathType, path) + ); + } + } + } + + // second: build non-predicate access paths + for (Entry kv : slotIdToAllAccessTree.entrySet()) { + Slot slot = kv.getKey(); + DataTypeAccessTree accessTree = kv.getValue(); + DataType prunedDataType = accessTree.pruneDataType().orElse(slot.getDataType()); + + List allPaths = new ArrayList<>(); + boolean accessWholeColumn = false; + TAccessPathType accessWholeColumnType = TAccessPathType.META; + for (Pair> pathInfo : allAccessPaths.get(slot.getExprId().asInt())) { + if (pathInfo.first == TAccessPathType.DATA) { + TDataAccessPath dataAccessPath = new TDataAccessPath(); + dataAccessPath.setPath(new ArrayList<>(pathInfo.second)); + TColumnAccessPath accessPath = new TColumnAccessPath(TAccessPathType.DATA); + accessPath.setDataAccessPath(dataAccessPath); + allPaths.add(accessPath); + } else { + TMetaAccessPath dataAccessPath = new TMetaAccessPath(); + dataAccessPath.setPath(new ArrayList<>(pathInfo.second)); + TColumnAccessPath accessPath = new TColumnAccessPath(TAccessPathType.META); + accessPath.setMetaAccessPath(dataAccessPath); + allPaths.add(accessPath); + } + // only retain access the whole root + if (pathInfo.second.size() == 1) { + accessWholeColumn = true; + if (pathInfo.first == TAccessPathType.DATA) { + accessWholeColumnType = TAccessPathType.DATA; + } + } else { + accessWholeColumnType = TAccessPathType.DATA; + } + } + if (accessWholeColumn) { + TColumnAccessPath accessPath = new TColumnAccessPath(accessWholeColumnType); + SlotReference slotReference = (SlotReference) kv.getKey(); + String wholeColumnName = slotReference.getOriginalColumn().get().getName(); + if (accessWholeColumnType == TAccessPathType.DATA) { + accessPath.setDataAccessPath(new TDataAccessPath(ImmutableList.of(wholeColumnName))); + } else { + accessPath.setMetaAccessPath(new TMetaAccessPath(ImmutableList.of(wholeColumnName))); + } + allPaths = ImmutableList.of(accessPath); + } + result.put(slot.getExprId().asInt(), new AccessPathInfo(prunedDataType, allPaths, new ArrayList<>())); + } + + // third: build predicate access path + for (Entry kv : slotIdToPredicateAccessTree.entrySet()) { + Slot slot = kv.getKey(); + + List predicatePaths = new ArrayList<>(); + boolean accessWholeColumn = false; + TAccessPathType accessWholeColumnType = TAccessPathType.META; + for (Pair> pathInfo : predicateAccessPaths.get(slot.getExprId().asInt())) { + if (pathInfo == null) { + throw new AnalysisException("This is a bug, please report this"); + } + + if (pathInfo.first == TAccessPathType.DATA) { + TDataAccessPath dataAccessPath = new TDataAccessPath(); + dataAccessPath.setPath(new ArrayList<>(pathInfo.second)); + TColumnAccessPath accessPath = new TColumnAccessPath(TAccessPathType.DATA); + accessPath.setDataAccessPath(dataAccessPath); + predicatePaths.add(accessPath); + } else { + TMetaAccessPath dataAccessPath = new TMetaAccessPath(); + dataAccessPath.setPath(new ArrayList<>(pathInfo.second)); + TColumnAccessPath accessPath = new TColumnAccessPath(TAccessPathType.META); + accessPath.setMetaAccessPath(dataAccessPath); + predicatePaths.add(accessPath); + } + // only retain access the whole root + if (pathInfo.second.size() == 1) { + accessWholeColumn = true; + if (pathInfo.first == TAccessPathType.DATA) { + accessWholeColumnType = TAccessPathType.DATA; + } + } else { + accessWholeColumnType = TAccessPathType.DATA; + } + } + + if (accessWholeColumn) { + TColumnAccessPath accessPath = new TColumnAccessPath(accessWholeColumnType); + SlotReference slotReference = (SlotReference) kv.getKey(); + String wholeColumnName = slotReference.getOriginalColumn().get().getName(); + if (accessWholeColumnType == TAccessPathType.DATA) { + accessPath.setDataAccessPath(new TDataAccessPath(ImmutableList.of(wholeColumnName))); + } else { + accessPath.setMetaAccessPath(new TMetaAccessPath(ImmutableList.of(wholeColumnName))); + } + predicatePaths = ImmutableList.of(accessPath); + } + + AccessPathInfo accessPathInfo = result.get(slot.getExprId().asInt()); + accessPathInfo.getPredicateAccessPaths().addAll(predicatePaths); + } + + return result; + } + + /** DataTypeAccessTree */ + public static class DataTypeAccessTree { + private DataType type; + private boolean isRoot; + private boolean accessPartialChild; + private boolean accessAll; + private TAccessPathType pathType; + private Map children = new LinkedHashMap<>(); + + public DataTypeAccessTree(DataType type, TAccessPathType pathType) { + this(false, type, pathType); + } + + public DataTypeAccessTree(boolean isRoot, DataType type, TAccessPathType pathType) { + this.isRoot = isRoot; + this.type = type; + this.pathType = pathType; + } + + /** pruneCastType */ + public DataType pruneCastType(DataTypeAccessTree origin, DataTypeAccessTree cast) { + if (type instanceof StructType) { + Map nameMapping = new LinkedHashMap<>(); + List castNames = new ArrayList<>(cast.children.keySet()); + int i = 0; + for (String s : origin.children.keySet()) { + nameMapping.put(s, castNames.get(i++)); + } + List mappingFields = new ArrayList<>(); + StructType originCastStructType = (StructType) cast.type; + for (Entry kv : children.entrySet()) { + String originName = kv.getKey(); + String mappingName = nameMapping.getOrDefault(originName, originName); + DataTypeAccessTree originPrunedTree = kv.getValue(); + DataType mappingType = originPrunedTree.pruneCastType( + origin.children.get(originName), + cast.children.get(mappingName) + ); + StructField originCastField = originCastStructType.getField(mappingName); + mappingFields.add( + new StructField(mappingName, mappingType, + originCastField.isNullable(), originCastField.getComment()) + ); + } + return new StructType(mappingFields); + } else if (type instanceof ArrayType) { + return ArrayType.of( + children.values().iterator().next().pruneCastType( + origin.children.values().iterator().next(), + cast.children.values().iterator().next() + ), + ((ArrayType) cast.type).containsNull() + ); + } else if (type instanceof MapType) { + return MapType.of( + children.get("KEYS").pruneCastType(origin.children.get("KEYS"), cast.children.get("KEYS")), + children.get("VALUES").pruneCastType(origin.children.get("VALUES"), cast.children.get("VALUES")) + ); + } else { + return cast.type; + } + } + + /** replacePathByAnotherTree */ + public boolean replacePathByAnotherTree(DataTypeAccessTree cast, List path, int index) { + if (index >= path.size()) { + return true; + } + if (cast.type instanceof StructType) { + List fields = ((StructType) cast.type).getFields(); + for (int i = 0; i < fields.size(); i++) { + String castFieldName = path.get(index); + if (fields.get(i).getName().equalsIgnoreCase(castFieldName)) { + String originFieldName = ((StructType) type).getFields().get(i).getName(); + path.set(index, originFieldName); + return children.get(originFieldName).replacePathByAnotherTree( + cast.children.get(castFieldName), path, index + 1 + ); + } + } + } else if (cast.type instanceof ArrayType) { + return children.values().iterator().next().replacePathByAnotherTree( + cast.children.values().iterator().next(), path, index + 1); + } else if (cast.type instanceof MapType) { + String fieldName = path.get(index); + return children.get("VALUES").replacePathByAnotherTree( + cast.children.get(fieldName), path, index + 1 + ); + } + return false; + } + + /** setAccessByPath */ + public void setAccessByPath(List path, int accessIndex, TAccessPathType pathType) { + if (accessIndex >= path.size()) { + accessAll = true; + return; + } else { + accessPartialChild = true; + } + + if (pathType == TAccessPathType.DATA) { + this.pathType = TAccessPathType.DATA; + } + + if (this.type.isStructType()) { + String fieldName = path.get(accessIndex).toLowerCase(); + DataTypeAccessTree child = children.get(fieldName); + if (child != null) { + child.setAccessByPath(path, accessIndex + 1, pathType); + } else { + // can not find the field + accessAll = true; + } + return; + } else if (this.type.isArrayType()) { + DataTypeAccessTree child = children.get("*"); + if (path.get(accessIndex).equals("*")) { + // enter this array and skip next * + child.setAccessByPath(path, accessIndex + 1, pathType); + } + return; + } else if (this.type.isMapType()) { + String fieldName = path.get(accessIndex); + if (fieldName.equals("*")) { + // access value by the key, so we should access key and access value, then prune the value's type. + // e.g. map_column['id'] should access the keys, and access the values + DataTypeAccessTree keysChild = children.get("KEYS"); + DataTypeAccessTree valuesChild = children.get("VALUES"); + keysChild.accessAll = true; + valuesChild.setAccessByPath(path, accessIndex + 1, pathType); + return; + } else if (fieldName.equals("KEYS")) { + // only access the keys and not need enter keys, because it must be primitive type. + // e.g. map_keys(map_column) + DataTypeAccessTree keysChild = children.get("KEYS"); + keysChild.accessAll = true; + return; + } else if (fieldName.equals("VALUES")) { + // only access the values without keys, and maybe prune the value's data type. + // e.g. map_values(map_columns)[0] will access the array of values first, + // and then access the array, so the access path is ['VALUES', '*'] + DataTypeAccessTree valuesChild = children.get("VALUES"); + valuesChild.setAccessByPath(path, accessIndex + 1, pathType); + return; + } + } else if (isRoot) { + children.get(path.get(accessIndex).toLowerCase()).setAccessByPath(path, accessIndex + 1, pathType); + return; + } + throw new AnalysisException("unsupported data type: " + this.type); + } + + public static DataTypeAccessTree ofRoot(Slot slot, TAccessPathType pathType) { + DataTypeAccessTree child = of(slot.getDataType(), pathType); + DataTypeAccessTree root = new DataTypeAccessTree(true, NullType.INSTANCE, pathType); + root.children.put(slot.getName().toLowerCase(), child); + return root; + } + + /** of */ + public static DataTypeAccessTree of(DataType type, TAccessPathType pathType) { + DataTypeAccessTree root = new DataTypeAccessTree(type, pathType); + if (type instanceof StructType) { + StructType structType = (StructType) type; + for (Entry kv : structType.getNameToFields().entrySet()) { + root.children.put(kv.getKey().toLowerCase(), of(kv.getValue().getDataType(), pathType)); + } + } else if (type instanceof ArrayType) { + root.children.put("*", of(((ArrayType) type).getItemType(), pathType)); + } else if (type instanceof MapType) { + root.children.put("KEYS", of(((MapType) type).getKeyType(), pathType)); + root.children.put("VALUES", of(((MapType) type).getValueType(), pathType)); + } + return root; + } + + /** pruneDataType */ + public Optional pruneDataType() { + if (isRoot) { + return children.values().iterator().next().pruneDataType(); + } else if (accessAll) { + return Optional.of(type); + } else if (!accessPartialChild) { + return Optional.empty(); + } + + List> accessedChildren = new ArrayList<>(); + + if (type instanceof StructType) { + for (Entry kv : children.entrySet()) { + DataTypeAccessTree childTypeTree = kv.getValue(); + Optional childDataType = childTypeTree.pruneDataType(); + if (childDataType.isPresent()) { + accessedChildren.add(Pair.of(kv.getKey(), childDataType.get())); + } + } + } else if (type instanceof ArrayType) { + Optional childDataType = children.get("*").pruneDataType(); + if (childDataType.isPresent()) { + accessedChildren.add(Pair.of("*", childDataType.get())); + } + } else if (type instanceof MapType) { + DataType prunedValueType = children.get("VALUES") + .pruneDataType() + .orElse(((MapType) type).getValueType()); + // can not prune keys but can prune values + accessedChildren.add(Pair.of("KEYS", ((MapType) type).getKeyType())); + accessedChildren.add(Pair.of("VALUES", prunedValueType)); + } + if (accessedChildren.isEmpty()) { + return Optional.of(type); + } + + return Optional.of(pruneDataType(type, accessedChildren)); + } + + private DataType pruneDataType(DataType dataType, List> newChildrenTypes) { + if (dataType instanceof StructType) { + // prune struct fields + StructType structType = (StructType) dataType; + Map nameToFields = structType.getNameToFields(); + List newFields = new ArrayList<>(); + for (Pair kv : newChildrenTypes) { + String fieldName = kv.first; + StructField originField = nameToFields.get(fieldName); + DataType prunedType = kv.second; + newFields.add(new StructField( + originField.getName(), prunedType, originField.isNullable(), originField.getComment() + )); + } + return new StructType(newFields); + } else if (dataType instanceof ArrayType) { + return ArrayType.of(newChildrenTypes.get(0).second, ((ArrayType) dataType).containsNull()); + } else if (dataType instanceof MapType) { + return MapType.of(newChildrenTypes.get(0).second, newChildrenTypes.get(1).second); + } else { + throw new AnalysisException("unsupported data type: " + dataType); + } + } + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java new file mode 100644 index 00000000000000..8b1fbaac8aec9e --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java @@ -0,0 +1,412 @@ +// 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.nereids.rules.rewrite; + +import org.apache.doris.common.Pair; +import org.apache.doris.nereids.StatementContext; +import org.apache.doris.nereids.pattern.MatchingContext; +import org.apache.doris.nereids.rules.Rule; +import org.apache.doris.nereids.rules.RuleType; +import org.apache.doris.nereids.trees.expressions.Alias; +import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.NamedExpression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; +import org.apache.doris.nereids.trees.expressions.Slot; +import org.apache.doris.nereids.trees.expressions.SlotReference; +import org.apache.doris.nereids.trees.plans.Plan; +import org.apache.doris.nereids.trees.plans.algebra.SetOperation.Qualifier; +import org.apache.doris.nereids.trees.plans.logical.LogicalJoin; +import org.apache.doris.nereids.trees.plans.logical.LogicalOneRowRelation; +import org.apache.doris.nereids.trees.plans.logical.LogicalPlan; +import org.apache.doris.nereids.trees.plans.logical.LogicalProject; +import org.apache.doris.nereids.trees.plans.logical.LogicalUnion; + +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Multimap; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.function.Function; + +/** push down project if the expression instance of PreferPushDownProject */ +public class PushDownProject implements RewriteRuleFactory, NormalizeToSlot { + @Override + public List buildRules() { + return ImmutableList.of( + RuleType.PUSH_DOWN_PROJECT_THROUGH_JOIN.build( + logicalJoin().thenApply(this::pushDownJoinExpressions) + ), + RuleType.PUSH_DOWN_PROJECT_THROUGH_JOIN.build( + logicalProject(logicalJoin()).thenApply(this::defaultPushDownProject) + ), + RuleType.PUSH_DOWN_PROJECT_THROUGH_WINDOW.build( + logicalProject(logicalWindow()).thenApply(this::defaultPushDownProject) + ), + RuleType.PUSH_DOWN_PROJECT_THROUGH_PARTITION_TOP_N.build( + logicalProject(logicalPartitionTopN()).thenApply(this::defaultPushDownProject) + ), + // RuleType.PUSH_DOWN_PROJECT_THROUGH_DEFER_MATERIALIZE_TOP_N.build( + // logicalProject(logicalDeferMaterializeTopN()).thenApply(this::defaultPushDownProject) + // ), + RuleType.PUSH_DOWN_PROJECT_THROUGH_UNION.build( + logicalProject( + logicalUnion().when(u -> u.getQualifier() == Qualifier.ALL) + ).thenApply(this::pushThroughUnion) + ) + ); + } + + private Plan pushDownJoinExpressions(MatchingContext> ctx) { + LogicalJoin join = ctx.root; + Optional, Map>>> rewriteHashJoinConjunctsResult + = pushDownProjectInExpressions(join, join.getHashJoinConjuncts(), ctx.statementContext); + Optional, Map>>> rewriteOtherJoinConjunctsResult + = pushDownProjectInExpressions(join, join.getOtherJoinConjuncts(), ctx.statementContext); + if (!rewriteHashJoinConjunctsResult.isPresent() && !rewriteOtherJoinConjunctsResult.isPresent()) { + return join; + } + + List newHashJoinConjuncts = rewriteHashJoinConjunctsResult.isPresent() + ? rewriteHashJoinConjunctsResult.get().first : join.getHashJoinConjuncts(); + List newOtherJoinConjuncts = rewriteOtherJoinConjunctsResult.isPresent() + ? rewriteOtherJoinConjunctsResult.get().first : join.getOtherJoinConjuncts(); + + List> pushedOutput = new ArrayList<>(); + pushedOutput.add(new ArrayList<>(join.left().getOutput())); + pushedOutput.add(new ArrayList<>(join.right().getOutput())); + + if (rewriteHashJoinConjunctsResult.isPresent()) { + Map> childIndexToConjuncts = rewriteHashJoinConjunctsResult.get().second; + List leftConjuncts = childIndexToConjuncts.get(0); + if (leftConjuncts != null) { + pushedOutput.get(0).addAll(leftConjuncts); + } + List rightConjuncts = childIndexToConjuncts.get(1); + if (rightConjuncts != null) { + pushedOutput.get(1).addAll(rightConjuncts); + } + } + if (rewriteOtherJoinConjunctsResult.isPresent()) { + Map> childIndexToConjuncts = rewriteOtherJoinConjunctsResult.get().second; + List leftOtherConjuncts = childIndexToConjuncts.get(0); + if (leftOtherConjuncts != null) { + pushedOutput.get(0).addAll(leftOtherConjuncts); + } + List rightOtherConjuncts = childIndexToConjuncts.get(1); + if (rightOtherConjuncts != null) { + pushedOutput.get(1).addAll(rightOtherConjuncts); + } + } + + Plan newLeft = join.left(); + Plan newRight = join.right(); + if (pushedOutput.get(0).size() != newLeft.getOutput().size()) { + newLeft = new LogicalProject<>(pushedOutput.get(0), newLeft); + } + if (pushedOutput.get(1).size() != newRight.getOutput().size()) { + newRight = new LogicalProject<>(pushedOutput.get(1), newRight); + } + + return join.withJoinConjuncts( + newHashJoinConjuncts, newOtherJoinConjuncts, + join.getMarkJoinConjuncts(), join.getJoinReorderContext() + ).withChildren(newLeft, newRight); + } + + // return: + // key: rewrite the PreferPushDownProject to slot + // value: the pushed down project outputs which contains the Alias(PreferPushDownProject) + private Optional, Map>>> pushDownProjectInExpressions( + Plan plan, Collection expressions, StatementContext context) { + + boolean changed = false; + Map> childIndexToPushedAlias = new LinkedHashMap<>(); + List newExpressions = new ArrayList<>(); + for (Expression expression : expressions) { + Expression newExpression = expression.rewriteDownShortCircuit(e -> { + if (e instanceof PreferPushDownProject) { + List children = plan.children(); + for (int i = 0; i < children.size(); i++) { + Plan child = children.get(i); + if (child.getOutputSet().containsAll(e.getInputSlots())) { + Alias alias = new Alias(context.getNextExprId(), e); + Slot slot = alias.toSlot(); + List namedExpressions + = childIndexToPushedAlias.computeIfAbsent(i, k -> new ArrayList<>()); + namedExpressions.add(alias); + return slot; + } + } + } + return e; + }); + newExpressions.add(newExpression); + changed |= newExpression != expression; + } + if (changed) { + return Optional.of(Pair.of(newExpressions, childIndexToPushedAlias)); + } + return Optional.empty(); + } + + private Plan defaultPushDownProject(MatchingContext> ctx) { + if (!ctx.connectContext.getSessionVariable().enablePruneNestedColumns) { + return ctx.root; + } + + LogicalProject project = ctx.root; + C child = project.child(); + PushdownProjectHelper pushdownProjectHelper + = new PushdownProjectHelper(ctx.statementContext, child); + + Pair> pushProjects + = pushdownProjectHelper.pushDownExpressions(project.getProjects()); + + if (pushProjects.first) { + List newJoinChildren = pushdownProjectHelper.buildNewChildren(); + return new LogicalProject<>( + pushProjects.second, + child.withChildren(newJoinChildren) + ); + } + return project; + } + + private Plan pushThroughUnion(MatchingContext> ctx) { + if (!ctx.connectContext.getSessionVariable().enablePruneNestedColumns) { + return ctx.root; + } + LogicalProject project = ctx.root; + LogicalUnion union = project.child(); + PushdownProjectHelper pushdownProjectHelper + = new PushdownProjectHelper(ctx.statementContext, project); + + Pair> pushProjects + = pushdownProjectHelper.pushDownExpressions(project.getProjects()); + if (pushProjects.first) { + List unionOutputs = union.getOutputs(); + Map slotToColumnIndex = new LinkedHashMap<>(); + for (int i = 0; i < unionOutputs.size(); i++) { + NamedExpression output = unionOutputs.get(i); + slotToColumnIndex.put(output.toSlot(), i); + } + + Collection pushDownProjections + = pushdownProjectHelper.childToPushDownProjects.values(); + List newChildren = new ArrayList<>(); + List> newChildrenOutputs = new ArrayList<>(); + for (Plan child : union.children()) { + List pushedOutput = replaceSlot( + ctx.statementContext, + pushDownProjections, + slot -> { + Integer sourceColumnIndex = slotToColumnIndex.get(slot); + if (sourceColumnIndex != null) { + return child.getOutput().get(sourceColumnIndex).toSlot(); + } + return slot; + } + ); + + LogicalProject newChild = new LogicalProject<>( + ImmutableList.builder() + .addAll(child.getOutput()) + .addAll(pushedOutput) + .build(), + child + ); + + newChildrenOutputs.add((List) newChild.getOutput()); + newChildren.add(newChild); + } + + for (List originConstantExprs : union.getConstantExprsList()) { + List pushedOutput = replaceSlot( + ctx.statementContext, + pushDownProjections, + slot -> { + Integer sourceColumnIndex = slotToColumnIndex.get(slot); + if (sourceColumnIndex != null) { + return originConstantExprs.get(sourceColumnIndex).toSlot(); + } + return slot; + } + ); + + LogicalOneRowRelation originOneRowRelation = new LogicalOneRowRelation( + ctx.statementContext.getNextRelationId(), + originConstantExprs + ); + + LogicalProject newChild = new LogicalProject<>( + ImmutableList.builder() + .addAll(originOneRowRelation.getOutput()) + .addAll(pushedOutput) + .build(), + originOneRowRelation + ); + + newChildrenOutputs.add((List) newChild.getOutput()); + newChildren.add(newChild); + } + + List newUnionOutputs = new ArrayList<>(union.getOutputs()); + for (NamedExpression projection : pushDownProjections) { + newUnionOutputs.add(projection.toSlot()); + } + + return new LogicalProject<>( + pushProjects.second, + new LogicalUnion( + union.getQualifier(), + newUnionOutputs, + newChildrenOutputs, + ImmutableList.of(), + union.hasPushedFilter(), + newChildren + ) + ); + } + return project; + } + + private List replaceSlot( + StatementContext statementContext, + Collection pushDownProjections, + Function slotReplace) { + List pushedOutput = new ArrayList<>(); + for (NamedExpression projection : pushDownProjections) { + NamedExpression newOutput = (NamedExpression) projection.rewriteUp(e -> { + if (e instanceof Slot) { + Slot newSlot = slotReplace.apply((Slot) e); + if (newSlot != null) { + return newSlot; + } + } + return e; + }); + if (newOutput instanceof Alias) { + pushedOutput.add(new Alias(statementContext.getNextExprId(), newOutput.child(0))); + } else { + pushedOutput.add(new Alias(statementContext.getNextExprId(), newOutput)); + } + } + return pushedOutput; + } + + private static class PushdownProjectHelper { + private final Plan plan; + private final StatementContext statementContext; + private final Map> exprToChildAndSlot; + private final Multimap childToPushDownProjects; + + public PushdownProjectHelper(StatementContext statementContext, Plan plan) { + this.statementContext = statementContext; + this.plan = plan; + this.exprToChildAndSlot = new LinkedHashMap<>(); + this.childToPushDownProjects = ArrayListMultimap.create(); + } + + public , E extends Expression> Pair pushDownExpressions(C expressions) { + ImmutableCollection.Builder builder; + if (expressions instanceof List) { + builder = ImmutableList.builderWithExpectedSize(expressions.size()); + } else { + builder = ImmutableSet.builderWithExpectedSize(expressions.size()); + } + + boolean extracted = false; + for (E expression : expressions) { + Optional result = pushDownExpression(expression); + if (!result.isPresent()) { + builder.add(expression); + } else { + extracted = true; + builder.add(result.get()); + } + } + + if (extracted) { + return Pair.of(true, (C) builder.build()); + } else { + return Pair.of(false, expressions); + } + } + + public Optional pushDownExpression(E expression) { + if (!(expression instanceof PreferPushDownProject + || (expression instanceof Alias && expression.child(0) instanceof PreferPushDownProject))) { + return Optional.empty(); + } + Pair existPushdown = exprToChildAndSlot.get(expression); + if (existPushdown != null) { + return Optional.of((E) existPushdown.first); + } + + Alias pushDownAlias = null; + if (expression instanceof Alias) { + pushDownAlias = (Alias) expression; + } else { + pushDownAlias = new Alias(statementContext.getNextExprId(), expression); + } + + Set inputSlots = expression.getInputSlots(); + for (Plan child : plan.children()) { + if (child.getOutputSet().containsAll(inputSlots)) { + Slot remaimSlot = pushDownAlias.toSlot(); + exprToChildAndSlot.put(expression, Pair.of(remaimSlot, child)); + childToPushDownProjects.put(child, pushDownAlias); + return Optional.of((E) remaimSlot); + } + } + return Optional.empty(); + } + + public List buildNewChildren() { + if (childToPushDownProjects.isEmpty()) { + return plan.children(); + } + ImmutableList.Builder newChildren = ImmutableList.builderWithExpectedSize(plan.arity()); + for (Plan child : plan.children()) { + Collection newProject = childToPushDownProjects.get(child); + if (newProject.isEmpty()) { + newChildren.add(child); + } else { + newChildren.add( + new LogicalProject<>( + ImmutableList.builder() + .addAll(child.getOutput()) + .addAll(newProject) + .build(), + child + ) + ); + } + } + return newChildren.build(); + } + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java new file mode 100644 index 00000000000000..9f6a02391eb8a8 --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java @@ -0,0 +1,728 @@ +// 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.nereids.rules.rewrite; + +import org.apache.doris.analysis.AccessPathInfo; +import org.apache.doris.catalog.Column; +import org.apache.doris.common.Pair; +import org.apache.doris.datasource.iceberg.IcebergExternalTable; +import org.apache.doris.nereids.properties.OrderKey; +import org.apache.doris.nereids.rules.rewrite.NestedColumnPruning.DataTypeAccessTree; +import org.apache.doris.nereids.trees.expressions.ArrayItemReference; +import org.apache.doris.nereids.trees.expressions.Cast; +import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.NamedExpression; +import org.apache.doris.nereids.trees.expressions.OrderExpression; +import org.apache.doris.nereids.trees.expressions.Slot; +import org.apache.doris.nereids.trees.expressions.SlotReference; +import org.apache.doris.nereids.trees.expressions.functions.Function; +import org.apache.doris.nereids.trees.expressions.functions.scalar.Lambda; +import org.apache.doris.nereids.trees.expressions.functions.table.TableValuedFunction; +import org.apache.doris.nereids.trees.plans.Plan; +import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTEConsumer; +import org.apache.doris.nereids.trees.plans.logical.LogicalCTEProducer; +import org.apache.doris.nereids.trees.plans.logical.LogicalDeferMaterializeOlapScan; +import org.apache.doris.nereids.trees.plans.logical.LogicalDeferMaterializeTopN; +import org.apache.doris.nereids.trees.plans.logical.LogicalEmptyRelation; +import org.apache.doris.nereids.trees.plans.logical.LogicalExcept; +import org.apache.doris.nereids.trees.plans.logical.LogicalFileScan; +import org.apache.doris.nereids.trees.plans.logical.LogicalFilter; +import org.apache.doris.nereids.trees.plans.logical.LogicalGenerate; +import org.apache.doris.nereids.trees.plans.logical.LogicalIntersect; +import org.apache.doris.nereids.trees.plans.logical.LogicalJoin; +import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan; +import org.apache.doris.nereids.trees.plans.logical.LogicalOneRowRelation; +import org.apache.doris.nereids.trees.plans.logical.LogicalPartitionTopN; +import org.apache.doris.nereids.trees.plans.logical.LogicalProject; +import org.apache.doris.nereids.trees.plans.logical.LogicalRepeat; +import org.apache.doris.nereids.trees.plans.logical.LogicalResultSink; +import org.apache.doris.nereids.trees.plans.logical.LogicalSort; +import org.apache.doris.nereids.trees.plans.logical.LogicalTVFRelation; +import org.apache.doris.nereids.trees.plans.logical.LogicalTopN; +import org.apache.doris.nereids.trees.plans.logical.LogicalUnion; +import org.apache.doris.nereids.trees.plans.logical.LogicalWindow; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumn; +import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanRewriter; +import org.apache.doris.nereids.types.ArrayType; +import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.MapType; +import org.apache.doris.nereids.types.NestedColumnPrunable; +import org.apache.doris.nereids.types.StructType; +import org.apache.doris.nereids.util.MoreFieldsThread; +import org.apache.doris.thrift.TAccessPathType; +import org.apache.doris.thrift.TColumnAccessPath; +import org.apache.doris.thrift.TDataAccessPath; +import org.apache.doris.thrift.TMetaAccessPath; + +import com.google.common.collect.ImmutableCollection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableMultimap.Builder; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; +import com.google.common.collect.Sets; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.IdentityHashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import java.util.Set; + +/** SlotTypeReplacer */ +public class SlotTypeReplacer extends DefaultPlanRewriter { + private Plan plan; + private Map replacedDataTypes; + private IdentityHashMap shouldPrunePlans = new IdentityHashMap(); + + public SlotTypeReplacer(Map bottomReplacedDataTypes, Plan plan) { + this.replacedDataTypes = Maps.newLinkedHashMap(bottomReplacedDataTypes); + this.plan = plan; + } + + /** replace */ + public Plan replace() { + Set shouldReplaceSlots = Sets.newLinkedHashSet(); + plan.foreachUp(p -> { + if (p instanceof LogicalTVFRelation) { + TableValuedFunction function = ((LogicalTVFRelation) p).getFunction(); + tryRecordReplaceSlots((Plan) p, function, shouldReplaceSlots); + } else { + tryRecordReplaceSlots((Plan) p, p, shouldReplaceSlots); + } + }); + replacedDataTypes.keySet().retainAll(shouldReplaceSlots); + + if (replacedDataTypes.isEmpty()) { + return plan; + } + return plan.accept(this, null); + } + + @Override + public Plan visitLogicalCTEProducer(LogicalCTEProducer cteProducer, Void context) { + return super.visitLogicalCTEProducer(cteProducer, context); + } + + @Override + public Plan visitLogicalWindow(LogicalWindow window, Void context) { + window = visitChildren(this, window, context); + Pair> replaced = replaceExpressions( + window.getExpressions(), false, false); + if (replaced.first) { + return window.withExpressionsAndChild((List) replaced.second, window.child()); + } + return window; + } + + @Override + public Plan visitLogicalCTEConsumer(LogicalCTEConsumer cteConsumer, Void context) { + Map consumerToProducerOutputMap = cteConsumer.getConsumerToProducerOutputMap(); + Multimap producerToConsumerOutputMap = cteConsumer.getProducerToConsumerOutputMap(); + + Map replacedConsumerToProducerOutputMap = new LinkedHashMap<>(); + Builder replacedProducerToConsumerOutputMap = ImmutableMultimap.builder(); + + boolean changed = false; + for (Entry kv : consumerToProducerOutputMap.entrySet()) { + Slot consumerSlot = kv.getKey(); + Slot producerSlot = kv.getValue(); + AccessPathInfo accessPathInfo = replacedDataTypes.get(producerSlot.getExprId().asInt()); + if (accessPathInfo != null) { + DataType prunedType = accessPathInfo.getPrunedType(); + if (!prunedType.equals(producerSlot.getDataType())) { + replacedDataTypes.put(consumerSlot.getExprId().asInt(), accessPathInfo); + changed = true; + producerSlot = producerSlot.withNullableAndDataType(producerSlot.nullable(), prunedType); + consumerSlot = consumerSlot.withNullableAndDataType(consumerSlot.nullable(), prunedType); + } + } + replacedConsumerToProducerOutputMap.put(consumerSlot, producerSlot); + } + + for (Entry> kv : producerToConsumerOutputMap.asMap().entrySet()) { + Slot producerSlot = kv.getKey(); + Collection consumerSlots = kv.getValue(); + AccessPathInfo accessPathInfo = replacedDataTypes.get(producerSlot.getExprId().asInt()); + if (accessPathInfo != null && !accessPathInfo.getPrunedType().equals(producerSlot.getDataType())) { + DataType replacedDataType = accessPathInfo.getPrunedType(); + changed = true; + producerSlot = producerSlot.withNullableAndDataType(producerSlot.nullable(), replacedDataType); + for (Slot consumerSlot : consumerSlots) { + consumerSlot = consumerSlot.withNullableAndDataType(consumerSlot.nullable(), replacedDataType); + replacedProducerToConsumerOutputMap.put(producerSlot, consumerSlot); + } + } else { + replacedProducerToConsumerOutputMap.putAll(producerSlot, consumerSlots); + } + } + + if (changed) { + return new LogicalCTEConsumer( + cteConsumer.getRelationId(), cteConsumer.getCteId(), cteConsumer.getName(), + replacedConsumerToProducerOutputMap, replacedProducerToConsumerOutputMap.build() + ); + } + return cteConsumer; + } + + @Override + public Plan visitLogicalJoin(LogicalJoin join, Void context) { + join = visitChildren(this, join, context); + Pair> replacedHashJoinConjuncts + = replaceExpressions(join.getHashJoinConjuncts(), false, false); + Pair> replacedOtherJoinConjuncts + = replaceExpressions(join.getOtherJoinConjuncts(), false, false); + + if (replacedHashJoinConjuncts.first || replacedOtherJoinConjuncts.first) { + return join.withJoinConjuncts( + replacedHashJoinConjuncts.second, + replacedOtherJoinConjuncts.second, + join.getJoinReorderContext()); + } + return join; + } + + @Override + public Plan visitLogicalProject(LogicalProject project, Void context) { + project = visitChildren(this, project, context); + + Pair> projects = replaceExpressions(project.getProjects(), true, false); + if (projects.first) { + return project.withProjects(projects.second); + } + return project; + } + + @Override + public Plan visitLogicalPartitionTopN(LogicalPartitionTopN partitionTopN, Void context) { + partitionTopN = visitChildren(this, partitionTopN, context); + + Pair> replacedPartitionKeys = replaceExpressions( + partitionTopN.getPartitionKeys(), false, false); + Pair> replacedOrderExpressions + = replaceOrderExpressions(partitionTopN.getOrderKeys()); + if (replacedPartitionKeys.first || replacedOrderExpressions.first) { + return partitionTopN.withPartitionKeysAndOrderKeys( + replacedPartitionKeys.second, replacedOrderExpressions.second); + } + return partitionTopN; + } + + @Override + public Plan visitLogicalDeferMaterializeTopN(LogicalDeferMaterializeTopN topN, Void context) { + topN = visitChildren(this, topN, context); + + LogicalTopN logicalTopN = (LogicalTopN) topN.getLogicalTopN().accept(this, context); + if (logicalTopN != topN.getLogicalTopN()) { + SlotReference replacedColumnIdSlot = replaceExpressions( + ImmutableList.of(topN.getColumnIdSlot()), false, false).second.get(0); + return new LogicalDeferMaterializeTopN( + logicalTopN, topN.getDeferMaterializeSlotIds(), replacedColumnIdSlot); + } + + return topN; + } + + @Override + public Plan visitLogicalExcept(LogicalExcept except, Void context) { + except = visitChildren(this, except, context); + + Pair>> replacedRegularChildrenOutputs = replaceMultiExpressions( + except.getRegularChildrenOutputs()); + + Pair> replacedOutputs + = replaceExpressions(except.getOutputs(), true, false); + + if (replacedRegularChildrenOutputs.first || replacedOutputs.first) { + return new LogicalExcept(except.getQualifier(), except.getOutputs(), + except.getRegularChildrenOutputs(), except.children()); + } + + return except; + } + + @Override + public Plan visitLogicalIntersect(LogicalIntersect intersect, Void context) { + intersect = visitChildren(this, intersect, context); + + Pair>> replacedRegularChildrenOutputs = replaceMultiExpressions( + intersect.getRegularChildrenOutputs()); + + Pair> replacedOutputs + = replaceExpressions(intersect.getOutputs(), true, false); + + if (replacedRegularChildrenOutputs.first || replacedOutputs.first) { + return new LogicalIntersect(intersect.getQualifier(), intersect.getOutputs(), + intersect.getRegularChildrenOutputs(), intersect.children()); + } + return intersect; + } + + @Override + public Plan visitLogicalUnion(LogicalUnion union, Void context) { + union = visitChildren(this, union, context); + + Pair>> replacedRegularChildrenOutputs = replaceMultiExpressions( + union.getRegularChildrenOutputs()); + + Pair> replacedOutputs + = replaceExpressions(union.getOutputs(), true, false); + + if (replacedRegularChildrenOutputs.first || replacedOutputs.first) { + return new LogicalUnion( + union.getQualifier(), + replacedOutputs.second, + replacedRegularChildrenOutputs.second, + union.getConstantExprsList(), + union.hasPushedFilter(), + union.children() + ); + } + + return union; + } + + @Override + public Plan visitLogicalRepeat(LogicalRepeat repeat, Void context) { + repeat = visitChildren(this, repeat, context); + + Pair>> replacedGroupingSets + = replaceMultiExpressions(repeat.getGroupingSets()); + Pair> replacedOutputs + = replaceExpressions(repeat.getOutputExpressions(), true, false); + + if (replacedGroupingSets.first || replacedOutputs.first) { + return repeat.withGroupSetsAndOutput(replacedGroupingSets.second, replacedOutputs.second); + } + return repeat; + } + + @Override + public Plan visitLogicalGenerate(LogicalGenerate generate, Void context) { + generate = visitChildren(this, generate, context); + + Pair> replacedGenerators + = replaceExpressions(generate.getGenerators(), false, false); + Pair> replacedGeneratorOutput + = replaceExpressions(generate.getGeneratorOutput(), false, false); + if (replacedGenerators.first || replacedGeneratorOutput.first) { + return new LogicalGenerate<>(replacedGenerators.second, replacedGeneratorOutput.second, + generate.getExpandColumnAlias(), generate.child()); + } + return generate; + } + + @Override + public Plan visitLogicalAggregate(LogicalAggregate aggregate, Void context) { + aggregate = visitChildren(this, aggregate, context); + + Pair> replacedGroupBy = replaceExpressions( + aggregate.getGroupByExpressions(), false, false); + Pair> replacedOutput = replaceExpressions( + aggregate.getOutputExpressions(), true, false); + + if (replacedGroupBy.first || replacedOutput.first) { + return aggregate.withGroupByAndOutput(replacedGroupBy.second, replacedOutput.second); + } + return aggregate; + } + + @Override + public Plan visitLogicalSort(LogicalSort sort, Void context) { + sort = visitChildren(this, sort, context); + + Pair> replaced = replaceOrderKeys(sort.getOrderKeys()); + if (replaced.first) { + return sort.withOrderKeys(replaced.second); + } + return sort; + } + + @Override + public Plan visitLogicalTopN(LogicalTopN topN, Void context) { + topN = visitChildren(this, topN, context); + + Pair> replaced = replaceOrderKeys(topN.getOrderKeys()); + if (replaced.first) { + return topN.withOrderKeys(replaced.second); + } + return topN; + } + + @Override + public Plan visitLogicalDeferMaterializeOlapScan( + LogicalDeferMaterializeOlapScan deferMaterializeOlapScan, Void context) { + + LogicalOlapScan logicalOlapScan + = (LogicalOlapScan) deferMaterializeOlapScan.getLogicalOlapScan().accept(this, context); + + if (logicalOlapScan != deferMaterializeOlapScan.getLogicalOlapScan()) { + SlotReference replacedColumnIdSlot = replaceExpressions( + ImmutableList.of(deferMaterializeOlapScan.getColumnIdSlot()), false, false).second.get(0); + return new LogicalDeferMaterializeOlapScan( + logicalOlapScan, deferMaterializeOlapScan.getDeferMaterializeSlotIds(), replacedColumnIdSlot + ); + } + return deferMaterializeOlapScan; + } + + @Override + public Plan visitLogicalFilter(LogicalFilter filter, Void context) { + filter = visitChildren(this, filter, context); + + Pair> replaced = replaceExpressions(filter.getConjuncts(), false, false); + if (replaced.first) { + return filter.withConjuncts(replaced.second); + } + return filter; + } + + @Override + public Plan visitLogicalFileScan(LogicalFileScan fileScan, Void context) { + if (!shouldPrunePlans.containsKey(fileScan)) { + return fileScan; + } + + Pair> replaced = replaceExpressions(fileScan.getOutput(), false, true); + if (replaced.first) { + List replaceSlots = new ArrayList<>(replaced.second); + if (fileScan.getTable() instanceof IcebergExternalTable) { + for (int i = 0; i < replaceSlots.size(); i++) { + Slot slot = replaceSlots.get(i); + if (!(slot instanceof SlotReference)) { + continue; + } + SlotReference slotReference = (SlotReference) slot; + Optional> allAccessPaths = slotReference.getAllAccessPaths(); + if (!allAccessPaths.isPresent() || !slotReference.getOriginalColumn().isPresent()) { + continue; + } + List allAccessPathsWithId + = replaceIcebergAccessPathToId(allAccessPaths.get(), slotReference); + List predicateAccessPathsWithId = replaceIcebergAccessPathToId( + slotReference.getPredicateAccessPaths().get(), slotReference); + replaceSlots.set(i, ((SlotReference) slot).withAccessPaths( + allAccessPathsWithId, + predicateAccessPathsWithId, + allAccessPaths.get(), + slotReference.getPredicateAccessPaths().get() + )); + } + } + return fileScan.withCachedOutput(replaceSlots); + } + return fileScan; + } + + @Override + public Plan visitLogicalTVFRelation(LogicalTVFRelation tvfRelation, Void context) { + if (!shouldPrunePlans.containsKey(tvfRelation)) { + return tvfRelation; + } + Pair> replaced + = replaceExpressions(tvfRelation.getOutput(), false, true); + if (replaced.first) { + return tvfRelation.withCachedOutputs(replaced.second); + } + return tvfRelation; + } + + @Override + public Plan visitLogicalOlapScan(LogicalOlapScan olapScan, Void context) { + if (!shouldPrunePlans.containsKey(olapScan)) { + return olapScan; + } + Pair> replaced = replaceExpressions(olapScan.getOutput(), false, true); + if (replaced.first) { + return olapScan.withPrunedTypeSlots(replaced.second); + } + return olapScan; + } + + @Override + public Plan visitLogicalEmptyRelation(LogicalEmptyRelation emptyRelation, Void context) { + Pair> replacedProjects + = replaceExpressions(emptyRelation.getProjects(), true, false); + + if (replacedProjects.first) { + return emptyRelation.withProjects(replacedProjects.second); + } + return emptyRelation; + } + + @Override + public Plan visitLogicalOneRowRelation(LogicalOneRowRelation oneRowRelation, Void context) { + Pair> replacedProjects + = replaceExpressions(oneRowRelation.getProjects(), true, false); + + if (replacedProjects.first) { + return oneRowRelation.withProjects(replacedProjects.second); + } + return oneRowRelation; + } + + @Override + public Plan visitLogicalResultSink(LogicalResultSink logicalResultSink, Void context) { + logicalResultSink = visitChildren(this, logicalResultSink, context); + + Pair> replacedOutput = replaceExpressions(logicalResultSink.getOutputExprs(), + false, false); + if (replacedOutput.first) { + return logicalResultSink.withOutputExprs(replacedOutput.second); + } + return logicalResultSink; + } + + private Pair> replaceOrderExpressions(List orderExpressions) { + ImmutableList.Builder newOrderKeys + = ImmutableList.builderWithExpectedSize(orderExpressions.size()); + boolean changed = false; + for (OrderExpression orderExpression : orderExpressions) { + Expression newOrderKeyExpr = replaceSlot(orderExpression.getOrderKey().getExpr(), false); + if (newOrderKeyExpr != orderExpression.getOrderKey().getExpr()) { + newOrderKeys.add(new OrderExpression(orderExpression.getOrderKey().withExpression(newOrderKeyExpr))); + changed = true; + } else { + newOrderKeys.add(orderExpression); + } + } + return Pair.of(changed, newOrderKeys.build()); + } + + private Pair> replaceOrderKeys(List orderKeys) { + ImmutableList.Builder newOrderKeys = ImmutableList.builderWithExpectedSize(orderKeys.size()); + boolean changed = false; + for (OrderKey orderKey : orderKeys) { + Expression newOrderKeyExpr = replaceSlot(orderKey.getExpr(), false); + if (newOrderKeyExpr != orderKey.getExpr()) { + newOrderKeys.add(orderKey.withExpression(newOrderKeyExpr)); + changed = true; + } else { + newOrderKeys.add(orderKey); + } + } + return Pair.of(changed, newOrderKeys.build()); + } + + private , E extends Expression> + Pair> replaceMultiExpressions(List expressionsList) { + ImmutableList.Builder result = ImmutableList.builderWithExpectedSize(expressionsList.size()); + boolean changed = false; + for (C expressions : expressionsList) { + Pair replaced = replaceExpressions(expressions, false, false); + changed |= replaced.first; + result.add(replaced.second); + } + return Pair.of(changed, result.build()); + } + + private , E extends Expression> Pair replaceExpressions( + C expressions, boolean propagateType, boolean fillAccessPaths) { + ImmutableCollection.Builder newExprs; + if (expressions instanceof List) { + newExprs = ImmutableList.builder(); + } else { + newExprs = ImmutableSet.builder(); + } + + boolean changed = false; + for (Expression oldExpr : expressions) { + Expression newExpr = replaceSlot(oldExpr, fillAccessPaths); + if (newExpr != oldExpr) { + newExprs.add((E) newExpr); + changed = true; + + if (propagateType && oldExpr instanceof NamedExpression + && !oldExpr.getDataType().equals(newExpr.getDataType())) { + replacedDataTypes.put( + ((NamedExpression) oldExpr).getExprId().asInt(), + // not need access path in the upper slots + new AccessPathInfo(newExpr.getDataType(), null, null) + ); + } + } else { + newExprs.add((E) oldExpr); + } + } + return Pair.of(changed, (C) newExprs.build()); + } + + private Expression replaceSlot(Expression e, boolean fillAccessPath) { + return MoreFieldsThread.keepFunctionSignature(false, + () -> doRewriteExpression(e, fillAccessPath) + ); + } + + private Expression doRewriteExpression(Expression e, boolean fillAccessPath) { + if (e instanceof Lambda) { + return rewriteLambda((Lambda) e, fillAccessPath); + } else if (e instanceof Cast) { + return rewriteCast((Cast) e, fillAccessPath); + } else if (e instanceof SlotReference) { + AccessPathInfo accessPathInfo = replacedDataTypes.get(((SlotReference) e).getExprId().asInt()); + if (accessPathInfo != null) { + SlotReference newSlot = (SlotReference) ((SlotReference) e).withNullableAndDataType( + e.nullable(), accessPathInfo.getPrunedType()); + if (fillAccessPath) { + newSlot = newSlot.withAccessPaths( + accessPathInfo.getAllAccessPaths(), accessPathInfo.getPredicateAccessPaths() + ); + } + return newSlot; + } + } + + ImmutableList.Builder newChildren = ImmutableList.builderWithExpectedSize(e.arity()); + boolean changed = false; + for (Expression child : e.children()) { + Expression newChild = doRewriteExpression(child, fillAccessPath); + changed |= child != newChild; + newChildren.add(newChild); + } + return changed ? e.withChildren(newChildren.build()) : e; + } + + private Expression rewriteLambda(Lambda e, boolean fillAccessPath) { + // we should rewrite ArrayItemReference first, then we can replace the ArrayItemSlot int the lambda + Expression[] newChildren = new Expression[e.arity()]; + for (int i = 0; i < e.arity(); i++) { + Expression child = e.child(i); + if (child instanceof ArrayItemReference) { + Expression newRef = child.withChildren(doRewriteExpression(child.child(0), fillAccessPath)); + replacedDataTypes.put(((ArrayItemReference) child).getExprId().asInt(), + new AccessPathInfo(newRef.getDataType(), null, null)); + newChildren[i] = newRef; + } else { + newChildren[i] = child; + } + } + + for (int i = 0; i < newChildren.length; i++) { + Expression child = newChildren[i]; + if (!(child instanceof ArrayItemReference)) { + newChildren[i] = doRewriteExpression(child, fillAccessPath); + } + } + + return e.withChildren(newChildren); + } + + private Expression rewriteCast(Cast cast, boolean fillAccessPath) { + Expression newChild = doRewriteExpression(cast.child(0), fillAccessPath); + if (newChild == cast.child(0)) { + return cast; + } + + DataType newType = cast.getDataType(); + if (cast.getDataType() instanceof NestedColumnPrunable + && newChild.getDataType() instanceof NestedColumnPrunable) { + DataTypeAccessTree originTree = DataTypeAccessTree.of(cast.child().getDataType(), TAccessPathType.DATA); + DataTypeAccessTree prunedTree = DataTypeAccessTree.of(newChild.getDataType(), TAccessPathType.DATA); + DataTypeAccessTree castTree = DataTypeAccessTree.of(cast.getDataType(), TAccessPathType.DATA); + newType = prunedTree.pruneCastType(originTree, castTree); + } + + return new Cast(newChild, newType); + } + + private List replaceIcebergAccessPathToId( + List originAccessPaths, SlotReference slotReference) { + Column column = slotReference.getOriginalColumn().get(); + List replacedAccessPaths = new ArrayList<>(); + for (TColumnAccessPath accessPath : originAccessPaths) { + List icebergColumnAccessPath = new ArrayList<>(); + if (accessPath.type == TAccessPathType.DATA) { + icebergColumnAccessPath.addAll(accessPath.data_access_path.path); + replaceIcebergAccessPathToId( + icebergColumnAccessPath, 0, slotReference.getDataType(), column + ); + TColumnAccessPath newAccessPath = new TColumnAccessPath(TAccessPathType.DATA); + newAccessPath.data_access_path = new TDataAccessPath(icebergColumnAccessPath); + replacedAccessPaths.add(newAccessPath); + } else { + icebergColumnAccessPath.addAll(accessPath.meta_access_path.path); + replaceIcebergAccessPathToId( + icebergColumnAccessPath, 0, slotReference.getDataType(), column + ); + TColumnAccessPath newAccessPath = new TColumnAccessPath(TAccessPathType.META); + newAccessPath.meta_access_path = new TMetaAccessPath(icebergColumnAccessPath); + replacedAccessPaths.add(newAccessPath); + } + } + return replacedAccessPaths; + } + + private void replaceIcebergAccessPathToId(List originPath, int index, DataType type, Column column) { + if (index >= originPath.size()) { + return; + } + if (index == 0) { + originPath.set(index, String.valueOf(column.getUniqueId())); + replaceIcebergAccessPathToId(originPath, index + 1, type, column); + } else { + String fieldName = originPath.get(index); + if (type instanceof ArrayType) { + // skip replace * + replaceIcebergAccessPathToId( + originPath, index + 1, ((ArrayType) type).getItemType(), column.getChildren().get(0) + ); + } else if (type instanceof MapType) { + if (fieldName.equals("*") || fieldName.equals("VALUES")) { + replaceIcebergAccessPathToId( + originPath, index + 1, ((MapType) type).getValueType(), column.getChildren().get(1) + ); + } + } else if (type instanceof StructType) { + for (Column child : column.getChildren()) { + if (child.getName().equals(fieldName)) { + originPath.set(index, String.valueOf(child.getUniqueId())); + DataType childType = ((StructType) type).getNameToFields().get(fieldName).getDataType(); + replaceIcebergAccessPathToId(originPath, index + 1, childType, child); + break; + } + } + } else { + originPath.set(index, String.valueOf(column.getUniqueId())); + } + } + } + + private void tryRecordReplaceSlots(Plan plan, Object checkObj, Set shouldReplaceSlots) { + if (checkObj instanceof SupportPruneNestedColumn + && ((SupportPruneNestedColumn) checkObj).supportPruneNestedColumn()) { + List output = plan.getOutput(); + boolean shouldPrune = false; + for (Slot slot : output) { + int slotId = slot.getExprId().asInt(); + if (replacedDataTypes.containsKey(slotId)) { + shouldReplaceSlots.add(slotId); + shouldPrune = true; + } + } + if (shouldPrune) { + shouldPrunePlans.put(plan, null); + } + } + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/VariantSubPathPruning.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/VariantSubPathPruning.java index 1ed8d151270a23..abb65a283ed36f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/VariantSubPathPruning.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/VariantSubPathPruning.java @@ -22,7 +22,6 @@ import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.jobs.JobContext; import org.apache.doris.nereids.properties.OrderKey; -import org.apache.doris.nereids.rules.rewrite.ColumnPruning.PruneContext; import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.NamedExpression; @@ -87,7 +86,7 @@ * generating the slots for the required sub path on scan, union, and cte consumer. * Then, it replaces the element_at with the corresponding slot. */ -public class VariantSubPathPruning extends DefaultPlanRewriter implements CustomRewriter { +public class VariantSubPathPruning implements CustomRewriter { public static final Logger LOG = LogManager.getLogger(VariantSubPathPruning.class); @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/TreeNode.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/TreeNode.java index b16ac1d954c918..89f7964a4a207e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/TreeNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/TreeNode.java @@ -250,7 +250,7 @@ default void foreachBreath(Predicate> func) { default void foreachUp(Consumer> func) { for (NODE_TYPE child : children()) { - child.foreach(func); + child.foreachUp(func); } func.accept(this); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/PreferPushDownProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/PreferPushDownProject.java new file mode 100644 index 00000000000000..4c9c3bebe5aa00 --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/PreferPushDownProject.java @@ -0,0 +1,41 @@ +// 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.nereids.trees.expressions; + +import org.apache.doris.nereids.trees.expressions.functions.ExpressionTrait; + +/** + * some expressions prefer push down project under the plan, + * + * e.g. the element_at function prefer push down to a project in under the plan: + * Project(element_at(left.column, 'id') as a) + * | + * Join + * / | + * left right + * + * we will push down project through the Join, so we can prune the column which has complex type: + * + * Join + * / \ + * Project(element_at(left.column, 'id') as a, ...) right + * | + * left + */ +public interface PreferPushDownProject extends ExpressionTrait { +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java index ce2d3dbb3e5dca..1c77dc669acb72 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java @@ -24,6 +24,7 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.DataType; import org.apache.doris.nereids.util.Utils; +import org.apache.doris.thrift.TColumnAccessPath; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -56,6 +57,10 @@ public class SlotReference extends Slot { // that need return original table and name for view not its original table if u query a view private final TableIf oneLevelTable; private final Column oneLevelColumn; + private final Optional> allAccessPaths; + private final Optional> predicateAccessPaths; + private final Optional> displayAllAccessPaths; + private final Optional> displayPredicateAccessPaths; public SlotReference(String name, DataType dataType) { this(StatementScopeIdGenerator.newExprId(), name, dataType, true, ImmutableList.of(), @@ -92,6 +97,15 @@ public SlotReference(ExprId exprId, String name, DataType dataType, boolean null subPath, Optional.empty()); } + public SlotReference(ExprId exprId, Supplier name, DataType dataType, boolean nullable, + List qualifier, @Nullable TableIf originalTable, @Nullable Column originalColumn, + @Nullable TableIf oneLevelTable, Column oneLevelColumn, + List subPath, Optional> indexInSql) { + this(exprId, name, dataType, nullable, qualifier, originalTable, originalColumn, oneLevelTable, + oneLevelColumn, subPath, indexInSql, Optional.empty(), Optional.empty(), + Optional.empty(), Optional.empty()); + } + /** * Constructor for SlotReference. * @@ -106,7 +120,10 @@ public SlotReference(ExprId exprId, String name, DataType dataType, boolean null public SlotReference(ExprId exprId, Supplier name, DataType dataType, boolean nullable, List qualifier, @Nullable TableIf originalTable, @Nullable Column originalColumn, @Nullable TableIf oneLevelTable, Column oneLevelColumn, - List subPath, Optional> indexInSql) { + List subPath, Optional> indexInSql, + Optional> allAccessPaths, Optional> predicateAccessPaths, + Optional> displayAllAccessPaths, + Optional> displayPredicateAccessPaths) { super(indexInSql); this.exprId = exprId; this.name = name; @@ -119,6 +136,10 @@ public SlotReference(ExprId exprId, Supplier name, DataType dataType, bo this.oneLevelTable = oneLevelTable; this.oneLevelColumn = oneLevelColumn; this.subPath = Objects.requireNonNull(subPath, "subPath can not be null"); + this.allAccessPaths = allAccessPaths; + this.predicateAccessPaths = predicateAccessPaths; + this.displayAllAccessPaths = displayAllAccessPaths; + this.displayPredicateAccessPaths = displayPredicateAccessPaths; } public static SlotReference of(String name, DataType type) { @@ -342,4 +363,37 @@ public String getQualifiedNameWithBackquote() throws UnboundException { public boolean hasAutoInc() { return originalColumn != null ? originalColumn.isAutoInc() : false; } + + public SlotReference withAccessPaths( + List allAccessPaths, List predicateAccessPaths) { + return new SlotReference(exprId, name, dataType, nullable, qualifier, + originalTable, originalColumn, oneLevelTable, oneLevelColumn, + subPath, indexInSqlString, Optional.of(allAccessPaths), Optional.of(predicateAccessPaths), + Optional.of(allAccessPaths), Optional.of(predicateAccessPaths)); + } + + public SlotReference withAccessPaths( + List allAccessPaths, List predicateAccessPaths, + List displayAllAccessPaths, List displayPredicateAccessPaths) { + return new SlotReference(exprId, name, dataType, nullable, qualifier, + originalTable, originalColumn, oneLevelTable, oneLevelColumn, + subPath, indexInSqlString, Optional.of(allAccessPaths), Optional.of(predicateAccessPaths), + Optional.of(displayAllAccessPaths), Optional.of(displayPredicateAccessPaths)); + } + + public Optional> getAllAccessPaths() { + return allAccessPaths; + } + + public Optional> getPredicateAccessPaths() { + return predicateAccessPaths; + } + + public Optional> getDisplayAllAccessPaths() { + return displayAllAccessPaths; + } + + public Optional> getDisplayPredicateAccessPaths() { + return displayPredicateAccessPaths; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayFirst.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayFirst.java index 8c0babc39cab12..5410de371a793c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayFirst.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayFirst.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.literal.BigIntLiteral; +import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import java.util.List; @@ -51,4 +52,9 @@ public ElementAt withChildren(List children) { public List getImplSignature() { return SIGNATURES; } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitArrayFirst(this, context); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayLast.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayLast.java index e1ed4f4d27bf38..b9f5650156f083 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayLast.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayLast.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.literal.BigIntLiteral; +import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import java.util.List; @@ -51,4 +52,9 @@ public List getImplSignature() { public ElementAt withChildren(List children) { return new ArrayLast(getFunctionParams(children)); } + + @Override + public R accept(ExpressionVisitor visitor, C context) { + return visitor.visitArrayLast(this, context); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayMap.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayMap.java index 5d74f5e1457003..1a1a246cea6d8e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayMap.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayMap.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.ArrayItemReference; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ImplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; @@ -37,7 +38,7 @@ * ScalarFunction 'array_map'. */ public class ArrayMap extends ScalarFunction - implements ImplicitlyCastableSignature, PropagateNullable { + implements ImplicitlyCastableSignature, PropagateNullable, PreferPushDownProject { public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(new FollowToAnyDataType(0)).args(LambdaType.INSTANCE) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ElementAt.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ElementAt.java index 99f63bab15c383..de3f31bf46e895 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ElementAt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ElementAt.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression; @@ -40,7 +41,8 @@ * ScalarFunction 'element_at'. This class is generated by GenerateFunction. */ public class ElementAt extends ScalarFunction - implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable { + implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable, + PreferPushDownProject { public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(new FollowToAnyDataType(0)) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/HighOrderFunction.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/HighOrderFunction.java index a929f2dd5d5e27..e7a054fc864fa8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/HighOrderFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/HighOrderFunction.java @@ -18,6 +18,7 @@ package org.apache.doris.nereids.trees.expressions.functions.scalar; import org.apache.doris.catalog.FunctionSignature; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.types.LambdaType; import org.apache.doris.nereids.types.coercion.AnyDataType; @@ -29,7 +30,7 @@ /** * Interface of HighOrderFunction, provide default FunctionSignature of LambdaType argument */ -public interface HighOrderFunction extends ExplicitlyCastableSignature { +public interface HighOrderFunction extends ExplicitlyCastableSignature, PreferPushDownProject { @Override default List getSignatures() { return new ImmutableList.Builder() diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsEntry.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsEntry.java index b8ecc8667c7412..517bfaa7748f56 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsEntry.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsEntry.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.shape.TernaryExpression; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; @@ -36,7 +37,7 @@ * ScalarFunction 'map_contains_entry'. */ public class MapContainsEntry extends ScalarFunction - implements TernaryExpression, ExplicitlyCastableSignature { + implements TernaryExpression, ExplicitlyCastableSignature, PreferPushDownProject { /** * Basic signature, forcing search key/value type to convert to the same type as map's key/value type. diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java index 4fc4c32f233256..845e84f71b3460 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; @@ -36,7 +37,7 @@ * ScalarFunction 'map_contains_key'. This class is generated by GenerateFunction. */ public class MapContainsKey extends ScalarFunction - implements BinaryExpression, ExplicitlyCastableSignature { + implements BinaryExpression, ExplicitlyCastableSignature, PreferPushDownProject { public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java index a60f6653cdee51..fd42c42fb65d9d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; @@ -36,7 +37,7 @@ * ScalarFunction 'map_contains_value'. This class is generated by GenerateFunction. */ public class MapContainsValue extends ScalarFunction - implements BinaryExpression, ExplicitlyCastableSignature { + implements BinaryExpression, ExplicitlyCastableSignature, PreferPushDownProject { public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapEntries.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapEntries.java index 4be48638e5ea07..22a14c31df35ab 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapEntries.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapEntries.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.CustomSignature; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable; import org.apache.doris.nereids.trees.expressions.functions.SearchSignature; @@ -41,7 +42,7 @@ * fields 'key' and 'value'. */ public class MapEntries extends ScalarFunction - implements UnaryExpression, CustomSignature, PropagateNullable { + implements UnaryExpression, CustomSignature, PropagateNullable, PreferPushDownProject { /** * constructor with 1 argument. diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapKeys.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapKeys.java index 957dae2844a8ed..a3123d29cb07b6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapKeys.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapKeys.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable; import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression; @@ -37,7 +38,7 @@ * ScalarFunction 'map_keys'. */ public class MapKeys extends ScalarFunction - implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable { + implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable, PreferPushDownProject { public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(ArrayType.of(new FollowToAnyDataType(0))).args(MapType.of( diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapValues.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapValues.java index e7ca7f48dd3af3..1622b27715613b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapValues.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapValues.java @@ -19,6 +19,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable; import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression; @@ -37,7 +38,7 @@ * ScalarFunction 'map_values'. */ public class MapValues extends ScalarFunction - implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable { + implements UnaryExpression, ExplicitlyCastableSignature, PropagateNullable, PreferPushDownProject { public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(ArrayType.of(new FollowToAnyDataType(0))).args(MapType.of( diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/StructElement.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/StructElement.java index 85bb424de19eb0..ed29818b688ddb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/StructElement.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/StructElement.java @@ -20,6 +20,7 @@ import org.apache.doris.catalog.FunctionSignature; import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.PreferPushDownProject; import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral; @@ -29,6 +30,7 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.DataType; import org.apache.doris.nereids.types.NullType; +import org.apache.doris.nereids.types.StructField; import org.apache.doris.nereids.types.StructType; import com.google.common.base.Preconditions; @@ -40,7 +42,7 @@ * ScalarFunction 'struct_element'. */ public class StructElement extends ScalarFunction - implements ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral { + implements ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral, PreferPushDownProject { /** * constructor with 0 or more arguments. @@ -98,10 +100,11 @@ public List getSignatures() { } } else if (child(1) instanceof StringLikeLiteral) { String name = ((StringLikeLiteral) child(1)).getStringValue(); - if (!structArgType.getNameToFields().containsKey(name.toLowerCase())) { + StructField field = structArgType.getField(name); + if (field == null) { throw new AnalysisException("the specified field name " + name + " was not found: " + this.toSql()); } else { - retType = structArgType.getNameToFields().get(name).getDataType(); + retType = field.getDataType(); } } else { throw new AnalysisException("struct_element only allows" diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/File.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/File.java index aed17d7b5a8f17..660dfad48744d7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/File.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/File.java @@ -21,6 +21,8 @@ import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.trees.expressions.Properties; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumn; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumnFormats; import org.apache.doris.nereids.types.coercion.AnyDataType; import org.apache.doris.tablefunction.FileTableValuedFunction; import org.apache.doris.tablefunction.TableValuedFunctionIf; @@ -30,7 +32,7 @@ /** * File Tvf */ -public class File extends TableValuedFunction { +public class File extends TableValuedFunction implements SupportPruneNestedColumn { public File(Properties properties) { super("file", properties); } @@ -55,4 +57,8 @@ public R accept(ExpressionVisitor visitor, C context) { return visitor.visitFile(this, context); } + @Override + public boolean supportPruneNestedColumn() { + return SupportPruneNestedColumnFormats.supportFormat(getTVFProperties()); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Hdfs.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Hdfs.java index 5f8651ed61c826..8389892f6cfaca 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Hdfs.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Hdfs.java @@ -21,6 +21,8 @@ import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.trees.expressions.Properties; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumn; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumnFormats; import org.apache.doris.nereids.types.coercion.AnyDataType; import org.apache.doris.tablefunction.HdfsTableValuedFunction; import org.apache.doris.tablefunction.TableValuedFunctionIf; @@ -29,7 +31,7 @@ import java.util.Map; /** hdfs */ -public class Hdfs extends TableValuedFunction { +public class Hdfs extends TableValuedFunction implements SupportPruneNestedColumn { public Hdfs(Properties properties) { super("hdfs", properties); } @@ -53,4 +55,9 @@ protected TableValuedFunctionIf toCatalogFunction() { public R accept(ExpressionVisitor visitor, C context) { return visitor.visitHdfs(this, context); } + + @Override + public boolean supportPruneNestedColumn() { + return SupportPruneNestedColumnFormats.supportFormat(getTVFProperties()); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Local.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Local.java index 4330980ee86d24..094324e895b2e7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Local.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/Local.java @@ -21,6 +21,8 @@ import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.trees.expressions.Properties; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumn; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumnFormats; import org.apache.doris.nereids.types.coercion.AnyDataType; import org.apache.doris.tablefunction.LocalTableValuedFunction; import org.apache.doris.tablefunction.TableValuedFunctionIf; @@ -30,7 +32,7 @@ /** * local */ -public class Local extends TableValuedFunction { +public class Local extends TableValuedFunction implements SupportPruneNestedColumn { public Local(Properties properties) { super("local", properties); } @@ -54,4 +56,9 @@ protected TableValuedFunctionIf toCatalogFunction() { public R accept(ExpressionVisitor visitor, C context) { return visitor.visitLocal(this, context); } + + @Override + public boolean supportPruneNestedColumn() { + return SupportPruneNestedColumnFormats.supportFormat(getTVFProperties()); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/S3.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/S3.java index d2623d8fd3c6bf..3c4c924d7f41e6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/S3.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/table/S3.java @@ -21,6 +21,8 @@ import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.trees.expressions.Properties; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumn; +import org.apache.doris.nereids.trees.plans.logical.SupportPruneNestedColumnFormats; import org.apache.doris.nereids.types.coercion.AnyDataType; import org.apache.doris.tablefunction.S3TableValuedFunction; import org.apache.doris.tablefunction.TableValuedFunctionIf; @@ -28,7 +30,7 @@ import java.util.Map; /** s3 */ -public class S3 extends TableValuedFunction { +public class S3 extends TableValuedFunction implements SupportPruneNestedColumn { public S3(Properties properties) { super("s3", properties); } @@ -52,4 +54,9 @@ protected TableValuedFunctionIf toCatalogFunction() { public R accept(ExpressionVisitor visitor, C context) { return visitor.visitS3(this, context); } + + @Override + public boolean supportPruneNestedColumn() { + return SupportPruneNestedColumnFormats.supportFormat(getTVFProperties()); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java index 5727ffb49db564..07ee2b87045c1e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java @@ -55,10 +55,12 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayExcept; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayExists; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFilter; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFirst; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFirstIndex; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayFlatten; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayIntersect; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayJoin; +import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayLast; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayLastIndex; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayMap; import org.apache.doris.nereids.trees.expressions.functions.scalar.ArrayMatchAll; @@ -651,6 +653,10 @@ default R visitArrayFilter(ArrayFilter arrayFilter, C context) { return visitScalarFunction(arrayFilter, context); } + default R visitArrayFirst(ArrayFirst arrayFirst, C context) { + return visitElementAt(arrayFirst, context); + } + default R visitArrayFirstIndex(ArrayFirstIndex arrayFirstIndex, C context) { return visitScalarFunction(arrayFirstIndex, context); } @@ -663,6 +669,10 @@ default R visitArrayJoin(ArrayJoin arrayJoin, C context) { return visitScalarFunction(arrayJoin, context); } + default R visitArrayLast(ArrayLast arrayLast, C context) { + return visitElementAt(arrayLast, context); + } + default R visitArrayLastIndex(ArrayLastIndex arrayLastIndex, C context) { return visitScalarFunction(arrayLastIndex, context); } @@ -767,8 +777,8 @@ default R visitArrayFlatten(ArrayFlatten arrayFlatten, C context) { return visitScalarFunction(arrayFlatten, context); } - default R visitArrayMap(ArrayMap arraySort, C context) { - return visitScalarFunction(arraySort, context); + default R visitArrayMap(ArrayMap arrayMap, C context) { + return visitScalarFunction(arrayMap, context); } default R visitArrayMatchAll(ArrayMatchAll arrayMatchAll, C context) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java index 4167e68856d229..4d9784b5690e4b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java @@ -21,6 +21,8 @@ import org.apache.doris.analysis.TableSnapshot; import org.apache.doris.catalog.PartitionItem; import org.apache.doris.datasource.ExternalTable; +import org.apache.doris.datasource.hive.HMSExternalTable; +import org.apache.doris.datasource.iceberg.IcebergExternalTable; import org.apache.doris.datasource.mvcc.MvccUtil; import org.apache.doris.nereids.memo.GroupExpression; import org.apache.doris.nereids.properties.LogicalProperties; @@ -32,6 +34,9 @@ import org.apache.doris.nereids.trees.plans.RelationId; import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor; import org.apache.doris.nereids.util.Utils; +import org.apache.doris.qe.ConnectContext; +import org.apache.doris.qe.SessionVariable; +import org.apache.doris.thrift.TFileFormatType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -46,21 +51,26 @@ /** * Logical file scan for external catalog. */ -public class LogicalFileScan extends LogicalCatalogRelation { +public class LogicalFileScan extends LogicalCatalogRelation implements SupportPruneNestedColumn { protected final SelectedPartitions selectedPartitions; protected final Optional tableSample; protected final Optional tableSnapshot; protected final Optional scanParams; + protected final Optional> cachedOutputs; + /** + * Constructor for LogicalFileScan. + */ public LogicalFileScan(RelationId id, ExternalTable table, List qualifier, - Collection operativeSlots, - Optional tableSample, Optional tableSnapshot, - Optional scanParams) { + Collection operativeSlots, + Optional tableSample, Optional tableSnapshot, + Optional scanParams, Optional> cachedOutputs) { this(id, table, qualifier, table.initSelectedPartitions(MvccUtil.getSnapshotFromContext(table)), operativeSlots, ImmutableList.of(), tableSample, tableSnapshot, - scanParams, Optional.empty(), Optional.empty()); + scanParams, Optional.empty(), Optional.empty(), + cachedOutputs); } /** @@ -70,13 +80,15 @@ protected LogicalFileScan(RelationId id, ExternalTable table, List quali SelectedPartitions selectedPartitions, Collection operativeSlots, List virtualColumns, Optional tableSample, Optional tableSnapshot, Optional scanParams, - Optional groupExpression, Optional logicalProperties) { + Optional groupExpression, Optional logicalProperties, + Optional> cachedSlots) { super(id, PlanType.LOGICAL_FILE_SCAN, table, qualifier, operativeSlots, virtualColumns, groupExpression, logicalProperties); this.selectedPartitions = selectedPartitions; this.tableSample = tableSample; this.tableSnapshot = tableSnapshot; this.scanParams = scanParams; + this.cachedOutputs = cachedSlots; } public SelectedPartitions getSelectedPartitions() { @@ -116,7 +128,7 @@ public String toString() { public LogicalFileScan withGroupExpression(Optional groupExpression) { return new LogicalFileScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, operativeSlots, virtualColumns, tableSample, tableSnapshot, - scanParams, groupExpression, Optional.of(getLogicalProperties())); + scanParams, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs); } @Override @@ -124,20 +136,20 @@ public Plan withGroupExprLogicalPropChildren(Optional groupExpr Optional logicalProperties, List children) { return new LogicalFileScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, operativeSlots, virtualColumns, tableSample, tableSnapshot, - scanParams, groupExpression, logicalProperties); + scanParams, groupExpression, logicalProperties, cachedOutputs); } public LogicalFileScan withSelectedPartitions(SelectedPartitions selectedPartitions) { return new LogicalFileScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, operativeSlots, virtualColumns, tableSample, tableSnapshot, - scanParams, Optional.empty(), Optional.of(getLogicalProperties())); + scanParams, Optional.empty(), Optional.of(getLogicalProperties()), cachedOutputs); } @Override public LogicalFileScan withRelationId(RelationId relationId) { return new LogicalFileScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, operativeSlots, virtualColumns, tableSample, tableSnapshot, - scanParams, Optional.empty(), Optional.empty()); + scanParams, Optional.empty(), Optional.empty(), cachedOutputs); } @Override @@ -150,6 +162,43 @@ public boolean equals(Object o) { return super.equals(o) && Objects.equals(selectedPartitions, ((LogicalFileScan) o).selectedPartitions); } + @Override + public List computeOutput() { + if (cachedOutputs.isPresent()) { + return cachedOutputs.get(); + } + return super.computeOutput(); + } + + @Override + public List computeAsteriskOutput() { + return super.computeAsteriskOutput(); + } + + @Override + public boolean supportPruneNestedColumn() { + ExternalTable table = getTable(); + if (table instanceof IcebergExternalTable) { + return true; + } else if (table instanceof HMSExternalTable) { + try { + ConnectContext connectContext = ConnectContext.get(); + SessionVariable sessionVariable = connectContext.getSessionVariable(); + TFileFormatType fileFormatType = ((HMSExternalTable) table).getFileFormatType(sessionVariable); + switch (fileFormatType) { + case FORMAT_PARQUET: + case FORMAT_ORC: + return true; + default: + return false; + } + } catch (Throwable t) { + // ignore and not prune + } + } + return false; + } + /** * SelectedPartitions contains the selected partitions and the total partition number. * Mainly for hive table partition pruning. @@ -207,7 +256,13 @@ public int hashCode() { public LogicalFileScan withOperativeSlots(Collection operativeSlots) { return new LogicalFileScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, operativeSlots, virtualColumns, tableSample, tableSnapshot, - scanParams, groupExpression, Optional.of(getLogicalProperties())); + scanParams, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs); + } + + public LogicalFileScan withCachedOutput(List cachedOutputs) { + return new LogicalFileScan(relationId, (ExternalTable) table, qualifier, + selectedPartitions, operativeSlots, virtualColumns, tableSample, tableSnapshot, + scanParams, groupExpression, Optional.empty(), Optional.of(cachedOutputs)); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java index 7f616d7045ffcb..c4615c6ddd07a5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalHudiScan.java @@ -77,9 +77,10 @@ protected LogicalHudiScan(RelationId id, ExternalTable table, List quali Collection operativeSlots, List virtualColumns, Optional groupExpression, - Optional logicalProperties) { + Optional logicalProperties, + Optional> cachedOutputs) { super(id, table, qualifier, selectedPartitions, operativeSlots, virtualColumns, - tableSample, tableSnapshot, scanParams, groupExpression, logicalProperties); + tableSample, tableSnapshot, scanParams, groupExpression, logicalProperties, cachedOutputs); Objects.requireNonNull(scanParams, "scanParams should not null"); Objects.requireNonNull(incrementalRelation, "incrementalRelation should not null"); this.incrementalRelation = incrementalRelation; @@ -87,10 +88,11 @@ protected LogicalHudiScan(RelationId id, ExternalTable table, List quali public LogicalHudiScan(RelationId id, ExternalTable table, List qualifier, Collection operativeSlots, Optional scanParams, - Optional tableSample, Optional tableSnapshot) { + Optional tableSample, Optional tableSnapshot, + Optional> cachedOutputs) { this(id, table, qualifier, ((HMSExternalTable) table).initHudiSelectedPartitions(tableSnapshot), tableSample, tableSnapshot, scanParams, Optional.empty(), operativeSlots, ImmutableList.of(), - Optional.empty(), Optional.empty()); + Optional.empty(), Optional.empty(), cachedOutputs); } public Optional getScanParams() { @@ -140,7 +142,7 @@ public String toString() { public LogicalHudiScan withGroupExpression(Optional groupExpression) { return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation, - operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties())); + operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs); } @Override @@ -148,20 +150,20 @@ public Plan withGroupExprLogicalPropChildren(Optional groupExpr Optional logicalProperties, List children) { return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation, - operativeSlots, virtualColumns, groupExpression, logicalProperties); + operativeSlots, virtualColumns, groupExpression, logicalProperties, cachedOutputs); } public LogicalHudiScan withSelectedPartitions(SelectedPartitions selectedPartitions) { return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation, - operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties())); + operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs); } @Override public LogicalHudiScan withRelationId(RelationId relationId) { return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation, - operativeSlots, virtualColumns, groupExpression, Optional.empty()); + operativeSlots, virtualColumns, groupExpression, Optional.empty(), cachedOutputs); } @Override @@ -173,7 +175,7 @@ public R accept(PlanVisitor visitor, C context) { public LogicalFileScan withOperativeSlots(Collection operativeSlots) { return new LogicalHudiScan(relationId, (ExternalTable) table, qualifier, selectedPartitions, tableSample, tableSnapshot, scanParams, incrementalRelation, - operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties())); + operativeSlots, virtualColumns, groupExpression, Optional.of(getLogicalProperties()), cachedOutputs); } /** @@ -226,6 +228,6 @@ public LogicalHudiScan withScanParams(HMSExternalTable table, Optional constructReplaceMap(MTMV mtmv) { } return replaceMap; } + + /** withPrunedTypeSlots */ + public LogicalOlapScan withPrunedTypeSlots(List outputSlots) { + Map, Slot> replaceSlotMap = new HashMap<>(); + for (Slot outputSlot : outputSlots) { + Pair key = Pair.of(selectedIndexId, outputSlot.getName()); + replaceSlotMap.put(key, outputSlot); + } + + return new LogicalOlapScan(relationId, (Table) table, qualifier, + groupExpression, Optional.empty(), + selectedPartitionIds, partitionPruned, selectedTabletIds, + selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, + hints, replaceSlotMap, tableSample, directMvScan, colToSubPathsMap, + manuallySpecifiedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, + annOrderKeys, annLimit); + } + + @Override + public boolean supportPruneNestedColumn() { + return true; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java index a434f81b2313ba..c6d0241f393d1e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java @@ -47,20 +47,31 @@ public class LogicalTVFRelation extends LogicalRelation implements TVFRelation, private final TableValuedFunction function; private final ImmutableList qualifier; private final ImmutableList operativeSlots; + private final Optional> cachedOutputs; public LogicalTVFRelation(RelationId id, TableValuedFunction function, ImmutableList operativeSlots) { super(id, PlanType.LOGICAL_TVF_RELATION); this.operativeSlots = operativeSlots; this.function = function; - qualifier = ImmutableList.of(TableValuedFunctionIf.TVF_TABLE_PREFIX + function.getName()); + this.qualifier = ImmutableList.of(TableValuedFunctionIf.TVF_TABLE_PREFIX + function.getName()); + this.cachedOutputs = Optional.empty(); } public LogicalTVFRelation(RelationId id, TableValuedFunction function, ImmutableList operativeSlots, Optional groupExpression, Optional logicalProperties) { + this(id, function, operativeSlots, Optional.empty(), groupExpression, logicalProperties); + } + + public LogicalTVFRelation(RelationId id, TableValuedFunction function, + ImmutableList operativeSlots, + Optional> cachedOutputs, + Optional groupExpression, + Optional logicalProperties) { super(id, PlanType.LOGICAL_TVF_RELATION, groupExpression, logicalProperties); this.operativeSlots = operativeSlots; this.function = function; - qualifier = ImmutableList.of(TableValuedFunctionIf.TVF_TABLE_PREFIX + function.getName()); + this.cachedOutputs = Objects.requireNonNull(cachedOutputs, "cachedOutputs can not be null"); + this.qualifier = ImmutableList.of(TableValuedFunctionIf.TVF_TABLE_PREFIX + function.getName()); } @Override @@ -120,6 +131,9 @@ public String toString() { @Override public List computeOutput() { + if (cachedOutputs.isPresent()) { + return cachedOutputs.get(); + } IdGenerator exprIdGenerator = StatementScopeIdGenerator.getExprIdGenerator(); return function.getTable().getBaseSchema() .stream() @@ -138,4 +152,9 @@ public R accept(PlanVisitor visitor, C context) { public TableValuedFunction getFunction() { return function; } + + public LogicalTVFRelation withCachedOutputs(List replaceSlots) { + return new LogicalTVFRelation(relationId, function, Utils.fastToImmutableList(operativeSlots), + Optional.of(replaceSlots), Optional.empty(), Optional.empty()); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumn.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumn.java new file mode 100644 index 00000000000000..44f1b733dd109d --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumn.java @@ -0,0 +1,24 @@ +// 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.nereids.trees.plans.logical; + +/** SupportPruneNestedColumn */ +public interface SupportPruneNestedColumn { + // return false will not prune the nested column + boolean supportPruneNestedColumn(); +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumnFormats.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumnFormats.java new file mode 100644 index 00000000000000..a9ee8f64b4969f --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/SupportPruneNestedColumnFormats.java @@ -0,0 +1,42 @@ +// 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.nereids.trees.plans.logical; + +import org.apache.doris.nereids.trees.expressions.Properties; + +import com.google.common.collect.ImmutableSet; + +import java.util.Map.Entry; +import java.util.Set; + +/** SupportPruneNestedColumnFormats */ +public class SupportPruneNestedColumnFormats { + private static final Set SUPPORTED_FORMATS = ImmutableSet.of( + "parquet", "orc" + ); + + /** supportFormat */ + public static boolean supportFormat(Properties properties) { + for (Entry kv : properties.getMap().entrySet()) { + if (kv.getKey().equalsIgnoreCase("format")) { + return SUPPORTED_FORMATS.contains(kv.getValue().toLowerCase()); + } + } + return false; + } +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/ArrayType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/ArrayType.java index 9a34ab740d3192..6d4ec539ff306e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/ArrayType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/ArrayType.java @@ -25,7 +25,7 @@ /** * Array type in Nereids. */ -public class ArrayType extends DataType implements ComplexDataType { +public class ArrayType extends DataType implements ComplexDataType, NestedColumnPrunable { public static final ArrayType SYSTEM_DEFAULT = new ArrayType(NullType.INSTANCE, true); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/MapType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/MapType.java index fb8346987f7263..176c1db1d0d6b1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/MapType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/MapType.java @@ -27,7 +27,7 @@ * Struct type in Nereids. */ @Developing -public class MapType extends DataType implements ComplexDataType { +public class MapType extends DataType implements ComplexDataType, NestedColumnPrunable { public static final MapType SYSTEM_DEFAULT = new MapType(); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/NestedColumnPrunable.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/NestedColumnPrunable.java new file mode 100644 index 00000000000000..2d5e464f042a7a --- /dev/null +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/NestedColumnPrunable.java @@ -0,0 +1,22 @@ +// 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.nereids.types; + +/** NestedColumnPrunable */ +public interface NestedColumnPrunable { +} diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructField.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructField.java index 88317682c4cbb7..63e94bc369bb0c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructField.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructField.java @@ -19,7 +19,6 @@ import org.apache.doris.nereids.util.Utils; -import java.util.Locale; import java.util.Objects; /** @@ -41,7 +40,7 @@ public class StructField { * @param nullable Indicates if values of this field can be `null` values */ public StructField(String name, DataType dataType, boolean nullable, String comment) { - this.name = Objects.requireNonNull(name, "name should not be null").toLowerCase(Locale.ROOT); + this.name = Objects.requireNonNull(name, "name should not be null").toLowerCase(); this.dataType = Objects.requireNonNull(dataType, "dataType should not be null"); this.nullable = nullable; this.comment = Objects.requireNonNull(comment, "comment should not be null"); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructType.java index fb8557923aa36b..8296ac282810e7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/StructType.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -35,7 +36,7 @@ * Struct type in Nereids. */ @Developing -public class StructType extends DataType implements ComplexDataType { +public class StructType extends DataType implements ComplexDataType, NestedColumnPrunable { public static final StructType SYSTEM_DEFAULT = new StructType(); @@ -55,7 +56,8 @@ private StructType() { public StructType(List fields) { this.fields = ImmutableList.copyOf(Objects.requireNonNull(fields, "fields should not be null")); // field name should be lowercase and check the same or not - this.nameToFields = new HashMap<>(); + // ATTN: should use LinkedHashMap to keep order + this.nameToFields = new LinkedHashMap<>(); for (StructField field : this.fields) { String fieldName = field.getName().toLowerCase(); StructField existingField = this.nameToFields.put(fieldName, field); diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/MaterializationNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/MaterializationNode.java index 89918c014d0049..29f6baf0e77a76 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/MaterializationNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/MaterializationNode.java @@ -127,6 +127,8 @@ public String getNodeExplainString(String detailPrefix, TExplainLevel detailLeve output.append(detailPrefix).append("table_idxs: ").append(idxs).append("\n"); output.append(detailPrefix).append("row_ids: ").append(rowIds).append("\n"); output.append(detailPrefix).append("isTopMaterializeNode: ").append(isTopMaterializeNode).append("\n"); + printNestedColumns(output, detailPrefix, outputTupleDesc); + return output.toString(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java index cbc7acf4fac025..a9400e49f23fc8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/OlapScanNode.java @@ -1081,6 +1081,9 @@ public String getNodeExplainString(String prefix, TExplainLevel detailLevel) { output.append(prefix).append("rewrittenProjectList: ").append( getExplainString(rewrittenProjectList)).append("\n"); } + + printNestedColumns(output, prefix, getTupleDesc()); + return output.toString(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java index 5c3e6cebfb493b..d7e63e6e2bb266 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java +++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java @@ -32,11 +32,14 @@ import org.apache.doris.common.Pair; import org.apache.doris.common.TreeNode; import org.apache.doris.common.UserException; +import org.apache.doris.datasource.iceberg.source.IcebergScanNode; import org.apache.doris.planner.normalize.Normalizer; import org.apache.doris.qe.ConnectContext; import org.apache.doris.statistics.PlanStats; import org.apache.doris.statistics.StatisticalType; import org.apache.doris.statistics.StatsDeriveResult; +import org.apache.doris.thrift.TAccessPathType; +import org.apache.doris.thrift.TColumnAccessPath; import org.apache.doris.thrift.TExplainLevel; import org.apache.doris.thrift.TExpr; import org.apache.doris.thrift.TNormalizedPlanNode; @@ -50,6 +53,7 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -518,7 +522,7 @@ protected final String getExplainString(String rootPrefix, String prefix, TExpla return expBuilder.toString(); } - private String getplanNodeExplainString(String prefix, TExplainLevel detailLevel) { + private String getPlanNodeExplainString(String prefix, TExplainLevel detailLevel) { StringBuilder expBuilder = new StringBuilder(); expBuilder.append(getNodeExplainString(prefix, detailLevel)); if (limit != -1) { @@ -533,7 +537,7 @@ private String getplanNodeExplainString(String prefix, TExplainLevel detailLevel } public void getExplainStringMap(TExplainLevel detailLevel, Map planNodeMap) { - planNodeMap.put(id.asInt(), getplanNodeExplainString("", detailLevel)); + planNodeMap.put(id.asInt(), getPlanNodeExplainString("", detailLevel)); for (int i = 0; i < children.size(); ++i) { children.get(i).getExplainStringMap(detailLevel, planNodeMap); } @@ -928,4 +932,109 @@ public boolean hasSerialScanChildren() { } return children.stream().anyMatch(PlanNode::hasSerialScanChildren); } + + protected void printNestedColumns(StringBuilder output, String prefix, TupleDescriptor tupleDesc) { + boolean printNestedColumnsHeader = true; + for (SlotDescriptor slot : tupleDesc.getSlots()) { + String prunedType = null; + if (slot.getColumn() != null && !slot.getType().equals(slot.getColumn().getType())) { + prunedType = slot.getType().toString(); + } + String displayAllAccessPathsString = null; + if (slot.getDisplayAllAccessPaths() != null + && slot.getDisplayAllAccessPaths() != null + && !slot.getDisplayAllAccessPaths().isEmpty()) { + if (this instanceof IcebergScanNode) { + displayAllAccessPathsString = mergeIcebergAccessPathsWithId( + slot.getAllAccessPaths(), + slot.getDisplayAllAccessPaths() + ); + } else { + displayAllAccessPathsString = slot.getDisplayAllAccessPaths() + .stream() + .map(a -> { + if (a.type == TAccessPathType.DATA) { + return StringUtils.join(a.data_access_path.path, "."); + } else { + return StringUtils.join(a.meta_access_path.path, "."); + } + }) + .collect(Collectors.joining(", ")); + } + } + String displayPredicateAccessPathsString = null; + if (slot.getDisplayPredicateAccessPaths() != null + && slot.getDisplayPredicateAccessPaths() != null + && !slot.getDisplayPredicateAccessPaths().isEmpty()) { + if (this instanceof IcebergScanNode) { + displayPredicateAccessPathsString = mergeIcebergAccessPathsWithId( + slot.getPredicateAccessPaths(), + slot.getDisplayPredicateAccessPaths() + ); + } else { + displayPredicateAccessPathsString = slot.getPredicateAccessPaths() + .stream() + .map(a -> { + if (a.type == TAccessPathType.DATA) { + return StringUtils.join(a.data_access_path.path, "."); + } else { + return StringUtils.join(a.meta_access_path.path, "."); + } + }) + .collect(Collectors.joining(", ")); + } + } + + + if (prunedType == null + && displayAllAccessPathsString == null + && displayPredicateAccessPathsString == null) { + continue; + } + + if (printNestedColumnsHeader) { + output.append(prefix).append("nested columns:\n"); + printNestedColumnsHeader = false; + } + output.append(prefix).append(" ").append(slot.getColumn().getName()).append(":\n"); + output.append(prefix).append(" origin type: ").append(slot.getColumn().getType()).append("\n"); + if (prunedType != null) { + output.append(prefix).append(" pruned type: ").append(prunedType).append("\n"); + } + if (displayAllAccessPathsString != null) { + output.append(prefix).append(" all access paths: [") + .append(displayAllAccessPathsString).append("]\n"); + } + if (displayPredicateAccessPathsString != null) { + output.append(prefix).append(" predicate access paths: [") + .append(displayPredicateAccessPathsString).append("]\n"); + } + } + } + + private String mergeIcebergAccessPathsWithId( + List accessPaths, List displayAccessPaths) { + List mergeDisplayAccessPaths = Lists.newArrayList(); + for (int i = 0; i < displayAccessPaths.size(); i++) { + TColumnAccessPath displayAccessPath = displayAccessPaths.get(i); + TColumnAccessPath idAccessPath = accessPaths.get(i); + List nameAccessPathStrings = displayAccessPath.type == TAccessPathType.DATA + ? displayAccessPath.data_access_path.path : displayAccessPath.meta_access_path.path; + List idAccessPathStrings = idAccessPath.type == TAccessPathType.DATA + ? idAccessPath.data_access_path.path : idAccessPath.meta_access_path.path; + + List mergedPath = new ArrayList<>(); + for (int j = 0; j < idAccessPathStrings.size(); j++) { + String name = nameAccessPathStrings.get(j); + String id = idAccessPathStrings.get(j); + if (name.equals(id)) { + mergedPath.add(name); + } else { + mergedPath.add(name + "(" + id + ")"); + } + } + mergeDisplayAccessPaths.add(StringUtils.join(mergedPath, ".")); + } + return StringUtils.join(mergeDisplayAccessPaths, ", "); + } } 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 25b97590d45a54..fc77636a9c44f2 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 @@ -408,6 +408,8 @@ public class SessionVariable implements Serializable, Writable { public static final String ENABLE_RUNTIME_FILTER_PARTITION_PRUNE = "enable_runtime_filter_partition_prune"; + public static final String ENABLE_PRUNE_NESTED_COLUMN = "enable_prune_nested_column"; + static final String SESSION_CONTEXT = "session_context"; public static final String DEFAULT_ORDER_BY_LIMIT = "default_order_by_limit"; @@ -1579,6 +1581,13 @@ public enum IgnoreSplitType { varType = VariableAnnotation.EXPERIMENTAL) public int topNLazyMaterializationThreshold = 1024; + @VariableMgr.VarAttr(name = ENABLE_PRUNE_NESTED_COLUMN, needForward = true, + fuzzy = false, + varType = VariableAnnotation.EXPERIMENTAL, + description = {"是否裁剪map/struct类型", "Whether to prune the type of map/struct"} + ) + public boolean enablePruneNestedColumns = true; + public boolean enableTopnLazyMaterialization() { return ConnectContext.get() != null && ConnectContext.get().getSessionVariable().topNLazyMaterializationThreshold > 0; diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java new file mode 100644 index 00000000000000..9c6674deb3df0e --- /dev/null +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java @@ -0,0 +1,652 @@ +// 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.nereids.rules.rewrite; + +import org.apache.doris.analysis.SlotDescriptor; +import org.apache.doris.catalog.Type; +import org.apache.doris.common.Pair; +import org.apache.doris.common.Triple; +import org.apache.doris.nereids.NereidsPlanner; +import org.apache.doris.nereids.rules.RuleType; +import org.apache.doris.nereids.trees.expressions.Alias; +import org.apache.doris.nereids.trees.expressions.ArrayItemReference; +import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.NamedExpression; +import org.apache.doris.nereids.trees.expressions.Slot; +import org.apache.doris.nereids.trees.expressions.SlotReference; +import org.apache.doris.nereids.trees.expressions.functions.scalar.StructElement; +import org.apache.doris.nereids.trees.expressions.literal.NullLiteral; +import org.apache.doris.nereids.trees.plans.physical.PhysicalCTEConsumer; +import org.apache.doris.nereids.trees.plans.physical.PhysicalPlan; +import org.apache.doris.nereids.trees.plans.physical.PhysicalUnion; +import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.util.MemoPatternMatchSupported; +import org.apache.doris.nereids.util.PlanChecker; +import org.apache.doris.planner.OlapScanNode; +import org.apache.doris.planner.PlanFragment; +import org.apache.doris.thrift.TAccessPathType; +import org.apache.doris.thrift.TColumnAccessPath; +import org.apache.doris.thrift.TDataAccessPath; +import org.apache.doris.thrift.TMetaAccessPath; +import org.apache.doris.utframe.TestWithFeService; + +import com.google.common.collect.ImmutableList; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.TreeSet; +import java.util.function.Consumer; + +public class PruneNestedColumnTest extends TestWithFeService implements MemoPatternMatchSupported { + @BeforeAll + public void createTable() throws Exception { + createDatabase("test"); + useDatabase("test"); + + createTable("create table tbl(\n" + + " id int,\n" + + " s struct<\n" + + " city: string,\n" + + " data: array\n" + + " >>\n" + + ">)\n" + + "properties ('replication_num'='1')"); + + createTable("create table tbl2(\n" + + " id2 int,\n" + + " s2 struct<\n" + + " city2: string,\n" + + " data2: array\n" + + " >>\n" + + ">)\n" + + "properties ('replication_num'='1')"); + + connectContext.getSessionVariable().setDisableNereidsRules(RuleType.PRUNE_EMPTY_PARTITION.name()); + connectContext.getSessionVariable().enableNereidsTimeout = false; + } + + @Test + public void testCaseInsensitive() throws Exception { + assertColumn("select struct_element(MAP_VALUES(struct_element(S, 'DATA')[1])[1], 'B') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "b")), + ImmutableList.of() + ); + } + + @Test + public void testMap() throws Exception { + assertColumn("select MAP_KEYS(struct_element(s, 'data')[0])[1] from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "KEYS")), + ImmutableList.of() + ); + + assertColumn("select MAP_VALUES(struct_element(s, 'data')[0])[1] from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES")), + ImmutableList.of() + ); + } + + @Test + public void testStruct() throws Throwable { + assertColumn("select struct_element(s, 1) from tbl", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + + assertColumn("select struct_element(map_values(struct_element(s, 'data')[0])[0], 1) from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "a")), + ImmutableList.of() + ); + } + + @Test + public void testPruneCast() throws Exception { + assertColumn("select struct_element(cast(s as struct>>>), 'k') from tbl", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + + assertColumn("select struct_element(map_values(struct_element(cast(s as struct>>>), 'l')[0])[0], 'x') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "a")), + ImmutableList.of() + ); + + assertColumns("select struct_element(s, 'city') from (select * from tbl union all select * from tbl2)t", + ImmutableList.of( + Triple.of( + "struct", + ImmutableList.of(path("s2", "city2")), + ImmutableList.of() + ), + Triple.of( + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ) + ) + ); + + assertColumns("select struct_element(s, 'city'), struct_element(map_values(struct_element(s, 'data')[0])[0], 'b') from (select * from tbl union all select * from tbl2)t", + ImmutableList.of( + Triple.of( + "struct>>>", + ImmutableList.of(path("s2", "city2"), path("s2", "data2", "*", "VALUES", "b2")), + ImmutableList.of() + ), + Triple.of( + "struct>>>", + ImmutableList.of(path("s", "city"), path("s", "data", "*", "VALUES", "b")), + ImmutableList.of() + ) + ) + ); + } + + @Test + public void testPruneArrayLambda() throws Exception { + // map_values(struct_element(s, 'data').*)[0].a + assertColumn("select struct_element(array_map(x -> map_values(x)[0], struct_element(s, 'data'))[0], 'a') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "a")), + ImmutableList.of() + ); + + assertColumn("select array_map((x, y) -> struct_element(map_values(x)[0], 'a') + struct_element(map_values(y)[0], 'b'), struct_element(s, 'data'), struct_element(s, 'data')) from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "a"), path("s", "data", "*", "VALUES", "b")), + ImmutableList.of() + ); + } + + @Test + public void testProject() throws Exception { + assertColumn("select 100 from tbl", null, null, null); + assertColumn("select * from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select tbl.* from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select test.tbl.* from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select internal.test.tbl.* from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select s from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select struct_element(s, 'city'), s from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select struct_element(s, 'city') from tbl", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + assertColumn("select struct_element(s, 'data') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data")), + ImmutableList.of() + ); + assertColumn("select struct_element(s, 'data')[1] from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*")), + ImmutableList.of() + ); + assertColumn("select map_keys(struct_element(s, 'data')[1]) from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "KEYS")), + ImmutableList.of() + ); + assertColumn("select map_values(struct_element(s, 'data')[1]) from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES")), + ImmutableList.of() + ); + assertColumn("select struct_element(map_values(struct_element(s, 'data')[1])[1], 'a') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "a")), + ImmutableList.of() + ); + assertColumn("select struct_element(s, 'data')[1][1] from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "*")), + ImmutableList.of() + ); + assertColumn("select struct_element(struct_element(s, 'data')[1][1], 'a') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "*", "a")), + ImmutableList.of() + ); + assertColumn("select struct_element(struct_element(s, 'data')[1][1], 'b') from tbl", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "*", "b")), + ImmutableList.of() + ); + } + + @Test + public void testFilter() throws Throwable { + assertColumn("select 100 from tbl where s is not null", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of(path("s")) + ); + + assertColumn("select 100 from tbl where if(id = 1, null, s) is not null or struct_element(s, 'city') = 'beijing'", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of(path("s")) + ); + + assertColumn("select 100 from tbl where struct_element(s, 'city') is not null", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of(path("s", "city")) + ); + + assertColumn("select 100 from tbl where struct_element(s, 'data') is not null", + "struct>>>", + ImmutableList.of(path("s", "data")), + ImmutableList.of(path("s", "data")) + ); + assertColumn("select 100 from tbl where struct_element(s, 'data')[1] is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*")), + ImmutableList.of(path("s", "data", "*")) + ); + assertColumn("select 100 from tbl where map_keys(struct_element(s, 'data')[1]) is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "KEYS")), + ImmutableList.of(path("s", "data", "*", "KEYS")) + ); + assertColumn("select 100 from tbl where map_values(struct_element(s, 'data')[1]) is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES")), + ImmutableList.of(path("s", "data", "*", "VALUES")) + ); + assertColumn("select 100 from tbl where struct_element(map_values(struct_element(s, 'data')[1])[1], 'a') is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "VALUES", "a")), + ImmutableList.of(path("s", "data", "*", "VALUES", "a")) + ); + assertColumn("select 100 from tbl where struct_element(s, 'data')[1][1] is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "*")), + ImmutableList.of(path("s", "data", "*", "*")) + ); + assertColumn("select 100 from tbl where struct_element(struct_element(s, 'data')[1][1], 'a') is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "*", "a")), + ImmutableList.of(path("s", "data", "*", "*", "a")) + ); + assertColumn("select 100 from tbl where struct_element(struct_element(s, 'data')[1][1], 'b') is not null", + "struct>>>", + ImmutableList.of(path("s", "data", "*", "*", "b")), + ImmutableList.of(path("s", "data", "*", "*", "b")) + ); + } + + @Test + public void testProjectFilter() throws Throwable { + assertColumn("select s from tbl where struct_element(s, 'city') is not null", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of(path("s", "city")) + ); + + assertColumn("select struct_element(s, 'data') from tbl where struct_element(s, 'city') is not null", + "struct>>>", + ImmutableList.of(path("s", "data"), path("s", "city")), + ImmutableList.of(path("s", "city")) + ); + + assertColumn("select struct_element(s, 'data') from tbl where struct_element(s, 'city') is not null and struct_element(s, 'data') is not null", + "struct>>>", + ImmutableList.of(path("s", "data"), path("s", "city")), + ImmutableList.of(path("s", "data"), path("s", "city")) + ); + } + + @Test + public void testCte() throws Throwable { + assertColumn("with t as (select id, s from tbl) select struct_element(t1.s, 'city') from t t1 join t t2 on t1.id = t2.id", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + + assertColumn("with t as (select id, struct_element(s, 'city') as c from tbl) select t1.c from t t1 join t t2 on t1.id = t2.id", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + } + + @Test + public void testUnion() throws Throwable { + assertColumn("select struct_element(s, 'city') from (select s from tbl union all select null)a", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + + assertColumn("select * from (select struct_element(s, 'city') from tbl union all select null)a", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + } + + @Test + public void testCteAndUnion() throws Throwable { + assertColumn("with t as (select id, s from tbl) select struct_element(s, 'city') from (select * from t union all select 1, null) tmp", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + + assertColumn("with t as (select id, s from tbl) select * from (select struct_element(s, 'city') from t union all select null) tmp", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + } + + @Test + public void testPushDownThroughJoin() { + PlanChecker.from(connectContext) + .analyze("select struct_element(s, 'city') from (select * from tbl)a join (select 100 id, 'f1' name)b on a.id=b.id") + .rewrite() + .matches( + logicalResultSink( + logicalProject( + logicalJoin( + logicalProject( + logicalFilter( + logicalOlapScan() + ) + ).when(p -> { + Assertions.assertEquals(2, p.getProjects().size()); + Assertions.assertTrue(p.getProjects().stream() + .anyMatch(o -> o instanceof Alias && o.child(0) instanceof StructElement)); + return true; + }), + logicalOneRowRelation() + ) + ).when(p -> { + Assertions.assertTrue(p.getProjects().size() == 1 && p.getProjects().get(0) instanceof SlotReference); + return true; + }) + ) + ); + } + + @Test + public void testAggregate() throws Exception { + assertColumn("select count(struct_element(s, 'city')) from tbl", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + } + + @Test + public void testJoin() throws Exception { + assertColumns("select 100 from tbl t1 join tbl t2 on struct_element(t1.s, 'city')=struct_element(t2.s, 'city')", + ImmutableList.of( + Triple.of( + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ), + Triple.of( + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ) + ) + ); + } + + @Test + public void testPushDownThroughWindow() { + PlanChecker.from(connectContext) + .analyze("select struct_element(s, 'city'), r from (select s, rank() over(partition by id) r from tbl t)a") + .rewrite() + .matches( + logicalResultSink( + logicalProject( + logicalWindow( + logicalProject( + logicalOlapScan() + ).when(p -> { + Assertions.assertEquals(2, p.getProjects().size()); + Assertions.assertTrue(p.getProjects().stream() + .anyMatch(o -> o instanceof Alias && o.child(0) instanceof StructElement)); + return true; + }) + ) + ).when(p -> { + Assertions.assertTrue(p.getProjects().size() == 2 && p.getProjects().get(0) instanceof SlotReference); + return true; + }) + ) + ); + } + + @Test + public void testPushDownThroughPartitionTopN() { + PlanChecker.from(connectContext) + .analyze("select struct_element(s, 'city'), r from (select s, rank() over(partition by id) r from tbl t limit 10)a") + .rewrite() + .matches( + logicalResultSink( + logicalLimit( + logicalLimit( + logicalProject( + logicalWindow( + logicalPartitionTopN( + logicalProject( + logicalOlapScan() + ).when(p -> { + Assertions.assertEquals(2, p.getProjects().size()); + Assertions.assertTrue(p.getProjects().stream() + .anyMatch(o -> o instanceof Alias && o.child(0) instanceof StructElement)); + return true; + }) + ) + ) + ).when(p -> { + Assertions.assertTrue(p.getProjects().size() == 2 && p.getProjects().get(0) instanceof SlotReference); + return true; + }) + ) + ) + ) + ); + } + + @Test + public void testPushDownThroughUnion() { + PlanChecker.from(connectContext) + .analyze("select struct_element(s, 'city') from (select id, s from tbl union all select 1, null) tmp") + .rewrite() + .matches( + logicalResultSink( + logicalUnion( + logicalProject( + logicalOlapScan() + ).when(p -> { + Assertions.assertEquals(1, p.getProjects().size()); + Assertions.assertInstanceOf(StructElement.class, p.getProjects().get(0).child(0)); + return true; + }) + ).when(u -> { + Assertions.assertEquals(1, u.getConstantExprsList().size()); + Assertions.assertInstanceOf(NullLiteral.class, u.getConstantExprsList().get(0).get(0).child(0)); + return true; + }) + ) + ); + } + + private void assertColumn(String sql, String expectType, + List expectAllAccessPaths, + List expectPredicateAccessPaths) throws Exception { + assertColumns(sql, expectType == null ? null : ImmutableList.of(Triple.of(expectType, expectAllAccessPaths, expectPredicateAccessPaths))); + } + + private void assertColumns(String sql, + List, List>> expectResults) throws Exception { + Pair> result = collectComplexSlots(sql); + PhysicalPlan physicalPlan = result.first; + List slotDescriptors = result.second; + if (expectResults == null) { + Assertions.assertEquals(0, slotDescriptors.size()); + return; + } + + Assertions.assertEquals(expectResults.size(), slotDescriptors.size()); + int slotIndex = 0; + for (Triple, List> expectResult : expectResults) { + String expectType = expectResult.left; + List expectAllAccessPaths = expectResult.middle; + List expectPredicateAccessPaths = expectResult.right; + SlotDescriptor slotDescriptor = slotDescriptors.get(slotIndex++); + Assertions.assertEquals(expectType, slotDescriptor.getType().toString()); + + TreeSet expectAllAccessPathSet = new TreeSet<>(expectAllAccessPaths); + TreeSet actualAllAccessPaths + = new TreeSet<>(slotDescriptor.getAllAccessPaths()); + Assertions.assertEquals(expectAllAccessPathSet, actualAllAccessPaths); + + TreeSet expectPredicateAccessPathSet = new TreeSet<>(expectPredicateAccessPaths); + TreeSet actualPredicateAccessPaths + = new TreeSet<>(slotDescriptor.getPredicateAccessPaths()); + Assertions.assertEquals(expectPredicateAccessPathSet, actualPredicateAccessPaths); + + Map slotIdToDataTypes = new LinkedHashMap<>(); + Consumer assertHasSameType = e -> { + if (e instanceof NamedExpression) { + DataType dataType = slotIdToDataTypes.get(((NamedExpression) e).getExprId().asInt()); + if (dataType != null) { + Assertions.assertEquals(dataType, e.getDataType()); + } else { + slotIdToDataTypes.put(((NamedExpression) e).getExprId().asInt(), e.getDataType()); + } + } + }; + + // assert same slot id has same type + physicalPlan.foreachUp(plan -> { + List expressions = ((PhysicalPlan) plan).getExpressions(); + for (Expression expression : expressions) { + expression.foreach(e -> { + assertHasSameType.accept((Expression) e); + if (e instanceof Alias && e.child(0) instanceof Slot) { + assertHasSameType.accept((Alias) e); + } else if (e instanceof ArrayItemReference) { + assertHasSameType.accept((ArrayItemReference) e); + } + }); + } + + if (plan instanceof PhysicalCTEConsumer) { + for (Entry> kv : ((PhysicalCTEConsumer) plan).getProducerToConsumerSlotMap() + .asMap().entrySet()) { + Slot producerSlot = kv.getKey(); + for (Slot consumerSlot : kv.getValue()) { + Assertions.assertEquals(producerSlot.getDataType(), consumerSlot.getDataType()); + } + } + } else if (plan instanceof PhysicalUnion) { + List output = ((PhysicalUnion) plan).getOutput(); + for (List regularChildrenOutput : ((PhysicalUnion) plan).getRegularChildrenOutputs()) { + Assertions.assertEquals(output.size(), regularChildrenOutput.size()); + for (int i = 0; i < output.size(); i++) { + Assertions.assertEquals(output.get(i).getDataType(), regularChildrenOutput.get(i).getDataType()); + } + } + } + }); + } + } + + private Pair> collectComplexSlots(String sql) throws Exception { + NereidsPlanner planner = (NereidsPlanner) executeNereidsSql(sql).planner(); + List complexSlots = new ArrayList<>(); + PhysicalPlan physicalPlan = planner.getPhysicalPlan(); + for (PlanFragment fragment : planner.getFragments()) { + List olapScanNodes = fragment.getPlanRoot().collectInCurrentFragment(OlapScanNode.class::isInstance); + for (OlapScanNode olapScanNode : olapScanNodes) { + List slots = olapScanNode.getTupleDesc().getSlots(); + for (SlotDescriptor slot : slots) { + Type type = slot.getType(); + if (type.isComplexType() || type.isVariantType()) { + complexSlots.add(slot); + } + } + } + } + return Pair.of(physicalPlan, complexSlots); + } + + private TColumnAccessPath path(String... path) { + TColumnAccessPath accessPath = new TColumnAccessPath(TAccessPathType.DATA); + accessPath.data_access_path = new TDataAccessPath(ImmutableList.copyOf(path)); + return accessPath; + } + + private TColumnAccessPath metaPath(String... path) { + TColumnAccessPath accessPath = new TColumnAccessPath(TAccessPathType.META); + accessPath.meta_access_path = new TMetaAccessPath(ImmutableList.copyOf(path)); + return accessPath; + } +} diff --git a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java index 972b18fd9467d5..6e88eaa05518ce 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java +++ b/fe/fe-core/src/test/java/org/apache/doris/utframe/TestWithFeService.java @@ -559,8 +559,8 @@ public StmtExecutor getSqlStmtExecutor(String queryStr) throws Exception { && connectContext.getState().getErrorCode() == null) { return stmtExecutor; } else { - // throw new IllegalStateException(connectContext.getState().getErrorMessage()); - return null; + throw new IllegalStateException(connectContext.getState().getErrorMessage()); + // return null; } } diff --git a/gensrc/proto/descriptors.proto b/gensrc/proto/descriptors.proto index 99ee06ca6a0a8b..f62204ac6f6094 100644 --- a/gensrc/proto/descriptors.proto +++ b/gensrc/proto/descriptors.proto @@ -23,6 +23,49 @@ option java_package = "org.apache.doris.proto"; import "types.proto"; import "olap_file.proto"; +message PDataAccessPath { + // the specification of special path: + // : access the whole complex column + // *: + // 1. access every items when the type is array + // 2. access key and value when the type is map + // KEYS: only access the keys of map + // VALUES: only access the keys of map + // + // example: + // s: struct< + // data: array< + // map< + // int, + // struct< + // a: id + // b: double + // > + // > + // > + // > + // if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'], + // if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'], + // if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b'] + // if we want to access the whole struct of s, the path will be: ['s'], + repeated string path = 1; +} + +message PMetaAccessPath { + repeated string path = 1; +} + +enum PAccessPathType { + DATA = 1; + META = 2; // use to prune `where s.data is not null` by only scan the meta of s.data +} + +message PColumnAccessPath { + required PAccessPathType type = 1; + optional PDataAccessPath data_access_path = 2; + optional PMetaAccessPath meta_access_path = 3; +} + message PSlotDescriptor { required int32 id = 1; required int32 parent = 2; // tuple id which this slot is belong to @@ -39,6 +82,8 @@ message PSlotDescriptor { optional bool is_auto_increment = 13; optional int32 col_type = 14 [default = 0]; repeated string column_paths = 15; + repeated PColumnAccessPath all_access_paths = 16; + repeated PColumnAccessPath predicate_access_paths = 17; }; message PTupleDescriptor { diff --git a/gensrc/thrift/Descriptors.thrift b/gensrc/thrift/Descriptors.thrift index a70d7d4434952e..411af7b54820b5 100644 --- a/gensrc/thrift/Descriptors.thrift +++ b/gensrc/thrift/Descriptors.thrift @@ -27,6 +27,49 @@ enum TPatternType { MATCH_NAME_GLOB = 2 } +enum TAccessPathType { + DATA = 1, + META = 2 // use to prune `where s.data is not null` by only scan the meta of s.data +} + +struct TDataAccessPath { + // the specification of special path: + // : access the whole complex column + // *: + // 1. access every items when the type is array + // 2. access key and value when the type is map + // KEYS: only access the keys of map + // VALUES: only access the keys of map + // + // example: + // s: struct< + // data: array< + // map< + // int, + // struct< + // a: id + // b: double + // > + // > + // > + // > + // if we want to access `map_keys(s.data[0])`, the path will be: ['s', 'data', '*', 'KEYS'], + // if we want to access `map_values(s.data[0])[0].b`, the path will be: ['s', 'data', '*', 'VALUES', 'b'], + // if we want to access `s.data[0]['k'].b`, the path will be ['s', 'data', '*', '*', 'b'] + // if we want to access the whole struct of s, the path will be: ['s'], + 1: required list path +} + +struct TMetaAccessPath { + 1: required list path +} + +struct TColumnAccessPath { + 1: required TAccessPathType type + 2: optional TDataAccessPath data_access_path + 3: optional TMetaAccessPath meta_access_path +} + struct TColumn { 1: required string column_name 2: required Types.TColumnType column_type @@ -73,10 +116,13 @@ struct TSlotDescriptor { 13: optional bool need_materialize = true // deprecated 14: optional bool is_auto_increment = false; // subcolumn path info list for semi structure column(variant) + // deprecated: will be replaced to column_access_paths 15: optional list column_paths 16: optional string col_default_value 17: optional Types.TPrimitiveType primitive_type = Types.TPrimitiveType.INVALID_TYPE 18: optional Exprs.TExpr virtual_column_expr + 19: optional list all_access_paths + 20: optional list predicate_access_paths } struct TTupleDescriptor { diff --git a/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out b/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out new file mode 100644 index 00000000000000..870a576307486f --- /dev/null +++ b/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out @@ -0,0 +1,31 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !sql -- +1 {"city":"beijing", "data":[{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}]} +2 {"city":"shanghai", "data":[{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}]} + +-- !sql1 -- +1 [10] + +-- !sql2 -- +1 beijing +2 shanghai + +-- !sql3 -- +1 [{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}] +2 [{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}] + +-- !sql4 -- +1 [{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}] +2 [{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}] + +-- !sql5 -- +1 beijing +2 shanghai + +-- !sql6 -- +2 + +-- !sql7 -- +0.41 +0.99 + diff --git a/regression-test/data/nereids_arith_p0/decimal.out b/regression-test/data/nereids_arith_p0/decimal.out index 8be58f2ff1bc27..b4ec4e72980614 100644 --- a/regression-test/data/nereids_arith_p0/decimal.out +++ b/regression-test/data/nereids_arith_p0/decimal.out @@ -1,109 +1,109 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !sql_test_Float_TinyInt_0 -- \N \N \N -1 1.1000000014901161 -0.8999999985098839 -2 2.2000000029802322 -1.7999999970197678 +1 1.100000001490116 -0.8999999985098839 +2 2.200000002980232 -1.799999997019768 3 3.300000011920929 -2.699999988079071 -4 4.4000000059604645 -3.5999999940395355 +4 4.400000005960464 -3.599999994039536 5 5.5 -4.5 6 6.600000023841858 -5.399999976158142 7 7.699999988079071 -6.300000011920929 8 8.800000011920929 -7.199999988079071 9 9.899999976158142 -8.100000023841858 -10 11.0 -9.0 -11 12.100000023841858 -9.899999976158142 -12 13.200000047683716 -10.799999952316284 -13 1.1000000014901161 -0.8999999985098839 -14 2.2000000029802322 -1.7999999970197678 +10 11 -9 +11 12.10000002384186 -9.899999976158142 +12 13.20000004768372 -10.79999995231628 +13 1.100000001490116 -0.8999999985098839 +14 2.200000002980232 -1.799999997019768 15 3.300000011920929 -2.699999988079071 -16 4.4000000059604645 -3.5999999940395355 +16 4.400000005960464 -3.599999994039536 17 5.5 -4.5 18 6.600000023841858 -5.399999976158142 19 7.699999988079071 -6.300000011920929 20 8.800000011920929 -7.199999988079071 21 9.899999976158142 -8.100000023841858 -22 11.0 -9.0 -23 12.100000023841858 -9.899999976158142 -24 13.200000047683716 -10.799999952316284 +22 11 -9 +23 12.10000002384186 -9.899999976158142 +24 13.20000004768372 -10.79999995231628 -- !sql_test_Float_TinyInt_notn_0 -- -1 1.1000000014901161 -0.8999999985098839 -2 2.2000000029802322 -1.7999999970197678 +1 1.100000001490116 -0.8999999985098839 +2 2.200000002980232 -1.799999997019768 3 3.300000011920929 -2.699999988079071 -4 4.4000000059604645 -3.5999999940395355 +4 4.400000005960464 -3.599999994039536 5 5.5 -4.5 6 6.600000023841858 -5.399999976158142 7 7.699999988079071 -6.300000011920929 8 8.800000011920929 -7.199999988079071 9 9.899999976158142 -8.100000023841858 -10 11.0 -9.0 -11 12.100000023841858 -9.899999976158142 -12 13.200000047683716 -10.799999952316284 -13 1.1000000014901161 -0.8999999985098839 -14 2.2000000029802322 -1.7999999970197678 +10 11 -9 +11 12.10000002384186 -9.899999976158142 +12 13.20000004768372 -10.79999995231628 +13 1.100000001490116 -0.8999999985098839 +14 2.200000002980232 -1.799999997019768 15 3.300000011920929 -2.699999988079071 -16 4.4000000059604645 -3.5999999940395355 +16 4.400000005960464 -3.599999994039536 17 5.5 -4.5 18 6.600000023841858 -5.399999976158142 19 7.699999988079071 -6.300000011920929 20 8.800000011920929 -7.199999988079071 21 9.899999976158142 -8.100000023841858 -22 11.0 -9.0 -23 12.100000023841858 -9.899999976158142 -24 13.200000047683716 -10.799999952316284 +22 11 -9 +23 12.10000002384186 -9.899999976158142 +24 13.20000004768372 -10.79999995231628 -- !sql_test_Float_TinyInt_1 -- \N \N \N \N -1 0.10000000149011612 0.10000000149011612 0.1 -2 0.4000000059604645 0.10000000149011612 0.2 -3 0.9000000357627869 0.10000000397364299 0.3 -4 1.600000023841858 0.10000000149011612 0.4 +1 0.1000000014901161 0.1000000014901161 0.1000000014901161 +2 0.4000000059604645 0.1000000014901161 0.2000000029802322 +3 0.9000000357627869 0.100000003973643 0.300000011920929 +4 1.600000023841858 0.1000000014901161 0.4000000059604645 5 2.5 0.1 0.5 -6 3.6000001430511475 0.10000000397364299 0.6 -7 4.899999916553497 0.09999999829701015 0.7 -8 6.400000095367432 0.10000000149011612 0.8 -9 8.099999785423279 0.09999999735090467 0.9 -10 10.0 0.1 1.0 -11 12.100000262260437 0.10000000216744163 1.1 -12 14.40000057220459 0.10000000397364299 1.2 -13 0.10000000149011612 0.10000000149011612 0.1 -14 0.4000000059604645 0.10000000149011612 0.2 -15 0.9000000357627869 0.10000000397364299 0.3 -16 1.600000023841858 0.10000000149011612 0.4 +6 3.600000143051147 0.100000003973643 0.6000000238418579 +7 4.899999916553497 0.09999999829701015 0.699999988079071 +8 6.400000095367432 0.1000000014901161 0.800000011920929 +9 8.099999785423279 0.09999999735090467 0.8999999761581421 +10 10 0.1 1 +11 12.10000026226044 0.1000000021674416 1.100000023841858 +12 14.40000057220459 0.100000003973643 1.200000047683716 +13 0.1000000014901161 0.1000000014901161 0.1000000014901161 +14 0.4000000059604645 0.1000000014901161 0.2000000029802322 +15 0.9000000357627869 0.100000003973643 0.300000011920929 +16 1.600000023841858 0.1000000014901161 0.4000000059604645 17 2.5 0.1 0.5 -18 3.6000001430511475 0.10000000397364299 0.6 -19 4.899999916553497 0.09999999829701015 0.7 -20 6.400000095367432 0.10000000149011612 0.8 -21 8.099999785423279 0.09999999735090467 0.9 -22 10.0 0.1 1.0 -23 12.100000262260437 0.10000000216744163 1.1 -24 14.40000057220459 0.10000000397364299 1.2 +18 3.600000143051147 0.100000003973643 0.6000000238418579 +19 4.899999916553497 0.09999999829701015 0.699999988079071 +20 6.400000095367432 0.1000000014901161 0.800000011920929 +21 8.099999785423279 0.09999999735090467 0.8999999761581421 +22 10 0.1 1 +23 12.10000026226044 0.1000000021674416 1.100000023841858 +24 14.40000057220459 0.100000003973643 1.200000047683716 -- !sql_test_Float_TinyInt_notn_1 -- -1 0.10000000149011612 0.10000000149011612 0.1 -2 0.4000000059604645 0.10000000149011612 0.2 -3 0.9000000357627869 0.10000000397364299 0.3 -4 1.600000023841858 0.10000000149011612 0.4 +1 0.1000000014901161 0.1000000014901161 0.1000000014901161 +2 0.4000000059604645 0.1000000014901161 0.2000000029802322 +3 0.9000000357627869 0.100000003973643 0.300000011920929 +4 1.600000023841858 0.1000000014901161 0.4000000059604645 5 2.5 0.1 0.5 -6 3.6000001430511475 0.10000000397364299 0.6 -7 4.899999916553497 0.09999999829701015 0.7 -8 6.400000095367432 0.10000000149011612 0.8 -9 8.099999785423279 0.09999999735090467 0.9 -10 10.0 0.1 1.0 -11 12.100000262260437 0.10000000216744163 1.1 -12 14.40000057220459 0.10000000397364299 1.2 -13 0.10000000149011612 0.10000000149011612 0.1 -14 0.4000000059604645 0.10000000149011612 0.2 -15 0.9000000357627869 0.10000000397364299 0.3 -16 1.600000023841858 0.10000000149011612 0.4 +6 3.600000143051147 0.100000003973643 0.6000000238418579 +7 4.899999916553497 0.09999999829701015 0.699999988079071 +8 6.400000095367432 0.1000000014901161 0.800000011920929 +9 8.099999785423279 0.09999999735090467 0.8999999761581421 +10 10 0.1 1 +11 12.10000026226044 0.1000000021674416 1.100000023841858 +12 14.40000057220459 0.100000003973643 1.200000047683716 +13 0.1000000014901161 0.1000000014901161 0.1000000014901161 +14 0.4000000059604645 0.1000000014901161 0.2000000029802322 +15 0.9000000357627869 0.100000003973643 0.300000011920929 +16 1.600000023841858 0.1000000014901161 0.4000000059604645 17 2.5 0.1 0.5 -18 3.6000001430511475 0.10000000397364299 0.6 -19 4.899999916553497 0.09999999829701015 0.7 -20 6.400000095367432 0.10000000149011612 0.8 -21 8.099999785423279 0.09999999735090467 0.9 -22 10.0 0.1 1.0 -23 12.100000262260437 0.10000000216744163 1.1 -24 14.40000057220459 0.10000000397364299 1.2 +18 3.600000143051147 0.100000003973643 0.6000000238418579 +19 4.899999916553497 0.09999999829701015 0.699999988079071 +20 6.400000095367432 0.1000000014901161 0.800000011920929 +21 8.099999785423279 0.09999999735090467 0.8999999761581421 +22 10 0.1 1 +23 12.10000026226044 0.1000000021674416 1.100000023841858 +24 14.40000057220459 0.100000003973643 1.200000047683716 -- !sql_test_Float_TinyInt_2 -- \N \N @@ -266,109 +266,109 @@ -- !sql_test_Float_SmallInt_0 -- \N \N \N -1 10.100000001490116 -9.899999998509884 -2 20.200000002980232 -19.799999997019768 +1 10.10000000149012 -9.899999998509884 +2 20.20000000298023 -19.79999999701977 3 40.30000001192093 -39.69999998807907 4 80.40000000596046 -79.59999999403954 5 160.5 -159.5 -6 320.60000002384186 -319.39999997615814 +6 320.6000000238419 -319.3999999761581 7 640.6999999880791 -639.3000000119209 8 1280.800000011921 -1279.199999988079 9 2560.899999976158 -2559.100000023842 -10 5121.0 -5119.0 -11 10241.100000023842 -10238.899999976158 -12 20481.200000047684 -20478.799999952316 -13 10.100000001490116 -9.899999998509884 -14 20.200000002980232 -19.799999997019768 +10 5121 -5119 +11 10241.10000002384 -10238.89999997616 +12 20481.20000004768 -20478.79999995232 +13 10.10000000149012 -9.899999998509884 +14 20.20000000298023 -19.79999999701977 15 40.30000001192093 -39.69999998807907 16 80.40000000596046 -79.59999999403954 17 160.5 -159.5 -18 320.60000002384186 -319.39999997615814 +18 320.6000000238419 -319.3999999761581 19 640.6999999880791 -639.3000000119209 20 1280.800000011921 -1279.199999988079 21 2560.899999976158 -2559.100000023842 -22 5121.0 -5119.0 -23 10241.100000023842 -10238.899999976158 -24 20481.200000047684 -20478.799999952316 +22 5121 -5119 +23 10241.10000002384 -10238.89999997616 +24 20481.20000004768 -20478.79999995232 -- !sql_test_Float_SmallInt_notn_0 -- -1 10.100000001490116 -9.899999998509884 -2 20.200000002980232 -19.799999997019768 +1 10.10000000149012 -9.899999998509884 +2 20.20000000298023 -19.79999999701977 3 40.30000001192093 -39.69999998807907 4 80.40000000596046 -79.59999999403954 5 160.5 -159.5 -6 320.60000002384186 -319.39999997615814 +6 320.6000000238419 -319.3999999761581 7 640.6999999880791 -639.3000000119209 8 1280.800000011921 -1279.199999988079 9 2560.899999976158 -2559.100000023842 -10 5121.0 -5119.0 -11 10241.100000023842 -10238.899999976158 -12 20481.200000047684 -20478.799999952316 -13 10.100000001490116 -9.899999998509884 -14 20.200000002980232 -19.799999997019768 +10 5121 -5119 +11 10241.10000002384 -10238.89999997616 +12 20481.20000004768 -20478.79999995232 +13 10.10000000149012 -9.899999998509884 +14 20.20000000298023 -19.79999999701977 15 40.30000001192093 -39.69999998807907 16 80.40000000596046 -79.59999999403954 17 160.5 -159.5 -18 320.60000002384186 -319.39999997615814 +18 320.6000000238419 -319.3999999761581 19 640.6999999880791 -639.3000000119209 20 1280.800000011921 -1279.199999988079 21 2560.899999976158 -2559.100000023842 -22 5121.0 -5119.0 -23 10241.100000023842 -10238.899999976158 -24 20481.200000047684 -20478.799999952316 +22 5121 -5119 +23 10241.10000002384 -10238.89999997616 +24 20481.20000004768 -20478.79999995232 -- !sql_test_Float_SmallInt_1 -- \N \N \N \N -1 1.0000000149011612 0.010000000149011612 0.1 -2 4.000000059604645 0.010000000149011612 0.2 -3 12.000000476837158 0.007500000298023224 0.3 -4 32.00000047683716 0.005000000074505806 0.4 -5 80.0 0.003125 0.5 -6 192.00000762939453 0.001875000074505806 0.6 -7 447.99999237060547 0.0010937499813735486 0.7 -8 1024.000015258789 6.250000093132258E-4 0.8 -9 2303.9999389648438 3.5156249068677423E-4 0.9 -10 5120.0 1.953125E-4 1.0 -11 11264.000244140625 1.0742187732830644E-4 1.1 -12 24576.0009765625 5.8593752328306437E-5 1.2 -13 1.0000000149011612 0.010000000149011612 0.1 -14 4.000000059604645 0.010000000149011612 0.2 -15 12.000000476837158 0.007500000298023224 0.3 -16 32.00000047683716 0.005000000074505806 0.4 -17 80.0 0.003125 0.5 -18 192.00000762939453 0.001875000074505806 0.6 -19 447.99999237060547 0.0010937499813735486 0.7 -20 1024.000015258789 6.250000093132258E-4 0.8 -21 2303.9999389648438 3.5156249068677423E-4 0.9 -22 5120.0 1.953125E-4 1.0 -23 11264.000244140625 1.0742187732830644E-4 1.1 -24 24576.0009765625 5.8593752328306437E-5 1.2 +1 1.000000014901161 0.01000000014901161 0.1000000014901161 +2 4.000000059604645 0.01000000014901161 0.2000000029802322 +3 12.00000047683716 0.007500000298023224 0.300000011920929 +4 32.00000047683716 0.005000000074505806 0.4000000059604645 +5 80 0.003125 0.5 +6 192.0000076293945 0.001875000074505806 0.6000000238418579 +7 447.9999923706055 0.001093749981373549 0.699999988079071 +8 1024.000015258789 0.0006250000093132258 0.800000011920929 +9 2303.999938964844 0.0003515624906867742 0.8999999761581421 +10 5120 0.0001953125 1 +11 11264.00024414062 0.0001074218773283064 1.100000023841858 +12 24576.0009765625 5.859375232830644e-05 1.200000047683716 +13 1.000000014901161 0.01000000014901161 0.1000000014901161 +14 4.000000059604645 0.01000000014901161 0.2000000029802322 +15 12.00000047683716 0.007500000298023224 0.300000011920929 +16 32.00000047683716 0.005000000074505806 0.4000000059604645 +17 80 0.003125 0.5 +18 192.0000076293945 0.001875000074505806 0.6000000238418579 +19 447.9999923706055 0.001093749981373549 0.699999988079071 +20 1024.000015258789 0.0006250000093132258 0.800000011920929 +21 2303.999938964844 0.0003515624906867742 0.8999999761581421 +22 5120 0.0001953125 1 +23 11264.00024414062 0.0001074218773283064 1.100000023841858 +24 24576.0009765625 5.859375232830644e-05 1.200000047683716 -- !sql_test_Float_SmallInt_notn_1 -- -1 1.0000000149011612 0.010000000149011612 0.1 -2 4.000000059604645 0.010000000149011612 0.2 -3 12.000000476837158 0.007500000298023224 0.3 -4 32.00000047683716 0.005000000074505806 0.4 -5 80.0 0.003125 0.5 -6 192.00000762939453 0.001875000074505806 0.6 -7 447.99999237060547 0.0010937499813735486 0.7 -8 1024.000015258789 6.250000093132258E-4 0.8 -9 2303.9999389648438 3.5156249068677423E-4 0.9 -10 5120.0 1.953125E-4 1.0 -11 11264.000244140625 1.0742187732830644E-4 1.1 -12 24576.0009765625 5.8593752328306437E-5 1.2 -13 1.0000000149011612 0.010000000149011612 0.1 -14 4.000000059604645 0.010000000149011612 0.2 -15 12.000000476837158 0.007500000298023224 0.3 -16 32.00000047683716 0.005000000074505806 0.4 -17 80.0 0.003125 0.5 -18 192.00000762939453 0.001875000074505806 0.6 -19 447.99999237060547 0.0010937499813735486 0.7 -20 1024.000015258789 6.250000093132258E-4 0.8 -21 2303.9999389648438 3.5156249068677423E-4 0.9 -22 5120.0 1.953125E-4 1.0 -23 11264.000244140625 1.0742187732830644E-4 1.1 -24 24576.0009765625 5.8593752328306437E-5 1.2 +1 1.000000014901161 0.01000000014901161 0.1000000014901161 +2 4.000000059604645 0.01000000014901161 0.2000000029802322 +3 12.00000047683716 0.007500000298023224 0.300000011920929 +4 32.00000047683716 0.005000000074505806 0.4000000059604645 +5 80 0.003125 0.5 +6 192.0000076293945 0.001875000074505806 0.6000000238418579 +7 447.9999923706055 0.001093749981373549 0.699999988079071 +8 1024.000015258789 0.0006250000093132258 0.800000011920929 +9 2303.999938964844 0.0003515624906867742 0.8999999761581421 +10 5120 0.0001953125 1 +11 11264.00024414062 0.0001074218773283064 1.100000023841858 +12 24576.0009765625 5.859375232830644e-05 1.200000047683716 +13 1.000000014901161 0.01000000014901161 0.1000000014901161 +14 4.000000059604645 0.01000000014901161 0.2000000029802322 +15 12.00000047683716 0.007500000298023224 0.300000011920929 +16 32.00000047683716 0.005000000074505806 0.4000000059604645 +17 80 0.003125 0.5 +18 192.0000076293945 0.001875000074505806 0.6000000238418579 +19 447.9999923706055 0.001093749981373549 0.699999988079071 +20 1024.000015258789 0.0006250000093132258 0.800000011920929 +21 2303.999938964844 0.0003515624906867742 0.8999999761581421 +22 5120 0.0001953125 1 +23 11264.00024414062 0.0001074218773283064 1.100000023841858 +24 24576.0009765625 5.859375232830644e-05 1.200000047683716 -- !sql_test_Float_SmallInt_2 -- \N \N @@ -481,106 +481,106 @@ 1 23795.10000000149 -23794.89999999851 2 47545.20000000298 -47544.79999999702 3 95045.30000001192 -95044.69999998808 -4 190045.40000000596 -190044.59999999404 +4 190045.400000006 -190044.599999994 5 380045.5 -380044.5 6 760045.6000000238 -760044.3999999762 7 1520045.699999988 -1520044.300000012 8 3040045.800000012 -3040044.199999988 9 6080045.899999976 -6080044.100000024 -10 1.2160046E7 -1.2160044E7 -11 2.4320046100000024E7 -2.4320043899999976E7 -12 4.864004620000005E7 -4.864004379999995E7 +10 12160046 -12160044 +11 24320046.10000002 -24320043.89999998 +12 48640046.20000005 -48640043.79999995 13 23795.10000000149 -23794.89999999851 14 47545.20000000298 -47544.79999999702 15 95045.30000001192 -95044.69999998808 -16 190045.40000000596 -190044.59999999404 +16 190045.400000006 -190044.599999994 17 380045.5 -380044.5 18 760045.6000000238 -760044.3999999762 19 1520045.699999988 -1520044.300000012 20 3040045.800000012 -3040044.199999988 21 6080045.899999976 -6080044.100000024 -22 1.2160046E7 -1.2160044E7 -23 2.4320046100000024E7 -2.4320043899999976E7 -24 4.864004620000005E7 -4.864004379999995E7 +22 12160046 -12160044 +23 24320046.10000002 -24320043.89999998 +24 48640046.20000005 -48640043.79999995 -- !sql_test_Float_Integer_notn_0 -- 1 23795.10000000149 -23794.89999999851 2 47545.20000000298 -47544.79999999702 3 95045.30000001192 -95044.69999998808 -4 190045.40000000596 -190044.59999999404 +4 190045.400000006 -190044.599999994 5 380045.5 -380044.5 6 760045.6000000238 -760044.3999999762 7 1520045.699999988 -1520044.300000012 8 3040045.800000012 -3040044.199999988 9 6080045.899999976 -6080044.100000024 -10 1.2160046E7 -1.2160044E7 -11 2.4320046100000024E7 -2.4320043899999976E7 -12 4.864004620000005E7 -4.864004379999995E7 +10 12160046 -12160044 +11 24320046.10000002 -24320043.89999998 +12 48640046.20000005 -48640043.79999995 13 23795.10000000149 -23794.89999999851 14 47545.20000000298 -47544.79999999702 15 95045.30000001192 -95044.69999998808 -16 190045.40000000596 -190044.59999999404 +16 190045.400000006 -190044.599999994 17 380045.5 -380044.5 18 760045.6000000238 -760044.3999999762 19 1520045.699999988 -1520044.300000012 20 3040045.800000012 -3040044.199999988 21 6080045.899999976 -6080044.100000024 -22 1.2160046E7 -1.2160044E7 -23 2.4320046100000024E7 -2.4320043899999976E7 -24 4.864004620000005E7 -4.864004379999995E7 +22 12160046 -12160044 +23 24320046.10000002 -24320043.89999998 +24 48640046.20000005 -48640043.79999995 -- !sql_test_Float_Integer_1 -- \N \N \N \N -1 2379.500035457313 4.202563626396979E-6 0.1 -2 9509.000141695142 4.206541234204064E-6 0.2 -3 28513.501133024693 3.1563997256134354E-6 0.3 -4 76018.00113275647 2.1047646923647794E-6 0.4 -5 190022.5 1.3156336749595442E-6 0.5 -6 456027.0181208849 7.894269731948212E-7 0.6 -7 1064031.4818796515 4.6051267434784567E-7 0.7 -8 2432036.0362401605 2.631540032864411E-7 0.8 -9 5472040.355040431 1.4802521628674494E-7 0.9 -10 1.2160045E7 8.22365377759704E-8 1.0 -11 2.6752050079835057E7 4.5230180447522115E-8 1.1 -12 5.836805631933808E7 2.4671030787157286E-8 1.2 -13 2379.500035457313 4.202563626396979E-6 0.1 -14 9509.000141695142 4.206541234204064E-6 0.2 -15 28513.501133024693 3.1563997256134354E-6 0.3 -16 76018.00113275647 2.1047646923647794E-6 0.4 -17 190022.5 1.3156336749595442E-6 0.5 -18 456027.0181208849 7.894269731948212E-7 0.6 -19 1064031.4818796515 4.6051267434784567E-7 0.7 -20 2432036.0362401605 2.631540032864411E-7 0.8 -21 5472040.355040431 1.4802521628674494E-7 0.9 -22 1.2160045E7 8.22365377759704E-8 1.0 -23 2.6752050079835057E7 4.5230180447522115E-8 1.1 -24 5.836805631933808E7 2.4671030787157286E-8 1.2 +1 2379.500035457313 4.202563626396979e-06 0.1000000014901161 +2 9509.000141695142 4.206541234204064e-06 0.2000000029802322 +3 28513.50113302469 3.156399725613435e-06 0.300000011920929 +4 76018.00113275647 2.104764692364779e-06 0.4000000059604645 +5 190022.5 1.315633674959544e-06 0.5 +6 456027.0181208849 7.894269731948212e-07 0.6000000238418579 +7 1064031.481879652 4.605126743478457e-07 0.699999988079071 +8 2432036.03624016 2.631540032864411e-07 0.800000011920929 +9 5472040.355040431 1.480252162867449e-07 0.8999999761581421 +10 12160045 8.22365377759704e-08 1 +11 26752050.07983506 4.523018044752212e-08 1.100000023841858 +12 58368056.31933808 2.467103078715729e-08 1.200000047683716 +13 2379.500035457313 4.202563626396979e-06 0.1000000014901161 +14 9509.000141695142 4.206541234204064e-06 0.2000000029802322 +15 28513.50113302469 3.156399725613435e-06 0.300000011920929 +16 76018.00113275647 2.104764692364779e-06 0.4000000059604645 +17 190022.5 1.315633674959544e-06 0.5 +18 456027.0181208849 7.894269731948212e-07 0.6000000238418579 +19 1064031.481879652 4.605126743478457e-07 0.699999988079071 +20 2432036.03624016 2.631540032864411e-07 0.800000011920929 +21 5472040.355040431 1.480252162867449e-07 0.8999999761581421 +22 12160045 8.22365377759704e-08 1 +23 26752050.07983506 4.523018044752212e-08 1.100000023841858 +24 58368056.31933808 2.467103078715729e-08 1.200000047683716 -- !sql_test_Float_Integer_notn_1 -- -1 2379.500035457313 4.202563626396979E-6 0.1 -2 9509.000141695142 4.206541234204064E-6 0.2 -3 28513.501133024693 3.1563997256134354E-6 0.3 -4 76018.00113275647 2.1047646923647794E-6 0.4 -5 190022.5 1.3156336749595442E-6 0.5 -6 456027.0181208849 7.894269731948212E-7 0.6 -7 1064031.4818796515 4.6051267434784567E-7 0.7 -8 2432036.0362401605 2.631540032864411E-7 0.8 -9 5472040.355040431 1.4802521628674494E-7 0.9 -10 1.2160045E7 8.22365377759704E-8 1.0 -11 2.6752050079835057E7 4.5230180447522115E-8 1.1 -12 5.836805631933808E7 2.4671030787157286E-8 1.2 -13 2379.500035457313 4.202563626396979E-6 0.1 -14 9509.000141695142 4.206541234204064E-6 0.2 -15 28513.501133024693 3.1563997256134354E-6 0.3 -16 76018.00113275647 2.1047646923647794E-6 0.4 -17 190022.5 1.3156336749595442E-6 0.5 -18 456027.0181208849 7.894269731948212E-7 0.6 -19 1064031.4818796515 4.6051267434784567E-7 0.7 -20 2432036.0362401605 2.631540032864411E-7 0.8 -21 5472040.355040431 1.4802521628674494E-7 0.9 -22 1.2160045E7 8.22365377759704E-8 1.0 -23 2.6752050079835057E7 4.5230180447522115E-8 1.1 -24 5.836805631933808E7 2.4671030787157286E-8 1.2 +1 2379.500035457313 4.202563626396979e-06 0.1000000014901161 +2 9509.000141695142 4.206541234204064e-06 0.2000000029802322 +3 28513.50113302469 3.156399725613435e-06 0.300000011920929 +4 76018.00113275647 2.104764692364779e-06 0.4000000059604645 +5 190022.5 1.315633674959544e-06 0.5 +6 456027.0181208849 7.894269731948212e-07 0.6000000238418579 +7 1064031.481879652 4.605126743478457e-07 0.699999988079071 +8 2432036.03624016 2.631540032864411e-07 0.800000011920929 +9 5472040.355040431 1.480252162867449e-07 0.8999999761581421 +10 12160045 8.22365377759704e-08 1 +11 26752050.07983506 4.523018044752212e-08 1.100000023841858 +12 58368056.31933808 2.467103078715729e-08 1.200000047683716 +13 2379.500035457313 4.202563626396979e-06 0.1000000014901161 +14 9509.000141695142 4.206541234204064e-06 0.2000000029802322 +15 28513.50113302469 3.156399725613435e-06 0.300000011920929 +16 76018.00113275647 2.104764692364779e-06 0.4000000059604645 +17 190022.5 1.315633674959544e-06 0.5 +18 456027.0181208849 7.894269731948212e-07 0.6000000238418579 +19 1064031.481879652 4.605126743478457e-07 0.699999988079071 +20 2432036.03624016 2.631540032864411e-07 0.800000011920929 +21 5472040.355040431 1.480252162867449e-07 0.8999999761581421 +22 12160045 8.22365377759704e-08 1 +23 26752050.07983506 4.523018044752212e-08 1.100000023841858 +24 58368056.31933808 2.467103078715729e-08 1.200000047683716 -- !sql_test_Float_Integer_2 -- \N \N @@ -690,56 +690,56 @@ -- !sql_test_Float_BigInt_0 -- \N \N \N -1 5354529.1000000015 -5354528.8999999985 -2 1.0698279200000003E7 -1.0698278799999997E7 -3 2.1385779300000012E7 -2.1385778699999988E7 -4 4.2760779400000006E7 -4.2760778599999994E7 -5 8.55107795E7 -8.55107785E7 -6 1.7101077960000002E8 -1.7101077839999998E8 -7 3.420107797E8 -3.420107783E8 -8 6.840107798E8 -6.840107782E8 -9 1.3680107799E9 -1.3680107781E9 -10 2.73601078E9 -2.736010778E9 -11 5.4720107801E9 -5.4720107779E9 -12 1.09440107802E10 -1.09440107778E10 -13 5354529.1000000015 -5354528.8999999985 -14 1.0698279200000003E7 -1.0698278799999997E7 -15 2.1385779300000012E7 -2.1385778699999988E7 -16 4.2760779400000006E7 -4.2760778599999994E7 -17 8.55107795E7 -8.55107785E7 -18 1.7101077960000002E8 -1.7101077839999998E8 -19 3.420107797E8 -3.420107783E8 -20 6.840107798E8 -6.840107782E8 -21 1.3680107799E9 -1.3680107781E9 -22 2.73601078E9 -2.736010778E9 -23 5.4720107801E9 -5.4720107779E9 -24 1.09440107802E10 -1.09440107778E10 +1 5354529.100000001 -5354528.899999999 +2 10698279.2 -10698278.8 +3 21385779.30000001 -21385778.69999999 +4 42760779.40000001 -42760778.59999999 +5 85510779.5 -85510778.5 +6 171010779.6 -171010778.4 +7 342010779.7 -342010778.3 +8 684010779.8 -684010778.2 +9 1368010779.9 -1368010778.1 +10 2736010780 -2736010778 +11 5472010780.1 -5472010777.9 +12 10944010780.2 -10944010777.8 +13 5354529.100000001 -5354528.899999999 +14 10698279.2 -10698278.8 +15 21385779.30000001 -21385778.69999999 +16 42760779.40000001 -42760778.59999999 +17 85510779.5 -85510778.5 +18 171010779.6 -171010778.4 +19 342010779.7 -342010778.3 +20 684010779.8 -684010778.2 +21 1368010779.9 -1368010778.1 +22 2736010780 -2736010778 +23 5472010780.1 -5472010777.9 +24 10944010780.2 -10944010777.8 -- !sql_test_Float_BigInt_notn_0 -- -1 5354529.1000000015 -5354528.8999999985 -2 1.0698279200000003E7 -1.0698278799999997E7 -3 2.1385779300000012E7 -2.1385778699999988E7 -4 4.2760779400000006E7 -4.2760778599999994E7 -5 8.55107795E7 -8.55107785E7 -6 1.7101077960000002E8 -1.7101077839999998E8 -7 3.420107797E8 -3.420107783E8 -8 6.840107798E8 -6.840107782E8 -9 1.3680107799E9 -1.3680107781E9 -10 2.73601078E9 -2.736010778E9 -11 5.4720107801E9 -5.4720107779E9 -12 1.09440107802E10 -1.09440107778E10 -13 5354529.1000000015 -5354528.8999999985 -14 1.0698279200000003E7 -1.0698278799999997E7 -15 2.1385779300000012E7 -2.1385778699999988E7 -16 4.2760779400000006E7 -4.2760778599999994E7 -17 8.55107795E7 -8.55107785E7 -18 1.7101077960000002E8 -1.7101077839999998E8 -19 3.420107797E8 -3.420107783E8 -20 6.840107798E8 -6.840107782E8 -21 1.3680107799E9 -1.3680107781E9 -22 2.73601078E9 -2.736010778E9 -23 5.4720107801E9 -5.4720107779E9 -24 1.09440107802E10 -1.09440107778E10 +1 5354529.100000001 -5354528.899999999 +2 10698279.2 -10698278.8 +3 21385779.30000001 -21385778.69999999 +4 42760779.40000001 -42760778.59999999 +5 85510779.5 -85510778.5 +6 171010779.6 -171010778.4 +7 342010779.7 -342010778.3 +8 684010779.8 -684010778.2 +9 1368010779.9 -1368010778.1 +10 2736010780 -2736010778 +11 5472010780.1 -5472010777.9 +12 10944010780.2 -10944010777.8 +13 5354529.100000001 -5354528.899999999 +14 10698279.2 -10698278.8 +15 21385779.30000001 -21385778.69999999 +16 42760779.40000001 -42760778.59999999 +17 85510779.5 -85510778.5 +18 171010779.6 -171010778.4 +19 342010779.7 -342010778.3 +20 684010779.8 -684010778.2 +21 1368010779.9 -1368010778.1 +22 2736010780 -2736010778 +23 5472010780.1 -5472010777.9 +24 10944010780.2 -10944010777.8 -- !sql_test_Float_BigInt_2 -- \N \N @@ -849,56 +849,56 @@ -- !sql_test_Float_LargeInt_0 -- \N \N \N -1 1.070906451E8 -1.070906449E8 -2 2.139656452E8 -2.139656448E8 -3 4.277156453E8 -4.277156447E8 -4 8.552156454E8 -8.552156446E8 -5 1.7102156455E9 -1.7102156445E9 -6 3.4202156456E9 -3.4202156444E9 -7 6.8402156457E9 -6.8402156443E9 -8 1.36802156458E10 -1.36802156442E10 -9 2.73602156459E10 -2.73602156441E10 -10 5.4720215646E10 -5.4720215644E10 -11 1.094402156461E11 -1.094402156439E11 -12 2.188802156462E11 -2.188802156438E11 -13 1.070906451E8 -1.070906449E8 -14 2.139656452E8 -2.139656448E8 -15 4.277156453E8 -4.277156447E8 -16 8.552156454E8 -8.552156446E8 -17 1.7102156455E9 -1.7102156445E9 -18 3.4202156456E9 -3.4202156444E9 -19 6.8402156457E9 -6.8402156443E9 -20 1.36802156458E10 -1.36802156442E10 -21 2.73602156459E10 -2.73602156441E10 -22 5.4720215646E10 -5.4720215644E10 -23 1.094402156461E11 -1.094402156439E11 -24 2.188802156462E11 -2.188802156438E11 +1 107090645.1 -107090644.9 +2 213965645.2 -213965644.8 +3 427715645.3 -427715644.7 +4 855215645.4 -855215644.6 +5 1710215645.5 -1710215644.5 +6 3420215645.6 -3420215644.4 +7 6840215645.7 -6840215644.3 +8 13680215645.8 -13680215644.2 +9 27360215645.9 -27360215644.1 +10 54720215646 -54720215644 +11 109440215646.1 -109440215643.9 +12 218880215646.2 -218880215643.8 +13 107090645.1 -107090644.9 +14 213965645.2 -213965644.8 +15 427715645.3 -427715644.7 +16 855215645.4 -855215644.6 +17 1710215645.5 -1710215644.5 +18 3420215645.6 -3420215644.4 +19 6840215645.7 -6840215644.3 +20 13680215645.8 -13680215644.2 +21 27360215645.9 -27360215644.1 +22 54720215646 -54720215644 +23 109440215646.1 -109440215643.9 +24 218880215646.2 -218880215643.8 -- !sql_test_Float_LargeInt_notn_0 -- -1 1.070906451E8 -1.070906449E8 -2 2.139656452E8 -2.139656448E8 -3 4.277156453E8 -4.277156447E8 -4 8.552156454E8 -8.552156446E8 -5 1.7102156455E9 -1.7102156445E9 -6 3.4202156456E9 -3.4202156444E9 -7 6.8402156457E9 -6.8402156443E9 -8 1.36802156458E10 -1.36802156442E10 -9 2.73602156459E10 -2.73602156441E10 -10 5.4720215646E10 -5.4720215644E10 -11 1.094402156461E11 -1.094402156439E11 -12 2.188802156462E11 -2.188802156438E11 -13 1.070906451E8 -1.070906449E8 -14 2.139656452E8 -2.139656448E8 -15 4.277156453E8 -4.277156447E8 -16 8.552156454E8 -8.552156446E8 -17 1.7102156455E9 -1.7102156445E9 -18 3.4202156456E9 -3.4202156444E9 -19 6.8402156457E9 -6.8402156443E9 -20 1.36802156458E10 -1.36802156442E10 -21 2.73602156459E10 -2.73602156441E10 -22 5.4720215646E10 -5.4720215644E10 -23 1.094402156461E11 -1.094402156439E11 -24 2.188802156462E11 -2.188802156438E11 +1 107090645.1 -107090644.9 +2 213965645.2 -213965644.8 +3 427715645.3 -427715644.7 +4 855215645.4 -855215644.6 +5 1710215645.5 -1710215644.5 +6 3420215645.6 -3420215644.4 +7 6840215645.7 -6840215644.3 +8 13680215645.8 -13680215644.2 +9 27360215645.9 -27360215644.1 +10 54720215646 -54720215644 +11 109440215646.1 -109440215643.9 +12 218880215646.2 -218880215643.8 +13 107090645.1 -107090644.9 +14 213965645.2 -213965644.8 +15 427715645.3 -427715644.7 +16 855215645.4 -855215644.6 +17 1710215645.5 -1710215644.5 +18 3420215645.6 -3420215644.4 +19 6840215645.7 -6840215644.3 +20 13680215645.8 -13680215644.2 +21 27360215645.9 -27360215644.1 +22 54720215646 -54720215644 +23 109440215646.1 -109440215643.9 +24 218880215646.2 -218880215643.8 -- !sql_test_Float_LargeInt_2 -- \N \N @@ -1008,109 +1008,109 @@ -- !sql_test_Float_Float_0 -- \N \N \N -1 0.20000000298023224 0.0 -2 0.4000000059604645 0.0 -3 0.6000000238418579 0.0 -4 0.800000011920929 0.0 -5 1.0 0.0 -6 1.2000000476837158 0.0 -7 1.399999976158142 0.0 -8 1.600000023841858 0.0 -9 1.7999999523162842 0.0 -10 2.0 0.0 -11 2.200000047683716 0.0 -12 2.4000000953674316 0.0 -13 0.20000000298023224 0.0 -14 0.4000000059604645 0.0 -15 0.6000000238418579 0.0 -16 0.800000011920929 0.0 -17 1.0 0.0 -18 1.2000000476837158 0.0 -19 1.399999976158142 0.0 -20 1.600000023841858 0.0 -21 1.7999999523162842 0.0 -22 2.0 0.0 -23 2.200000047683716 0.0 -24 2.4000000953674316 0.0 +1 0.2000000029802322 0 +2 0.4000000059604645 0 +3 0.6000000238418579 0 +4 0.800000011920929 0 +5 1 0 +6 1.200000047683716 0 +7 1.399999976158142 0 +8 1.600000023841858 0 +9 1.799999952316284 0 +10 2 0 +11 2.200000047683716 0 +12 2.400000095367432 0 +13 0.2000000029802322 0 +14 0.4000000059604645 0 +15 0.6000000238418579 0 +16 0.800000011920929 0 +17 1 0 +18 1.200000047683716 0 +19 1.399999976158142 0 +20 1.600000023841858 0 +21 1.799999952316284 0 +22 2 0 +23 2.200000047683716 0 +24 2.400000095367432 0 -- !sql_test_Float_Float_notn_0 -- -1 0.20000000298023224 0.0 -2 0.4000000059604645 0.0 -3 0.6000000238418579 0.0 -4 0.800000011920929 0.0 -5 1.0 0.0 -6 1.2000000476837158 0.0 -7 1.399999976158142 0.0 -8 1.600000023841858 0.0 -9 1.7999999523162842 0.0 -10 2.0 0.0 -11 2.200000047683716 0.0 -12 2.4000000953674316 0.0 -13 0.20000000298023224 0.0 -14 0.4000000059604645 0.0 -15 0.6000000238418579 0.0 -16 0.800000011920929 0.0 -17 1.0 0.0 -18 1.2000000476837158 0.0 -19 1.399999976158142 0.0 -20 1.600000023841858 0.0 -21 1.7999999523162842 0.0 -22 2.0 0.0 -23 2.200000047683716 0.0 -24 2.4000000953674316 0.0 +1 0.2000000029802322 0 +2 0.4000000059604645 0 +3 0.6000000238418579 0 +4 0.800000011920929 0 +5 1 0 +6 1.200000047683716 0 +7 1.399999976158142 0 +8 1.600000023841858 0 +9 1.799999952316284 0 +10 2 0 +11 2.200000047683716 0 +12 2.400000095367432 0 +13 0.2000000029802322 0 +14 0.4000000059604645 0 +15 0.6000000238418579 0 +16 0.800000011920929 0 +17 1 0 +18 1.200000047683716 0 +19 1.399999976158142 0 +20 1.600000023841858 0 +21 1.799999952316284 0 +22 2 0 +23 2.200000047683716 0 +24 2.400000095367432 0 -- !sql_test_Float_Float_1 -- \N \N \N \N -1 0.010000000298023226 1.0 0.0 -2 0.040000001192092904 1.0 0.0 -3 0.09000000715255752 1.0 0.0 -4 0.16000000476837162 1.0 0.0 -5 0.25 1.0 0.0 -6 0.36000002861023006 1.0 0.0 -7 0.4899999833106996 1.0 0.0 -8 0.6400000190734865 1.0 0.0 -9 0.8099999570846563 1.0 0.0 -10 1.0 1.0 0.0 -11 1.210000052452088 1.0 0.0 -12 1.4400001144409202 1.0 0.0 -13 0.010000000298023226 1.0 0.0 -14 0.040000001192092904 1.0 0.0 -15 0.09000000715255752 1.0 0.0 -16 0.16000000476837162 1.0 0.0 -17 0.25 1.0 0.0 -18 0.36000002861023006 1.0 0.0 -19 0.4899999833106996 1.0 0.0 -20 0.6400000190734865 1.0 0.0 -21 0.8099999570846563 1.0 0.0 -22 1.0 1.0 0.0 -23 1.210000052452088 1.0 0.0 -24 1.4400001144409202 1.0 0.0 +1 0.01000000029802323 1 0.0 +2 0.0400000011920929 1 0.0 +3 0.09000000715255752 1 0.0 +4 0.1600000047683716 1 0.0 +5 0.25 1 0.0 +6 0.3600000286102301 1 0.0 +7 0.4899999833106996 1 0.0 +8 0.6400000190734865 1 0.0 +9 0.8099999570846563 1 0.0 +10 1 1 0.0 +11 1.210000052452088 1 0.0 +12 1.44000011444092 1 0.0 +13 0.01000000029802323 1 0.0 +14 0.0400000011920929 1 0.0 +15 0.09000000715255752 1 0.0 +16 0.1600000047683716 1 0.0 +17 0.25 1 0.0 +18 0.3600000286102301 1 0.0 +19 0.4899999833106996 1 0.0 +20 0.6400000190734865 1 0.0 +21 0.8099999570846563 1 0.0 +22 1 1 0.0 +23 1.210000052452088 1 0.0 +24 1.44000011444092 1 0.0 -- !sql_test_Float_Float_notn_1 -- -1 0.010000000298023226 1.0 0.0 -2 0.040000001192092904 1.0 0.0 -3 0.09000000715255752 1.0 0.0 -4 0.16000000476837162 1.0 0.0 -5 0.25 1.0 0.0 -6 0.36000002861023006 1.0 0.0 -7 0.4899999833106996 1.0 0.0 -8 0.6400000190734865 1.0 0.0 -9 0.8099999570846563 1.0 0.0 -10 1.0 1.0 0.0 -11 1.210000052452088 1.0 0.0 -12 1.4400001144409202 1.0 0.0 -13 0.010000000298023226 1.0 0.0 -14 0.040000001192092904 1.0 0.0 -15 0.09000000715255752 1.0 0.0 -16 0.16000000476837162 1.0 0.0 -17 0.25 1.0 0.0 -18 0.36000002861023006 1.0 0.0 -19 0.4899999833106996 1.0 0.0 -20 0.6400000190734865 1.0 0.0 -21 0.8099999570846563 1.0 0.0 -22 1.0 1.0 0.0 -23 1.210000052452088 1.0 0.0 -24 1.4400001144409202 1.0 0.0 +1 0.01000000029802323 1 0.0 +2 0.0400000011920929 1 0.0 +3 0.09000000715255752 1 0.0 +4 0.1600000047683716 1 0.0 +5 0.25 1 0.0 +6 0.3600000286102301 1 0.0 +7 0.4899999833106996 1 0.0 +8 0.6400000190734865 1 0.0 +9 0.8099999570846563 1 0.0 +10 1 1 0.0 +11 1.210000052452088 1 0.0 +12 1.44000011444092 1 0.0 +13 0.01000000029802323 1 0.0 +14 0.0400000011920929 1 0.0 +15 0.09000000715255752 1 0.0 +16 0.1600000047683716 1 0.0 +17 0.25 1 0.0 +18 0.3600000286102301 1 0.0 +19 0.4899999833106996 1 0.0 +20 0.6400000190734865 1 0.0 +21 0.8099999570846563 1 0.0 +22 1 1 0.0 +23 1.210000052452088 1 0.0 +24 1.44000011444092 1 0.0 -- !sql_test_Float_Float_2 -- \N \N @@ -1273,109 +1273,109 @@ -- !sql_test_Float_Double_0 -- \N \N \N -1 0.6244000014901161 -0.42439999850988386 +1 0.6244000014901161 -0.4243999985098839 2 0.9416000029802323 -0.5415999970197678 3 1.336800011920929 -0.736799988079071 -4 1.8491000059604645 -1.0490999940395356 -5 2.531 -1.5310000000000001 +4 1.849100005960465 -1.049099994039536 +5 2.531 -1.531 6 3.454800023841858 -2.254799976158142 -7 4.721799988079071 -3.3218000119209288 +7 4.721799988079071 -3.321800011920929 8 6.474500011920929 -4.874499988079071 9 8.914099976158141 -7.114100023841857 10 12.3248 -10.3248 -11 17.10860002384186 -14.908599976158143 -12 23.834000047683716 -21.433999952316285 -13 0.6244000014901161 -0.42439999850988386 +11 17.10860002384186 -14.90859997615814 +12 23.83400004768372 -21.43399995231628 +13 0.6244000014901161 -0.4243999985098839 14 0.9416000029802323 -0.5415999970197678 15 1.336800011920929 -0.736799988079071 -16 1.8491000059604645 -1.0490999940395356 -17 2.531 -1.5310000000000001 +16 1.849100005960465 -1.049099994039536 +17 2.531 -1.531 18 3.454800023841858 -2.254799976158142 -19 4.721799988079071 -3.3218000119209288 +19 4.721799988079071 -3.321800011920929 20 6.474500011920929 -4.874499988079071 21 8.914099976158141 -7.114100023841857 22 12.3248 -10.3248 -23 17.10860002384186 -14.908599976158143 -24 23.834000047683716 -21.433999952316285 +23 17.10860002384186 -14.90859997615814 +24 23.83400004768372 -21.43399995231628 -- !sql_test_Float_Double_notn_0 -- -1 0.6244000014901161 -0.42439999850988386 +1 0.6244000014901161 -0.4243999985098839 2 0.9416000029802323 -0.5415999970197678 3 1.336800011920929 -0.736799988079071 -4 1.8491000059604645 -1.0490999940395356 -5 2.531 -1.5310000000000001 +4 1.849100005960465 -1.049099994039536 +5 2.531 -1.531 6 3.454800023841858 -2.254799976158142 -7 4.721799988079071 -3.3218000119209288 +7 4.721799988079071 -3.321800011920929 8 6.474500011920929 -4.874499988079071 9 8.914099976158141 -7.114100023841857 10 12.3248 -10.3248 -11 17.10860002384186 -14.908599976158143 -12 23.834000047683716 -21.433999952316285 -13 0.6244000014901161 -0.42439999850988386 +11 17.10860002384186 -14.90859997615814 +12 23.83400004768372 -21.43399995231628 +13 0.6244000014901161 -0.4243999985098839 14 0.9416000029802323 -0.5415999970197678 15 1.336800011920929 -0.736799988079071 -16 1.8491000059604645 -1.0490999940395356 -17 2.531 -1.5310000000000001 +16 1.849100005960465 -1.049099994039536 +17 2.531 -1.531 18 3.454800023841858 -2.254799976158142 -19 4.721799988079071 -3.3218000119209288 +19 4.721799988079071 -3.321800011920929 20 6.474500011920929 -4.874499988079071 21 8.914099976158141 -7.114100023841857 22 12.3248 -10.3248 -23 17.10860002384186 -14.908599976158143 -24 23.834000047683716 -21.433999952316285 +23 17.10860002384186 -14.90859997615814 +24 23.83400004768372 -21.43399995231628 -- !sql_test_Float_Double_1 -- \N \N \N \N -1 0.05244000078141689 0.190694129462464 0.10000000149011612 -2 0.14832000221014024 0.26968716690969824 0.20000000298023224 -3 0.31104001235961914 0.28935186334966145 0.30000001192092896 +1 0.05244000078141689 0.190694129462464 0.1000000014901161 +2 0.1483200022101402 0.2696871669096982 0.2000000029802322 +3 0.3110400123596191 0.2893518633496615 0.300000011920929 4 0.5796400086373091 0.2760334041546232 0.4000000059604645 -5 1.0155 0.24618414574101427 0.5 +5 1.0155 0.2461841457410143 0.5 6 1.712880068063736 0.2101723496713808 0.6000000238418579 -7 2.8152599520564077 0.17405141679821748 0.699999988079071 -8 4.539600067645312 0.14098158638134267 0.800000011920929 -9 7.212689808928966 0.11230206463085589 0.8999999761581421 -10 11.3248 0.08830178016388811 1.0 +7 2.815259952056408 0.1740514167982175 0.699999988079071 +8 4.539600067645312 0.1409815863813427 0.800000011920929 +9 7.212689808928966 0.1123020646308559 0.8999999761581421 +10 11.3248 0.08830178016388811 1 11 17.60946038167477 0.06871306821595004 1.100000023841858 -12 27.160801079273224 0.053017586272144375 1.2000000476837158 -13 0.05244000078141689 0.190694129462464 0.10000000149011612 -14 0.14832000221014024 0.26968716690969824 0.20000000298023224 -15 0.31104001235961914 0.28935186334966145 0.30000001192092896 +12 27.16080107927322 0.05301758627214437 1.200000047683716 +13 0.05244000078141689 0.190694129462464 0.1000000014901161 +14 0.1483200022101402 0.2696871669096982 0.2000000029802322 +15 0.3110400123596191 0.2893518633496615 0.300000011920929 16 0.5796400086373091 0.2760334041546232 0.4000000059604645 -17 1.0155 0.24618414574101427 0.5 +17 1.0155 0.2461841457410143 0.5 18 1.712880068063736 0.2101723496713808 0.6000000238418579 -19 2.8152599520564077 0.17405141679821748 0.699999988079071 -20 4.539600067645312 0.14098158638134267 0.800000011920929 -21 7.212689808928966 0.11230206463085589 0.8999999761581421 -22 11.3248 0.08830178016388811 1.0 +19 2.815259952056408 0.1740514167982175 0.699999988079071 +20 4.539600067645312 0.1409815863813427 0.800000011920929 +21 7.212689808928966 0.1123020646308559 0.8999999761581421 +22 11.3248 0.08830178016388811 1 23 17.60946038167477 0.06871306821595004 1.100000023841858 -24 27.160801079273224 0.053017586272144375 1.2000000476837158 +24 27.16080107927322 0.05301758627214437 1.200000047683716 -- !sql_test_Float_Double_notn_1 -- -1 0.05244000078141689 0.190694129462464 0.10000000149011612 -2 0.14832000221014024 0.26968716690969824 0.20000000298023224 -3 0.31104001235961914 0.28935186334966145 0.30000001192092896 +1 0.05244000078141689 0.190694129462464 0.1000000014901161 +2 0.1483200022101402 0.2696871669096982 0.2000000029802322 +3 0.3110400123596191 0.2893518633496615 0.300000011920929 4 0.5796400086373091 0.2760334041546232 0.4000000059604645 -5 1.0155 0.24618414574101427 0.5 +5 1.0155 0.2461841457410143 0.5 6 1.712880068063736 0.2101723496713808 0.6000000238418579 -7 2.8152599520564077 0.17405141679821748 0.699999988079071 -8 4.539600067645312 0.14098158638134267 0.800000011920929 -9 7.212689808928966 0.11230206463085589 0.8999999761581421 -10 11.3248 0.08830178016388811 1.0 +7 2.815259952056408 0.1740514167982175 0.699999988079071 +8 4.539600067645312 0.1409815863813427 0.800000011920929 +9 7.212689808928966 0.1123020646308559 0.8999999761581421 +10 11.3248 0.08830178016388811 1 11 17.60946038167477 0.06871306821595004 1.100000023841858 -12 27.160801079273224 0.053017586272144375 1.2000000476837158 -13 0.05244000078141689 0.190694129462464 0.10000000149011612 -14 0.14832000221014024 0.26968716690969824 0.20000000298023224 -15 0.31104001235961914 0.28935186334966145 0.30000001192092896 +12 27.16080107927322 0.05301758627214437 1.200000047683716 +13 0.05244000078141689 0.190694129462464 0.1000000014901161 +14 0.1483200022101402 0.2696871669096982 0.2000000029802322 +15 0.3110400123596191 0.2893518633496615 0.300000011920929 16 0.5796400086373091 0.2760334041546232 0.4000000059604645 -17 1.0155 0.24618414574101427 0.5 +17 1.0155 0.2461841457410143 0.5 18 1.712880068063736 0.2101723496713808 0.6000000238418579 -19 2.8152599520564077 0.17405141679821748 0.699999988079071 -20 4.539600067645312 0.14098158638134267 0.800000011920929 -21 7.212689808928966 0.11230206463085589 0.8999999761581421 -22 11.3248 0.08830178016388811 1.0 +19 2.815259952056408 0.1740514167982175 0.699999988079071 +20 4.539600067645312 0.1409815863813427 0.800000011920929 +21 7.212689808928966 0.1123020646308559 0.8999999761581421 +22 11.3248 0.08830178016388811 1 23 17.60946038167477 0.06871306821595004 1.100000023841858 -24 27.160801079273224 0.053017586272144375 1.2000000476837158 +24 27.16080107927322 0.05301758627214437 1.200000047683716 -- !sql_test_Float_Double_2 -- \N \N @@ -1538,109 +1538,109 @@ -- !sql_test_Float_DecimalV2_0 -- \N \N \N -1 24.495000001 -24.294999999 -2 34.684000003 -34.283999997 -3 49.056000012 -48.455999988 -4 69.343000006 -68.542999994 -5 97.994000000 -96.994000000 -6 138.474000024 -137.273999976 -7 195.679999988 -194.280000012 +1 24.495200001 -24.295199999 +2 34.683700003 -34.283699997 +3 49.055800012 -48.455799988 +4 69.342900006 -68.542899994 +5 97.994200000 -96.994200000 +6 138.473600024 -137.273599976 +7 195.679799988 -194.279800012 8 276.541000012 -274.940999988 -9 390.854999976 -389.055000024 +9 390.855299976 -389.055300024 10 552.479000000 -550.479000000 -11 781.008000024 -778.807999976 -12 1104.157000048 -1101.756999952 -13 24.495000001 -24.294999999 -14 34.684000003 -34.283999997 -15 49.056000012 -48.455999988 -16 69.343000006 -68.542999994 -17 97.994000000 -96.994000000 -18 138.474000024 -137.273999976 -19 195.679999988 -194.280000012 +11 781.008400024 -778.808399976 +12 1104.156500048 -1101.756499952 +13 24.495200001 -24.295199999 +14 34.683700003 -34.283699997 +15 49.055800012 -48.455799988 +16 69.342900006 -68.542899994 +17 97.994200000 -96.994200000 +18 138.473600024 -137.273599976 +19 195.679799988 -194.279800012 20 276.541000012 -274.940999988 -21 390.854999976 -389.055000024 +21 390.855299976 -389.055300024 22 552.479000000 -550.479000000 -23 781.008000024 -778.807999976 -24 1104.157000048 -1101.756999952 +23 781.008400024 -778.808399976 +24 1104.156500048 -1101.756499952 -- !sql_test_Float_DecimalV2_notn_0 -- -1 24.495000001 -24.294999999 -2 34.684000003 -34.283999997 -3 49.056000012 -48.455999988 -4 69.343000006 -68.542999994 -5 97.994000000 -96.994000000 -6 138.474000024 -137.273999976 -7 195.679999988 -194.280000012 +1 24.495200001 -24.295199999 +2 34.683700003 -34.283699997 +3 49.055800012 -48.455799988 +4 69.342900006 -68.542899994 +5 97.994200000 -96.994200000 +6 138.473600024 -137.273599976 +7 195.679799988 -194.279800012 8 276.541000012 -274.940999988 -9 390.854999976 -389.055000024 +9 390.855299976 -389.055300024 10 552.479000000 -550.479000000 -11 781.008000024 -778.807999976 -12 1104.157000048 -1101.756999952 -13 24.495000001 -24.294999999 -14 34.684000003 -34.283999997 -15 49.056000012 -48.455999988 -16 69.343000006 -68.542999994 -17 97.994000000 -96.994000000 -18 138.474000024 -137.273999976 -19 195.679999988 -194.280000012 +11 781.008400024 -778.808399976 +12 1104.156500048 -1101.756499952 +13 24.495200001 -24.295199999 +14 34.683700003 -34.283699997 +15 49.055800012 -48.455799988 +16 69.342900006 -68.542899994 +17 97.994200000 -96.994200000 +18 138.473600024 -137.273599976 +19 195.679799988 -194.279800012 20 276.541000012 -274.940999988 -21 390.854999976 -389.055000024 +21 390.855299976 -389.055300024 22 552.479000000 -550.479000000 -23 781.008000024 -778.807999976 -24 1104.157000048 -1101.756999952 +23 781.008400024 -778.808399976 +24 1104.156500048 -1101.756499952 -- !sql_test_Float_DecimalV2_1 -- \N \N \N \N -1 2.439500025 0.0040992007169549545 0.100000001 -2 6.896800104 0.005799791293940153 0.200000003 -3 14.626800586 0.0061530890951047865 0.300000012 -4 27.577200414 0.005801894404949951 0.400000006 -5 48.747000000 0.005128520729480788 0.500000000 -6 82.724403309 0.004351799642005439 0.600000024 -7 136.485997661 0.0035901117451998723 0.699999988 -8 220.592803309 0.0029012733395502627 0.800000012 -9 350.959490642 0.002307958549468893 0.899999976 -10 551.479000000 0.0018133056743774468 1.000000000 -11 857.898818718 0.0014104227983837297 1.100000024 -12 1323.548452942 0.0010879844342832183 1.200000048 -13 2.439500025 0.0040992007169549545 0.100000001 -14 6.896800104 0.005799791293940153 0.200000003 -15 14.626800586 0.0061530890951047865 0.300000012 -16 27.577200414 0.005801894404949951 0.400000006 -17 48.747000000 0.005128520729480788 0.500000000 -18 82.724403309 0.004351799642005439 0.600000024 -19 136.485997661 0.0035901117451998723 0.699999988 -20 220.592803309 0.0029012733395502627 0.800000012 -21 350.959490642 0.002307958549468893 0.899999976 -22 551.479000000 0.0018133056743774468 1.000000000 -23 857.898818718 0.0014104227983837297 1.100000024 -24 1323.548452942 0.0010879844342832183 1.200000048 +1 2.439520025 0.00409916711033794 0.100000001 +2 6.896740104 0.005799841750746939 0.200000003 +3 14.626740586 0.006153114335544263 0.300000012 +4 27.577160414 0.005801902820456705 0.400000006 +5 48.747100000 0.005128510208812422 0.500000000 +6 82.724163309 0.004351812267481649 0.600000024 +7 136.485857661 0.003590115427747238 0.699999988 +8 220.592803309 0.002901273339550263 0.800000012 +9 350.959760642 0.002307956773912656 0.899999976 +10 551.479000000 0.001813305674377447 1.000000000 +11 857.899258718 0.001410422075005036 1.100000024 +12 1323.547852942 0.001087984927495976 1.200000048 +13 2.439520025 0.00409916711033794 0.100000001 +14 6.896740104 0.005799841750746939 0.200000003 +15 14.626740586 0.006153114335544263 0.300000012 +16 27.577160414 0.005801902820456705 0.400000006 +17 48.747100000 0.005128510208812422 0.500000000 +18 82.724163309 0.004351812267481649 0.600000024 +19 136.485857661 0.003590115427747238 0.699999988 +20 220.592803309 0.002901273339550263 0.800000012 +21 350.959760642 0.002307956773912656 0.899999976 +22 551.479000000 0.001813305674377447 1.000000000 +23 857.899258718 0.001410422075005036 1.100000024 +24 1323.547852942 0.001087984927495976 1.200000048 -- !sql_test_Float_DecimalV2_notn_1 -- -1 2.439500025 0.0040992007169549545 0.100000001 -2 6.896800104 0.005799791293940153 0.200000003 -3 14.626800586 0.0061530890951047865 0.300000012 -4 27.577200414 0.005801894404949951 0.400000006 -5 48.747000000 0.005128520729480788 0.500000000 -6 82.724403309 0.004351799642005439 0.600000024 -7 136.485997661 0.0035901117451998723 0.699999988 -8 220.592803309 0.0029012733395502627 0.800000012 -9 350.959490642 0.002307958549468893 0.899999976 -10 551.479000000 0.0018133056743774468 1.000000000 -11 857.898818718 0.0014104227983837297 1.100000024 -12 1323.548452942 0.0010879844342832183 1.200000048 -13 2.439500025 0.0040992007169549545 0.100000001 -14 6.896800104 0.005799791293940153 0.200000003 -15 14.626800586 0.0061530890951047865 0.300000012 -16 27.577200414 0.005801894404949951 0.400000006 -17 48.747000000 0.005128520729480788 0.500000000 -18 82.724403309 0.004351799642005439 0.600000024 -19 136.485997661 0.0035901117451998723 0.699999988 -20 220.592803309 0.0029012733395502627 0.800000012 -21 350.959490642 0.002307958549468893 0.899999976 -22 551.479000000 0.0018133056743774468 1.000000000 -23 857.898818718 0.0014104227983837297 1.100000024 -24 1323.548452942 0.0010879844342832183 1.200000048 +1 2.439520025 0.00409916711033794 0.100000001 +2 6.896740104 0.005799841750746939 0.200000003 +3 14.626740586 0.006153114335544263 0.300000012 +4 27.577160414 0.005801902820456705 0.400000006 +5 48.747100000 0.005128510208812422 0.500000000 +6 82.724163309 0.004351812267481649 0.600000024 +7 136.485857661 0.003590115427747238 0.699999988 +8 220.592803309 0.002901273339550263 0.800000012 +9 350.959760642 0.002307956773912656 0.899999976 +10 551.479000000 0.001813305674377447 1.000000000 +11 857.899258718 0.001410422075005036 1.100000024 +12 1323.547852942 0.001087984927495976 1.200000048 +13 2.439520025 0.00409916711033794 0.100000001 +14 6.896740104 0.005799841750746939 0.200000003 +15 14.626740586 0.006153114335544263 0.300000012 +16 27.577160414 0.005801902820456705 0.400000006 +17 48.747100000 0.005128510208812422 0.500000000 +18 82.724163309 0.004351812267481649 0.600000024 +19 136.485857661 0.003590115427747238 0.699999988 +20 220.592803309 0.002901273339550263 0.800000012 +21 350.959760642 0.002307956773912656 0.899999976 +22 551.479000000 0.001813305674377447 1.000000000 +23 857.899258718 0.001410422075005036 1.100000024 +24 1323.547852942 0.001087984927495976 1.200000048 -- !sql_test_Float_DecimalV2_2 -- \N \N @@ -1750,55 +1750,55 @@ -- !sql_test_Float_Decimal32V3_0 -- \N \N \N -1 12.112000001490117 -11.911999998509884 -2 23.323000002980233 -22.92299999701977 +1 12.11200000149012 -11.91199999850988 +2 23.32300000298023 -22.92299999701977 3 34.53400001192093 -33.93399998807907 -4 45.74500000596046 -44.944999994039534 +4 45.74500000596046 -44.94499999403953 5 56.956 -55.956 6 68.16700002384185 -66.96699997615814 7 79.37799998807907 -77.97800001192093 8 90.58900001192093 -88.98899998807907 -9 101.79999997615815 -100.00000002384186 +9 101.7999999761581 -100.0000000238419 10 113.011 -111.011 -11 124.22200002384186 -122.02199997615814 -12 135.43300004768372 -133.0329999523163 -13 145.4440000014901 -145.24399999850988 -14 156.65500000298024 -156.25499999701978 -15 167.86600001192093 -167.26599998807907 -16 179.07700000596046 -178.27699999403953 +11 124.2220000238419 -122.0219999761581 +12 135.4330000476837 -133.0329999523163 +13 145.4440000014901 -145.2439999985099 +14 156.6550000029802 -156.2549999970198 +15 167.8660000119209 -167.2659999880791 +16 179.0770000059605 -178.2769999940395 17 190.288 -189.288 -18 201.49900002384186 -200.29899997615814 -19 212.70999998807906 -211.31000001192092 -20 223.92100001192094 -222.32099998807908 -21 235.13199997615814 -233.33200002384186 +18 201.4990000238419 -200.2989999761581 +19 212.7099999880791 -211.3100000119209 +20 223.9210000119209 -222.3209999880791 +21 235.1319999761581 -233.3320000238419 22 246.343 -244.343 -23 257.55400002384187 -255.35399997615815 +23 257.5540000238419 -255.3539999761581 24 268.7650000476837 -266.3649999523163 -- !sql_test_Float_Decimal32V3_notn_0 -- -1 12.112000001490117 -11.911999998509884 -2 23.323000002980233 -22.92299999701977 +1 12.11200000149012 -11.91199999850988 +2 23.32300000298023 -22.92299999701977 3 34.53400001192093 -33.93399998807907 -4 45.74500000596046 -44.944999994039534 +4 45.74500000596046 -44.94499999403953 5 56.956 -55.956 6 68.16700002384185 -66.96699997615814 7 79.37799998807907 -77.97800001192093 8 90.58900001192093 -88.98899998807907 -9 101.79999997615815 -100.00000002384186 +9 101.7999999761581 -100.0000000238419 10 113.011 -111.011 -11 124.22200002384186 -122.02199997615814 -12 135.43300004768372 -133.0329999523163 -13 145.4440000014901 -145.24399999850988 -14 156.65500000298024 -156.25499999701978 -15 167.86600001192093 -167.26599998807907 -16 179.07700000596046 -178.27699999403953 +11 124.2220000238419 -122.0219999761581 +12 135.4330000476837 -133.0329999523163 +13 145.4440000014901 -145.2439999985099 +14 156.6550000029802 -156.2549999970198 +15 167.8660000119209 -167.2659999880791 +16 179.0770000059605 -178.2769999940395 17 190.288 -189.288 -18 201.49900002384186 -200.29899997615814 -19 212.70999998807906 -211.31000001192092 -20 223.92100001192094 -222.32099998807908 -21 235.13199997615814 -233.33200002384186 +18 201.4990000238419 -200.2989999761581 +19 212.7099999880791 -211.3100000119209 +20 223.9210000119209 -222.3209999880791 +21 235.1319999761581 -233.3320000238419 22 246.343 -244.343 -23 257.55400002384187 -255.35399997615815 +23 257.5540000238419 -255.3539999761581 24 268.7650000476837 -266.3649999523163 -- !sql_test_Float_Decimal32V3_2 -- @@ -1909,56 +1909,56 @@ -- !sql_test_Float_Decimal64V3_0 -- \N \N \N -1 1234.11234000149 -1233.9123399985099 -2 2345.3234500029803 -2344.92344999702 +1 1234.11234000149 -1233.91233999851 +2 2345.32345000298 -2344.92344999702 3 3456.534560011921 -3455.934559988079 4 4567.74567000596 -4566.945669994039 5 5678.95678 -5677.95678 6 6790.167890023842 -6788.967889976158 7 7901.378999988079 -7899.979000011921 -8 9012.59011001192 -9010.990109988079 -9 10123.801219976158 -10122.001220023842 +8 9012.590110011921 -9010.990109988079 +9 10123.80121997616 -10122.00122002384 10 11235.01233 -11233.01233 -11 12346.223440023841 -12344.023439976158 -12 13457.434550047683 -13455.034549952316 -13 14567.445660001491 -14567.24565999851 -14 15678.656770002981 -15678.25676999702 -15 16789.86788001192 -16789.267879988078 +11 12346.22344002384 -12344.02343997616 +12 13457.43455004768 -13455.03454995232 +13 14567.44566000149 -14567.24565999851 +14 15678.65677000298 -15678.25676999702 +15 16789.86788001192 -16789.26787998808 16 17901.07899000596 -17900.27898999404 17 19012.2901 -19011.2901 -18 20123.501210023842 -20122.301209976158 -19 21234.71231998808 -21233.312320011923 +18 20123.50121002384 -20122.30120997616 +19 21234.71231998808 -21233.31232001192 20 22345.92343001192 -22344.32342998808 -21 23457.13453997616 -23455.334540023843 +21 23457.13453997616 -23455.33454002384 22 24568.34565 -24566.34565 -23 25679.556760023843 -25677.35675997616 -24 26790.767870047683 -26788.367869952315 +23 25679.55676002384 -25677.35675997616 +24 26790.76787004768 -26788.36786995232 -- !sql_test_Float_Decimal64V3_notn_0 -- -1 1234.11234000149 -1233.9123399985099 -2 2345.3234500029803 -2344.92344999702 +1 1234.11234000149 -1233.91233999851 +2 2345.32345000298 -2344.92344999702 3 3456.534560011921 -3455.934559988079 4 4567.74567000596 -4566.945669994039 5 5678.95678 -5677.95678 6 6790.167890023842 -6788.967889976158 7 7901.378999988079 -7899.979000011921 -8 9012.59011001192 -9010.990109988079 -9 10123.801219976158 -10122.001220023842 +8 9012.590110011921 -9010.990109988079 +9 10123.80121997616 -10122.00122002384 10 11235.01233 -11233.01233 -11 12346.223440023841 -12344.023439976158 -12 13457.434550047683 -13455.034549952316 -13 14567.445660001491 -14567.24565999851 -14 15678.656770002981 -15678.25676999702 -15 16789.86788001192 -16789.267879988078 +11 12346.22344002384 -12344.02343997616 +12 13457.43455004768 -13455.03454995232 +13 14567.44566000149 -14567.24565999851 +14 15678.65677000298 -15678.25676999702 +15 16789.86788001192 -16789.26787998808 16 17901.07899000596 -17900.27898999404 17 19012.2901 -19011.2901 -18 20123.501210023842 -20122.301209976158 -19 21234.71231998808 -21233.312320011923 +18 20123.50121002384 -20122.30120997616 +19 21234.71231998808 -21233.31232001192 20 22345.92343001192 -22344.32342998808 -21 23457.13453997616 -23455.334540023843 +21 23457.13453997616 -23455.33454002384 22 24568.34565 -24566.34565 -23 25679.556760023843 -25677.35675997616 -24 26790.767870047683 -26788.367869952315 +23 25679.55676002384 -25677.35675997616 +24 26790.76787004768 -26788.36786995232 -- !sql_test_Float_Decimal64V3_2 -- \N \N @@ -2068,56 +2068,56 @@ -- !sql_test_Float_Decimal128V3_0 -- \N \N \N -1 1.2345678112345E7 -1.2345677912344998E7 -2 2.3456789323456004E7 -2.3456788923456E7 -3 3.456790053456701E7 -3.456789993456699E7 -4 4.567901174567801E7 -4.5679010945677996E7 -5 5.6790122956789E7 -5.6790121956789E7 -6 6.790123416790003E7 -6.790123296789998E7 -7 7.901234537901099E7 -7.901234397901101E7 -8 9.012345659012201E7 -9.012345499012199E7 -9 1.0123456780123298E8 -1.0123456600123303E8 -10 1.12345679012344E8 -1.12345677012344E8 -11 1.2345679022345503E8 -1.2345678802345498E8 -12 1.3456790143456605E8 -1.3456789903456596E8 -13 1.4567901144567698E8 -1.45679011245677E8 -14 1.56790122656788E8 -1.5679012225678802E8 -15 1.67901233867899E8 -1.6790123326789898E8 -16 1.7901234507901E8 -1.7901234427901E8 -17 1.90123456290121E8 -1.90123455290121E8 -18 2.0123456750123203E8 -2.0123456630123198E8 -19 2.1234567871234298E8 -2.12345677312343E8 -20 2.2345678992345402E8 -2.23456788323454E8 -21 2.3456790113456497E8 -2.34567899334565E8 -22 2.45679012345676E8 -2.45679010345676E8 -23 2.56790123556787E8 -2.5679012135678697E8 -24 2.6790123476789805E8 -2.6790123236789796E8 +1 12345678.112345 -12345677.912345 +2 23456789.323456 -23456788.923456 +3 34567900.53456701 -34567899.93456699 +4 45679011.74567801 -45679010.945678 +5 56790122.956789 -56790121.956789 +6 67901234.16790003 -67901232.96789998 +7 79012345.37901099 -79012343.97901101 +8 90123456.59012201 -90123454.99012199 +9 101234567.801233 -101234566.001233 +10 112345679.012344 -112345677.012344 +11 123456790.223455 -123456788.023455 +12 134567901.4345661 -134567899.034566 +13 145679011.445677 -145679011.245677 +14 156790122.656788 -156790122.256788 +15 167901233.867899 -167901233.267899 +16 179012345.07901 -179012344.27901 +17 190123456.290121 -190123455.290121 +18 201234567.501232 -201234566.301232 +19 212345678.712343 -212345677.312343 +20 223456789.923454 -223456788.323454 +21 234567901.134565 -234567899.334565 +22 245679012.345676 -245679010.345676 +23 256790123.556787 -256790121.356787 +24 267901234.7678981 -267901232.367898 -- !sql_test_Float_Decimal128V3_notn_0 -- -1 1.2345678112345E7 -1.2345677912344998E7 -2 2.3456789323456004E7 -2.3456788923456E7 -3 3.456790053456701E7 -3.456789993456699E7 -4 4.567901174567801E7 -4.5679010945677996E7 -5 5.6790122956789E7 -5.6790121956789E7 -6 6.790123416790003E7 -6.790123296789998E7 -7 7.901234537901099E7 -7.901234397901101E7 -8 9.012345659012201E7 -9.012345499012199E7 -9 1.0123456780123298E8 -1.0123456600123303E8 -10 1.12345679012344E8 -1.12345677012344E8 -11 1.2345679022345503E8 -1.2345678802345498E8 -12 1.3456790143456605E8 -1.3456789903456596E8 -13 1.4567901144567698E8 -1.45679011245677E8 -14 1.56790122656788E8 -1.5679012225678802E8 -15 1.67901233867899E8 -1.6790123326789898E8 -16 1.7901234507901E8 -1.7901234427901E8 -17 1.90123456290121E8 -1.90123455290121E8 -18 2.0123456750123203E8 -2.0123456630123198E8 -19 2.1234567871234298E8 -2.12345677312343E8 -20 2.2345678992345402E8 -2.23456788323454E8 -21 2.3456790113456497E8 -2.34567899334565E8 -22 2.45679012345676E8 -2.45679010345676E8 -23 2.56790123556787E8 -2.5679012135678697E8 -24 2.6790123476789805E8 -2.6790123236789796E8 +1 12345678.112345 -12345677.912345 +2 23456789.323456 -23456788.923456 +3 34567900.53456701 -34567899.93456699 +4 45679011.74567801 -45679010.945678 +5 56790122.956789 -56790121.956789 +6 67901234.16790003 -67901232.96789998 +7 79012345.37901099 -79012343.97901101 +8 90123456.59012201 -90123454.99012199 +9 101234567.801233 -101234566.001233 +10 112345679.012344 -112345677.012344 +11 123456790.223455 -123456788.023455 +12 134567901.4345661 -134567899.034566 +13 145679011.445677 -145679011.245677 +14 156790122.656788 -156790122.256788 +15 167901233.867899 -167901233.267899 +16 179012345.07901 -179012344.27901 +17 190123456.290121 -190123455.290121 +18 201234567.501232 -201234566.301232 +19 212345678.712343 -212345677.312343 +20 223456789.923454 -223456788.323454 +21 234567901.134565 -234567899.334565 +22 245679012.345676 -245679010.345676 +23 256790123.556787 -256790121.356787 +24 267901234.7678981 -267901232.367898 -- !sql_test_Float_Decimal128V3_2 -- \N \N @@ -2239,17 +2239,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.3890000014901 -154.18899999850987 -14 218.29400000298023 -217.89399999701976 -15 308.6590000119209 -308.05899998807905 -16 436.4330000059605 -435.63299999403955 -17 617.108 -616.108 +13 154.3890000014901 -154.1889999985099 +14 218.2940000029802 -217.8939999970198 +15 308.6590000119209 -308.0589999880791 +16 436.4330000059605 -435.6329999940396 +17 617.1079999999999 -616.1079999999999 18 872.5890000238419 -871.3889999761582 -19 1233.8609999880791 -1232.461000011921 -20 1744.740000011921 -1743.1399999880791 -21 2467.193999976158 -2465.3940000238417 +19 1233.860999988079 -1232.461000011921 +20 1744.740000011921 -1743.139999988079 +21 2467.193999976158 -2465.394000023842 22 3488.86 -3486.86 -23 4933.6740000238415 -4931.473999976158 +23 4933.674000023841 -4931.473999976158 24 6976.910000047684 -6974.509999952316 -- !sql_test_Float_Char_notn_0 -- @@ -2265,17 +2265,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.3890000014901 -154.18899999850987 -14 218.29400000298023 -217.89399999701976 -15 308.6590000119209 -308.05899998807905 -16 436.4330000059605 -435.63299999403955 -17 617.108 -616.108 +13 154.3890000014901 -154.1889999985099 +14 218.2940000029802 -217.8939999970198 +15 308.6590000119209 -308.0589999880791 +16 436.4330000059605 -435.6329999940396 +17 617.1079999999999 -616.1079999999999 18 872.5890000238419 -871.3889999761582 -19 1233.8609999880791 -1232.461000011921 -20 1744.740000011921 -1743.1399999880791 -21 2467.193999976158 -2465.3940000238417 +19 1233.860999988079 -1232.461000011921 +20 1744.740000011921 -1743.139999988079 +21 2467.193999976158 -2465.394000023842 22 3488.86 -3486.86 -23 4933.6740000238415 -4931.473999976158 +23 4933.674000023841 -4931.473999976158 24 6976.910000047684 -6974.509999952316 -- !sql_test_Float_Char_1 -- @@ -2292,18 +2292,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 15.428900229908525 6.481343549450455E-4 0.10000000149011612 -14 43.618800649970765 9.170357872304247E-4 0.20000000298023224 -15 92.50770367592573 9.728920249479631E-4 0.30000001192092896 -16 174.4132025989592 9.173617729861374E-4 0.4000000059604645 -17 308.304 8.108879547459651E-4 0.5 -18 523.1934207898379 6.88082101771763E-4 0.6000000238418579 -19 863.2126852995754 5.676468750463816E-4 0.699999988079071 -20 1395.1520207893848 4.5873138520873935E-4 0.800000011920929 -21 2219.664541198969 3.649199877054975E-4 0.8999999761581421 -22 3487.86 2.8670875551197584E-4 1.0 -23 5425.831517601728 2.2300730284874752E-4 1.100000023841858 -24 8370.852332627774 1.7202550674894968E-4 1.2000000476837158 +13 15.42890022990852 0.0006481343549450455 0.1000000014901161 +14 43.61880064997077 0.0009170357872304247 0.2000000029802322 +15 92.50770367592573 0.0009728920249479631 0.300000011920929 +16 174.4132025989592 0.0009173617729861374 0.4000000059604645 +17 308.304 0.0008108879547459651 0.5 +18 523.1934207898379 0.000688082101771763 0.6000000238418579 +19 863.2126852995754 0.0005676468750463816 0.699999988079071 +20 1395.152020789385 0.0004587313852087393 0.800000011920929 +21 2219.664541198969 0.0003649199877054975 0.8999999761581421 +22 3487.86 0.0002867087555119758 1 +23 5425.831517601728 0.0002230073028487475 1.100000023841858 +24 8370.852332627774 0.0001720255067489497 1.200000047683716 -- !sql_test_Float_Char_notn_1 -- 1 \N \N \N @@ -2318,18 +2318,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 15.428900229908525 6.481343549450455E-4 0.10000000149011612 -14 43.618800649970765 9.170357872304247E-4 0.20000000298023224 -15 92.50770367592573 9.728920249479631E-4 0.30000001192092896 -16 174.4132025989592 9.173617729861374E-4 0.4000000059604645 -17 308.304 8.108879547459651E-4 0.5 -18 523.1934207898379 6.88082101771763E-4 0.6000000238418579 -19 863.2126852995754 5.676468750463816E-4 0.699999988079071 -20 1395.1520207893848 4.5873138520873935E-4 0.800000011920929 -21 2219.664541198969 3.649199877054975E-4 0.8999999761581421 -22 3487.86 2.8670875551197584E-4 1.0 -23 5425.831517601728 2.2300730284874752E-4 1.100000023841858 -24 8370.852332627774 1.7202550674894968E-4 1.2000000476837158 +13 15.42890022990852 0.0006481343549450455 0.1000000014901161 +14 43.61880064997077 0.0009170357872304247 0.2000000029802322 +15 92.50770367592573 0.0009728920249479631 0.300000011920929 +16 174.4132025989592 0.0009173617729861374 0.4000000059604645 +17 308.304 0.0008108879547459651 0.5 +18 523.1934207898379 0.000688082101771763 0.6000000238418579 +19 863.2126852995754 0.0005676468750463816 0.699999988079071 +20 1395.152020789385 0.0004587313852087393 0.800000011920929 +21 2219.664541198969 0.0003649199877054975 0.8999999761581421 +22 3487.86 0.0002867087555119758 1 +23 5425.831517601728 0.0002230073028487475 1.100000023841858 +24 8370.852332627774 0.0001720255067489497 1.200000047683716 -- !sql_test_Float_Char_2 -- \N \N @@ -2452,17 +2452,17 @@ 11 \N \N 12 \N \N 13 2319.22100000149 -2319.02099999851 -14 3278.28200000298 -3277.8819999970196 +14 3278.28200000298 -3277.88199999702 15 4635.041000011921 -4634.440999988079 16 6554.088000005961 -6553.28799999404 17 9268.23 -9267.23 -18 13106.737000023842 -13105.536999976159 +18 13106.73700002384 -13105.53699997616 19 18535.28499998808 -18533.88500001192 -20 26212.45400001192 -26210.853999988078 +20 26212.45400001192 -26210.85399998808 21 37069.63099997616 -37067.83100002384 22 52423.999 -52421.999 23 74138.34300002384 -74136.14299997616 -24 104847.04300004768 -104844.64299995231 +24 104847.0430000477 -104844.6429999523 -- !sql_test_Float_Varchar_notn_0 -- 1 \N \N @@ -2478,17 +2478,17 @@ 11 \N \N 12 \N \N 13 2319.22100000149 -2319.02099999851 -14 3278.28200000298 -3277.8819999970196 +14 3278.28200000298 -3277.88199999702 15 4635.041000011921 -4634.440999988079 16 6554.088000005961 -6553.28799999404 17 9268.23 -9267.23 -18 13106.737000023842 -13105.536999976159 +18 13106.73700002384 -13105.53699997616 19 18535.28499998808 -18533.88500001192 -20 26212.45400001192 -26210.853999988078 +20 26212.45400001192 -26210.85399998808 21 37069.63099997616 -37067.83100002384 22 52423.999 -52421.999 23 74138.34300002384 -74136.14299997616 -24 104847.04300004768 -104844.64299995231 +24 104847.0430000477 -104844.6429999523 -- !sql_test_Float_Varchar_1 -- \N \N \N \N @@ -2504,18 +2504,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 231.9121034557596 4.31197861129782E-5 0.10000000149011612 -14 655.6164097694457 6.101128738702456E-5 0.20000000298023224 -15 1390.4223552504181 6.472853864346011E-5 0.30000001192092896 -16 2621.4752390630247 6.1034337606621565E-5 0.4000000059604645 -17 4633.865 5.3950643793032383E-5 0.5 -18 7863.6825124746565 4.578008179235864E-5 0.6000000238418579 -19 12974.209279050528 3.7767232882693143E-5 0.699999988079071 -20 20969.323512467265 3.052077567943362E-5 0.800000011920929 -21 33361.85701621258 2.427922272705106E-5 0.8999999761581421 -22 52422.999 1.907559695316172E-5 1.0 -23 81550.96906756962 1.4837347321397666E-5 1.100000023841858 -24 125815.01659943938 1.1445375547065952E-5 1.2000000476837158 +13 231.9121034557596 4.31197861129782e-05 0.1000000014901161 +14 655.6164097694457 6.101128738702456e-05 0.2000000029802322 +15 1390.422355250418 6.472853864346011e-05 0.300000011920929 +16 2621.475239063025 6.103433760662157e-05 0.4000000059604645 +17 4633.865 5.395064379303238e-05 0.5 +18 7863.682512474657 4.578008179235864e-05 0.6000000238418579 +19 12974.20927905053 3.776723288269314e-05 0.699999988079071 +20 20969.32351246726 3.052077567943362e-05 0.800000011920929 +21 33361.85701621258 2.427922272705106e-05 0.8999999761581421 +22 52422.999 1.907559695316172e-05 1 +23 81550.96906756962 1.483734732139767e-05 1.100000023841858 +24 125815.0165994394 1.144537554706595e-05 1.200000047683716 -- !sql_test_Float_Varchar_notn_1 -- 1 \N \N \N @@ -2530,18 +2530,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 231.9121034557596 4.31197861129782E-5 0.10000000149011612 -14 655.6164097694457 6.101128738702456E-5 0.20000000298023224 -15 1390.4223552504181 6.472853864346011E-5 0.30000001192092896 -16 2621.4752390630247 6.1034337606621565E-5 0.4000000059604645 -17 4633.865 5.3950643793032383E-5 0.5 -18 7863.6825124746565 4.578008179235864E-5 0.6000000238418579 -19 12974.209279050528 3.7767232882693143E-5 0.699999988079071 -20 20969.323512467265 3.052077567943362E-5 0.800000011920929 -21 33361.85701621258 2.427922272705106E-5 0.8999999761581421 -22 52422.999 1.907559695316172E-5 1.0 -23 81550.96906756962 1.4837347321397666E-5 1.100000023841858 -24 125815.01659943938 1.1445375547065952E-5 1.2000000476837158 +13 231.9121034557596 4.31197861129782e-05 0.1000000014901161 +14 655.6164097694457 6.101128738702456e-05 0.2000000029802322 +15 1390.422355250418 6.472853864346011e-05 0.300000011920929 +16 2621.475239063025 6.103433760662157e-05 0.4000000059604645 +17 4633.865 5.395064379303238e-05 0.5 +18 7863.682512474657 4.578008179235864e-05 0.6000000238418579 +19 12974.20927905053 3.776723288269314e-05 0.699999988079071 +20 20969.32351246726 3.052077567943362e-05 0.800000011920929 +21 33361.85701621258 2.427922272705106e-05 0.8999999761581421 +22 52422.999 1.907559695316172e-05 1 +23 81550.96906756962 1.483734732139767e-05 1.100000023841858 +24 125815.0165994394 1.144537554706595e-05 1.200000047683716 -- !sql_test_Float_Varchar_2 -- \N \N @@ -2665,16 +2665,16 @@ 12 \N \N 13 10604.11700000149 -10603.91699999851 14 14988.99300000298 -14988.59299999702 -15 21192.31300001192 -21191.712999988078 +15 21192.31300001192 -21191.71299998808 16 29966.65500000596 -29965.85499999404 17 42376.512 -42375.512 -18 59927.44200002384 -59926.241999976155 +18 59927.44200002384 -59926.24199997616 19 84748.71699998809 -84747.31700001193 -20 119851.65100001192 -119850.05099998807 -21 169494.93099997615 -169493.13100002383 +20 119851.6510000119 -119850.0509999881 +21 169494.9309999761 -169493.1310000238 22 239701.285 -239699.285 -23 338988.15900002385 -338985.95899997617 -24 479401.06100004766 -479398.6609999523 +23 338988.1590000239 -338985.9589999762 +24 479401.0610000477 -479398.6609999523 -- !sql_test_Float_String_notn_0 -- 1 \N \N @@ -2691,16 +2691,16 @@ 12 \N \N 13 10604.11700000149 -10603.91699999851 14 14988.99300000298 -14988.59299999702 -15 21192.31300001192 -21191.712999988078 +15 21192.31300001192 -21191.71299998808 16 29966.65500000596 -29965.85499999404 17 42376.512 -42375.512 -18 59927.44200002384 -59926.241999976155 +18 59927.44200002384 -59926.24199997616 19 84748.71699998809 -84747.31700001193 -20 119851.65100001192 -119850.05099998807 -21 169494.93099997615 -169493.13100002383 +20 119851.6510000119 -119850.0509999881 +21 169494.9309999761 -169493.1310000238 22 239701.285 -239699.285 -23 338988.15900002385 -338985.95899997617 -24 479401.06100004766 -479398.6609999523 +23 338988.1590000239 -338985.9589999762 +24 479401.0610000477 -479398.6609999523 -- !sql_test_Float_String_1 -- \N \N \N \N @@ -2716,18 +2716,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1060.4017158012166 9.430388643295849E-6 0.10000000149011612 -14 2997.758644670084 1.3343302758282955E-5 0.20000000298023224 -15 6357.604152628481 1.4156277269220671E-5 0.30000001192092896 -16 11986.502178612798 1.3348348199014674E-5 0.4000000059604645 -17 21188.006 1.1799128242648222E-5 0.5 -18 35956.10662876725 1.0012208282923667E-5 0.6000000238418579 -19 59323.610889724914 8.259780144225334E-6 0.699999988079071 -20 95880.68222873348 6.674963133310826E-6 0.800000011920929 -21 152544.6238589474 5.309921363296517E-6 0.8999999761581421 -22 239700.285 4.17187655826108E-6 1.0 -23 372885.7729820813 3.244961701744071E-6 1.100000023841858 -24 575279.8560595667 2.503129736376198E-6 1.2000000476837158 +13 1060.401715801217 9.430388643295849e-06 0.1000000014901161 +14 2997.758644670084 1.334330275828295e-05 0.2000000029802322 +15 6357.604152628481 1.415627726922067e-05 0.300000011920929 +16 11986.5021786128 1.334834819901467e-05 0.4000000059604645 +17 21188.006 1.179912824264822e-05 0.5 +18 35956.10662876725 1.001220828292367e-05 0.6000000238418579 +19 59323.61088972491 8.259780144225334e-06 0.699999988079071 +20 95880.68222873348 6.674963133310826e-06 0.800000011920929 +21 152544.6238589474 5.309921363296517e-06 0.8999999761581421 +22 239700.285 4.17187655826108e-06 1 +23 372885.7729820813 3.244961701744071e-06 1.100000023841858 +24 575279.8560595667 2.503129736376198e-06 1.200000047683716 -- !sql_test_Float_String_notn_1 -- 1 \N \N \N @@ -2742,18 +2742,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1060.4017158012166 9.430388643295849E-6 0.10000000149011612 -14 2997.758644670084 1.3343302758282955E-5 0.20000000298023224 -15 6357.604152628481 1.4156277269220671E-5 0.30000001192092896 -16 11986.502178612798 1.3348348199014674E-5 0.4000000059604645 -17 21188.006 1.1799128242648222E-5 0.5 -18 35956.10662876725 1.0012208282923667E-5 0.6000000238418579 -19 59323.610889724914 8.259780144225334E-6 0.699999988079071 -20 95880.68222873348 6.674963133310826E-6 0.800000011920929 -21 152544.6238589474 5.309921363296517E-6 0.8999999761581421 -22 239700.285 4.17187655826108E-6 1.0 -23 372885.7729820813 3.244961701744071E-6 1.100000023841858 -24 575279.8560595667 2.503129736376198E-6 1.2000000476837158 +13 1060.401715801217 9.430388643295849e-06 0.1000000014901161 +14 2997.758644670084 1.334330275828295e-05 0.2000000029802322 +15 6357.604152628481 1.415627726922067e-05 0.300000011920929 +16 11986.5021786128 1.334834819901467e-05 0.4000000059604645 +17 21188.006 1.179912824264822e-05 0.5 +18 35956.10662876725 1.001220828292367e-05 0.6000000238418579 +19 59323.61088972491 8.259780144225334e-06 0.699999988079071 +20 95880.68222873348 6.674963133310826e-06 0.800000011920929 +21 152544.6238589474 5.309921363296517e-06 0.8999999761581421 +22 239700.285 4.17187655826108e-06 1 +23 372885.7729820813 3.244961701744071e-06 1.100000023841858 +24 575279.8560595667 2.503129736376198e-06 1.200000047683716 -- !sql_test_Float_String_2 -- \N \N @@ -2863,56 +2863,56 @@ -- !sql_test_Float_Date_0 -- \N \N \N -1 2.01203011E7 -2.01203009E7 -2 2.0120302200000003E7 -2.0120301799999997E7 -3 2.0120303300000012E7 -2.0120302699999988E7 -4 2.0120304400000006E7 -2.0120303599999994E7 -5 2.01203055E7 -2.01203045E7 -6 2.0120306600000024E7 -2.0120305399999976E7 -7 2.0120307699999988E7 -2.0120306300000012E7 -8 2.0120308800000012E7 -2.0120307199999988E7 -9 2.0120309899999976E7 -2.0120308100000024E7 -10 2.0120311E7 -2.0120309E7 -11 2.0120312100000024E7 -2.0120309899999976E7 -12 2.0120313200000048E7 -2.0120310799999952E7 -13 2.01203011E7 -2.01203009E7 -14 2.0120302200000003E7 -2.0120301799999997E7 -15 2.0120303300000012E7 -2.0120302699999988E7 -16 2.0120304400000006E7 -2.0120303599999994E7 -17 2.01203055E7 -2.01203045E7 -18 2.0120306600000024E7 -2.0120305399999976E7 -19 2.0120307699999988E7 -2.0120306300000012E7 -20 2.0120308800000012E7 -2.0120307199999988E7 -21 2.0120309899999976E7 -2.0120308100000024E7 -22 2.0120311E7 -2.0120309E7 -23 2.0120312100000024E7 -2.0120309899999976E7 -24 2.0120313200000048E7 -2.0120310799999952E7 +1 20120301.1 -20120300.9 +2 20120302.2 -20120301.8 +3 20120303.30000001 -20120302.69999999 +4 20120304.40000001 -20120303.59999999 +5 20120305.5 -20120304.5 +6 20120306.60000002 -20120305.39999998 +7 20120307.69999999 -20120306.30000001 +8 20120308.80000001 -20120307.19999999 +9 20120309.89999998 -20120308.10000002 +10 20120311 -20120309 +11 20120312.10000002 -20120309.89999998 +12 20120313.20000005 -20120310.79999995 +13 20120301.1 -20120300.9 +14 20120302.2 -20120301.8 +15 20120303.30000001 -20120302.69999999 +16 20120304.40000001 -20120303.59999999 +17 20120305.5 -20120304.5 +18 20120306.60000002 -20120305.39999998 +19 20120307.69999999 -20120306.30000001 +20 20120308.80000001 -20120307.19999999 +21 20120309.89999998 -20120308.10000002 +22 20120311 -20120309 +23 20120312.10000002 -20120309.89999998 +24 20120313.20000005 -20120310.79999995 -- !sql_test_Float_Date_notn_0 -- -1 2.01203011E7 -2.01203009E7 -2 2.0120302200000003E7 -2.0120301799999997E7 -3 2.0120303300000012E7 -2.0120302699999988E7 -4 2.0120304400000006E7 -2.0120303599999994E7 -5 2.01203055E7 -2.01203045E7 -6 2.0120306600000024E7 -2.0120305399999976E7 -7 2.0120307699999988E7 -2.0120306300000012E7 -8 2.0120308800000012E7 -2.0120307199999988E7 -9 2.0120309899999976E7 -2.0120308100000024E7 -10 2.0120311E7 -2.0120309E7 -11 2.0120312100000024E7 -2.0120309899999976E7 -12 2.0120313200000048E7 -2.0120310799999952E7 -13 2.01203011E7 -2.01203009E7 -14 2.0120302200000003E7 -2.0120301799999997E7 -15 2.0120303300000012E7 -2.0120302699999988E7 -16 2.0120304400000006E7 -2.0120303599999994E7 -17 2.01203055E7 -2.01203045E7 -18 2.0120306600000024E7 -2.0120305399999976E7 -19 2.0120307699999988E7 -2.0120306300000012E7 -20 2.0120308800000012E7 -2.0120307199999988E7 -21 2.0120309899999976E7 -2.0120308100000024E7 -22 2.0120311E7 -2.0120309E7 -23 2.0120312100000024E7 -2.0120309899999976E7 -24 2.0120313200000048E7 -2.0120310799999952E7 +1 20120301.1 -20120300.9 +2 20120302.2 -20120301.8 +3 20120303.30000001 -20120302.69999999 +4 20120304.40000001 -20120303.59999999 +5 20120305.5 -20120304.5 +6 20120306.60000002 -20120305.39999998 +7 20120307.69999999 -20120306.30000001 +8 20120308.80000001 -20120307.19999999 +9 20120309.89999998 -20120308.10000002 +10 20120311 -20120309 +11 20120312.10000002 -20120309.89999998 +12 20120313.20000005 -20120310.79999995 +13 20120301.1 -20120300.9 +14 20120302.2 -20120301.8 +15 20120303.30000001 -20120302.69999999 +16 20120304.40000001 -20120303.59999999 +17 20120305.5 -20120304.5 +18 20120306.60000002 -20120305.39999998 +19 20120307.69999999 -20120306.30000001 +20 20120308.80000001 -20120307.19999999 +21 20120309.89999998 -20120308.10000002 +22 20120311 -20120309 +23 20120312.10000002 -20120309.89999998 +24 20120313.20000005 -20120310.79999995 -- !sql_test_Float_Date_2 -- \N \N @@ -3022,56 +3022,56 @@ -- !sql_test_Float_DateTime_0 -- \N \N \N -1 2.01203010100011E13 -2.01203010100009E13 -2 2.01203020201022E13 -2.01203020201018E13 -3 2.01203030302033E13 -2.01203030302027E13 -4 2.01203040403044E13 -2.01203040403036E13 -5 2.01203050504055E13 -2.01203050504045E13 -6 2.01203060605066E13 -2.01203060605054E13 -7 2.01203070706077E13 -2.01203070706063E13 -8 2.01203080807088E13 -2.01203080807072E13 -9 2.01203090908099E13 -2.01203090908081E13 -10 2.0120310100911E13 -2.0120310100909E13 -11 2.01203111110121E13 -2.01203111110099E13 -12 2.01203121211132E13 -2.01203121211108E13 -13 2.01203010100011E13 -2.01203010100009E13 -14 2.01203020201022E13 -2.01203020201018E13 -15 2.01203030302033E13 -2.01203030302027E13 -16 2.01203040403044E13 -2.01203040403036E13 -17 2.01203050504055E13 -2.01203050504045E13 -18 2.01203060605066E13 -2.01203060605054E13 -19 2.01203070706077E13 -2.01203070706063E13 -20 2.01203080807088E13 -2.01203080807072E13 -21 2.01203090908099E13 -2.01203090908081E13 -22 2.0120310100911E13 -2.0120310100909E13 -23 2.01203111110121E13 -2.01203111110099E13 -24 2.01203121211132E13 -2.01203121211108E13 +1 20120301010001.1 -20120301010000.9 +2 20120302020102.2 -20120302020101.8 +3 20120303030203.3 -20120303030202.7 +4 20120304040304.4 -20120304040303.6 +5 20120305050405.5 -20120305050404.5 +6 20120306060506.6 -20120306060505.4 +7 20120307070607.7 -20120307070606.3 +8 20120308080708.8 -20120308080707.2 +9 20120309090809.9 -20120309090808.1 +10 20120310100911 -20120310100909 +11 20120311111012.1 -20120311111009.9 +12 20120312121113.2 -20120312121110.8 +13 20120301010001.1 -20120301010000.9 +14 20120302020102.2 -20120302020101.8 +15 20120303030203.3 -20120303030202.7 +16 20120304040304.4 -20120304040303.6 +17 20120305050405.5 -20120305050404.5 +18 20120306060506.6 -20120306060505.4 +19 20120307070607.7 -20120307070606.3 +20 20120308080708.8 -20120308080707.2 +21 20120309090809.9 -20120309090808.1 +22 20120310100911 -20120310100909 +23 20120311111012.1 -20120311111009.9 +24 20120312121113.2 -20120312121110.8 -- !sql_test_Float_DateTime_notn_0 -- -1 2.01203010100011E13 -2.01203010100009E13 -2 2.01203020201022E13 -2.01203020201018E13 -3 2.01203030302033E13 -2.01203030302027E13 -4 2.01203040403044E13 -2.01203040403036E13 -5 2.01203050504055E13 -2.01203050504045E13 -6 2.01203060605066E13 -2.01203060605054E13 -7 2.01203070706077E13 -2.01203070706063E13 -8 2.01203080807088E13 -2.01203080807072E13 -9 2.01203090908099E13 -2.01203090908081E13 -10 2.0120310100911E13 -2.0120310100909E13 -11 2.01203111110121E13 -2.01203111110099E13 -12 2.01203121211132E13 -2.01203121211108E13 -13 2.01203010100011E13 -2.01203010100009E13 -14 2.01203020201022E13 -2.01203020201018E13 -15 2.01203030302033E13 -2.01203030302027E13 -16 2.01203040403044E13 -2.01203040403036E13 -17 2.01203050504055E13 -2.01203050504045E13 -18 2.01203060605066E13 -2.01203060605054E13 -19 2.01203070706077E13 -2.01203070706063E13 -20 2.01203080807088E13 -2.01203080807072E13 -21 2.01203090908099E13 -2.01203090908081E13 -22 2.0120310100911E13 -2.0120310100909E13 -23 2.01203111110121E13 -2.01203111110099E13 -24 2.01203121211132E13 -2.01203121211108E13 +1 20120301010001.1 -20120301010000.9 +2 20120302020102.2 -20120302020101.8 +3 20120303030203.3 -20120303030202.7 +4 20120304040304.4 -20120304040303.6 +5 20120305050405.5 -20120305050404.5 +6 20120306060506.6 -20120306060505.4 +7 20120307070607.7 -20120307070606.3 +8 20120308080708.8 -20120308080707.2 +9 20120309090809.9 -20120309090808.1 +10 20120310100911 -20120310100909 +11 20120311111012.1 -20120311111009.9 +12 20120312121113.2 -20120312121110.8 +13 20120301010001.1 -20120301010000.9 +14 20120302020102.2 -20120302020101.8 +15 20120303030203.3 -20120303030202.7 +16 20120304040304.4 -20120304040303.6 +17 20120305050405.5 -20120305050404.5 +18 20120306060506.6 -20120306060505.4 +19 20120307070607.7 -20120307070606.3 +20 20120308080708.8 -20120308080707.2 +21 20120309090809.9 -20120309090808.1 +22 20120310100911 -20120310100909 +23 20120311111012.1 -20120311111009.9 +24 20120312121113.2 -20120312121110.8 -- !sql_test_Float_DateTime_2 -- \N \N @@ -3181,56 +3181,56 @@ -- !sql_test_Float_DateV2_0 -- \N \N \N -1 2.01203011E7 -2.01203009E7 -2 2.0120302200000003E7 -2.0120301799999997E7 -3 2.0120303300000012E7 -2.0120302699999988E7 -4 2.0120304400000006E7 -2.0120303599999994E7 -5 2.01203055E7 -2.01203045E7 -6 2.0120306600000024E7 -2.0120305399999976E7 -7 2.0120307699999988E7 -2.0120306300000012E7 -8 2.0120308800000012E7 -2.0120307199999988E7 -9 2.0120309899999976E7 -2.0120308100000024E7 -10 2.0120311E7 -2.0120309E7 -11 2.0120312100000024E7 -2.0120309899999976E7 -12 2.0120313200000048E7 -2.0120310799999952E7 -13 2.01203011E7 -2.01203009E7 -14 2.0120302200000003E7 -2.0120301799999997E7 -15 2.0120303300000012E7 -2.0120302699999988E7 -16 2.0120304400000006E7 -2.0120303599999994E7 -17 2.01203055E7 -2.01203045E7 -18 2.0120306600000024E7 -2.0120305399999976E7 -19 2.0120307699999988E7 -2.0120306300000012E7 -20 2.0120308800000012E7 -2.0120307199999988E7 -21 2.0120309899999976E7 -2.0120308100000024E7 -22 2.0120311E7 -2.0120309E7 -23 2.0120312100000024E7 -2.0120309899999976E7 -24 2.0120313200000048E7 -2.0120310799999952E7 +1 20120301.1 -20120300.9 +2 20120302.2 -20120301.8 +3 20120303.30000001 -20120302.69999999 +4 20120304.40000001 -20120303.59999999 +5 20120305.5 -20120304.5 +6 20120306.60000002 -20120305.39999998 +7 20120307.69999999 -20120306.30000001 +8 20120308.80000001 -20120307.19999999 +9 20120309.89999998 -20120308.10000002 +10 20120311 -20120309 +11 20120312.10000002 -20120309.89999998 +12 20120313.20000005 -20120310.79999995 +13 20120301.1 -20120300.9 +14 20120302.2 -20120301.8 +15 20120303.30000001 -20120302.69999999 +16 20120304.40000001 -20120303.59999999 +17 20120305.5 -20120304.5 +18 20120306.60000002 -20120305.39999998 +19 20120307.69999999 -20120306.30000001 +20 20120308.80000001 -20120307.19999999 +21 20120309.89999998 -20120308.10000002 +22 20120311 -20120309 +23 20120312.10000002 -20120309.89999998 +24 20120313.20000005 -20120310.79999995 -- !sql_test_Float_DateV2_notn_0 -- -1 2.01203011E7 -2.01203009E7 -2 2.0120302200000003E7 -2.0120301799999997E7 -3 2.0120303300000012E7 -2.0120302699999988E7 -4 2.0120304400000006E7 -2.0120303599999994E7 -5 2.01203055E7 -2.01203045E7 -6 2.0120306600000024E7 -2.0120305399999976E7 -7 2.0120307699999988E7 -2.0120306300000012E7 -8 2.0120308800000012E7 -2.0120307199999988E7 -9 2.0120309899999976E7 -2.0120308100000024E7 -10 2.0120311E7 -2.0120309E7 -11 2.0120312100000024E7 -2.0120309899999976E7 -12 2.0120313200000048E7 -2.0120310799999952E7 -13 2.01203011E7 -2.01203009E7 -14 2.0120302200000003E7 -2.0120301799999997E7 -15 2.0120303300000012E7 -2.0120302699999988E7 -16 2.0120304400000006E7 -2.0120303599999994E7 -17 2.01203055E7 -2.01203045E7 -18 2.0120306600000024E7 -2.0120305399999976E7 -19 2.0120307699999988E7 -2.0120306300000012E7 -20 2.0120308800000012E7 -2.0120307199999988E7 -21 2.0120309899999976E7 -2.0120308100000024E7 -22 2.0120311E7 -2.0120309E7 -23 2.0120312100000024E7 -2.0120309899999976E7 -24 2.0120313200000048E7 -2.0120310799999952E7 +1 20120301.1 -20120300.9 +2 20120302.2 -20120301.8 +3 20120303.30000001 -20120302.69999999 +4 20120304.40000001 -20120303.59999999 +5 20120305.5 -20120304.5 +6 20120306.60000002 -20120305.39999998 +7 20120307.69999999 -20120306.30000001 +8 20120308.80000001 -20120307.19999999 +9 20120309.89999998 -20120308.10000002 +10 20120311 -20120309 +11 20120312.10000002 -20120309.89999998 +12 20120313.20000005 -20120310.79999995 +13 20120301.1 -20120300.9 +14 20120302.2 -20120301.8 +15 20120303.30000001 -20120302.69999999 +16 20120304.40000001 -20120303.59999999 +17 20120305.5 -20120304.5 +18 20120306.60000002 -20120305.39999998 +19 20120307.69999999 -20120306.30000001 +20 20120308.80000001 -20120307.19999999 +21 20120309.89999998 -20120308.10000002 +22 20120311 -20120309 +23 20120312.10000002 -20120309.89999998 +24 20120313.20000005 -20120310.79999995 -- !sql_test_Float_DateV2_2 -- \N \N @@ -3340,56 +3340,56 @@ -- !sql_test_Float_DateTimeV2_0 -- \N \N \N -1 2.01203010100011E13 -2.01203010100009E13 -2 2.01203020201022E13 -2.01203020201018E13 -3 2.01203030302033E13 -2.01203030302027E13 -4 2.01203040403044E13 -2.01203040403036E13 -5 2.01203050504055E13 -2.01203050504045E13 -6 2.01203060605066E13 -2.01203060605054E13 -7 2.01203070706077E13 -2.01203070706063E13 -8 2.01203080807088E13 -2.01203080807072E13 -9 2.01203090908099E13 -2.01203090908081E13 -10 2.0120310100911E13 -2.0120310100909E13 -11 2.01203111110121E13 -2.01203111110099E13 -12 2.01203121211132E13 -2.01203121211108E13 -13 2.01203010100011E13 -2.01203010100009E13 -14 2.01203020201022E13 -2.01203020201018E13 -15 2.01203030302033E13 -2.01203030302027E13 -16 2.01203040403044E13 -2.01203040403036E13 -17 2.01203050504055E13 -2.01203050504045E13 -18 2.01203060605066E13 -2.01203060605054E13 -19 2.01203070706077E13 -2.01203070706063E13 -20 2.01203080807088E13 -2.01203080807072E13 -21 2.01203090908099E13 -2.01203090908081E13 -22 2.0120310100911E13 -2.0120310100909E13 -23 2.01203111110121E13 -2.01203111110099E13 -24 2.01203121211132E13 -2.01203121211108E13 +1 20120301010001.1 -20120301010000.9 +2 20120302020102.2 -20120302020101.8 +3 20120303030203.3 -20120303030202.7 +4 20120304040304.4 -20120304040303.6 +5 20120305050405.5 -20120305050404.5 +6 20120306060506.6 -20120306060505.4 +7 20120307070607.7 -20120307070606.3 +8 20120308080708.8 -20120308080707.2 +9 20120309090809.9 -20120309090808.1 +10 20120310100911 -20120310100909 +11 20120311111012.1 -20120311111009.9 +12 20120312121113.2 -20120312121110.8 +13 20120301010001.1 -20120301010000.9 +14 20120302020102.2 -20120302020101.8 +15 20120303030203.3 -20120303030202.7 +16 20120304040304.4 -20120304040303.6 +17 20120305050405.5 -20120305050404.5 +18 20120306060506.6 -20120306060505.4 +19 20120307070607.7 -20120307070606.3 +20 20120308080708.8 -20120308080707.2 +21 20120309090809.9 -20120309090808.1 +22 20120310100911 -20120310100909 +23 20120311111012.1 -20120311111009.9 +24 20120312121113.2 -20120312121110.8 -- !sql_test_Float_DateTimeV2_notn_0 -- -1 2.01203010100011E13 -2.01203010100009E13 -2 2.01203020201022E13 -2.01203020201018E13 -3 2.01203030302033E13 -2.01203030302027E13 -4 2.01203040403044E13 -2.01203040403036E13 -5 2.01203050504055E13 -2.01203050504045E13 -6 2.01203060605066E13 -2.01203060605054E13 -7 2.01203070706077E13 -2.01203070706063E13 -8 2.01203080807088E13 -2.01203080807072E13 -9 2.01203090908099E13 -2.01203090908081E13 -10 2.0120310100911E13 -2.0120310100909E13 -11 2.01203111110121E13 -2.01203111110099E13 -12 2.01203121211132E13 -2.01203121211108E13 -13 2.01203010100011E13 -2.01203010100009E13 -14 2.01203020201022E13 -2.01203020201018E13 -15 2.01203030302033E13 -2.01203030302027E13 -16 2.01203040403044E13 -2.01203040403036E13 -17 2.01203050504055E13 -2.01203050504045E13 -18 2.01203060605066E13 -2.01203060605054E13 -19 2.01203070706077E13 -2.01203070706063E13 -20 2.01203080807088E13 -2.01203080807072E13 -21 2.01203090908099E13 -2.01203090908081E13 -22 2.0120310100911E13 -2.0120310100909E13 -23 2.01203111110121E13 -2.01203111110099E13 -24 2.01203121211132E13 -2.01203121211108E13 +1 20120301010001.1 -20120301010000.9 +2 20120302020102.2 -20120302020101.8 +3 20120303030203.3 -20120303030202.7 +4 20120304040304.4 -20120304040303.6 +5 20120305050405.5 -20120305050404.5 +6 20120306060506.6 -20120306060505.4 +7 20120307070607.7 -20120307070606.3 +8 20120308080708.8 -20120308080707.2 +9 20120309090809.9 -20120309090808.1 +10 20120310100911 -20120310100909 +11 20120311111012.1 -20120311111009.9 +12 20120312121113.2 -20120312121110.8 +13 20120301010001.1 -20120301010000.9 +14 20120302020102.2 -20120302020101.8 +15 20120303030203.3 -20120303030202.7 +16 20120304040304.4 -20120304040303.6 +17 20120305050405.5 -20120305050404.5 +18 20120306060506.6 -20120306060505.4 +19 20120307070607.7 -20120307070606.3 +20 20120308080708.8 -20120308080707.2 +21 20120309090809.9 -20120309090808.1 +22 20120310100911 -20120310100909 +23 20120311111012.1 -20120311111009.9 +24 20120312121113.2 -20120312121110.8 -- !sql_test_Float_DateTimeV2_2 -- \N \N @@ -3499,56 +3499,56 @@ -- !sql_test_Float_Boolean_0 -- \N \N \N -1 0.10000000149011612 0.10000000149011612 -2 0.20000000298023224 0.20000000298023224 -3 0.30000001192092896 0.30000001192092896 +1 0.1000000014901161 0.1000000014901161 +2 0.2000000029802322 0.2000000029802322 +3 0.300000011920929 0.300000011920929 4 0.4000000059604645 0.4000000059604645 5 0.5 0.5 6 0.6000000238418579 0.6000000238418579 7 0.699999988079071 0.699999988079071 -8 1.800000011920929 -0.19999998807907104 -9 1.899999976158142 -0.10000002384185791 -10 2.0 0.0 -11 2.100000023841858 0.10000002384185791 -12 2.200000047683716 0.20000004768371582 -13 0.10000000149011612 0.10000000149011612 -14 0.20000000298023224 0.20000000298023224 -15 0.30000001192092896 0.30000001192092896 +8 1.800000011920929 -0.199999988079071 +9 1.899999976158142 -0.1000000238418579 +10 2 0 +11 2.100000023841858 0.1000000238418579 +12 2.200000047683716 0.2000000476837158 +13 0.1000000014901161 0.1000000014901161 +14 0.2000000029802322 0.2000000029802322 +15 0.300000011920929 0.300000011920929 16 0.4000000059604645 0.4000000059604645 17 0.5 0.5 18 0.6000000238418579 0.6000000238418579 19 0.699999988079071 0.699999988079071 -20 1.800000011920929 -0.19999998807907104 -21 1.899999976158142 -0.10000002384185791 -22 2.0 0.0 -23 2.100000023841858 0.10000002384185791 -24 2.200000047683716 0.20000004768371582 +20 1.800000011920929 -0.199999988079071 +21 1.899999976158142 -0.1000000238418579 +22 2 0 +23 2.100000023841858 0.1000000238418579 +24 2.200000047683716 0.2000000476837158 -- !sql_test_Float_Boolean_notn_0 -- -1 0.10000000149011612 0.10000000149011612 -2 0.20000000298023224 0.20000000298023224 -3 0.30000001192092896 0.30000001192092896 +1 0.1000000014901161 0.1000000014901161 +2 0.2000000029802322 0.2000000029802322 +3 0.300000011920929 0.300000011920929 4 0.4000000059604645 0.4000000059604645 5 0.5 0.5 6 0.6000000238418579 0.6000000238418579 7 0.699999988079071 0.699999988079071 -8 1.800000011920929 -0.19999998807907104 -9 1.899999976158142 -0.10000002384185791 -10 2.0 0.0 -11 2.100000023841858 0.10000002384185791 -12 2.200000047683716 0.20000004768371582 -13 0.10000000149011612 0.10000000149011612 -14 0.20000000298023224 0.20000000298023224 -15 0.30000001192092896 0.30000001192092896 +8 1.800000011920929 -0.199999988079071 +9 1.899999976158142 -0.1000000238418579 +10 2 0 +11 2.100000023841858 0.1000000238418579 +12 2.200000047683716 0.2000000476837158 +13 0.1000000014901161 0.1000000014901161 +14 0.2000000029802322 0.2000000029802322 +15 0.300000011920929 0.300000011920929 16 0.4000000059604645 0.4000000059604645 17 0.5 0.5 18 0.6000000238418579 0.6000000238418579 19 0.699999988079071 0.699999988079071 -20 1.800000011920929 -0.19999998807907104 -21 1.899999976158142 -0.10000002384185791 -22 2.0 0.0 -23 2.100000023841858 0.10000002384185791 -24 2.200000047683716 0.20000004768371582 +20 1.800000011920929 -0.199999988079071 +21 1.899999976158142 -0.1000000238418579 +22 2 0 +23 2.100000023841858 0.1000000238418579 +24 2.200000047683716 0.2000000476837158 -- !sql_test_Float_Boolean_2 -- \N \N @@ -3660,52 +3660,52 @@ \N \N \N 1 1.5244 -0.4756 2 2.7416 -1.2584 -3 4.0367999999999995 -1.9632 +3 4.036799999999999 -1.9632 4 5.4491 -2.5509 5 7.031000000000001 -2.969 6 8.854800000000001 -3.1452 -7 11.021799999999999 -2.9782 +7 11.0218 -2.9782 8 13.6745 -2.3255 9 17.0141 -0.9859000000000009 -10 21.3248 1.3247999999999998 +10 21.3248 1.3248 11 27.0086 5.008600000000001 12 34.634 10.634 13 1.5244 -0.4756 14 2.7416 -1.2584 -15 4.0367999999999995 -1.9632 +15 4.036799999999999 -1.9632 16 5.4491 -2.5509 17 7.031000000000001 -2.969 18 8.854800000000001 -3.1452 -19 11.021799999999999 -2.9782 +19 11.0218 -2.9782 20 13.6745 -2.3255 21 17.0141 -0.9859000000000009 -22 21.3248 1.3247999999999998 +22 21.3248 1.3248 23 27.0086 5.008600000000001 24 34.634 10.634 -- !sql_test_Double_TinyInt_notn_0 -- 1 1.5244 -0.4756 2 2.7416 -1.2584 -3 4.0367999999999995 -1.9632 +3 4.036799999999999 -1.9632 4 5.4491 -2.5509 5 7.031000000000001 -2.969 6 8.854800000000001 -3.1452 -7 11.021799999999999 -2.9782 +7 11.0218 -2.9782 8 13.6745 -2.3255 9 17.0141 -0.9859000000000009 -10 21.3248 1.3247999999999998 +10 21.3248 1.3248 11 27.0086 5.008600000000001 12 34.634 10.634 13 1.5244 -0.4756 14 2.7416 -1.2584 -15 4.0367999999999995 -1.9632 +15 4.036799999999999 -1.9632 16 5.4491 -2.5509 17 7.031000000000001 -2.969 18 8.854800000000001 -3.1452 -19 11.021799999999999 -2.9782 +19 11.0218 -2.9782 20 13.6745 -2.3255 21 17.0141 -0.9859000000000009 -22 21.3248 1.3247999999999998 +22 21.3248 1.3248 23 27.0086 5.008600000000001 24 34.634 10.634 @@ -3713,54 +3713,54 @@ \N \N \N \N 1 0.5244 0.5244 0.5244 2 1.4832 0.3708 0.7416 -3 3.1104 0.34559999999999996 1.0368 +3 3.1104 0.3456 1.0368 4 5.7964 0.362275 1.4491 -5 10.155000000000001 0.4062 2.031 +5 10.155 0.4062 2.031 6 17.1288 0.4758 2.8548 7 28.1526 0.5745428571428571 4.0218 8 45.396 0.7093125 5.6745 -9 72.12689999999999 0.8904555555555554 8.0141 -10 113.24799999999999 1.13248 1.3247999999999998 -11 176.0946 1.4553272727272728 5.008600000000001 -12 271.608 1.8861666666666668 10.634 +9 72.12689999999999 0.8904555555555554 8.014099999999999 +10 113.248 1.13248 1.3248 +11 176.0946 1.455327272727273 5.008600000000001 +12 271.608 1.886166666666667 10.634 13 0.5244 0.5244 0.5244 14 1.4832 0.3708 0.7416 -15 3.1104 0.34559999999999996 1.0368 +15 3.1104 0.3456 1.0368 16 5.7964 0.362275 1.4491 -17 10.155000000000001 0.4062 2.031 +17 10.155 0.4062 2.031 18 17.1288 0.4758 2.8548 19 28.1526 0.5745428571428571 4.0218 20 45.396 0.7093125 5.6745 -21 72.12689999999999 0.8904555555555554 8.0141 -22 113.24799999999999 1.13248 1.3247999999999998 -23 176.0946 1.4553272727272728 5.008600000000001 -24 271.608 1.8861666666666668 10.634 +21 72.12689999999999 0.8904555555555554 8.014099999999999 +22 113.248 1.13248 1.3248 +23 176.0946 1.455327272727273 5.008600000000001 +24 271.608 1.886166666666667 10.634 -- !sql_test_Double_TinyInt_notn_1 -- 1 0.5244 0.5244 0.5244 2 1.4832 0.3708 0.7416 -3 3.1104 0.34559999999999996 1.0368 +3 3.1104 0.3456 1.0368 4 5.7964 0.362275 1.4491 -5 10.155000000000001 0.4062 2.031 +5 10.155 0.4062 2.031 6 17.1288 0.4758 2.8548 7 28.1526 0.5745428571428571 4.0218 8 45.396 0.7093125 5.6745 -9 72.12689999999999 0.8904555555555554 8.0141 -10 113.24799999999999 1.13248 1.3247999999999998 -11 176.0946 1.4553272727272728 5.008600000000001 -12 271.608 1.8861666666666668 10.634 +9 72.12689999999999 0.8904555555555554 8.014099999999999 +10 113.248 1.13248 1.3248 +11 176.0946 1.455327272727273 5.008600000000001 +12 271.608 1.886166666666667 10.634 13 0.5244 0.5244 0.5244 14 1.4832 0.3708 0.7416 -15 3.1104 0.34559999999999996 1.0368 +15 3.1104 0.3456 1.0368 16 5.7964 0.362275 1.4491 -17 10.155000000000001 0.4062 2.031 +17 10.155 0.4062 2.031 18 17.1288 0.4758 2.8548 19 28.1526 0.5745428571428571 4.0218 20 45.396 0.7093125 5.6745 -21 72.12689999999999 0.8904555555555554 8.0141 -22 113.24799999999999 1.13248 1.3247999999999998 -23 176.0946 1.4553272727272728 5.008600000000001 -24 271.608 1.8861666666666668 10.634 +21 72.12689999999999 0.8904555555555554 8.014099999999999 +22 113.248 1.13248 1.3248 +23 176.0946 1.455327272727273 5.008600000000001 +24 271.608 1.886166666666667 10.634 -- !sql_test_Double_TinyInt_2 -- \N \N @@ -3978,53 +3978,53 @@ \N \N \N \N 1 5.244 0.05244 0.5244 2 14.832 0.03708 0.7416 -3 41.471999999999994 0.02592 1.0368 +3 41.47199999999999 0.02592 1.0368 4 115.928 0.01811375 1.4491 -5 324.96000000000004 0.01269375 2.031 +5 324.96 0.01269375 2.031 6 913.5360000000001 0.00892125 2.8548 -7 2573.9519999999998 0.0062840625 4.0218 +7 2573.952 0.0062840625 4.0218 8 7263.360000000001 0.004433203125 5.6745 -9 20516.095999999998 0.0031305078125 8.0141 -10 57982.975999999995 0.002211875 11.3248 -11 163928.064 0.0015633398437500002 16.0086 +9 20516.096 0.0031305078125 8.014099999999999 +10 57982.976 0.002211875 11.3248 +11 163928.064 0.00156333984375 16.0086 12 463544.32 0.00110517578125 22.634 13 5.244 0.05244 0.5244 14 14.832 0.03708 0.7416 -15 41.471999999999994 0.02592 1.0368 +15 41.47199999999999 0.02592 1.0368 16 115.928 0.01811375 1.4491 -17 324.96000000000004 0.01269375 2.031 +17 324.96 0.01269375 2.031 18 913.5360000000001 0.00892125 2.8548 -19 2573.9519999999998 0.0062840625 4.0218 +19 2573.952 0.0062840625 4.0218 20 7263.360000000001 0.004433203125 5.6745 -21 20516.095999999998 0.0031305078125 8.0141 -22 57982.975999999995 0.002211875 11.3248 -23 163928.064 0.0015633398437500002 16.0086 +21 20516.096 0.0031305078125 8.014099999999999 +22 57982.976 0.002211875 11.3248 +23 163928.064 0.00156333984375 16.0086 24 463544.32 0.00110517578125 22.634 -- !sql_test_Double_SmallInt_notn_1 -- 1 5.244 0.05244 0.5244 2 14.832 0.03708 0.7416 -3 41.471999999999994 0.02592 1.0368 +3 41.47199999999999 0.02592 1.0368 4 115.928 0.01811375 1.4491 -5 324.96000000000004 0.01269375 2.031 +5 324.96 0.01269375 2.031 6 913.5360000000001 0.00892125 2.8548 -7 2573.9519999999998 0.0062840625 4.0218 +7 2573.952 0.0062840625 4.0218 8 7263.360000000001 0.004433203125 5.6745 -9 20516.095999999998 0.0031305078125 8.0141 -10 57982.975999999995 0.002211875 11.3248 -11 163928.064 0.0015633398437500002 16.0086 +9 20516.096 0.0031305078125 8.014099999999999 +10 57982.976 0.002211875 11.3248 +11 163928.064 0.00156333984375 16.0086 12 463544.32 0.00110517578125 22.634 13 5.244 0.05244 0.5244 14 14.832 0.03708 0.7416 -15 41.471999999999994 0.02592 1.0368 +15 41.47199999999999 0.02592 1.0368 16 115.928 0.01811375 1.4491 -17 324.96000000000004 0.01269375 2.031 +17 324.96 0.01269375 2.031 18 913.5360000000001 0.00892125 2.8548 -19 2573.9519999999998 0.0062840625 4.0218 +19 2573.952 0.0062840625 4.0218 20 7263.360000000001 0.004433203125 5.6745 -21 20516.095999999998 0.0031305078125 8.0141 -22 57982.975999999995 0.002211875 11.3248 -23 163928.064 0.0015633398437500002 16.0086 +21 20516.096 0.0031305078125 8.014099999999999 +22 57982.976 0.002211875 11.3248 +23 163928.064 0.00156333984375 16.0086 24 463544.32 0.00110517578125 22.634 -- !sql_test_Double_SmallInt_2 -- @@ -4144,9 +4144,9 @@ 7 1520049.0218 -1520040.9782 8 3040050.6745 -3040039.3255 9 6080053.0141 -6080036.9859 -10 1.21600563248E7 -1.21600336752E7 -11 2.43200610086E7 -2.43200289914E7 -12 4.8640067634E7 -4.8640022366E7 +10 12160056.3248 -12160033.6752 +11 24320061.0086 -24320028.9914 +12 48640067.634 -48640022.366 13 23795.5244 -23794.4756 14 47545.7416 -47544.2584 15 95046.0368 -95043.9632 @@ -4156,9 +4156,9 @@ 19 1520049.0218 -1520040.9782 20 3040050.6745 -3040039.3255 21 6080053.0141 -6080036.9859 -22 1.21600563248E7 -1.21600336752E7 -23 2.43200610086E7 -2.43200289914E7 -24 4.8640067634E7 -4.8640022366E7 +22 12160056.3248 -12160033.6752 +23 24320061.0086 -24320028.9914 +24 48640067.634 -48640022.366 -- !sql_test_Double_Integer_notn_0 -- 1 23795.5244 -23794.4756 @@ -4170,9 +4170,9 @@ 7 1520049.0218 -1520040.9782 8 3040050.6745 -3040039.3255 9 6080053.0141 -6080036.9859 -10 1.21600563248E7 -1.21600336752E7 -11 2.43200610086E7 -2.43200289914E7 -12 4.8640067634E7 -4.8640022366E7 +10 12160056.3248 -12160033.6752 +11 24320061.0086 -24320028.9914 +12 48640067.634 -48640022.366 13 23795.5244 -23794.4756 14 47545.7416 -47544.2584 15 95046.0368 -95043.9632 @@ -4182,62 +4182,62 @@ 19 1520049.0218 -1520040.9782 20 3040050.6745 -3040039.3255 21 6080053.0141 -6080036.9859 -22 1.21600563248E7 -1.21600336752E7 -23 2.43200610086E7 -2.43200289914E7 -24 4.8640067634E7 -4.8640022366E7 +22 12160056.3248 -12160033.6752 +23 24320061.0086 -24320028.9914 +24 48640067.634 -48640022.366 -- !sql_test_Double_Integer_1 -- \N \N \N \N -1 12478.098 2.203824332843034E-5 0.5244 -2 35259.372 1.5597854664002523E-5 0.7416 -3 98542.65599999999 1.0908517018254511E-5 1.0368 -4 275394.2095 7.625036175642611E-6 1.4491 -5 771871.395 5.344103987685669E-6 2.031 -6 2169776.466 3.756093389207218E-6 2.8548 -7 6113316.981 2.6458427217615267E-6 4.0218 -8 1.72507353525E7 1.8665842117468656E-6 5.6745 -9 4.87260886345E7 1.3180987969661408E-6 8.0141 -10 1.37710077616E8 9.313123430053096E-7 11.3248 -11 3.89329872387E8 6.582471372894253E-7 16.0086 -12 1.10091877853E9 4.6533674053961096E-7 22.634 -13 12478.098 2.203824332843034E-5 0.5244 -14 35259.372 1.5597854664002523E-5 0.7416 -15 98542.65599999999 1.0908517018254511E-5 1.0368 -16 275394.2095 7.625036175642611E-6 1.4491 -17 771871.395 5.344103987685669E-6 2.031 -18 2169776.466 3.756093389207218E-6 2.8548 -19 6113316.981 2.6458427217615267E-6 4.0218 -20 1.72507353525E7 1.8665842117468656E-6 5.6745 -21 4.87260886345E7 1.3180987969661408E-6 8.0141 -22 1.37710077616E8 9.313123430053096E-7 11.3248 -23 3.89329872387E8 6.582471372894253E-7 16.0086 -24 1.10091877853E9 4.6533674053961096E-7 22.634 +1 12478.098 2.203824332843034e-05 0.5244 +2 35259.372 1.559785466400252e-05 0.7416 +3 98542.65599999999 1.090851701825451e-05 1.0368 +4 275394.2095 7.625036175642611e-06 1.4491 +5 771871.395 5.344103987685669e-06 2.031 +6 2169776.466 3.756093389207218e-06 2.8548 +7 6113316.981 2.645842721761527e-06 4.0218 +8 17250735.3525 1.866584211746866e-06 5.6745 +9 48726088.6345 1.318098796966141e-06 8.014099999999999 +10 137710077.616 9.313123430053096e-07 11.3248 +11 389329872.387 6.582471372894253e-07 16.0086 +12 1100918778.53 4.65336740539611e-07 22.634 +13 12478.098 2.203824332843034e-05 0.5244 +14 35259.372 1.559785466400252e-05 0.7416 +15 98542.65599999999 1.090851701825451e-05 1.0368 +16 275394.2095 7.625036175642611e-06 1.4491 +17 771871.395 5.344103987685669e-06 2.031 +18 2169776.466 3.756093389207218e-06 2.8548 +19 6113316.981 2.645842721761527e-06 4.0218 +20 17250735.3525 1.866584211746866e-06 5.6745 +21 48726088.6345 1.318098796966141e-06 8.014099999999999 +22 137710077.616 9.313123430053096e-07 11.3248 +23 389329872.387 6.582471372894253e-07 16.0086 +24 1100918778.53 4.65336740539611e-07 22.634 -- !sql_test_Double_Integer_notn_1 -- -1 12478.098 2.203824332843034E-5 0.5244 -2 35259.372 1.5597854664002523E-5 0.7416 -3 98542.65599999999 1.0908517018254511E-5 1.0368 -4 275394.2095 7.625036175642611E-6 1.4491 -5 771871.395 5.344103987685669E-6 2.031 -6 2169776.466 3.756093389207218E-6 2.8548 -7 6113316.981 2.6458427217615267E-6 4.0218 -8 1.72507353525E7 1.8665842117468656E-6 5.6745 -9 4.87260886345E7 1.3180987969661408E-6 8.0141 -10 1.37710077616E8 9.313123430053096E-7 11.3248 -11 3.89329872387E8 6.582471372894253E-7 16.0086 -12 1.10091877853E9 4.6533674053961096E-7 22.634 -13 12478.098 2.203824332843034E-5 0.5244 -14 35259.372 1.5597854664002523E-5 0.7416 -15 98542.65599999999 1.0908517018254511E-5 1.0368 -16 275394.2095 7.625036175642611E-6 1.4491 -17 771871.395 5.344103987685669E-6 2.031 -18 2169776.466 3.756093389207218E-6 2.8548 -19 6113316.981 2.6458427217615267E-6 4.0218 -20 1.72507353525E7 1.8665842117468656E-6 5.6745 -21 4.87260886345E7 1.3180987969661408E-6 8.0141 -22 1.37710077616E8 9.313123430053096E-7 11.3248 -23 3.89329872387E8 6.582471372894253E-7 16.0086 -24 1.10091877853E9 4.6533674053961096E-7 22.634 +1 12478.098 2.203824332843034e-05 0.5244 +2 35259.372 1.559785466400252e-05 0.7416 +3 98542.65599999999 1.090851701825451e-05 1.0368 +4 275394.2095 7.625036175642611e-06 1.4491 +5 771871.395 5.344103987685669e-06 2.031 +6 2169776.466 3.756093389207218e-06 2.8548 +7 6113316.981 2.645842721761527e-06 4.0218 +8 17250735.3525 1.866584211746866e-06 5.6745 +9 48726088.6345 1.318098796966141e-06 8.014099999999999 +10 137710077.616 9.313123430053096e-07 11.3248 +11 389329872.387 6.582471372894253e-07 16.0086 +12 1100918778.53 4.65336740539611e-07 22.634 +13 12478.098 2.203824332843034e-05 0.5244 +14 35259.372 1.559785466400252e-05 0.7416 +15 98542.65599999999 1.090851701825451e-05 1.0368 +16 275394.2095 7.625036175642611e-06 1.4491 +17 771871.395 5.344103987685669e-06 2.031 +18 2169776.466 3.756093389207218e-06 2.8548 +19 6113316.981 2.645842721761527e-06 4.0218 +20 17250735.3525 1.866584211746866e-06 5.6745 +21 48726088.6345 1.318098796966141e-06 8.014099999999999 +22 137710077.616 9.313123430053096e-07 11.3248 +23 389329872.387 6.582471372894253e-07 16.0086 +24 1100918778.53 4.65336740539611e-07 22.634 -- !sql_test_Double_Integer_2 -- \N \N @@ -4348,108 +4348,108 @@ -- !sql_test_Double_BigInt_0 -- \N \N \N 1 5354529.5244 -5354528.4756 -2 1.06982797416E7 -1.06982782584E7 -3 2.13857800368E7 -2.13857779632E7 -4 4.27607804491E7 -4.27607775509E7 -5 8.5510781031E7 -8.5510776969E7 -6 1.710107818548E8 -1.710107761452E8 -7 3.420107830218E8 -3.420107749782E8 -8 6.840107846745E8 -6.840107733255E8 -9 1.3680107870141E9 -1.3680107709859E9 -10 2.7360107903248E9 -2.7360107676752E9 -11 5.4720107950086E9 -5.4720107629914E9 -12 1.0944010801634E10 -1.0944010756366E10 +2 10698279.7416 -10698278.2584 +3 21385780.0368 -21385777.9632 +4 42760780.4491 -42760777.5509 +5 85510781.031 -85510776.969 +6 171010781.8548 -171010776.1452 +7 342010783.0218 -342010774.9782 +8 684010784.6745 -684010773.3255 +9 1368010787.0141 -1368010770.9859 +10 2736010790.3248 -2736010767.6752 +11 5472010795.0086 -5472010762.9914 +12 10944010801.634 -10944010756.366 13 5354529.5244 -5354528.4756 -14 1.06982797416E7 -1.06982782584E7 -15 2.13857800368E7 -2.13857779632E7 -16 4.27607804491E7 -4.27607775509E7 -17 8.5510781031E7 -8.5510776969E7 -18 1.710107818548E8 -1.710107761452E8 -19 3.420107830218E8 -3.420107749782E8 -20 6.840107846745E8 -6.840107733255E8 -21 1.3680107870141E9 -1.3680107709859E9 -22 2.7360107903248E9 -2.7360107676752E9 -23 5.4720107950086E9 -5.4720107629914E9 -24 1.0944010801634E10 -1.0944010756366E10 +14 10698279.7416 -10698278.2584 +15 21385780.0368 -21385777.9632 +16 42760780.4491 -42760777.5509 +17 85510781.031 -85510776.969 +18 171010781.8548 -171010776.1452 +19 342010783.0218 -342010774.9782 +20 684010784.6745 -684010773.3255 +21 1368010787.0141 -1368010770.9859 +22 2736010790.3248 -2736010767.6752 +23 5472010795.0086 -5472010762.9914 +24 10944010801.634 -10944010756.366 -- !sql_test_Double_BigInt_notn_0 -- 1 5354529.5244 -5354528.4756 -2 1.06982797416E7 -1.06982782584E7 -3 2.13857800368E7 -2.13857779632E7 -4 4.27607804491E7 -4.27607775509E7 -5 8.5510781031E7 -8.5510776969E7 -6 1.710107818548E8 -1.710107761452E8 -7 3.420107830218E8 -3.420107749782E8 -8 6.840107846745E8 -6.840107733255E8 -9 1.3680107870141E9 -1.3680107709859E9 -10 2.7360107903248E9 -2.7360107676752E9 -11 5.4720107950086E9 -5.4720107629914E9 -12 1.0944010801634E10 -1.0944010756366E10 +2 10698279.7416 -10698278.2584 +3 21385780.0368 -21385777.9632 +4 42760780.4491 -42760777.5509 +5 85510781.031 -85510776.969 +6 171010781.8548 -171010776.1452 +7 342010783.0218 -342010774.9782 +8 684010784.6745 -684010773.3255 +9 1368010787.0141 -1368010770.9859 +10 2736010790.3248 -2736010767.6752 +11 5472010795.0086 -5472010762.9914 +12 10944010801.634 -10944010756.366 13 5354529.5244 -5354528.4756 -14 1.06982797416E7 -1.06982782584E7 -15 2.13857800368E7 -2.13857779632E7 -16 4.27607804491E7 -4.27607775509E7 -17 8.5510781031E7 -8.5510776969E7 -18 1.710107818548E8 -1.710107761452E8 -19 3.420107830218E8 -3.420107749782E8 -20 6.840107846745E8 -6.840107733255E8 -21 1.3680107870141E9 -1.3680107709859E9 -22 2.7360107903248E9 -2.7360107676752E9 -23 5.4720107950086E9 -5.4720107629914E9 -24 1.0944010801634E10 -1.0944010756366E10 +14 10698279.7416 -10698278.2584 +15 21385780.0368 -21385777.9632 +16 42760780.4491 -42760777.5509 +17 85510781.031 -85510776.969 +18 171010781.8548 -171010776.1452 +19 342010783.0218 -342010774.9782 +20 684010784.6745 -684010773.3255 +21 1368010787.0141 -1368010770.9859 +22 2736010790.3248 -2736010767.6752 +23 5472010795.0086 -5472010762.9914 +24 10944010801.634 -10944010756.366 -- !sql_test_Double_BigInt_1 -- \N \N \N \N -1 2807915.0075999997 9.793578482813333E-8 0.5244 -2 7933843.7064000005 6.931956065082992E-8 0.7416 -3 2.21727756672E7 4.848081521837479E-8 1.0368 -4 6.1964644848900005E7 3.38885313572047E-8 1.4491 -5 1.7367239214900002E8 2.3751391622803485E-8 2.031 -6 4.882015718892E8 1.6693684554235027E-8 2.8548 -7 1.3754989509822E9 1.175927849923116E-8 4.0218 -8 3.8814191654355E9 8.295921898037809E-9 5.6745 -9 1.0963375183983898E10 5.858214074788368E-9 8.0141 -10 3.09847748700192E10 4.139164979510484E-9 11.3248 -11 8.75992317566994E10 2.9255424827444406E-9 16.0086 -12 2.4770673997188602E11 2.068163167696383E-9 22.634 -13 2807915.0075999997 9.793578482813333E-8 0.5244 -14 7933843.7064000005 6.931956065082992E-8 0.7416 -15 2.21727756672E7 4.848081521837479E-8 1.0368 -16 6.1964644848900005E7 3.38885313572047E-8 1.4491 -17 1.7367239214900002E8 2.3751391622803485E-8 2.031 -18 4.882015718892E8 1.6693684554235027E-8 2.8548 -19 1.3754989509822E9 1.175927849923116E-8 4.0218 -20 3.8814191654355E9 8.295921898037809E-9 5.6745 -21 1.0963375183983898E10 5.858214074788368E-9 8.0141 -22 3.09847748700192E10 4.139164979510484E-9 11.3248 -23 8.75992317566994E10 2.9255424827444406E-9 16.0086 -24 2.4770673997188602E11 2.068163167696383E-9 22.634 +1 2807915.0076 9.793578482813333e-08 0.5244 +2 7933843.7064 6.931956065082992e-08 0.7416 +3 22172775.6672 4.848081521837479e-08 1.0368 +4 61964644.84890001 3.38885313572047e-08 1.4491 +5 173672392.149 2.375139162280348e-08 2.031 +6 488201571.8892 1.669368455423503e-08 2.8548 +7 1375498950.9822 1.175927849923116e-08 4.0218 +8 3881419165.4355 8.295921898037809e-09 5.6745 +9 10963375183.9839 5.858214074788368e-09 8.014099999999999 +10 30984774870.0192 4.139164979510484e-09 11.3248 +11 87599231756.6994 2.925542482744441e-09 16.0086 +12 247706739971.886 2.068163167696383e-09 22.634 +13 2807915.0076 9.793578482813333e-08 0.5244 +14 7933843.7064 6.931956065082992e-08 0.7416 +15 22172775.6672 4.848081521837479e-08 1.0368 +16 61964644.84890001 3.38885313572047e-08 1.4491 +17 173672392.149 2.375139162280348e-08 2.031 +18 488201571.8892 1.669368455423503e-08 2.8548 +19 1375498950.9822 1.175927849923116e-08 4.0218 +20 3881419165.4355 8.295921898037809e-09 5.6745 +21 10963375183.9839 5.858214074788368e-09 8.014099999999999 +22 30984774870.0192 4.139164979510484e-09 11.3248 +23 87599231756.6994 2.925542482744441e-09 16.0086 +24 247706739971.886 2.068163167696383e-09 22.634 -- !sql_test_Double_BigInt_notn_1 -- -1 2807915.0075999997 9.793578482813333E-8 0.5244 -2 7933843.7064000005 6.931956065082992E-8 0.7416 -3 2.21727756672E7 4.848081521837479E-8 1.0368 -4 6.1964644848900005E7 3.38885313572047E-8 1.4491 -5 1.7367239214900002E8 2.3751391622803485E-8 2.031 -6 4.882015718892E8 1.6693684554235027E-8 2.8548 -7 1.3754989509822E9 1.175927849923116E-8 4.0218 -8 3.8814191654355E9 8.295921898037809E-9 5.6745 -9 1.0963375183983898E10 5.858214074788368E-9 8.0141 -10 3.09847748700192E10 4.139164979510484E-9 11.3248 -11 8.75992317566994E10 2.9255424827444406E-9 16.0086 -12 2.4770673997188602E11 2.068163167696383E-9 22.634 -13 2807915.0075999997 9.793578482813333E-8 0.5244 -14 7933843.7064000005 6.931956065082992E-8 0.7416 -15 2.21727756672E7 4.848081521837479E-8 1.0368 -16 6.1964644848900005E7 3.38885313572047E-8 1.4491 -17 1.7367239214900002E8 2.3751391622803485E-8 2.031 -18 4.882015718892E8 1.6693684554235027E-8 2.8548 -19 1.3754989509822E9 1.175927849923116E-8 4.0218 -20 3.8814191654355E9 8.295921898037809E-9 5.6745 -21 1.0963375183983898E10 5.858214074788368E-9 8.0141 -22 3.09847748700192E10 4.139164979510484E-9 11.3248 -23 8.75992317566994E10 2.9255424827444406E-9 16.0086 -24 2.4770673997188602E11 2.068163167696383E-9 22.634 +1 2807915.0076 9.793578482813333e-08 0.5244 +2 7933843.7064 6.931956065082992e-08 0.7416 +3 22172775.6672 4.848081521837479e-08 1.0368 +4 61964644.84890001 3.38885313572047e-08 1.4491 +5 173672392.149 2.375139162280348e-08 2.031 +6 488201571.8892 1.669368455423503e-08 2.8548 +7 1375498950.9822 1.175927849923116e-08 4.0218 +8 3881419165.4355 8.295921898037809e-09 5.6745 +9 10963375183.9839 5.858214074788368e-09 8.014099999999999 +10 30984774870.0192 4.139164979510484e-09 11.3248 +11 87599231756.6994 2.925542482744441e-09 16.0086 +12 247706739971.886 2.068163167696383e-09 22.634 +13 2807915.0076 9.793578482813333e-08 0.5244 +14 7933843.7064 6.931956065082992e-08 0.7416 +15 22172775.6672 4.848081521837479e-08 1.0368 +16 61964644.84890001 3.38885313572047e-08 1.4491 +17 173672392.149 2.375139162280348e-08 2.031 +18 488201571.8892 1.669368455423503e-08 2.8548 +19 1375498950.9822 1.175927849923116e-08 4.0218 +20 3881419165.4355 8.295921898037809e-09 5.6745 +21 10963375183.9839 5.858214074788368e-09 8.014099999999999 +22 30984774870.0192 4.139164979510484e-09 11.3248 +23 87599231756.6994 2.925542482744441e-09 16.0086 +24 247706739971.886 2.068163167696383e-09 22.634 -- !sql_test_Double_BigInt_2 -- \N \N @@ -4559,109 +4559,109 @@ -- !sql_test_Double_LargeInt_0 -- \N \N \N -1 1.070906455244E8 -1.070906444756E8 -2 2.139656457416E8 -2.139656442584E8 -3 4.277156460368E8 -4.277156439632E8 -4 8.552156464491E8 -8.552156435509E8 -5 1.710215647031E9 -1.710215642969E9 -6 3.4202156478548E9 -3.4202156421452E9 -7 6.8402156490218E9 -6.8402156409782E9 -8 1.36802156506745E10 -1.36802156393255E10 -9 2.73602156530141E10 -2.73602156369859E10 -10 5.47202156563248E10 -5.47202156336752E10 -11 1.094402156610086E11 -1.094402156289914E11 -12 2.18880215667634E11 -2.18880215622366E11 -13 1.070906455244E8 -1.070906444756E8 -14 2.139656457416E8 -2.139656442584E8 -15 4.277156460368E8 -4.277156439632E8 -16 8.552156464491E8 -8.552156435509E8 -17 1.710215647031E9 -1.710215642969E9 -18 3.4202156478548E9 -3.4202156421452E9 -19 6.8402156490218E9 -6.8402156409782E9 -20 1.36802156506745E10 -1.36802156393255E10 -21 2.73602156530141E10 -2.73602156369859E10 -22 5.47202156563248E10 -5.47202156336752E10 -23 1.094402156610086E11 -1.094402156289914E11 -24 2.18880215667634E11 -2.18880215622366E11 +1 107090645.5244 -107090644.4756 +2 213965645.7416 -213965644.2584 +3 427715646.0368 -427715643.9632 +4 855215646.4491 -855215643.5509 +5 1710215647.031 -1710215642.969 +6 3420215647.8548 -3420215642.1452 +7 6840215649.0218 -6840215640.9782 +8 13680215650.6745 -13680215639.3255 +9 27360215653.0141 -27360215636.9859 +10 54720215656.3248 -54720215633.6752 +11 109440215661.0086 -109440215628.9914 +12 218880215667.634 -218880215622.366 +13 107090645.5244 -107090644.4756 +14 213965645.7416 -213965644.2584 +15 427715646.0368 -427715643.9632 +16 855215646.4491 -855215643.5509 +17 1710215647.031 -1710215642.969 +18 3420215647.8548 -3420215642.1452 +19 6840215649.0218 -6840215640.9782 +20 13680215650.6745 -13680215639.3255 +21 27360215653.0141 -27360215636.9859 +22 54720215656.3248 -54720215633.6752 +23 109440215661.0086 -109440215628.9914 +24 218880215667.634 -218880215622.366 -- !sql_test_Double_LargeInt_notn_0 -- -1 1.070906455244E8 -1.070906444756E8 -2 2.139656457416E8 -2.139656442584E8 -3 4.277156460368E8 -4.277156439632E8 -4 8.552156464491E8 -8.552156435509E8 -5 1.710215647031E9 -1.710215642969E9 -6 3.4202156478548E9 -3.4202156421452E9 -7 6.8402156490218E9 -6.8402156409782E9 -8 1.36802156506745E10 -1.36802156393255E10 -9 2.73602156530141E10 -2.73602156369859E10 -10 5.47202156563248E10 -5.47202156336752E10 -11 1.094402156610086E11 -1.094402156289914E11 -12 2.18880215667634E11 -2.18880215622366E11 -13 1.070906455244E8 -1.070906444756E8 -14 2.139656457416E8 -2.139656442584E8 -15 4.277156460368E8 -4.277156439632E8 -16 8.552156464491E8 -8.552156435509E8 -17 1.710215647031E9 -1.710215642969E9 -18 3.4202156478548E9 -3.4202156421452E9 -19 6.8402156490218E9 -6.8402156409782E9 -20 1.36802156506745E10 -1.36802156393255E10 -21 2.73602156530141E10 -2.73602156369859E10 -22 5.47202156563248E10 -5.47202156336752E10 -23 1.094402156610086E11 -1.094402156289914E11 -24 2.18880215667634E11 -2.18880215622366E11 +1 107090645.5244 -107090644.4756 +2 213965645.7416 -213965644.2584 +3 427715646.0368 -427715643.9632 +4 855215646.4491 -855215643.5509 +5 1710215647.031 -1710215642.969 +6 3420215647.8548 -3420215642.1452 +7 6840215649.0218 -6840215640.9782 +8 13680215650.6745 -13680215639.3255 +9 27360215653.0141 -27360215636.9859 +10 54720215656.3248 -54720215633.6752 +11 109440215661.0086 -109440215628.9914 +12 218880215667.634 -218880215622.366 +13 107090645.5244 -107090644.4756 +14 213965645.7416 -213965644.2584 +15 427715646.0368 -427715643.9632 +16 855215646.4491 -855215643.5509 +17 1710215647.031 -1710215642.969 +18 3420215647.8548 -3420215642.1452 +19 6840215649.0218 -6840215640.9782 +20 13680215650.6745 -13680215639.3255 +21 27360215653.0141 -27360215636.9859 +22 54720215656.3248 -54720215633.6752 +23 109440215661.0086 -109440215628.9914 +24 218880215667.634 -218880215622.366 -- !sql_test_Double_LargeInt_1 -- \N \N \N \N -1 5.6158334238E7 4.896786269239484E-9 0.5244 -2 1.5867692233200002E8 3.465976979622126E-9 0.7416 -3 4.43455580736E8 2.4240403925369622E-9 1.0368 -4 1.2392929911695E9 1.6944264390766613E-9 1.4491 -5 3.4734479749950004E9 1.1875695360043325E-9 2.031 -6 9.764031623346E9 8.346842118488702E-10 2.8548 -7 2.7509979281060997E10 5.879639193743577E-10 4.0218 -8 7.76283836775525E10 4.147960929310336E-10 5.6745 -9 2.1926750420059448E11 2.9291070304354684E-10 8.0141 -10 6.19695498136496E11 2.0695824872968662E-10 11.3248 -11 1.751984636174547E12 1.4627712405034343E-10 16.0086 -12 4.95413480090893E12 1.0340815835411044E-10 22.634 -13 5.6158334238E7 4.896786269239484E-9 0.5244 -14 1.5867692233200002E8 3.465976979622126E-9 0.7416 -15 4.43455580736E8 2.4240403925369622E-9 1.0368 -16 1.2392929911695E9 1.6944264390766613E-9 1.4491 -17 3.4734479749950004E9 1.1875695360043325E-9 2.031 -18 9.764031623346E9 8.346842118488702E-10 2.8548 -19 2.7509979281060997E10 5.879639193743577E-10 4.0218 -20 7.76283836775525E10 4.147960929310336E-10 5.6745 -21 2.1926750420059448E11 2.9291070304354684E-10 8.0141 -22 6.19695498136496E11 2.0695824872968662E-10 11.3248 -23 1.751984636174547E12 1.4627712405034343E-10 16.0086 -24 4.95413480090893E12 1.0340815835411044E-10 22.634 +1 56158334.238 4.896786269239484e-09 0.5244 +2 158676922.332 3.465976979622126e-09 0.7416 +3 443455580.736 2.424040392536962e-09 1.0368 +4 1239292991.1695 1.694426439076661e-09 1.4491 +5 3473447974.995 1.187569536004332e-09 2.031 +6 9764031623.346001 8.346842118488702e-10 2.8548 +7 27509979281.061 5.879639193743577e-10 4.0218 +8 77628383677.55251 4.147960929310336e-10 5.6745 +9 219267504200.5945 2.929107030435468e-10 8.014099999999999 +10 619695498136.496 2.069582487296866e-10 11.3248 +11 1751984636174.547 1.462771240503434e-10 16.0086 +12 4954134800908.93 1.034081583541104e-10 22.634 +13 56158334.238 4.896786269239484e-09 0.5244 +14 158676922.332 3.465976979622126e-09 0.7416 +15 443455580.736 2.424040392536962e-09 1.0368 +16 1239292991.1695 1.694426439076661e-09 1.4491 +17 3473447974.995 1.187569536004332e-09 2.031 +18 9764031623.346001 8.346842118488702e-10 2.8548 +19 27509979281.061 5.879639193743577e-10 4.0218 +20 77628383677.55251 4.147960929310336e-10 5.6745 +21 219267504200.5945 2.929107030435468e-10 8.014099999999999 +22 619695498136.496 2.069582487296866e-10 11.3248 +23 1751984636174.547 1.462771240503434e-10 16.0086 +24 4954134800908.93 1.034081583541104e-10 22.634 -- !sql_test_Double_LargeInt_notn_1 -- -1 5.6158334238E7 4.896786269239484E-9 0.5244 -2 1.5867692233200002E8 3.465976979622126E-9 0.7416 -3 4.43455580736E8 2.4240403925369622E-9 1.0368 -4 1.2392929911695E9 1.6944264390766613E-9 1.4491 -5 3.4734479749950004E9 1.1875695360043325E-9 2.031 -6 9.764031623346E9 8.346842118488702E-10 2.8548 -7 2.7509979281060997E10 5.879639193743577E-10 4.0218 -8 7.76283836775525E10 4.147960929310336E-10 5.6745 -9 2.1926750420059448E11 2.9291070304354684E-10 8.0141 -10 6.19695498136496E11 2.0695824872968662E-10 11.3248 -11 1.751984636174547E12 1.4627712405034343E-10 16.0086 -12 4.95413480090893E12 1.0340815835411044E-10 22.634 -13 5.6158334238E7 4.896786269239484E-9 0.5244 -14 1.5867692233200002E8 3.465976979622126E-9 0.7416 -15 4.43455580736E8 2.4240403925369622E-9 1.0368 -16 1.2392929911695E9 1.6944264390766613E-9 1.4491 -17 3.4734479749950004E9 1.1875695360043325E-9 2.031 -18 9.764031623346E9 8.346842118488702E-10 2.8548 -19 2.7509979281060997E10 5.879639193743577E-10 4.0218 -20 7.76283836775525E10 4.147960929310336E-10 5.6745 -21 2.1926750420059448E11 2.9291070304354684E-10 8.0141 -22 6.19695498136496E11 2.0695824872968662E-10 11.3248 -23 1.751984636174547E12 1.4627712405034343E-10 16.0086 -24 4.95413480090893E12 1.0340815835411044E-10 22.634 +1 56158334.238 4.896786269239484e-09 0.5244 +2 158676922.332 3.465976979622126e-09 0.7416 +3 443455580.736 2.424040392536962e-09 1.0368 +4 1239292991.1695 1.694426439076661e-09 1.4491 +5 3473447974.995 1.187569536004332e-09 2.031 +6 9764031623.346001 8.346842118488702e-10 2.8548 +7 27509979281.061 5.879639193743577e-10 4.0218 +8 77628383677.55251 4.147960929310336e-10 5.6745 +9 219267504200.5945 2.929107030435468e-10 8.014099999999999 +10 619695498136.496 2.069582487296866e-10 11.3248 +11 1751984636174.547 1.462771240503434e-10 16.0086 +12 4954134800908.93 1.034081583541104e-10 22.634 +13 56158334.238 4.896786269239484e-09 0.5244 +14 158676922.332 3.465976979622126e-09 0.7416 +15 443455580.736 2.424040392536962e-09 1.0368 +16 1239292991.1695 1.694426439076661e-09 1.4491 +17 3473447974.995 1.187569536004332e-09 2.031 +18 9764031623.346001 8.346842118488702e-10 2.8548 +19 27509979281.061 5.879639193743577e-10 4.0218 +20 77628383677.55251 4.147960929310336e-10 5.6745 +21 219267504200.5945 2.929107030435468e-10 8.014099999999999 +22 619695498136.496 2.069582487296866e-10 11.3248 +23 1751984636174.547 1.462771240503434e-10 16.0086 +24 4954134800908.93 1.034081583541104e-10 22.634 -- !sql_test_Double_LargeInt_2 -- \N \N @@ -4771,109 +4771,109 @@ -- !sql_test_Double_Float_0 -- \N \N \N -1 0.6244000014901161 0.42439999850988386 +1 0.6244000014901161 0.4243999985098839 2 0.9416000029802323 0.5415999970197678 3 1.336800011920929 0.736799988079071 -4 1.8491000059604645 1.0490999940395356 -5 2.531 1.5310000000000001 +4 1.849100005960465 1.049099994039536 +5 2.531 1.531 6 3.454800023841858 2.254799976158142 -7 4.721799988079071 3.3218000119209288 +7 4.721799988079071 3.321800011920929 8 6.474500011920929 4.874499988079071 9 8.914099976158141 7.114100023841857 10 12.3248 10.3248 -11 17.10860002384186 14.908599976158143 -12 23.834000047683716 21.433999952316285 -13 0.6244000014901161 0.42439999850988386 +11 17.10860002384186 14.90859997615814 +12 23.83400004768372 21.43399995231628 +13 0.6244000014901161 0.4243999985098839 14 0.9416000029802323 0.5415999970197678 15 1.336800011920929 0.736799988079071 -16 1.8491000059604645 1.0490999940395356 -17 2.531 1.5310000000000001 +16 1.849100005960465 1.049099994039536 +17 2.531 1.531 18 3.454800023841858 2.254799976158142 -19 4.721799988079071 3.3218000119209288 +19 4.721799988079071 3.321800011920929 20 6.474500011920929 4.874499988079071 21 8.914099976158141 7.114100023841857 22 12.3248 10.3248 -23 17.10860002384186 14.908599976158143 -24 23.834000047683716 21.433999952316285 +23 17.10860002384186 14.90859997615814 +24 23.83400004768372 21.43399995231628 -- !sql_test_Double_Float_notn_0 -- -1 0.6244000014901161 0.42439999850988386 +1 0.6244000014901161 0.4243999985098839 2 0.9416000029802323 0.5415999970197678 3 1.336800011920929 0.736799988079071 -4 1.8491000059604645 1.0490999940395356 -5 2.531 1.5310000000000001 +4 1.849100005960465 1.049099994039536 +5 2.531 1.531 6 3.454800023841858 2.254799976158142 -7 4.721799988079071 3.3218000119209288 +7 4.721799988079071 3.321800011920929 8 6.474500011920929 4.874499988079071 9 8.914099976158141 7.114100023841857 10 12.3248 10.3248 -11 17.10860002384186 14.908599976158143 -12 23.834000047683716 21.433999952316285 -13 0.6244000014901161 0.42439999850988386 +11 17.10860002384186 14.90859997615814 +12 23.83400004768372 21.43399995231628 +13 0.6244000014901161 0.4243999985098839 14 0.9416000029802323 0.5415999970197678 15 1.336800011920929 0.736799988079071 -16 1.8491000059604645 1.0490999940395356 -17 2.531 1.5310000000000001 +16 1.849100005960465 1.049099994039536 +17 2.531 1.531 18 3.454800023841858 2.254799976158142 -19 4.721799988079071 3.3218000119209288 +19 4.721799988079071 3.321800011920929 20 6.474500011920929 4.874499988079071 21 8.914099976158141 7.114100023841857 22 12.3248 10.3248 -23 17.10860002384186 14.908599976158143 -24 23.834000047683716 21.433999952316285 +23 17.10860002384186 14.90859997615814 +24 23.83400004768372 21.43399995231628 -- !sql_test_Double_Float_1 -- \N \N \N \N 1 0.05244000078141689 5.243999921858312 0.02439999254941938 -2 0.14832000221014024 3.7079999447464953 0.14159999105930332 -3 0.31104001235961914 3.455999862670904 0.13679996423721308 -4 0.5796400086373091 3.6227499460168193 0.24909998211860662 +2 0.1483200022101402 3.707999944746495 0.1415999910593033 +3 0.3110400123596191 3.455999862670904 0.1367999642372131 +4 0.5796400086373091 3.622749946016819 0.2490999821186066 5 1.0155 4.062 0.03100000000000014 -6 1.712880068063736 4.757999810934074 0.45479990463256836 -7 2.8152599520564077 5.745428669272639 0.5218000596046446 +6 1.712880068063736 4.757999810934074 0.4547999046325684 +7 2.815259952056408 5.745428669272639 0.5218000596046446 8 4.539600067645312 7.093124894304203 0.07449991655349741 9 7.212689808928966 8.904555791445725 0.8141001907348624 -10 11.3248 11.3248 0.32479999999999976 -11 17.60946038167477 14.553272411839044 0.6085996662139905 -12 27.160801079273224 18.861665917171404 1.0339991416931156 +10 11.3248 11.3248 0.3247999999999998 +11 17.60946038167477 14.55327241183904 0.6085996662139905 +12 27.16080107927322 18.8616659171714 1.033999141693116 13 0.05244000078141689 5.243999921858312 0.02439999254941938 -14 0.14832000221014024 3.7079999447464953 0.14159999105930332 -15 0.31104001235961914 3.455999862670904 0.13679996423721308 -16 0.5796400086373091 3.6227499460168193 0.24909998211860662 +14 0.1483200022101402 3.707999944746495 0.1415999910593033 +15 0.3110400123596191 3.455999862670904 0.1367999642372131 +16 0.5796400086373091 3.622749946016819 0.2490999821186066 17 1.0155 4.062 0.03100000000000014 -18 1.712880068063736 4.757999810934074 0.45479990463256836 -19 2.8152599520564077 5.745428669272639 0.5218000596046446 +18 1.712880068063736 4.757999810934074 0.4547999046325684 +19 2.815259952056408 5.745428669272639 0.5218000596046446 20 4.539600067645312 7.093124894304203 0.07449991655349741 21 7.212689808928966 8.904555791445725 0.8141001907348624 -22 11.3248 11.3248 0.32479999999999976 -23 17.60946038167477 14.553272411839044 0.6085996662139905 -24 27.160801079273224 18.861665917171404 1.0339991416931156 +22 11.3248 11.3248 0.3247999999999998 +23 17.60946038167477 14.55327241183904 0.6085996662139905 +24 27.16080107927322 18.8616659171714 1.033999141693116 -- !sql_test_Double_Float_notn_1 -- 1 0.05244000078141689 5.243999921858312 0.02439999254941938 -2 0.14832000221014024 3.7079999447464953 0.14159999105930332 -3 0.31104001235961914 3.455999862670904 0.13679996423721308 -4 0.5796400086373091 3.6227499460168193 0.24909998211860662 +2 0.1483200022101402 3.707999944746495 0.1415999910593033 +3 0.3110400123596191 3.455999862670904 0.1367999642372131 +4 0.5796400086373091 3.622749946016819 0.2490999821186066 5 1.0155 4.062 0.03100000000000014 -6 1.712880068063736 4.757999810934074 0.45479990463256836 -7 2.8152599520564077 5.745428669272639 0.5218000596046446 +6 1.712880068063736 4.757999810934074 0.4547999046325684 +7 2.815259952056408 5.745428669272639 0.5218000596046446 8 4.539600067645312 7.093124894304203 0.07449991655349741 9 7.212689808928966 8.904555791445725 0.8141001907348624 -10 11.3248 11.3248 0.32479999999999976 -11 17.60946038167477 14.553272411839044 0.6085996662139905 -12 27.160801079273224 18.861665917171404 1.0339991416931156 +10 11.3248 11.3248 0.3247999999999998 +11 17.60946038167477 14.55327241183904 0.6085996662139905 +12 27.16080107927322 18.8616659171714 1.033999141693116 13 0.05244000078141689 5.243999921858312 0.02439999254941938 -14 0.14832000221014024 3.7079999447464953 0.14159999105930332 -15 0.31104001235961914 3.455999862670904 0.13679996423721308 -16 0.5796400086373091 3.6227499460168193 0.24909998211860662 +14 0.1483200022101402 3.707999944746495 0.1415999910593033 +15 0.3110400123596191 3.455999862670904 0.1367999642372131 +16 0.5796400086373091 3.622749946016819 0.2490999821186066 17 1.0155 4.062 0.03100000000000014 -18 1.712880068063736 4.757999810934074 0.45479990463256836 -19 2.8152599520564077 5.745428669272639 0.5218000596046446 +18 1.712880068063736 4.757999810934074 0.4547999046325684 +19 2.815259952056408 5.745428669272639 0.5218000596046446 20 4.539600067645312 7.093124894304203 0.07449991655349741 21 7.212689808928966 8.904555791445725 0.8141001907348624 -22 11.3248 11.3248 0.32479999999999976 -23 17.60946038167477 14.553272411839044 0.6085996662139905 -24 27.160801079273224 18.861665917171404 1.0339991416931156 +22 11.3248 11.3248 0.3247999999999998 +23 17.60946038167477 14.55327241183904 0.6085996662139905 +24 27.16080107927322 18.8616659171714 1.033999141693116 -- !sql_test_Double_Float_2 -- \N \N @@ -5036,109 +5036,109 @@ -- !sql_test_Double_Double_0 -- \N \N \N -1 1.0488 0.0 -2 1.4832 0.0 -3 2.0736 0.0 -4 2.8982 0.0 -5 4.062 0.0 -6 5.7096 0.0 -7 8.0436 0.0 -8 11.349 0.0 -9 16.0282 0.0 -10 22.6496 0.0 -11 32.0172 0.0 -12 45.268 0.0 -13 1.0488 0.0 -14 1.4832 0.0 -15 2.0736 0.0 -16 2.8982 0.0 -17 4.062 0.0 -18 5.7096 0.0 -19 8.0436 0.0 -20 11.349 0.0 -21 16.0282 0.0 -22 22.6496 0.0 -23 32.0172 0.0 -24 45.268 0.0 +1 1.0488 0 +2 1.4832 0 +3 2.0736 0 +4 2.8982 0 +5 4.062 0 +6 5.7096 0 +7 8.0436 0 +8 11.349 0 +9 16.0282 0 +10 22.6496 0 +11 32.0172 0 +12 45.268 0 +13 1.0488 0 +14 1.4832 0 +15 2.0736 0 +16 2.8982 0 +17 4.062 0 +18 5.7096 0 +19 8.0436 0 +20 11.349 0 +21 16.0282 0 +22 22.6496 0 +23 32.0172 0 +24 45.268 0 -- !sql_test_Double_Double_notn_0 -- -1 1.0488 0.0 -2 1.4832 0.0 -3 2.0736 0.0 -4 2.8982 0.0 -5 4.062 0.0 -6 5.7096 0.0 -7 8.0436 0.0 -8 11.349 0.0 -9 16.0282 0.0 -10 22.6496 0.0 -11 32.0172 0.0 -12 45.268 0.0 -13 1.0488 0.0 -14 1.4832 0.0 -15 2.0736 0.0 -16 2.8982 0.0 -17 4.062 0.0 -18 5.7096 0.0 -19 8.0436 0.0 -20 11.349 0.0 -21 16.0282 0.0 -22 22.6496 0.0 -23 32.0172 0.0 -24 45.268 0.0 +1 1.0488 0 +2 1.4832 0 +3 2.0736 0 +4 2.8982 0 +5 4.062 0 +6 5.7096 0 +7 8.0436 0 +8 11.349 0 +9 16.0282 0 +10 22.6496 0 +11 32.0172 0 +12 45.268 0 +13 1.0488 0 +14 1.4832 0 +15 2.0736 0 +16 2.8982 0 +17 4.062 0 +18 5.7096 0 +19 8.0436 0 +20 11.349 0 +21 16.0282 0 +22 22.6496 0 +23 32.0172 0 +24 45.268 0 -- !sql_test_Double_Double_1 -- \N \N \N \N -1 0.27499535999999997 1.0 0.0 -2 0.5499705600000001 1.0 0.0 -3 1.0749542399999998 1.0 0.0 -4 2.09989081 1.0 0.0 -5 4.124961000000001 1.0 0.0 -6 8.14988304 1.0 0.0 -7 16.17487524 1.0 0.0 -8 32.19995025 1.0 0.0 -9 64.22579880999999 1.0 0.0 -10 128.25109504 1.0 0.0 -11 256.27527396000005 1.0 0.0 -12 512.297956 1.0 0.0 -13 0.27499535999999997 1.0 0.0 -14 0.5499705600000001 1.0 0.0 -15 1.0749542399999998 1.0 0.0 -16 2.09989081 1.0 0.0 -17 4.124961000000001 1.0 0.0 -18 8.14988304 1.0 0.0 -19 16.17487524 1.0 0.0 -20 32.19995025 1.0 0.0 -21 64.22579880999999 1.0 0.0 -22 128.25109504 1.0 0.0 -23 256.27527396000005 1.0 0.0 -24 512.297956 1.0 0.0 +1 0.27499536 1 0 +2 0.5499705600000001 1 0 +3 1.07495424 1 0 +4 2.09989081 1 0 +5 4.124961000000001 1 0 +6 8.149883040000001 1 0 +7 16.17487524 1 0 +8 32.19995025 1 0 +9 64.22579880999999 1 0 +10 128.25109504 1 0 +11 256.27527396 1 0 +12 512.297956 1 0 +13 0.27499536 1 0 +14 0.5499705600000001 1 0 +15 1.07495424 1 0 +16 2.09989081 1 0 +17 4.124961000000001 1 0 +18 8.149883040000001 1 0 +19 16.17487524 1 0 +20 32.19995025 1 0 +21 64.22579880999999 1 0 +22 128.25109504 1 0 +23 256.27527396 1 0 +24 512.297956 1 0 -- !sql_test_Double_Double_notn_1 -- -1 0.27499535999999997 1.0 0.0 -2 0.5499705600000001 1.0 0.0 -3 1.0749542399999998 1.0 0.0 -4 2.09989081 1.0 0.0 -5 4.124961000000001 1.0 0.0 -6 8.14988304 1.0 0.0 -7 16.17487524 1.0 0.0 -8 32.19995025 1.0 0.0 -9 64.22579880999999 1.0 0.0 -10 128.25109504 1.0 0.0 -11 256.27527396000005 1.0 0.0 -12 512.297956 1.0 0.0 -13 0.27499535999999997 1.0 0.0 -14 0.5499705600000001 1.0 0.0 -15 1.0749542399999998 1.0 0.0 -16 2.09989081 1.0 0.0 -17 4.124961000000001 1.0 0.0 -18 8.14988304 1.0 0.0 -19 16.17487524 1.0 0.0 -20 32.19995025 1.0 0.0 -21 64.22579880999999 1.0 0.0 -22 128.25109504 1.0 0.0 -23 256.27527396000005 1.0 0.0 -24 512.297956 1.0 0.0 +1 0.27499536 1 0 +2 0.5499705600000001 1 0 +3 1.07495424 1 0 +4 2.09989081 1 0 +5 4.124961000000001 1 0 +6 8.149883040000001 1 0 +7 16.17487524 1 0 +8 32.19995025 1 0 +9 64.22579880999999 1 0 +10 128.25109504 1 0 +11 256.27527396 1 0 +12 512.297956 1 0 +13 0.27499536 1 0 +14 0.5499705600000001 1 0 +15 1.07495424 1 0 +16 2.09989081 1 0 +17 4.124961000000001 1 0 +18 8.149883040000001 1 0 +19 16.17487524 1 0 +20 32.19995025 1 0 +21 64.22579880999999 1 0 +22 128.25109504 1 0 +23 256.27527396 1 0 +24 512.297956 1 0 -- !sql_test_Double_Double_2 -- \N \N @@ -5301,109 +5301,109 @@ -- !sql_test_Double_DecimalV2_0 -- \N \N \N -1 24.919400000 -23.870600000 -2 35.225600000 -33.742400000 -3 49.792800000 -47.719200000 -4 70.392100000 -67.493900000 -5 99.525000000 -95.463000000 -6 140.728800000 -135.019200000 -7 199.001800000 -190.958200000 +1 24.919600000 -23.870800000 +2 35.225300000 -33.742100000 +3 49.792600000 -47.719000000 +4 70.392000000 -67.493800000 +5 99.525200000 -95.463200000 +6 140.728400000 -135.018800000 +7 199.001600000 -190.958000000 8 281.415500000 -270.066500000 -9 397.969100000 -381.940900000 +9 397.969400000 -381.941200000 10 562.803800000 -540.154200000 -11 795.916600000 -763.899400000 -12 1125.591000000 -1080.323000000 -13 24.919400000 -23.870600000 -14 35.225600000 -33.742400000 -15 49.792800000 -47.719200000 -16 70.392100000 -67.493900000 -17 99.525000000 -95.463000000 -18 140.728800000 -135.019200000 -19 199.001800000 -190.958200000 +11 795.917000000 -763.899800000 +12 1125.590500000 -1080.322500000 +13 24.919600000 -23.870800000 +14 35.225300000 -33.742100000 +15 49.792600000 -47.719000000 +16 70.392000000 -67.493800000 +17 99.525200000 -95.463200000 +18 140.728400000 -135.018800000 +19 199.001600000 -190.958000000 20 281.415500000 -270.066500000 -21 397.969100000 -381.940900000 +21 397.969400000 -381.941200000 22 562.803800000 -540.154200000 -23 795.916600000 -763.899400000 -24 1125.591000000 -1080.323000000 +23 795.917000000 -763.899800000 +24 1125.590500000 -1080.322500000 -- !sql_test_Double_DecimalV2_notn_0 -- -1 24.919400000 -23.870600000 -2 35.225600000 -33.742400000 -3 49.792800000 -47.719200000 -4 70.392100000 -67.493900000 -5 99.525000000 -95.463000000 -6 140.728800000 -135.019200000 -7 199.001800000 -190.958200000 +1 24.919600000 -23.870800000 +2 35.225300000 -33.742100000 +3 49.792600000 -47.719000000 +4 70.392000000 -67.493800000 +5 99.525200000 -95.463200000 +6 140.728400000 -135.018800000 +7 199.001600000 -190.958000000 8 281.415500000 -270.066500000 -9 397.969100000 -381.940900000 +9 397.969400000 -381.941200000 10 562.803800000 -540.154200000 -11 795.916600000 -763.899400000 -12 1125.591000000 -1080.323000000 -13 24.919400000 -23.870600000 -14 35.225600000 -33.742400000 -15 49.792800000 -47.719200000 -16 70.392100000 -67.493900000 -17 99.525000000 -95.463000000 -18 140.728800000 -135.019200000 -19 199.001800000 -190.958200000 +11 795.917000000 -763.899800000 +12 1125.590500000 -1080.322500000 +13 24.919600000 -23.870800000 +14 35.225300000 -33.742100000 +15 49.792600000 -47.719000000 +16 70.392000000 -67.493800000 +17 99.525200000 -95.463200000 +18 140.728400000 -135.018800000 +19 199.001600000 -190.958000000 20 281.415500000 -270.066500000 -21 397.969100000 -381.940900000 +21 397.969400000 -381.941200000 22 562.803800000 -540.154200000 -23 795.916600000 -763.899400000 -24 1125.591000000 -1080.323000000 +23 795.917000000 -763.899800000 +24 1125.590500000 -1080.322500000 -- !sql_test_Double_DecimalV2_1 -- \N \N \N \N -1 12.792738000 0.021496208239393317 0.524400000 -2 25.573334400 0.02150562579747129 0.741600000 -3 50.550220800 0.021265075067683978 1.036800000 -4 99.905301300 0.02101881264232772 1.449100000 -5 198.010314000 0.020832051203150966 2.031000000 -6 393.602695200 0.020705861873884852 2.854800000 -7 784.170564000 0.02062673094676377 4.021800000 +1 12.792842880 0.02149603200629632 0.524400000 +2 25.573111920 0.02150581289130807 0.741600000 +3 50.550013440 0.02126516229863934 1.036800000 +4 99.905156390 0.02101884312960436 1.449100000 +5 198.010720200 0.02083200846819606 2.031000000 +6 393.601553280 0.02070592194589827 2.854800000 +7 784.169759640 0.02062675210457698 4.021800000 8 1564.692304500 0.02057909414994506 5.674500000 -9 3125.138365500 0.020551345668089905 8.014100000 -10 6245.389379200 0.020535324101189707 11.324800000 -11 12485.235208800 0.020526267200746757 16.008600000 -12 24964.328738000 0.02052119892253279 22.634000000 -13 12.792738000 0.021496208239393317 0.524400000 -14 25.573334400 0.02150562579747129 0.741600000 -15 50.550220800 0.021265075067683978 1.036800000 -16 99.905301300 0.02101881264232772 1.449100000 -17 198.010314000 0.020832051203150966 2.031000000 -18 393.602695200 0.020705861873884852 2.854800000 -19 784.170564000 0.02062673094676377 4.021800000 +9 3125.140769730 0.02055132985755034 8.014100000 +10 6245.389379200 0.02053532410118971 11.324800000 +11 12485.241612240 0.02052625667321957 16.008600000 +12 24964.317421000 0.02052120822534706 22.634000000 +13 12.792842880 0.02149603200629632 0.524400000 +14 25.573111920 0.02150581289130807 0.741600000 +15 50.550013440 0.02126516229863934 1.036800000 +16 99.905156390 0.02101884312960436 1.449100000 +17 198.010720200 0.02083200846819606 2.031000000 +18 393.601553280 0.02070592194589827 2.854800000 +19 784.169759640 0.02062675210457698 4.021800000 20 1564.692304500 0.02057909414994506 5.674500000 -21 3125.138365500 0.020551345668089905 8.014100000 -22 6245.389379200 0.020535324101189707 11.324800000 -23 12485.235208800 0.020526267200746757 16.008600000 -24 24964.328738000 0.02052119892253279 22.634000000 +21 3125.140769730 0.02055132985755034 8.014100000 +22 6245.389379200 0.02053532410118971 11.324800000 +23 12485.241612240 0.02052625667321957 16.008600000 +24 24964.317421000 0.02052120822534706 22.634000000 -- !sql_test_Double_DecimalV2_notn_1 -- -1 12.792738000 0.021496208239393317 0.524400000 -2 25.573334400 0.02150562579747129 0.741600000 -3 50.550220800 0.021265075067683978 1.036800000 -4 99.905301300 0.02101881264232772 1.449100000 -5 198.010314000 0.020832051203150966 2.031000000 -6 393.602695200 0.020705861873884852 2.854800000 -7 784.170564000 0.02062673094676377 4.021800000 +1 12.792842880 0.02149603200629632 0.524400000 +2 25.573111920 0.02150581289130807 0.741600000 +3 50.550013440 0.02126516229863934 1.036800000 +4 99.905156390 0.02101884312960436 1.449100000 +5 198.010720200 0.02083200846819606 2.031000000 +6 393.601553280 0.02070592194589827 2.854800000 +7 784.169759640 0.02062675210457698 4.021800000 8 1564.692304500 0.02057909414994506 5.674500000 -9 3125.138365500 0.020551345668089905 8.014100000 -10 6245.389379200 0.020535324101189707 11.324800000 -11 12485.235208800 0.020526267200746757 16.008600000 -12 24964.328738000 0.02052119892253279 22.634000000 -13 12.792738000 0.021496208239393317 0.524400000 -14 25.573334400 0.02150562579747129 0.741600000 -15 50.550220800 0.021265075067683978 1.036800000 -16 99.905301300 0.02101881264232772 1.449100000 -17 198.010314000 0.020832051203150966 2.031000000 -18 393.602695200 0.020705861873884852 2.854800000 -19 784.170564000 0.02062673094676377 4.021800000 +9 3125.140769730 0.02055132985755034 8.014100000 +10 6245.389379200 0.02053532410118971 11.324800000 +11 12485.241612240 0.02052625667321957 16.008600000 +12 24964.317421000 0.02052120822534706 22.634000000 +13 12.792842880 0.02149603200629632 0.524400000 +14 25.573111920 0.02150581289130807 0.741600000 +15 50.550013440 0.02126516229863934 1.036800000 +16 99.905156390 0.02101884312960436 1.449100000 +17 198.010720200 0.02083200846819606 2.031000000 +18 393.601553280 0.02070592194589827 2.854800000 +19 784.169759640 0.02062675210457698 4.021800000 20 1564.692304500 0.02057909414994506 5.674500000 -21 3125.138365500 0.020551345668089905 8.014100000 -22 6245.389379200 0.020535324101189707 11.324800000 -23 12485.235208800 0.020526267200746757 16.008600000 -24 24964.328738000 0.02052119892253279 22.634000000 +21 3125.140769730 0.02055132985755034 8.014100000 +22 6245.389379200 0.02053532410118971 11.324800000 +23 12485.241612240 0.02052625667321957 16.008600000 +24 24964.317421000 0.02052120822534706 22.634000000 -- !sql_test_Double_DecimalV2_2 -- \N \N @@ -5514,107 +5514,107 @@ -- !sql_test_Double_Decimal32V3_0 -- \N \N \N 1 12.5364 -11.4876 -2 23.864600000000003 -22.3814 +2 23.8646 -22.3814 3 35.2708 -33.1972 4 46.7941 -43.8959 -5 58.487 -54.425000000000004 +5 58.487 -54.425 6 70.42179999999999 -64.7122 7 82.6998 -74.6562 -8 95.4635 -84.1145 -9 108.9141 -92.8859 -10 123.33579999999999 -100.6862 -11 139.13060000000002 -107.1134 -12 156.86700000000002 -111.599 -13 145.8684 -144.81959999999998 -14 157.19660000000002 -155.7134 +8 95.4635 -84.11450000000001 +9 108.9141 -92.88590000000001 +10 123.3358 -100.6862 +11 139.1306 -107.1134 +12 156.867 -111.599 +13 145.8684 -144.8196 +14 157.1966 -155.7134 15 168.6028 -166.5292 -16 180.12609999999998 -177.2279 -17 191.81900000000002 -187.757 +16 180.1261 -177.2279 +17 191.819 -187.757 18 203.7538 -198.0442 -19 216.0318 -207.98819999999998 -20 228.7955 -217.44650000000001 +19 216.0318 -207.9882 +20 228.7955 -217.4465 21 242.2461 -226.2179 -22 256.6678 -234.01819999999998 +22 256.6678 -234.0182 23 272.4626 -240.4454 -24 290.199 -244.93099999999998 +24 290.199 -244.931 -- !sql_test_Double_Decimal32V3_notn_0 -- 1 12.5364 -11.4876 -2 23.864600000000003 -22.3814 +2 23.8646 -22.3814 3 35.2708 -33.1972 4 46.7941 -43.8959 -5 58.487 -54.425000000000004 +5 58.487 -54.425 6 70.42179999999999 -64.7122 7 82.6998 -74.6562 -8 95.4635 -84.1145 -9 108.9141 -92.8859 -10 123.33579999999999 -100.6862 -11 139.13060000000002 -107.1134 -12 156.86700000000002 -111.599 -13 145.8684 -144.81959999999998 -14 157.19660000000002 -155.7134 +8 95.4635 -84.11450000000001 +9 108.9141 -92.88590000000001 +10 123.3358 -100.6862 +11 139.1306 -107.1134 +12 156.867 -111.599 +13 145.8684 -144.8196 +14 157.1966 -155.7134 15 168.6028 -166.5292 -16 180.12609999999998 -177.2279 -17 191.81900000000002 -187.757 +16 180.1261 -177.2279 +17 191.819 -187.757 18 203.7538 -198.0442 -19 216.0318 -207.98819999999998 -20 228.7955 -217.44650000000001 +19 216.0318 -207.9882 +20 228.7955 -217.4465 21 242.2461 -226.2179 -22 256.6678 -234.01819999999998 +22 256.6678 -234.0182 23 272.4626 -240.4454 -24 290.199 -244.93099999999998 +24 290.199 -244.931 -- !sql_test_Double_Decimal32V3_1 -- \N \N \N \N 1 6.2990928 0.04365634365634365 0.5244 -2 17.1480168 0.032071962980582104 0.7416 -3 35.4938112 0.030285680902027223 1.0368 -4 65.7094395 0.031957216892711436 1.4491 -5 114.66213600000002 0.03597491852061783 2.031 -6 192.89027159999998 0.04225139491171726 2.8548 +2 17.1480168 0.0320719629805821 0.7416 +3 35.4938112 0.03028568090202722 1.0368 +4 65.7094395 0.03195721689271144 1.4491 +5 114.662136 0.03597491852061783 2.031 +6 192.8902716 0.04225139491171726 2.8548 7 316.4271804 0.05111721192709525 4.0218 8 509.5076805 0.06319816458586242 5.6745 -9 808.6226899999999 0.07942616451932605 8.0141 -10 1268.5021728 0.10110435582219604 11.3248 -11 1971.0108492000002 0.13002225434934456 16.0086 -12 3038.229722 0.16861725507140568 22.634 +9 808.6226899999999 0.07942616451932605 8.014099999999999 +10 1268.5021728 0.101104355822196 11.3248 +11 1971.0108492 0.1300222543493446 16.0086 +12 3038.229722 0.1686172550714057 22.634 13 76.2183936 0.003607992073976222 0.5244 -14 116.02702800000002 0.004740021092326867 0.7416 -15 173.73242879999998 0.006187412720957712 1.0368 +14 116.027028 0.004740021092326867 0.7416 +15 173.7324288 0.006187412720957712 1.0368 16 258.9208407 0.008110165270292204 1.4491 -17 385.45942800000006 0.010701414209539064 2.031 -18 573.5264652 0.014210125485940696 2.8548 +17 385.4594280000001 0.01070141420953906 2.031 +18 573.5264652 0.0142101254859407 2.8548 19 852.6618179999999 0.01896985991226829 4.0218 20 1266.1001145 0.02543238870388713 5.6745 -21 1877.1586711999998 0.03421436866013183 8.0141 +21 1877.1586712 0.03421436866013183 8.014099999999999 22 2778.4604064 0.04615905079827018 11.3248 -23 4105.4695044 0.062422890654854284 16.0086 +23 4105.4695044 0.06242289065485428 16.0086 24 6056.06621 0.08459252891820679 22.634 -- !sql_test_Double_Decimal32V3_notn_1 -- 1 6.2990928 0.04365634365634365 0.5244 -2 17.1480168 0.032071962980582104 0.7416 -3 35.4938112 0.030285680902027223 1.0368 -4 65.7094395 0.031957216892711436 1.4491 -5 114.66213600000002 0.03597491852061783 2.031 -6 192.89027159999998 0.04225139491171726 2.8548 +2 17.1480168 0.0320719629805821 0.7416 +3 35.4938112 0.03028568090202722 1.0368 +4 65.7094395 0.03195721689271144 1.4491 +5 114.662136 0.03597491852061783 2.031 +6 192.8902716 0.04225139491171726 2.8548 7 316.4271804 0.05111721192709525 4.0218 8 509.5076805 0.06319816458586242 5.6745 -9 808.6226899999999 0.07942616451932605 8.0141 -10 1268.5021728 0.10110435582219604 11.3248 -11 1971.0108492000002 0.13002225434934456 16.0086 -12 3038.229722 0.16861725507140568 22.634 +9 808.6226899999999 0.07942616451932605 8.014099999999999 +10 1268.5021728 0.101104355822196 11.3248 +11 1971.0108492 0.1300222543493446 16.0086 +12 3038.229722 0.1686172550714057 22.634 13 76.2183936 0.003607992073976222 0.5244 -14 116.02702800000002 0.004740021092326867 0.7416 -15 173.73242879999998 0.006187412720957712 1.0368 +14 116.027028 0.004740021092326867 0.7416 +15 173.7324288 0.006187412720957712 1.0368 16 258.9208407 0.008110165270292204 1.4491 -17 385.45942800000006 0.010701414209539064 2.031 -18 573.5264652 0.014210125485940696 2.8548 +17 385.4594280000001 0.01070141420953906 2.031 +18 573.5264652 0.0142101254859407 2.8548 19 852.6618179999999 0.01896985991226829 4.0218 20 1266.1001145 0.02543238870388713 5.6745 -21 1877.1586711999998 0.03421436866013183 8.0141 +21 1877.1586712 0.03421436866013183 8.014099999999999 22 2778.4604064 0.04615905079827018 11.3248 -23 4105.4695044 0.062422890654854284 16.0086 +23 4105.4695044 0.06242289065485428 16.0086 24 6056.06621 0.08459252891820679 22.634 -- !sql_test_Double_Decimal32V3_2 -- @@ -5727,107 +5727,107 @@ \N \N \N 1 1234.53674 -1233.48794 2 2345.86505 -2344.38185 -3 3457.2713599999997 -3455.19776 -4 4568.7947699999995 -4565.89657 -5 5680.48778 -5676.4257800000005 +3 3457.27136 -3455.19776 +4 4568.79477 -4565.89657 +5 5680.48778 -5676.42578 6 6792.42269 -6786.71309 -7 7904.7008000000005 -7896.6572 -8 9017.464609999999 -9006.11561 +7 7904.700800000001 -7896.6572 +8 9017.464609999999 -9006.115610000001 9 10130.91532 -10114.88712 10 11245.33713 -11222.68753 -11 12361.132039999999 -12329.11484 +11 12361.13204 -12329.11484 12 13478.86855 -13433.60055 -13 14567.870060000001 -14566.82126 -14 15679.19837 -15677.715170000001 -15 16790.60468 -16788.531079999997 -16 17902.128090000002 -17899.22989 -17 19013.821099999997 -19009.7591 +13 14567.87006 -14566.82126 +14 15679.19837 -15677.71517 +15 16790.60468 -16788.53108 +16 17902.12809 -17899.22989 +17 19013.8211 -19009.7591 18 20125.75601 -20120.04641 -19 21238.03412 -21229.990520000003 +19 21238.03412 -21229.99052 20 22350.79793 -22339.44893 21 23464.24864 -23448.22044 -22 24578.670449999998 -24556.02085 -23 25694.465360000002 -25662.44816 -24 26812.201869999997 -26766.93387 +22 24578.67045 -24556.02085 +23 25694.46536 -25662.44816 +24 26812.20187 -26766.93387 -- !sql_test_Double_Decimal64V3_notn_0 -- 1 1234.53674 -1233.48794 2 2345.86505 -2344.38185 -3 3457.2713599999997 -3455.19776 -4 4568.7947699999995 -4565.89657 -5 5680.48778 -5676.4257800000005 +3 3457.27136 -3455.19776 +4 4568.79477 -4565.89657 +5 5680.48778 -5676.42578 6 6792.42269 -6786.71309 -7 7904.7008000000005 -7896.6572 -8 9017.464609999999 -9006.11561 +7 7904.700800000001 -7896.6572 +8 9017.464609999999 -9006.115610000001 9 10130.91532 -10114.88712 10 11245.33713 -11222.68753 -11 12361.132039999999 -12329.11484 +11 12361.13204 -12329.11484 12 13478.86855 -13433.60055 -13 14567.870060000001 -14566.82126 -14 15679.19837 -15677.715170000001 -15 16790.60468 -16788.531079999997 -16 17902.128090000002 -17899.22989 -17 19013.821099999997 -19009.7591 +13 14567.87006 -14566.82126 +14 15679.19837 -15677.71517 +15 16790.60468 -16788.53108 +16 17902.12809 -17899.22989 +17 19013.8211 -19009.7591 18 20125.75601 -20120.04641 -19 21238.03412 -21229.990520000003 +19 21238.03412 -21229.99052 20 22350.79793 -22339.44893 21 23464.24864 -23448.22044 -22 24578.670449999998 -24556.02085 -23 25694.465360000002 -25662.44816 -24 26812.201869999997 -26766.93387 +22 24578.67045 -24556.02085 +23 25694.46536 -25662.44816 +24 26812.20187 -26766.93387 -- !sql_test_Double_Decimal64V3_1 -- \N \N \N \N -1 647.1160710959999 4.249552318091081E-4 0.5244 -2 1739.1435505200002 3.162306871307777E-4 0.7416 -3 3583.4239918079998 2.9997964027071126E-4 1.0368 -4 6618.540610397 3.172739934089552E-4 1.4491 -5 11532.945720180001 3.576675985548313E-4 2.031 -6 19382.858412372 4.204685844889607E-4 2.8548 -7 31774.950802199997 5.090448555117857E-4 4.0218 -8 51137.402979195 6.296751178995224E-4 5.6745 -9 81125.94266720199 7.916801543184474E-4 8.0141 -10 127222.94283478399 0.0010080814999425943 11.3248 -11 197628.143101584 0.0012967549557365951 16.0086 -12 304568.41280469997 0.0016820455912757556 22.634 -13 7639.1160641040005 3.599832201688828E-5 0.5244 -14 11627.143540632002 4.730057370308392E-5 0.7416 -15 17407.423977984 6.175263159899741E-5 1.0368 -16 25939.873924409003 8.095223654977123E-5 1.4491 -17 38612.9456931 1.0682844641757329E-4 2.031 -18 57446.858374308 1.4186821125878796E-4 2.8548 -19 85398.950748576 1.8940367648802417E-4 4.0218 -20 126797.402903535 2.53948026636611E-4 5.6745 -21 187980.60922701398 3.416618292391955E-4 8.0141 -22 278220.27601712 4.609696204604017E-4 11.3248 -23 411076.14288813603 6.234253152213186E-4 16.0086 -24 606355.07916958 8.448811160312308E-4 22.634 +1 647.1160710959999 0.0004249552318091081 0.5244 +2 1739.14355052 0.0003162306871307777 0.7416 +3 3583.423991808 0.0002999796402707113 1.0368 +4 6618.540610397 0.0003172739934089552 1.4491 +5 11532.94572018 0.0003576675985548313 2.031 +6 19382.858412372 0.0004204685844889607 2.8548 +7 31774.9508022 0.0005090448555117857 4.0218 +8 51137.402979195 0.0006296751178995224 5.6745 +9 81125.94266720199 0.0007916801543184474 8.014099999999999 +10 127222.942834784 0.001008081499942594 11.3248 +11 197628.143101584 0.001296754955736595 16.0086 +12 304568.4128047 0.001682045591275756 22.634 +13 7639.116064104001 3.599832201688828e-05 0.5244 +14 11627.143540632 4.730057370308392e-05 0.7416 +15 17407.423977984 6.175263159899741e-05 1.0368 +16 25939.873924409 8.095223654977123e-05 1.4491 +17 38612.9456931 0.0001068284464175733 2.031 +18 57446.858374308 0.000141868211258788 2.8548 +19 85398.950748576 0.0001894036764880242 4.0218 +20 126797.402903535 0.000253948026636611 5.6745 +21 187980.609227014 0.0003416618292391955 8.014099999999999 +22 278220.27601712 0.0004609696204604017 11.3248 +23 411076.142888136 0.0006234253152213186 16.0086 +24 606355.07916958 0.0008448811160312308 22.634 -- !sql_test_Double_Decimal64V3_notn_1 -- -1 647.1160710959999 4.249552318091081E-4 0.5244 -2 1739.1435505200002 3.162306871307777E-4 0.7416 -3 3583.4239918079998 2.9997964027071126E-4 1.0368 -4 6618.540610397 3.172739934089552E-4 1.4491 -5 11532.945720180001 3.576675985548313E-4 2.031 -6 19382.858412372 4.204685844889607E-4 2.8548 -7 31774.950802199997 5.090448555117857E-4 4.0218 -8 51137.402979195 6.296751178995224E-4 5.6745 -9 81125.94266720199 7.916801543184474E-4 8.0141 -10 127222.94283478399 0.0010080814999425943 11.3248 -11 197628.143101584 0.0012967549557365951 16.0086 -12 304568.41280469997 0.0016820455912757556 22.634 -13 7639.1160641040005 3.599832201688828E-5 0.5244 -14 11627.143540632002 4.730057370308392E-5 0.7416 -15 17407.423977984 6.175263159899741E-5 1.0368 -16 25939.873924409003 8.095223654977123E-5 1.4491 -17 38612.9456931 1.0682844641757329E-4 2.031 -18 57446.858374308 1.4186821125878796E-4 2.8548 -19 85398.950748576 1.8940367648802417E-4 4.0218 -20 126797.402903535 2.53948026636611E-4 5.6745 -21 187980.60922701398 3.416618292391955E-4 8.0141 -22 278220.27601712 4.609696204604017E-4 11.3248 -23 411076.14288813603 6.234253152213186E-4 16.0086 -24 606355.07916958 8.448811160312308E-4 22.634 +1 647.1160710959999 0.0004249552318091081 0.5244 +2 1739.14355052 0.0003162306871307777 0.7416 +3 3583.423991808 0.0002999796402707113 1.0368 +4 6618.540610397 0.0003172739934089552 1.4491 +5 11532.94572018 0.0003576675985548313 2.031 +6 19382.858412372 0.0004204685844889607 2.8548 +7 31774.9508022 0.0005090448555117857 4.0218 +8 51137.402979195 0.0006296751178995224 5.6745 +9 81125.94266720199 0.0007916801543184474 8.014099999999999 +10 127222.942834784 0.001008081499942594 11.3248 +11 197628.143101584 0.001296754955736595 16.0086 +12 304568.4128047 0.001682045591275756 22.634 +13 7639.116064104001 3.599832201688828e-05 0.5244 +14 11627.143540632 4.730057370308392e-05 0.7416 +15 17407.423977984 6.175263159899741e-05 1.0368 +16 25939.873924409 8.095223654977123e-05 1.4491 +17 38612.9456931 0.0001068284464175733 2.031 +18 57446.858374308 0.000141868211258788 2.8548 +19 85398.950748576 0.0001894036764880242 4.0218 +20 126797.402903535 0.000253948026636611 5.6745 +21 187980.609227014 0.0003416618292391955 8.014099999999999 +22 278220.27601712 0.0004609696204604017 11.3248 +23 411076.142888136 0.0006234253152213186 16.0086 +24 606355.07916958 0.0008448811160312308 22.634 -- !sql_test_Double_Decimal64V3_2 -- \N \N @@ -5937,109 +5937,109 @@ -- !sql_test_Double_Decimal128V3_0 -- \N \N \N -1 1.2345678536744999E7 -1.2345677487945E7 -2 2.3456789865056E7 -2.3456788381856002E7 -3 3.4567901271367E7 -3.4567899197767004E7 -4 4.5679012794778004E7 -4.5679009896578E7 -5 5.6790124487789005E7 -5.6790120425789E7 -6 6.79012364227E7 -6.79012307131E7 -7 7.9012348700811E7 -7.9012340657211E7 -8 9.0123461464622E7 -9.0123450115622E7 -9 1.01234574915333E8 -1.01234558887133E8 -10 1.12345689337144E8 -1.12345666687544E8 -11 1.23456805132055E8 -1.23456773114855E8 -12 1.34567922868566E8 -1.34567877600566E8 -13 1.4567901187007698E8 -1.45679010821277E8 -14 1.56790123198388E8 -1.56790121715188E8 -15 1.67901234604699E8 -1.67901232531099E8 -16 1.7901234612811E8 -1.7901234322991002E8 -17 1.9012345782112098E8 -1.90123453759121E8 -18 2.01234569756032E8 -2.0123456404643202E8 -19 2.12345682034143E8 -2.1234567399054298E8 -20 2.23456794797954E8 -2.2345678344895402E8 -21 2.3456790824866498E8 -2.34567892220465E8 -22 2.4567902267047602E8 -2.45679000020876E8 -23 2.56790138465387E8 -2.56790106448187E8 -24 2.67901256201898E8 -2.67901210933898E8 +1 12345678.536745 -12345677.487945 +2 23456789.865056 -23456788.381856 +3 34567901.271367 -34567899.197767 +4 45679012.794778 -45679009.896578 +5 56790124.48778901 -56790120.425789 +6 67901236.4227 -67901230.7131 +7 79012348.700811 -79012340.65721101 +8 90123461.46462201 -90123450.115622 +9 101234574.915333 -101234558.887133 +10 112345689.337144 -112345666.687544 +11 123456805.132055 -123456773.114855 +12 134567922.868566 -134567877.600566 +13 145679011.870077 -145679010.821277 +14 156790123.198388 -156790121.715188 +15 167901234.604699 -167901232.531099 +16 179012346.12811 -179012343.22991 +17 190123457.821121 -190123453.759121 +18 201234569.756032 -201234564.046432 +19 212345682.034143 -212345673.990543 +20 223456794.797954 -223456783.448954 +21 234567908.248665 -234567892.220465 +22 245679022.670476 -245679000.020876 +23 256790138.465387 -256790106.448187 +24 267901256.201898 -267901210.933898 -- !sql_test_Double_Decimal128V3_notn_0 -- -1 1.2345678536744999E7 -1.2345677487945E7 -2 2.3456789865056E7 -2.3456788381856002E7 -3 3.4567901271367E7 -3.4567899197767004E7 -4 4.5679012794778004E7 -4.5679009896578E7 -5 5.6790124487789005E7 -5.6790120425789E7 -6 6.79012364227E7 -6.79012307131E7 -7 7.9012348700811E7 -7.9012340657211E7 -8 9.0123461464622E7 -9.0123450115622E7 -9 1.01234574915333E8 -1.01234558887133E8 -10 1.12345689337144E8 -1.12345666687544E8 -11 1.23456805132055E8 -1.23456773114855E8 -12 1.34567922868566E8 -1.34567877600566E8 -13 1.4567901187007698E8 -1.45679010821277E8 -14 1.56790123198388E8 -1.56790121715188E8 -15 1.67901234604699E8 -1.67901232531099E8 -16 1.7901234612811E8 -1.7901234322991002E8 -17 1.9012345782112098E8 -1.90123453759121E8 -18 2.01234569756032E8 -2.0123456404643202E8 -19 2.12345682034143E8 -2.1234567399054298E8 -20 2.23456794797954E8 -2.2345678344895402E8 -21 2.3456790824866498E8 -2.34567892220465E8 -22 2.4567902267047602E8 -2.45679000020876E8 -23 2.56790138465387E8 -2.56790106448187E8 -24 2.67901256201898E8 -2.67901210933898E8 +1 12345678.536745 -12345677.487945 +2 23456789.865056 -23456788.381856 +3 34567901.271367 -34567899.197767 +4 45679012.794778 -45679009.896578 +5 56790124.48778901 -56790120.425789 +6 67901236.4227 -67901230.7131 +7 79012348.700811 -79012340.65721101 +8 90123461.46462201 -90123450.115622 +9 101234574.915333 -101234558.887133 +10 112345689.337144 -112345666.687544 +11 123456805.132055 -123456773.114855 +12 134567922.868566 -134567877.600566 +13 145679011.870077 -145679010.821277 +14 156790123.198388 -156790121.715188 +15 167901234.604699 -167901232.531099 +16 179012346.12811 -179012343.22991 +17 190123457.821121 -190123453.759121 +18 201234569.756032 -201234564.046432 +19 212345682.034143 -212345673.990543 +20 223456794.797954 -223456783.448954 +21 234567908.248665 -234567892.220465 +22 245679022.670476 -245679000.020876 +23 256790138.465387 -256790106.448187 +24 267901256.201898 -267901210.933898 -- !sql_test_Double_Decimal128V3_1 -- \N \N \N \N -1 6474073.5496737175 4.247640344059102E-8 0.5244 -2 1.739555481395497E7 3.161558029519159E-8 0.7416 -3 3.5839998963199064E7 2.999314372480244E-8 1.0368 -4 6.619345534102199E7 3.1723541235029576E-8 1.4491 -5 1.1534073870973846E8 3.576326149931031E-8 2.031 -6 1.9384444158964092E8 4.204341880100384E-8 2.8548 -7 3.177718478300464E8 5.0900906894215465E-8 4.0218 -8 5.114055498810473E8 6.296363083562487E-8 5.6745 -9 8.113039426031713E8 7.916367151369114E-8 8.0141 -10 1.2722923343541934E9 1.0080316573242528E-7 11.3248 -11 1.976370354361742E9 1.2966966105032616E-7 16.0086 -12 3.045809853909167E9 1.6819761592881034E-7 22.634 -13 7.6394073549673E7 3.5996949399640574E-9 0.5244 -14 1.16275554813954E8 4.729889793946605E-9 0.7416 -15 1.7407999896319765E8 6.175058860307418E-9 1.0368 -16 2.5940678867435342E8 8.094972459013401E-9 1.4491 -17 3.8614073870973575E8 1.0682532523719954E-8 2.031 -18 5.744844415896372E8 1.4186429518349923E-8 2.8548 -19 8.54011847830041E8 1.8939872182217078E-8 4.0218 -20 1.2680055498810399E9 2.5394171384360973E-8 5.6745 -21 1.8798506092698271E9 3.416537382986333E-8 8.0141 -22 2.7822656676875114E9 4.609591978561712E-8 11.3248 -23 4.1108503543617206E9 6.234118293507942E-8 16.0086 -24 6.063676520575804E9 8.448635976236946E-8 22.634 +1 6474073.549673717 4.247640344059102e-08 0.5244 +2 17395554.81395497 3.161558029519159e-08 0.7416 +3 35839998.96319906 2.999314372480244e-08 1.0368 +4 66193455.34102199 3.172354123502958e-08 1.4491 +5 115340738.7097385 3.576326149931031e-08 2.031 +6 193844441.5896409 4.204341880100384e-08 2.8548 +7 317771847.8300464 5.090090689421547e-08 4.0218 +8 511405549.8810473 6.296363083562487e-08 5.6745 +9 811303942.6031713 7.916367151369114e-08 8.014099999999999 +10 1272292334.354193 1.008031657324253e-07 11.3248 +11 1976370354.361742 1.296696610503262e-07 16.0086 +12 3045809853.909167 1.681976159288103e-07 22.634 +13 76394073.54967301 3.599694939964057e-09 0.5244 +14 116275554.813954 4.729889793946605e-09 0.7416 +15 174079998.9631976 6.175058860307418e-09 1.0368 +16 259406788.6743534 8.094972459013401e-09 1.4491 +17 386140738.7097358 1.068253252371995e-08 2.031 +18 574484441.5896372 1.418642951834992e-08 2.8548 +19 854011847.8300411 1.893987218221708e-08 4.0218 +20 1268005549.88104 2.539417138436097e-08 5.6745 +21 1879850609.269827 3.416537382986333e-08 8.014099999999999 +22 2782265667.687511 4.609591978561712e-08 11.3248 +23 4110850354.361721 6.234118293507942e-08 16.0086 +24 6063676520.575804 8.448635976236946e-08 22.634 -- !sql_test_Double_Decimal128V3_notn_1 -- -1 6474073.5496737175 4.247640344059102E-8 0.5244 -2 1.739555481395497E7 3.161558029519159E-8 0.7416 -3 3.5839998963199064E7 2.999314372480244E-8 1.0368 -4 6.619345534102199E7 3.1723541235029576E-8 1.4491 -5 1.1534073870973846E8 3.576326149931031E-8 2.031 -6 1.9384444158964092E8 4.204341880100384E-8 2.8548 -7 3.177718478300464E8 5.0900906894215465E-8 4.0218 -8 5.114055498810473E8 6.296363083562487E-8 5.6745 -9 8.113039426031713E8 7.916367151369114E-8 8.0141 -10 1.2722923343541934E9 1.0080316573242528E-7 11.3248 -11 1.976370354361742E9 1.2966966105032616E-7 16.0086 -12 3.045809853909167E9 1.6819761592881034E-7 22.634 -13 7.6394073549673E7 3.5996949399640574E-9 0.5244 -14 1.16275554813954E8 4.729889793946605E-9 0.7416 -15 1.7407999896319765E8 6.175058860307418E-9 1.0368 -16 2.5940678867435342E8 8.094972459013401E-9 1.4491 -17 3.8614073870973575E8 1.0682532523719954E-8 2.031 -18 5.744844415896372E8 1.4186429518349923E-8 2.8548 -19 8.54011847830041E8 1.8939872182217078E-8 4.0218 -20 1.2680055498810399E9 2.5394171384360973E-8 5.6745 -21 1.8798506092698271E9 3.416537382986333E-8 8.0141 -22 2.7822656676875114E9 4.609591978561712E-8 11.3248 -23 4.1108503543617206E9 6.234118293507942E-8 16.0086 -24 6.063676520575804E9 8.448635976236946E-8 22.634 +1 6474073.549673717 4.247640344059102e-08 0.5244 +2 17395554.81395497 3.161558029519159e-08 0.7416 +3 35839998.96319906 2.999314372480244e-08 1.0368 +4 66193455.34102199 3.172354123502958e-08 1.4491 +5 115340738.7097385 3.576326149931031e-08 2.031 +6 193844441.5896409 4.204341880100384e-08 2.8548 +7 317771847.8300464 5.090090689421547e-08 4.0218 +8 511405549.8810473 6.296363083562487e-08 5.6745 +9 811303942.6031713 7.916367151369114e-08 8.014099999999999 +10 1272292334.354193 1.008031657324253e-07 11.3248 +11 1976370354.361742 1.296696610503262e-07 16.0086 +12 3045809853.909167 1.681976159288103e-07 22.634 +13 76394073.54967301 3.599694939964057e-09 0.5244 +14 116275554.813954 4.729889793946605e-09 0.7416 +15 174079998.9631976 6.175058860307418e-09 1.0368 +16 259406788.6743534 8.094972459013401e-09 1.4491 +17 386140738.7097358 1.068253252371995e-08 2.031 +18 574484441.5896372 1.418642951834992e-08 2.8548 +19 854011847.8300411 1.893987218221708e-08 4.0218 +20 1268005549.88104 2.539417138436097e-08 5.6745 +21 1879850609.269827 3.416537382986333e-08 8.014099999999999 +22 2782265667.687511 4.609591978561712e-08 11.3248 +23 4110850354.361721 6.234118293507942e-08 16.0086 +24 6063676520.575804 8.448635976236946e-08 22.634 -- !sql_test_Double_Decimal128V3_2 -- \N \N @@ -6161,17 +6161,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.8134 -153.76459999999997 +13 154.8134 -153.7646 14 218.8356 -217.3524 -15 309.3958 -307.32219999999995 +15 309.3958 -307.3222 16 437.4821 -434.5839 17 618.6389999999999 -614.577 18 874.8438 -869.1342000000001 19 1237.1828 -1229.1392 -20 1749.6145000000001 -1738.2655 -21 2474.3080999999997 -2458.2799 -22 3499.1848 -3476.5352000000003 -23 4948.5826 -4916.5653999999995 +20 1749.6145 -1738.2655 +21 2474.3081 -2458.2799 +22 3499.1848 -3476.5352 +23 4948.5826 -4916.565399999999 24 6998.344 -6953.076 -- !sql_test_Double_Char_notn_0 -- @@ -6187,17 +6187,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.8134 -153.76459999999997 +13 154.8134 -153.7646 14 218.8356 -217.3524 -15 309.3958 -307.32219999999995 +15 309.3958 -307.3222 16 437.4821 -434.5839 17 618.6389999999999 -614.577 18 874.8438 -869.1342000000001 19 1237.1828 -1229.1392 -20 1749.6145000000001 -1738.2655 -21 2474.3080999999997 -2458.2799 -22 3499.1848 -3476.5352000000003 -23 4948.5826 -4916.5653999999995 +20 1749.6145 -1738.2655 +21 2474.3081 -2458.2799 +22 3499.1848 -3476.5352 +23 4948.5826 -4916.565399999999 24 6998.344 -6953.076 -- !sql_test_Double_Char_1 -- @@ -6215,17 +6215,17 @@ 11 \N \N \N 12 \N \N \N 13 80.90915159999999 0.003398816506685506 0.5244 -14 161.7385104 0.0034003686483809734 0.7416 -15 319.70661119999994 0.0033623147046137783 1.0368 +14 161.7385104 0.003400368648380973 0.7416 +15 319.7066111999999 0.003362314704613778 1.0368 16 631.8554203 0.003323372313563423 1.4491 -17 1252.330848 0.0032938268721781102 2.031 -18 2489.3541972000003 0.003273894510137169 2.8548 +17 1252.330848 0.00329382687217811 2.031 +18 2489.3541972 0.003273894510137169 2.8548 19 4959.5269098 0.003261374629914504 4.0218 20 9895.98753 0.00325383900822276 5.6745 -21 19765.126745399997 0.0032494503899372904 8.0141 -22 39499.316928 0.0032469193144220236 11.3248 +21 19765.1267454 0.00324945038993729 8.014099999999999 +22 39499.316928 0.003246919314422024 11.3248 23 78963.6041364 0.003245486028187312 16.0086 -24 157888.22014 0.0032446876375308033 22.634 +24 157888.22014 0.003244687637530803 22.634 -- !sql_test_Double_Char_notn_1 -- 1 \N \N \N @@ -6241,17 +6241,17 @@ 11 \N \N \N 12 \N \N \N 13 80.90915159999999 0.003398816506685506 0.5244 -14 161.7385104 0.0034003686483809734 0.7416 -15 319.70661119999994 0.0033623147046137783 1.0368 +14 161.7385104 0.003400368648380973 0.7416 +15 319.7066111999999 0.003362314704613778 1.0368 16 631.8554203 0.003323372313563423 1.4491 -17 1252.330848 0.0032938268721781102 2.031 -18 2489.3541972000003 0.003273894510137169 2.8548 +17 1252.330848 0.00329382687217811 2.031 +18 2489.3541972 0.003273894510137169 2.8548 19 4959.5269098 0.003261374629914504 4.0218 20 9895.98753 0.00325383900822276 5.6745 -21 19765.126745399997 0.0032494503899372904 8.0141 -22 39499.316928 0.0032469193144220236 11.3248 +21 19765.1267454 0.00324945038993729 8.014099999999999 +22 39499.316928 0.003246919314422024 11.3248 23 78963.6041364 0.003245486028187312 16.0086 -24 157888.22014 0.0032446876375308033 22.634 +24 157888.22014 0.003244687637530803 22.634 -- !sql_test_Double_Char_2 -- \N \N @@ -6373,18 +6373,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2319.6454 -2318.5966000000003 -14 3278.8235999999997 -3277.3404 +13 2319.6454 -2318.5966 +14 3278.8236 -3277.3404 15 4635.7778 -4633.7042 16 6555.1371 -6552.2389 17 9269.761 -9265.698999999999 -18 13108.9918 -13103.282200000001 -19 18538.606799999998 -18530.5632 -20 26217.3285 -26205.979499999998 +18 13108.9918 -13103.2822 +19 18538.6068 -18530.5632 +20 26217.3285 -26205.9795 21 37076.7451 -37060.7169 -22 52434.323800000006 -52411.6742 +22 52434.32380000001 -52411.6742 23 74153.2516 -74121.2344 -24 104868.477 -104823.20899999999 +24 104868.477 -104823.209 -- !sql_test_Double_Varchar_notn_0 -- 1 \N \N @@ -6399,18 +6399,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2319.6454 -2318.5966000000003 -14 3278.8235999999997 -3277.3404 +13 2319.6454 -2318.5966 +14 3278.8236 -3277.3404 15 4635.7778 -4633.7042 16 6555.1371 -6552.2389 17 9269.761 -9265.698999999999 -18 13108.9918 -13103.282200000001 -19 18538.606799999998 -18530.5632 -20 26217.3285 -26205.979499999998 +18 13108.9918 -13103.2822 +19 18538.6068 -18530.5632 +20 26217.3285 -26205.9795 21 37076.7451 -37060.7169 -22 52434.323800000006 -52411.6742 +22 52434.32380000001 -52411.6742 23 74153.2516 -74121.2344 -24 104868.477 -104823.20899999999 +24 104868.477 -104823.209 -- !sql_test_Double_Varchar_1 -- \N \N \N \N @@ -6426,18 +6426,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1216.1470524 2.261201550070048E-4 0.5244 -14 2431.0256112 2.262298502599996E-4 0.7416 -15 4805.2994688 2.237018206626864E-4 1.0368 -16 9496.949280800001 2.2111214326956058E-4 1.4491 -17 18822.75963 2.1914751508729757E-4 2.031 -18 37415.399907600004 2.1782162051258886E-4 2.8548 -19 74542.39395299999 2.169889425633215E-4 4.0218 -20 148738.030623 2.164876737652649E-4 5.6745 -21 297072.5171071 2.161956933459632E-4 8.0141 -22 593679.9790752 2.1602732037516586E-4 11.3248 -23 1186833.4682898002 2.1593195743737059E-4 16.0086 -24 2373080.810462 2.1587884986532085E-4 22.634 +13 1216.1470524 0.0002261201550070048 0.5244 +14 2431.0256112 0.0002262298502599996 0.7416 +15 4805.2994688 0.0002237018206626864 1.0368 +16 9496.949280800001 0.0002211121432695606 1.4491 +17 18822.75963 0.0002191475150872976 2.031 +18 37415.3999076 0.0002178216205125889 2.8548 +19 74542.39395299999 0.0002169889425633215 4.0218 +20 148738.030623 0.0002164876737652649 5.6745 +21 297072.5171071 0.0002161956933459632 8.014099999999999 +22 593679.9790752 0.0002160273203751659 11.3248 +23 1186833.4682898 0.0002159319574373706 16.0086 +24 2373080.810462 0.0002158788498653209 22.634 -- !sql_test_Double_Varchar_notn_1 -- 1 \N \N \N @@ -6452,18 +6452,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1216.1470524 2.261201550070048E-4 0.5244 -14 2431.0256112 2.262298502599996E-4 0.7416 -15 4805.2994688 2.237018206626864E-4 1.0368 -16 9496.949280800001 2.2111214326956058E-4 1.4491 -17 18822.75963 2.1914751508729757E-4 2.031 -18 37415.399907600004 2.1782162051258886E-4 2.8548 -19 74542.39395299999 2.169889425633215E-4 4.0218 -20 148738.030623 2.164876737652649E-4 5.6745 -21 297072.5171071 2.161956933459632E-4 8.0141 -22 593679.9790752 2.1602732037516586E-4 11.3248 -23 1186833.4682898002 2.1593195743737059E-4 16.0086 -24 2373080.810462 2.1587884986532085E-4 22.634 +13 1216.1470524 0.0002261201550070048 0.5244 +14 2431.0256112 0.0002262298502599996 0.7416 +15 4805.2994688 0.0002237018206626864 1.0368 +16 9496.949280800001 0.0002211121432695606 1.4491 +17 18822.75963 0.0002191475150872976 2.031 +18 37415.3999076 0.0002178216205125889 2.8548 +19 74542.39395299999 0.0002169889425633215 4.0218 +20 148738.030623 0.0002164876737652649 5.6745 +21 297072.5171071 0.0002161956933459632 8.014099999999999 +22 593679.9790752 0.0002160273203751659 11.3248 +23 1186833.4682898 0.0002159319574373706 16.0086 +24 2373080.810462 0.0002158788498653209 22.634 -- !sql_test_Double_Varchar_2 -- \N \N @@ -6586,17 +6586,17 @@ 11 \N \N 12 \N \N 13 10604.5414 -10603.4926 -14 14989.534599999999 -14988.0514 -15 21193.0498 -21190.976199999997 -16 29967.704100000003 -29964.8059 -17 42378.043000000005 -42373.981 -18 59929.6968 -59923.987199999996 +14 14989.5346 -14988.0514 +15 21193.0498 -21190.9762 +16 29967.7041 -29964.8059 +17 42378.04300000001 -42373.981 +18 59929.6968 -59923.9872 19 84752.03880000001 -84743.9952 -20 119856.52549999999 -119845.1765 +20 119856.5255 -119845.1765 21 169502.0451 -169486.0169 22 239711.6098 -239688.9602 23 339003.0676 -338971.0504 -24 479422.495 -479377.22699999996 +24 479422.495 -479377.227 -- !sql_test_Double_String_notn_0 -- 1 \N \N @@ -6612,17 +6612,17 @@ 11 \N \N 12 \N \N 13 10604.5414 -10603.4926 -14 14989.534599999999 -14988.0514 -15 21193.0498 -21190.976199999997 -16 29967.704100000003 -29964.8059 -17 42378.043000000005 -42373.981 -18 59929.6968 -59923.987199999996 +14 14989.5346 -14988.0514 +15 21193.0498 -21190.9762 +16 29967.7041 -29964.8059 +17 42378.04300000001 -42373.981 +18 59929.6968 -59923.9872 19 84752.03880000001 -84743.9952 -20 119856.52549999999 -119845.1765 +20 119856.5255 -119845.1765 21 169502.0451 -169486.0169 22 239711.6098 -239688.9602 23 339003.0676 -338971.0504 -24 479422.495 -479377.22699999996 +24 479422.495 -479377.227 -- !sql_test_Double_String_1 -- \N \N \N \N @@ -6638,18 +6638,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5560.7465148 4.945295730853694E-5 0.5244 -14 11115.6888888 4.9476965890448954E-5 0.7416 -15 21971.879078399998 4.8924092298357875E-5 1.0368 -16 43424.10012050001 4.8357727717394114E-5 1.4491 -17 86065.68037200002 4.792805892163708E-5 2.031 -18 171079.14854159998 4.763808511718338E-5 2.8548 -19 340839.5747706 4.7455977642521116E-5 4.0218 -20 680093.6539995 4.734634716944981E-5 5.6745 -21 1358342.1138370999 4.728249102766339E-5 8.0141 -22 2714557.787568 4.7245667646995075E-5 11.3248 -23 5426708.232707401 4.722481161146627E-5 16.0086 -24 1.0850736453874E7 4.721319683486517E-5 22.634 +13 5560.7465148 4.945295730853694e-05 0.5244 +14 11115.6888888 4.947696589044895e-05 0.7416 +15 21971.8790784 4.892409229835788e-05 1.0368 +16 43424.10012050001 4.835772771739411e-05 1.4491 +17 86065.68037200002 4.792805892163708e-05 2.031 +18 171079.1485416 4.763808511718338e-05 2.8548 +19 340839.5747706 4.745597764252112e-05 4.0218 +20 680093.6539995 4.734634716944981e-05 5.6745 +21 1358342.1138371 4.728249102766339e-05 8.014099999999999 +22 2714557.787568 4.724566764699508e-05 11.3248 +23 5426708.232707401 4.722481161146627e-05 16.0086 +24 10850736.453874 4.721319683486517e-05 22.634 -- !sql_test_Double_String_notn_1 -- 1 \N \N \N @@ -6664,18 +6664,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5560.7465148 4.945295730853694E-5 0.5244 -14 11115.6888888 4.9476965890448954E-5 0.7416 -15 21971.879078399998 4.8924092298357875E-5 1.0368 -16 43424.10012050001 4.8357727717394114E-5 1.4491 -17 86065.68037200002 4.792805892163708E-5 2.031 -18 171079.14854159998 4.763808511718338E-5 2.8548 -19 340839.5747706 4.7455977642521116E-5 4.0218 -20 680093.6539995 4.734634716944981E-5 5.6745 -21 1358342.1138370999 4.728249102766339E-5 8.0141 -22 2714557.787568 4.7245667646995075E-5 11.3248 -23 5426708.232707401 4.722481161146627E-5 16.0086 -24 1.0850736453874E7 4.721319683486517E-5 22.634 +13 5560.7465148 4.945295730853694e-05 0.5244 +14 11115.6888888 4.947696589044895e-05 0.7416 +15 21971.8790784 4.892409229835788e-05 1.0368 +16 43424.10012050001 4.835772771739411e-05 1.4491 +17 86065.68037200002 4.792805892163708e-05 2.031 +18 171079.1485416 4.763808511718338e-05 2.8548 +19 340839.5747706 4.745597764252112e-05 4.0218 +20 680093.6539995 4.734634716944981e-05 5.6745 +21 1358342.1138371 4.728249102766339e-05 8.014099999999999 +22 2714557.787568 4.724566764699508e-05 11.3248 +23 5426708.232707401 4.722481161146627e-05 16.0086 +24 10850736.453874 4.721319683486517e-05 22.634 -- !sql_test_Double_String_2 -- \N \N @@ -6785,109 +6785,109 @@ -- !sql_test_Double_Date_0 -- \N \N \N -1 2.01203015244E7 -2.01203004756E7 -2 2.01203027416E7 -2.01203012584E7 -3 2.01203040368E7 -2.01203019632E7 -4 2.01203054491E7 -2.01203025509E7 -5 2.0120307031E7 -2.0120302969E7 -6 2.01203088548E7 -2.01203031452E7 -7 2.01203110218E7 -2.01203029782E7 -8 2.01203136745E7 -2.01203023255E7 -9 2.01203170141E7 -2.01203009859E7 -10 2.01203213248E7 -2.01202986752E7 -11 2.01203270086E7 -2.01202949914E7 -12 2.0120334634E7 -2.0120289366E7 -13 2.01203015244E7 -2.01203004756E7 -14 2.01203027416E7 -2.01203012584E7 -15 2.01203040368E7 -2.01203019632E7 -16 2.01203054491E7 -2.01203025509E7 -17 2.0120307031E7 -2.0120302969E7 -18 2.01203088548E7 -2.01203031452E7 -19 2.01203110218E7 -2.01203029782E7 -20 2.01203136745E7 -2.01203023255E7 -21 2.01203170141E7 -2.01203009859E7 -22 2.01203213248E7 -2.01202986752E7 -23 2.01203270086E7 -2.01202949914E7 -24 2.0120334634E7 -2.0120289366E7 +1 20120301.5244 -20120300.4756 +2 20120302.7416 -20120301.2584 +3 20120304.0368 -20120301.9632 +4 20120305.4491 -20120302.5509 +5 20120307.031 -20120302.969 +6 20120308.8548 -20120303.1452 +7 20120311.0218 -20120302.9782 +8 20120313.6745 -20120302.3255 +9 20120317.0141 -20120300.9859 +10 20120321.3248 -20120298.6752 +11 20120327.0086 -20120294.9914 +12 20120334.634 -20120289.366 +13 20120301.5244 -20120300.4756 +14 20120302.7416 -20120301.2584 +15 20120304.0368 -20120301.9632 +16 20120305.4491 -20120302.5509 +17 20120307.031 -20120302.969 +18 20120308.8548 -20120303.1452 +19 20120311.0218 -20120302.9782 +20 20120313.6745 -20120302.3255 +21 20120317.0141 -20120300.9859 +22 20120321.3248 -20120298.6752 +23 20120327.0086 -20120294.9914 +24 20120334.634 -20120289.366 -- !sql_test_Double_Date_notn_0 -- -1 2.01203015244E7 -2.01203004756E7 -2 2.01203027416E7 -2.01203012584E7 -3 2.01203040368E7 -2.01203019632E7 -4 2.01203054491E7 -2.01203025509E7 -5 2.0120307031E7 -2.0120302969E7 -6 2.01203088548E7 -2.01203031452E7 -7 2.01203110218E7 -2.01203029782E7 -8 2.01203136745E7 -2.01203023255E7 -9 2.01203170141E7 -2.01203009859E7 -10 2.01203213248E7 -2.01202986752E7 -11 2.01203270086E7 -2.01202949914E7 -12 2.0120334634E7 -2.0120289366E7 -13 2.01203015244E7 -2.01203004756E7 -14 2.01203027416E7 -2.01203012584E7 -15 2.01203040368E7 -2.01203019632E7 -16 2.01203054491E7 -2.01203025509E7 -17 2.0120307031E7 -2.0120302969E7 -18 2.01203088548E7 -2.01203031452E7 -19 2.01203110218E7 -2.01203029782E7 -20 2.01203136745E7 -2.01203023255E7 -21 2.01203170141E7 -2.01203009859E7 -22 2.01203213248E7 -2.01202986752E7 -23 2.01203270086E7 -2.01202949914E7 -24 2.0120334634E7 -2.0120289366E7 +1 20120301.5244 -20120300.4756 +2 20120302.7416 -20120301.2584 +3 20120304.0368 -20120301.9632 +4 20120305.4491 -20120302.5509 +5 20120307.031 -20120302.969 +6 20120308.8548 -20120303.1452 +7 20120311.0218 -20120302.9782 +8 20120313.6745 -20120302.3255 +9 20120317.0141 -20120300.9859 +10 20120321.3248 -20120298.6752 +11 20120327.0086 -20120294.9914 +12 20120334.634 -20120289.366 +13 20120301.5244 -20120300.4756 +14 20120302.7416 -20120301.2584 +15 20120304.0368 -20120301.9632 +16 20120305.4491 -20120302.5509 +17 20120307.031 -20120302.969 +18 20120308.8548 -20120303.1452 +19 20120311.0218 -20120302.9782 +20 20120313.6745 -20120302.3255 +21 20120317.0141 -20120300.9859 +22 20120321.3248 -20120298.6752 +23 20120327.0086 -20120294.9914 +24 20120334.634 -20120289.366 -- !sql_test_Double_Date_1 -- \N \N \N \N -1 1.05510858444E7 2.6063228378144045E-8 0.5244 -2 1.4921215963200001E7 3.685829367769927E-8 0.7416 -3 2.0860730150399998E7 5.153003908539548E-8 1.0368 -4 2.91563325264E7 7.202177462129797E-8 1.4491 -5 4.0864339455000006E7 1.009428037994454E-7 2.031 -6 5.74394495688E7 1.4188651007594018E-7 2.8548 -7 8.09198506926E7 1.9988760608871426E-7 4.0218 -8 1.14172687746E8 2.8202848584624055E-7 5.6745 -9 1.6124616835689998E8 3.983089921730327E-7 8.0141 -10 2.27858486688E8 5.628541508555285E-7 11.3248 -11 3.220980106746E8 7.956437651485607E-7 16.0086 -12 4.55403141808E8 1.1249328539239351E-6 22.634 -13 1.05510858444E7 2.6063228378144045E-8 0.5244 -14 1.4921215963200001E7 3.685829367769927E-8 0.7416 -15 2.0860730150399998E7 5.153003908539548E-8 1.0368 -16 2.91563325264E7 7.202177462129797E-8 1.4491 -17 4.0864339455000006E7 1.009428037994454E-7 2.031 -18 5.74394495688E7 1.4188651007594018E-7 2.8548 -19 8.09198506926E7 1.9988760608871426E-7 4.0218 -20 1.14172687746E8 2.8202848584624055E-7 5.6745 -21 1.6124616835689998E8 3.983089921730327E-7 8.0141 -22 2.27858486688E8 5.628541508555285E-7 11.3248 -23 3.220980106746E8 7.956437651485607E-7 16.0086 -24 4.55403141808E8 1.1249328539239351E-6 22.634 +1 10551085.8444 2.606322837814405e-08 0.5244 +2 14921215.9632 3.685829367769927e-08 0.7416 +3 20860730.1504 5.153003908539548e-08 1.0368 +4 29156332.5264 7.202177462129797e-08 1.4491 +5 40864339.45500001 1.009428037994454e-07 2.031 +6 57439449.5688 1.418865100759402e-07 2.8548 +7 80919850.6926 1.998876060887143e-07 4.0218 +8 114172687.746 2.820284858462405e-07 5.6745 +9 161246168.3569 3.983089921730327e-07 8.014099999999999 +10 227858486.688 5.628541508555285e-07 11.3248 +11 322098010.6746 7.956437651485607e-07 16.0086 +12 455403141.808 1.124932853923935e-06 22.634 +13 10551085.8444 2.606322837814405e-08 0.5244 +14 14921215.9632 3.685829367769927e-08 0.7416 +15 20860730.1504 5.153003908539548e-08 1.0368 +16 29156332.5264 7.202177462129797e-08 1.4491 +17 40864339.45500001 1.009428037994454e-07 2.031 +18 57439449.5688 1.418865100759402e-07 2.8548 +19 80919850.6926 1.998876060887143e-07 4.0218 +20 114172687.746 2.820284858462405e-07 5.6745 +21 161246168.3569 3.983089921730327e-07 8.014099999999999 +22 227858486.688 5.628541508555285e-07 11.3248 +23 322098010.6746 7.956437651485607e-07 16.0086 +24 455403141.808 1.124932853923935e-06 22.634 -- !sql_test_Double_Date_notn_1 -- -1 1.05510858444E7 2.6063228378144045E-8 0.5244 -2 1.4921215963200001E7 3.685829367769927E-8 0.7416 -3 2.0860730150399998E7 5.153003908539548E-8 1.0368 -4 2.91563325264E7 7.202177462129797E-8 1.4491 -5 4.0864339455000006E7 1.009428037994454E-7 2.031 -6 5.74394495688E7 1.4188651007594018E-7 2.8548 -7 8.09198506926E7 1.9988760608871426E-7 4.0218 -8 1.14172687746E8 2.8202848584624055E-7 5.6745 -9 1.6124616835689998E8 3.983089921730327E-7 8.0141 -10 2.27858486688E8 5.628541508555285E-7 11.3248 -11 3.220980106746E8 7.956437651485607E-7 16.0086 -12 4.55403141808E8 1.1249328539239351E-6 22.634 -13 1.05510858444E7 2.6063228378144045E-8 0.5244 -14 1.4921215963200001E7 3.685829367769927E-8 0.7416 -15 2.0860730150399998E7 5.153003908539548E-8 1.0368 -16 2.91563325264E7 7.202177462129797E-8 1.4491 -17 4.0864339455000006E7 1.009428037994454E-7 2.031 -18 5.74394495688E7 1.4188651007594018E-7 2.8548 -19 8.09198506926E7 1.9988760608871426E-7 4.0218 -20 1.14172687746E8 2.8202848584624055E-7 5.6745 -21 1.6124616835689998E8 3.983089921730327E-7 8.0141 -22 2.27858486688E8 5.628541508555285E-7 11.3248 -23 3.220980106746E8 7.956437651485607E-7 16.0086 -24 4.55403141808E8 1.1249328539239351E-6 22.634 +1 10551085.8444 2.606322837814405e-08 0.5244 +2 14921215.9632 3.685829367769927e-08 0.7416 +3 20860730.1504 5.153003908539548e-08 1.0368 +4 29156332.5264 7.202177462129797e-08 1.4491 +5 40864339.45500001 1.009428037994454e-07 2.031 +6 57439449.5688 1.418865100759402e-07 2.8548 +7 80919850.6926 1.998876060887143e-07 4.0218 +8 114172687.746 2.820284858462405e-07 5.6745 +9 161246168.3569 3.983089921730327e-07 8.014099999999999 +10 227858486.688 5.628541508555285e-07 11.3248 +11 322098010.6746 7.956437651485607e-07 16.0086 +12 455403141.808 1.124932853923935e-06 22.634 +13 10551085.8444 2.606322837814405e-08 0.5244 +14 14921215.9632 3.685829367769927e-08 0.7416 +15 20860730.1504 5.153003908539548e-08 1.0368 +16 29156332.5264 7.202177462129797e-08 1.4491 +17 40864339.45500001 1.009428037994454e-07 2.031 +18 57439449.5688 1.418865100759402e-07 2.8548 +19 80919850.6926 1.998876060887143e-07 4.0218 +20 114172687.746 2.820284858462405e-07 5.6745 +21 161246168.3569 3.983089921730327e-07 8.014099999999999 +22 227858486.688 5.628541508555285e-07 11.3248 +23 322098010.6746 7.956437651485607e-07 16.0086 +24 455403141.808 1.124932853923935e-06 22.634 -- !sql_test_Double_Date_2 -- \N \N @@ -6997,109 +6997,109 @@ -- !sql_test_Double_DateTime_0 -- \N \N \N -1 2.0120301010001523E13 -2.0120301010000477E13 -2 2.0120302020102742E13 -2.0120302020101258E13 -3 2.0120303030204035E13 -2.0120303030201965E13 -4 2.012030404030545E13 -2.012030404030255E13 -5 2.012030505040703E13 -2.012030505040297E13 -6 2.0120306060508855E13 -2.0120306060503145E13 -7 2.0120307070611023E13 -2.0120307070602977E13 -8 2.0120308080713676E13 -2.0120308080702324E13 -9 2.0120309090817016E13 -2.0120309090800984E13 -10 2.0120310100921324E13 -2.0120310100898676E13 -11 2.0120311111027008E13 -2.0120311110994992E13 -12 2.0120312121134633E13 -2.0120312121089367E13 -13 2.0120301010001523E13 -2.0120301010000477E13 -14 2.0120302020102742E13 -2.0120302020101258E13 -15 2.0120303030204035E13 -2.0120303030201965E13 -16 2.012030404030545E13 -2.012030404030255E13 -17 2.012030505040703E13 -2.012030505040297E13 -18 2.0120306060508855E13 -2.0120306060503145E13 -19 2.0120307070611023E13 -2.0120307070602977E13 -20 2.0120308080713676E13 -2.0120308080702324E13 -21 2.0120309090817016E13 -2.0120309090800984E13 -22 2.0120310100921324E13 -2.0120310100898676E13 -23 2.0120311111027008E13 -2.0120311110994992E13 -24 2.0120312121134633E13 -2.0120312121089367E13 +1 20120301010001.52 -20120301010000.48 +2 20120302020102.74 -20120302020101.26 +3 20120303030204.04 -20120303030201.96 +4 20120304040305.45 -20120304040302.55 +5 20120305050407.03 -20120305050402.97 +6 20120306060508.86 -20120306060503.14 +7 20120307070611.02 -20120307070602.98 +8 20120308080713.68 -20120308080702.32 +9 20120309090817.02 -20120309090800.98 +10 20120310100921.32 -20120310100898.68 +11 20120311111027.01 -20120311110994.99 +12 20120312121134.63 -20120312121089.37 +13 20120301010001.52 -20120301010000.48 +14 20120302020102.74 -20120302020101.26 +15 20120303030204.04 -20120303030201.96 +16 20120304040305.45 -20120304040302.55 +17 20120305050407.03 -20120305050402.97 +18 20120306060508.86 -20120306060503.14 +19 20120307070611.02 -20120307070602.98 +20 20120308080713.68 -20120308080702.32 +21 20120309090817.02 -20120309090800.98 +22 20120310100921.32 -20120310100898.68 +23 20120311111027.01 -20120311110994.99 +24 20120312121134.63 -20120312121089.37 -- !sql_test_Double_DateTime_notn_0 -- -1 2.0120301010001523E13 -2.0120301010000477E13 -2 2.0120302020102742E13 -2.0120302020101258E13 -3 2.0120303030204035E13 -2.0120303030201965E13 -4 2.012030404030545E13 -2.012030404030255E13 -5 2.012030505040703E13 -2.012030505040297E13 -6 2.0120306060508855E13 -2.0120306060503145E13 -7 2.0120307070611023E13 -2.0120307070602977E13 -8 2.0120308080713676E13 -2.0120308080702324E13 -9 2.0120309090817016E13 -2.0120309090800984E13 -10 2.0120310100921324E13 -2.0120310100898676E13 -11 2.0120311111027008E13 -2.0120311110994992E13 -12 2.0120312121134633E13 -2.0120312121089367E13 -13 2.0120301010001523E13 -2.0120301010000477E13 -14 2.0120302020102742E13 -2.0120302020101258E13 -15 2.0120303030204035E13 -2.0120303030201965E13 -16 2.012030404030545E13 -2.012030404030255E13 -17 2.012030505040703E13 -2.012030505040297E13 -18 2.0120306060508855E13 -2.0120306060503145E13 -19 2.0120307070611023E13 -2.0120307070602977E13 -20 2.0120308080713676E13 -2.0120308080702324E13 -21 2.0120309090817016E13 -2.0120309090800984E13 -22 2.0120310100921324E13 -2.0120310100898676E13 -23 2.0120311111027008E13 -2.0120311110994992E13 -24 2.0120312121134633E13 -2.0120312121089367E13 +1 20120301010001.52 -20120301010000.48 +2 20120302020102.74 -20120302020101.26 +3 20120303030204.04 -20120303030201.96 +4 20120304040305.45 -20120304040302.55 +5 20120305050407.03 -20120305050402.97 +6 20120306060508.86 -20120306060503.14 +7 20120307070611.02 -20120307070602.98 +8 20120308080713.68 -20120308080702.32 +9 20120309090817.02 -20120309090800.98 +10 20120310100921.32 -20120310100898.68 +11 20120311111027.01 -20120311110994.99 +12 20120312121134.63 -20120312121089.37 +13 20120301010001.52 -20120301010000.48 +14 20120302020102.74 -20120302020101.26 +15 20120303030204.04 -20120303030201.96 +16 20120304040305.45 -20120304040302.55 +17 20120305050407.03 -20120305050402.97 +18 20120306060508.86 -20120306060503.14 +19 20120307070611.02 -20120307070602.98 +20 20120308080713.68 -20120308080702.32 +21 20120309090817.02 -20120309090800.98 +22 20120310100921.32 -20120310100898.68 +23 20120311111027.01 -20120311110994.99 +24 20120312121134.63 -20120312121089.37 -- !sql_test_Double_DateTime_1 -- \N \N \N \N -1 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -2 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -3 2.086073018171447E13 5.153003900804268E-14 1.0368 -4 2.9156332584804527E13 7.202177447702751E-14 1.4491 -5 4.0864339557372555E13 1.0094280354656542E-13 2.031 -6 5.743944974153253E13 1.4188650964925757E-13 2.8548 -7 8.091985097656723E13 1.9988760538726052E-13 4.0218 -8 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -9 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -10 2.2785848783078556E14 5.628541480326291E-13 11.3248 -11 3.2209801245173075E14 7.956437607587075E-13 16.0086 -12 4.55403144549249E14 1.124932847152526E-12 22.634 -13 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -14 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -15 2.086073018171447E13 5.153003900804268E-14 1.0368 -16 2.9156332584804527E13 7.202177447702751E-14 1.4491 -17 4.0864339557372555E13 1.0094280354656542E-13 2.031 -18 5.743944974153253E13 1.4188650964925757E-13 2.8548 -19 8.091985097656723E13 1.9988760538726052E-13 4.0218 -20 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -21 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -22 2.2785848783078556E14 5.628541480326291E-13 11.3248 -23 3.2209801245173075E14 7.956437607587075E-13 16.0086 -24 4.55403144549249E14 1.124932847152526E-12 22.634 +1 10551085849644.52 2.606322836518905e-14 0.5244 +2 14921215978107.64 3.68582936408745e-14 0.7416 +3 20860730181714.47 5.153003900804268e-14 1.0368 +4 29156332584804.53 7.202177447702751e-14 1.4491 +5 40864339557372.55 1.009428035465654e-13 2.031 +6 57439449741532.53 1.418865096492576e-13 2.8548 +7 80919850976567.23 1.998876053872605e-13 4.0218 +8 114172688203977.5 2.82028484714948e-13 5.6745 +9 161246169084652.4 3.983089903753446e-13 8.014099999999999 +10 227858487830785.6 5.628541480326291e-13 11.3248 +11 322098012451730.8 7.956437607587075e-13 16.0086 +12 455403144549249 1.124932847152526e-12 22.634 +13 10551085849644.52 2.606322836518905e-14 0.5244 +14 14921215978107.64 3.68582936408745e-14 0.7416 +15 20860730181714.47 5.153003900804268e-14 1.0368 +16 29156332584804.53 7.202177447702751e-14 1.4491 +17 40864339557372.55 1.009428035465654e-13 2.031 +18 57439449741532.53 1.418865096492576e-13 2.8548 +19 80919850976567.23 1.998876053872605e-13 4.0218 +20 114172688203977.5 2.82028484714948e-13 5.6745 +21 161246169084652.4 3.983089903753446e-13 8.014099999999999 +22 227858487830785.6 5.628541480326291e-13 11.3248 +23 322098012451730.8 7.956437607587075e-13 16.0086 +24 455403144549249 1.124932847152526e-12 22.634 -- !sql_test_Double_DateTime_notn_1 -- -1 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -2 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -3 2.086073018171447E13 5.153003900804268E-14 1.0368 -4 2.9156332584804527E13 7.202177447702751E-14 1.4491 -5 4.0864339557372555E13 1.0094280354656542E-13 2.031 -6 5.743944974153253E13 1.4188650964925757E-13 2.8548 -7 8.091985097656723E13 1.9988760538726052E-13 4.0218 -8 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -9 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -10 2.2785848783078556E14 5.628541480326291E-13 11.3248 -11 3.2209801245173075E14 7.956437607587075E-13 16.0086 -12 4.55403144549249E14 1.124932847152526E-12 22.634 -13 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -14 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -15 2.086073018171447E13 5.153003900804268E-14 1.0368 -16 2.9156332584804527E13 7.202177447702751E-14 1.4491 -17 4.0864339557372555E13 1.0094280354656542E-13 2.031 -18 5.743944974153253E13 1.4188650964925757E-13 2.8548 -19 8.091985097656723E13 1.9988760538726052E-13 4.0218 -20 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -21 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -22 2.2785848783078556E14 5.628541480326291E-13 11.3248 -23 3.2209801245173075E14 7.956437607587075E-13 16.0086 -24 4.55403144549249E14 1.124932847152526E-12 22.634 +1 10551085849644.52 2.606322836518905e-14 0.5244 +2 14921215978107.64 3.68582936408745e-14 0.7416 +3 20860730181714.47 5.153003900804268e-14 1.0368 +4 29156332584804.53 7.202177447702751e-14 1.4491 +5 40864339557372.55 1.009428035465654e-13 2.031 +6 57439449741532.53 1.418865096492576e-13 2.8548 +7 80919850976567.23 1.998876053872605e-13 4.0218 +8 114172688203977.5 2.82028484714948e-13 5.6745 +9 161246169084652.4 3.983089903753446e-13 8.014099999999999 +10 227858487830785.6 5.628541480326291e-13 11.3248 +11 322098012451730.8 7.956437607587075e-13 16.0086 +12 455403144549249 1.124932847152526e-12 22.634 +13 10551085849644.52 2.606322836518905e-14 0.5244 +14 14921215978107.64 3.68582936408745e-14 0.7416 +15 20860730181714.47 5.153003900804268e-14 1.0368 +16 29156332584804.53 7.202177447702751e-14 1.4491 +17 40864339557372.55 1.009428035465654e-13 2.031 +18 57439449741532.53 1.418865096492576e-13 2.8548 +19 80919850976567.23 1.998876053872605e-13 4.0218 +20 114172688203977.5 2.82028484714948e-13 5.6745 +21 161246169084652.4 3.983089903753446e-13 8.014099999999999 +22 227858487830785.6 5.628541480326291e-13 11.3248 +23 322098012451730.8 7.956437607587075e-13 16.0086 +24 455403144549249 1.124932847152526e-12 22.634 -- !sql_test_Double_DateTime_2 -- \N \N @@ -7209,109 +7209,109 @@ -- !sql_test_Double_DateV2_0 -- \N \N \N -1 2.01203015244E7 -2.01203004756E7 -2 2.01203027416E7 -2.01203012584E7 -3 2.01203040368E7 -2.01203019632E7 -4 2.01203054491E7 -2.01203025509E7 -5 2.0120307031E7 -2.0120302969E7 -6 2.01203088548E7 -2.01203031452E7 -7 2.01203110218E7 -2.01203029782E7 -8 2.01203136745E7 -2.01203023255E7 -9 2.01203170141E7 -2.01203009859E7 -10 2.01203213248E7 -2.01202986752E7 -11 2.01203270086E7 -2.01202949914E7 -12 2.0120334634E7 -2.0120289366E7 -13 2.01203015244E7 -2.01203004756E7 -14 2.01203027416E7 -2.01203012584E7 -15 2.01203040368E7 -2.01203019632E7 -16 2.01203054491E7 -2.01203025509E7 -17 2.0120307031E7 -2.0120302969E7 -18 2.01203088548E7 -2.01203031452E7 -19 2.01203110218E7 -2.01203029782E7 -20 2.01203136745E7 -2.01203023255E7 -21 2.01203170141E7 -2.01203009859E7 -22 2.01203213248E7 -2.01202986752E7 -23 2.01203270086E7 -2.01202949914E7 -24 2.0120334634E7 -2.0120289366E7 +1 20120301.5244 -20120300.4756 +2 20120302.7416 -20120301.2584 +3 20120304.0368 -20120301.9632 +4 20120305.4491 -20120302.5509 +5 20120307.031 -20120302.969 +6 20120308.8548 -20120303.1452 +7 20120311.0218 -20120302.9782 +8 20120313.6745 -20120302.3255 +9 20120317.0141 -20120300.9859 +10 20120321.3248 -20120298.6752 +11 20120327.0086 -20120294.9914 +12 20120334.634 -20120289.366 +13 20120301.5244 -20120300.4756 +14 20120302.7416 -20120301.2584 +15 20120304.0368 -20120301.9632 +16 20120305.4491 -20120302.5509 +17 20120307.031 -20120302.969 +18 20120308.8548 -20120303.1452 +19 20120311.0218 -20120302.9782 +20 20120313.6745 -20120302.3255 +21 20120317.0141 -20120300.9859 +22 20120321.3248 -20120298.6752 +23 20120327.0086 -20120294.9914 +24 20120334.634 -20120289.366 -- !sql_test_Double_DateV2_notn_0 -- -1 2.01203015244E7 -2.01203004756E7 -2 2.01203027416E7 -2.01203012584E7 -3 2.01203040368E7 -2.01203019632E7 -4 2.01203054491E7 -2.01203025509E7 -5 2.0120307031E7 -2.0120302969E7 -6 2.01203088548E7 -2.01203031452E7 -7 2.01203110218E7 -2.01203029782E7 -8 2.01203136745E7 -2.01203023255E7 -9 2.01203170141E7 -2.01203009859E7 -10 2.01203213248E7 -2.01202986752E7 -11 2.01203270086E7 -2.01202949914E7 -12 2.0120334634E7 -2.0120289366E7 -13 2.01203015244E7 -2.01203004756E7 -14 2.01203027416E7 -2.01203012584E7 -15 2.01203040368E7 -2.01203019632E7 -16 2.01203054491E7 -2.01203025509E7 -17 2.0120307031E7 -2.0120302969E7 -18 2.01203088548E7 -2.01203031452E7 -19 2.01203110218E7 -2.01203029782E7 -20 2.01203136745E7 -2.01203023255E7 -21 2.01203170141E7 -2.01203009859E7 -22 2.01203213248E7 -2.01202986752E7 -23 2.01203270086E7 -2.01202949914E7 -24 2.0120334634E7 -2.0120289366E7 +1 20120301.5244 -20120300.4756 +2 20120302.7416 -20120301.2584 +3 20120304.0368 -20120301.9632 +4 20120305.4491 -20120302.5509 +5 20120307.031 -20120302.969 +6 20120308.8548 -20120303.1452 +7 20120311.0218 -20120302.9782 +8 20120313.6745 -20120302.3255 +9 20120317.0141 -20120300.9859 +10 20120321.3248 -20120298.6752 +11 20120327.0086 -20120294.9914 +12 20120334.634 -20120289.366 +13 20120301.5244 -20120300.4756 +14 20120302.7416 -20120301.2584 +15 20120304.0368 -20120301.9632 +16 20120305.4491 -20120302.5509 +17 20120307.031 -20120302.969 +18 20120308.8548 -20120303.1452 +19 20120311.0218 -20120302.9782 +20 20120313.6745 -20120302.3255 +21 20120317.0141 -20120300.9859 +22 20120321.3248 -20120298.6752 +23 20120327.0086 -20120294.9914 +24 20120334.634 -20120289.366 -- !sql_test_Double_DateV2_1 -- \N \N \N \N -1 1.05510858444E7 2.6063228378144045E-8 0.5244 -2 1.4921215963200001E7 3.685829367769927E-8 0.7416 -3 2.0860730150399998E7 5.153003908539548E-8 1.0368 -4 2.91563325264E7 7.202177462129797E-8 1.4491 -5 4.0864339455000006E7 1.009428037994454E-7 2.031 -6 5.74394495688E7 1.4188651007594018E-7 2.8548 -7 8.09198506926E7 1.9988760608871426E-7 4.0218 -8 1.14172687746E8 2.8202848584624055E-7 5.6745 -9 1.6124616835689998E8 3.983089921730327E-7 8.0141 -10 2.27858486688E8 5.628541508555285E-7 11.3248 -11 3.220980106746E8 7.956437651485607E-7 16.0086 -12 4.55403141808E8 1.1249328539239351E-6 22.634 -13 1.05510858444E7 2.6063228378144045E-8 0.5244 -14 1.4921215963200001E7 3.685829367769927E-8 0.7416 -15 2.0860730150399998E7 5.153003908539548E-8 1.0368 -16 2.91563325264E7 7.202177462129797E-8 1.4491 -17 4.0864339455000006E7 1.009428037994454E-7 2.031 -18 5.74394495688E7 1.4188651007594018E-7 2.8548 -19 8.09198506926E7 1.9988760608871426E-7 4.0218 -20 1.14172687746E8 2.8202848584624055E-7 5.6745 -21 1.6124616835689998E8 3.983089921730327E-7 8.0141 -22 2.27858486688E8 5.628541508555285E-7 11.3248 -23 3.220980106746E8 7.956437651485607E-7 16.0086 -24 4.55403141808E8 1.1249328539239351E-6 22.634 +1 10551085.8444 2.606322837814405e-08 0.5244 +2 14921215.9632 3.685829367769927e-08 0.7416 +3 20860730.1504 5.153003908539548e-08 1.0368 +4 29156332.5264 7.202177462129797e-08 1.4491 +5 40864339.45500001 1.009428037994454e-07 2.031 +6 57439449.5688 1.418865100759402e-07 2.8548 +7 80919850.6926 1.998876060887143e-07 4.0218 +8 114172687.746 2.820284858462405e-07 5.6745 +9 161246168.3569 3.983089921730327e-07 8.014099999999999 +10 227858486.688 5.628541508555285e-07 11.3248 +11 322098010.6746 7.956437651485607e-07 16.0086 +12 455403141.808 1.124932853923935e-06 22.634 +13 10551085.8444 2.606322837814405e-08 0.5244 +14 14921215.9632 3.685829367769927e-08 0.7416 +15 20860730.1504 5.153003908539548e-08 1.0368 +16 29156332.5264 7.202177462129797e-08 1.4491 +17 40864339.45500001 1.009428037994454e-07 2.031 +18 57439449.5688 1.418865100759402e-07 2.8548 +19 80919850.6926 1.998876060887143e-07 4.0218 +20 114172687.746 2.820284858462405e-07 5.6745 +21 161246168.3569 3.983089921730327e-07 8.014099999999999 +22 227858486.688 5.628541508555285e-07 11.3248 +23 322098010.6746 7.956437651485607e-07 16.0086 +24 455403141.808 1.124932853923935e-06 22.634 -- !sql_test_Double_DateV2_notn_1 -- -1 1.05510858444E7 2.6063228378144045E-8 0.5244 -2 1.4921215963200001E7 3.685829367769927E-8 0.7416 -3 2.0860730150399998E7 5.153003908539548E-8 1.0368 -4 2.91563325264E7 7.202177462129797E-8 1.4491 -5 4.0864339455000006E7 1.009428037994454E-7 2.031 -6 5.74394495688E7 1.4188651007594018E-7 2.8548 -7 8.09198506926E7 1.9988760608871426E-7 4.0218 -8 1.14172687746E8 2.8202848584624055E-7 5.6745 -9 1.6124616835689998E8 3.983089921730327E-7 8.0141 -10 2.27858486688E8 5.628541508555285E-7 11.3248 -11 3.220980106746E8 7.956437651485607E-7 16.0086 -12 4.55403141808E8 1.1249328539239351E-6 22.634 -13 1.05510858444E7 2.6063228378144045E-8 0.5244 -14 1.4921215963200001E7 3.685829367769927E-8 0.7416 -15 2.0860730150399998E7 5.153003908539548E-8 1.0368 -16 2.91563325264E7 7.202177462129797E-8 1.4491 -17 4.0864339455000006E7 1.009428037994454E-7 2.031 -18 5.74394495688E7 1.4188651007594018E-7 2.8548 -19 8.09198506926E7 1.9988760608871426E-7 4.0218 -20 1.14172687746E8 2.8202848584624055E-7 5.6745 -21 1.6124616835689998E8 3.983089921730327E-7 8.0141 -22 2.27858486688E8 5.628541508555285E-7 11.3248 -23 3.220980106746E8 7.956437651485607E-7 16.0086 -24 4.55403141808E8 1.1249328539239351E-6 22.634 +1 10551085.8444 2.606322837814405e-08 0.5244 +2 14921215.9632 3.685829367769927e-08 0.7416 +3 20860730.1504 5.153003908539548e-08 1.0368 +4 29156332.5264 7.202177462129797e-08 1.4491 +5 40864339.45500001 1.009428037994454e-07 2.031 +6 57439449.5688 1.418865100759402e-07 2.8548 +7 80919850.6926 1.998876060887143e-07 4.0218 +8 114172687.746 2.820284858462405e-07 5.6745 +9 161246168.3569 3.983089921730327e-07 8.014099999999999 +10 227858486.688 5.628541508555285e-07 11.3248 +11 322098010.6746 7.956437651485607e-07 16.0086 +12 455403141.808 1.124932853923935e-06 22.634 +13 10551085.8444 2.606322837814405e-08 0.5244 +14 14921215.9632 3.685829367769927e-08 0.7416 +15 20860730.1504 5.153003908539548e-08 1.0368 +16 29156332.5264 7.202177462129797e-08 1.4491 +17 40864339.45500001 1.009428037994454e-07 2.031 +18 57439449.5688 1.418865100759402e-07 2.8548 +19 80919850.6926 1.998876060887143e-07 4.0218 +20 114172687.746 2.820284858462405e-07 5.6745 +21 161246168.3569 3.983089921730327e-07 8.014099999999999 +22 227858486.688 5.628541508555285e-07 11.3248 +23 322098010.6746 7.956437651485607e-07 16.0086 +24 455403141.808 1.124932853923935e-06 22.634 -- !sql_test_Double_DateV2_2 -- \N \N @@ -7421,109 +7421,109 @@ -- !sql_test_Double_DateTimeV2_0 -- \N \N \N -1 2.0120301010001523E13 -2.0120301010000477E13 -2 2.0120302020102742E13 -2.0120302020101258E13 -3 2.0120303030204035E13 -2.0120303030201965E13 -4 2.012030404030545E13 -2.012030404030255E13 -5 2.012030505040703E13 -2.012030505040297E13 -6 2.0120306060508855E13 -2.0120306060503145E13 -7 2.0120307070611023E13 -2.0120307070602977E13 -8 2.0120308080713676E13 -2.0120308080702324E13 -9 2.0120309090817016E13 -2.0120309090800984E13 -10 2.0120310100921324E13 -2.0120310100898676E13 -11 2.0120311111027008E13 -2.0120311110994992E13 -12 2.0120312121134633E13 -2.0120312121089367E13 -13 2.0120301010001523E13 -2.0120301010000477E13 -14 2.0120302020102742E13 -2.0120302020101258E13 -15 2.0120303030204035E13 -2.0120303030201965E13 -16 2.012030404030545E13 -2.012030404030255E13 -17 2.012030505040703E13 -2.012030505040297E13 -18 2.0120306060508855E13 -2.0120306060503145E13 -19 2.0120307070611023E13 -2.0120307070602977E13 -20 2.0120308080713676E13 -2.0120308080702324E13 -21 2.0120309090817016E13 -2.0120309090800984E13 -22 2.0120310100921324E13 -2.0120310100898676E13 -23 2.0120311111027008E13 -2.0120311110994992E13 -24 2.0120312121134633E13 -2.0120312121089367E13 +1 20120301010001.52 -20120301010000.48 +2 20120302020102.74 -20120302020101.26 +3 20120303030204.04 -20120303030201.96 +4 20120304040305.45 -20120304040302.55 +5 20120305050407.03 -20120305050402.97 +6 20120306060508.86 -20120306060503.14 +7 20120307070611.02 -20120307070602.98 +8 20120308080713.68 -20120308080702.32 +9 20120309090817.02 -20120309090800.98 +10 20120310100921.32 -20120310100898.68 +11 20120311111027.01 -20120311110994.99 +12 20120312121134.63 -20120312121089.37 +13 20120301010001.52 -20120301010000.48 +14 20120302020102.74 -20120302020101.26 +15 20120303030204.04 -20120303030201.96 +16 20120304040305.45 -20120304040302.55 +17 20120305050407.03 -20120305050402.97 +18 20120306060508.86 -20120306060503.14 +19 20120307070611.02 -20120307070602.98 +20 20120308080713.68 -20120308080702.32 +21 20120309090817.02 -20120309090800.98 +22 20120310100921.32 -20120310100898.68 +23 20120311111027.01 -20120311110994.99 +24 20120312121134.63 -20120312121089.37 -- !sql_test_Double_DateTimeV2_notn_0 -- -1 2.0120301010001523E13 -2.0120301010000477E13 -2 2.0120302020102742E13 -2.0120302020101258E13 -3 2.0120303030204035E13 -2.0120303030201965E13 -4 2.012030404030545E13 -2.012030404030255E13 -5 2.012030505040703E13 -2.012030505040297E13 -6 2.0120306060508855E13 -2.0120306060503145E13 -7 2.0120307070611023E13 -2.0120307070602977E13 -8 2.0120308080713676E13 -2.0120308080702324E13 -9 2.0120309090817016E13 -2.0120309090800984E13 -10 2.0120310100921324E13 -2.0120310100898676E13 -11 2.0120311111027008E13 -2.0120311110994992E13 -12 2.0120312121134633E13 -2.0120312121089367E13 -13 2.0120301010001523E13 -2.0120301010000477E13 -14 2.0120302020102742E13 -2.0120302020101258E13 -15 2.0120303030204035E13 -2.0120303030201965E13 -16 2.012030404030545E13 -2.012030404030255E13 -17 2.012030505040703E13 -2.012030505040297E13 -18 2.0120306060508855E13 -2.0120306060503145E13 -19 2.0120307070611023E13 -2.0120307070602977E13 -20 2.0120308080713676E13 -2.0120308080702324E13 -21 2.0120309090817016E13 -2.0120309090800984E13 -22 2.0120310100921324E13 -2.0120310100898676E13 -23 2.0120311111027008E13 -2.0120311110994992E13 -24 2.0120312121134633E13 -2.0120312121089367E13 +1 20120301010001.52 -20120301010000.48 +2 20120302020102.74 -20120302020101.26 +3 20120303030204.04 -20120303030201.96 +4 20120304040305.45 -20120304040302.55 +5 20120305050407.03 -20120305050402.97 +6 20120306060508.86 -20120306060503.14 +7 20120307070611.02 -20120307070602.98 +8 20120308080713.68 -20120308080702.32 +9 20120309090817.02 -20120309090800.98 +10 20120310100921.32 -20120310100898.68 +11 20120311111027.01 -20120311110994.99 +12 20120312121134.63 -20120312121089.37 +13 20120301010001.52 -20120301010000.48 +14 20120302020102.74 -20120302020101.26 +15 20120303030204.04 -20120303030201.96 +16 20120304040305.45 -20120304040302.55 +17 20120305050407.03 -20120305050402.97 +18 20120306060508.86 -20120306060503.14 +19 20120307070611.02 -20120307070602.98 +20 20120308080713.68 -20120308080702.32 +21 20120309090817.02 -20120309090800.98 +22 20120310100921.32 -20120310100898.68 +23 20120311111027.01 -20120311110994.99 +24 20120312121134.63 -20120312121089.37 -- !sql_test_Double_DateTimeV2_1 -- \N \N \N \N -1 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -2 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -3 2.086073018171447E13 5.153003900804268E-14 1.0368 -4 2.9156332584804527E13 7.202177447702751E-14 1.4491 -5 4.0864339557372555E13 1.0094280354656542E-13 2.031 -6 5.743944974153253E13 1.4188650964925757E-13 2.8548 -7 8.091985097656723E13 1.9988760538726052E-13 4.0218 -8 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -9 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -10 2.2785848783078556E14 5.628541480326291E-13 11.3248 -11 3.2209801245173075E14 7.956437607587075E-13 16.0086 -12 4.55403144549249E14 1.124932847152526E-12 22.634 -13 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -14 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -15 2.086073018171447E13 5.153003900804268E-14 1.0368 -16 2.9156332584804527E13 7.202177447702751E-14 1.4491 -17 4.0864339557372555E13 1.0094280354656542E-13 2.031 -18 5.743944974153253E13 1.4188650964925757E-13 2.8548 -19 8.091985097656723E13 1.9988760538726052E-13 4.0218 -20 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -21 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -22 2.2785848783078556E14 5.628541480326291E-13 11.3248 -23 3.2209801245173075E14 7.956437607587075E-13 16.0086 -24 4.55403144549249E14 1.124932847152526E-12 22.634 +1 10551085849644.52 2.606322836518905e-14 0.5244 +2 14921215978107.64 3.68582936408745e-14 0.7416 +3 20860730181714.47 5.153003900804268e-14 1.0368 +4 29156332584804.53 7.202177447702751e-14 1.4491 +5 40864339557372.55 1.009428035465654e-13 2.031 +6 57439449741532.53 1.418865096492576e-13 2.8548 +7 80919850976567.23 1.998876053872605e-13 4.0218 +8 114172688203977.5 2.82028484714948e-13 5.6745 +9 161246169084652.4 3.983089903753446e-13 8.014099999999999 +10 227858487830785.6 5.628541480326291e-13 11.3248 +11 322098012451730.8 7.956437607587075e-13 16.0086 +12 455403144549249 1.124932847152526e-12 22.634 +13 10551085849644.52 2.606322836518905e-14 0.5244 +14 14921215978107.64 3.68582936408745e-14 0.7416 +15 20860730181714.47 5.153003900804268e-14 1.0368 +16 29156332584804.53 7.202177447702751e-14 1.4491 +17 40864339557372.55 1.009428035465654e-13 2.031 +18 57439449741532.53 1.418865096492576e-13 2.8548 +19 80919850976567.23 1.998876053872605e-13 4.0218 +20 114172688203977.5 2.82028484714948e-13 5.6745 +21 161246169084652.4 3.983089903753446e-13 8.014099999999999 +22 227858487830785.6 5.628541480326291e-13 11.3248 +23 322098012451730.8 7.956437607587075e-13 16.0086 +24 455403144549249 1.124932847152526e-12 22.634 -- !sql_test_Double_DateTimeV2_notn_1 -- -1 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -2 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -3 2.086073018171447E13 5.153003900804268E-14 1.0368 -4 2.9156332584804527E13 7.202177447702751E-14 1.4491 -5 4.0864339557372555E13 1.0094280354656542E-13 2.031 -6 5.743944974153253E13 1.4188650964925757E-13 2.8548 -7 8.091985097656723E13 1.9988760538726052E-13 4.0218 -8 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -9 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -10 2.2785848783078556E14 5.628541480326291E-13 11.3248 -11 3.2209801245173075E14 7.956437607587075E-13 16.0086 -12 4.55403144549249E14 1.124932847152526E-12 22.634 -13 1.0551085849644523E13 2.6063228365189052E-14 0.5244 -14 1.4921215978107645E13 3.6858293640874504E-14 0.7416 -15 2.086073018171447E13 5.153003900804268E-14 1.0368 -16 2.9156332584804527E13 7.202177447702751E-14 1.4491 -17 4.0864339557372555E13 1.0094280354656542E-13 2.031 -18 5.743944974153253E13 1.4188650964925757E-13 2.8548 -19 8.091985097656723E13 1.9988760538726052E-13 4.0218 -20 1.1417268820397755E14 2.8202848471494795E-13 5.6745 -21 1.6124616908465238E14 3.9830899037534455E-13 8.0141 -22 2.2785848783078556E14 5.628541480326291E-13 11.3248 -23 3.2209801245173075E14 7.956437607587075E-13 16.0086 -24 4.55403144549249E14 1.124932847152526E-12 22.634 +1 10551085849644.52 2.606322836518905e-14 0.5244 +2 14921215978107.64 3.68582936408745e-14 0.7416 +3 20860730181714.47 5.153003900804268e-14 1.0368 +4 29156332584804.53 7.202177447702751e-14 1.4491 +5 40864339557372.55 1.009428035465654e-13 2.031 +6 57439449741532.53 1.418865096492576e-13 2.8548 +7 80919850976567.23 1.998876053872605e-13 4.0218 +8 114172688203977.5 2.82028484714948e-13 5.6745 +9 161246169084652.4 3.983089903753446e-13 8.014099999999999 +10 227858487830785.6 5.628541480326291e-13 11.3248 +11 322098012451730.8 7.956437607587075e-13 16.0086 +12 455403144549249 1.124932847152526e-12 22.634 +13 10551085849644.52 2.606322836518905e-14 0.5244 +14 14921215978107.64 3.68582936408745e-14 0.7416 +15 20860730181714.47 5.153003900804268e-14 1.0368 +16 29156332584804.53 7.202177447702751e-14 1.4491 +17 40864339557372.55 1.009428035465654e-13 2.031 +18 57439449741532.53 1.418865096492576e-13 2.8548 +19 80919850976567.23 1.998876053872605e-13 4.0218 +20 114172688203977.5 2.82028484714948e-13 5.6745 +21 161246169084652.4 3.983089903753446e-13 8.014099999999999 +22 227858487830785.6 5.628541480326291e-13 11.3248 +23 322098012451730.8 7.956437607587075e-13 16.0086 +24 455403144549249 1.124932847152526e-12 22.634 -- !sql_test_Double_DateTimeV2_2 -- \N \N @@ -7641,9 +7641,9 @@ 6 2.8548 2.8548 7 4.0218 4.0218 8 6.6745 4.6745 -9 9.0141 7.014099999999999 +9 9.014099999999999 7.014099999999999 10 12.3248 10.3248 -11 17.0086 15.008600000000001 +11 17.0086 15.0086 12 23.634 21.634 13 0.5244 0.5244 14 0.7416 0.7416 @@ -7653,9 +7653,9 @@ 18 2.8548 2.8548 19 4.0218 4.0218 20 6.6745 4.6745 -21 9.0141 7.014099999999999 +21 9.014099999999999 7.014099999999999 22 12.3248 10.3248 -23 17.0086 15.008600000000001 +23 17.0086 15.0086 24 23.634 21.634 -- !sql_test_Double_Boolean_notn_0 -- @@ -7667,9 +7667,9 @@ 6 2.8548 2.8548 7 4.0218 4.0218 8 6.6745 4.6745 -9 9.0141 7.014099999999999 +9 9.014099999999999 7.014099999999999 10 12.3248 10.3248 -11 17.0086 15.008600000000001 +11 17.0086 15.0086 12 23.634 21.634 13 0.5244 0.5244 14 0.7416 0.7416 @@ -7679,61 +7679,61 @@ 18 2.8548 2.8548 19 4.0218 4.0218 20 6.6745 4.6745 -21 9.0141 7.014099999999999 +21 9.014099999999999 7.014099999999999 22 12.3248 10.3248 -23 17.0086 15.008600000000001 +23 17.0086 15.0086 24 23.634 21.634 -- !sql_test_Double_Boolean_1 -- \N \N \N \N -1 0.0 \N \N -2 0.0 \N \N -3 0.0 \N \N -4 0.0 \N \N -5 0.0 \N \N -6 0.0 \N \N -7 0.0 \N \N +1 0 \N \N +2 0 \N \N +3 0 \N \N +4 0 \N \N +5 0 \N \N +6 0 \N \N +7 0 \N \N 8 5.6745 5.6745 0.6745000000000001 -9 8.0141 8.0141 0.014099999999999113 -10 11.3248 11.3248 0.32479999999999976 +9 8.014099999999999 8.014099999999999 0.01409999999999911 +10 11.3248 11.3248 0.3247999999999998 11 16.0086 16.0086 0.008600000000001273 12 22.634 22.634 0.6340000000000003 -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 5.6745 5.6745 0.6745000000000001 -21 8.0141 8.0141 0.014099999999999113 -22 11.3248 11.3248 0.32479999999999976 +21 8.014099999999999 8.014099999999999 0.01409999999999911 +22 11.3248 11.3248 0.3247999999999998 23 16.0086 16.0086 0.008600000000001273 24 22.634 22.634 0.6340000000000003 -- !sql_test_Double_Boolean_notn_1 -- -1 0.0 \N \N -2 0.0 \N \N -3 0.0 \N \N -4 0.0 \N \N -5 0.0 \N \N -6 0.0 \N \N -7 0.0 \N \N +1 0 \N \N +2 0 \N \N +3 0 \N \N +4 0 \N \N +5 0 \N \N +6 0 \N \N +7 0 \N \N 8 5.6745 5.6745 0.6745000000000001 -9 8.0141 8.0141 0.014099999999999113 -10 11.3248 11.3248 0.32479999999999976 +9 8.014099999999999 8.014099999999999 0.01409999999999911 +10 11.3248 11.3248 0.3247999999999998 11 16.0086 16.0086 0.008600000000001273 12 22.634 22.634 0.6340000000000003 -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 5.6745 5.6745 0.6745000000000001 -21 8.0141 8.0141 0.014099999999999113 -22 11.3248 11.3248 0.32479999999999976 +21 8.014099999999999 8.014099999999999 0.01409999999999911 +22 11.3248 11.3248 0.3247999999999998 23 16.0086 16.0086 0.008600000000001273 24 22.634 22.634 0.6340000000000003 @@ -7845,109 +7845,109 @@ -- !sql_test_DecimalV2_TinyInt_0 -- \N \N \N -1 25.395000000 23.395000000 -2 36.484000000 32.484000000 -3 51.756000000 45.756000000 -4 72.943000000 64.943000000 -5 102.494000000 92.494000000 -6 143.874000000 131.874000000 -7 201.980000000 187.980000000 +1 25.395200000 23.395200000 +2 36.483700000 32.483700000 +3 51.755800000 45.755800000 +4 72.942900000 64.942900000 +5 102.494200000 92.494200000 +6 143.873600000 131.873600000 +7 201.979800000 187.979800000 8 283.741000000 267.741000000 -9 398.955000000 380.955000000 +9 398.955300000 380.955300000 10 561.479000000 541.479000000 -11 790.908000000 768.908000000 -12 1114.957000000 1090.957000000 -13 25.395000000 23.395000000 -14 36.484000000 32.484000000 -15 51.756000000 45.756000000 -16 72.943000000 64.943000000 -17 102.494000000 92.494000000 -18 143.874000000 131.874000000 -19 201.980000000 187.980000000 +11 790.908400000 768.908400000 +12 1114.956500000 1090.956500000 +13 25.395200000 23.395200000 +14 36.483700000 32.483700000 +15 51.755800000 45.755800000 +16 72.942900000 64.942900000 +17 102.494200000 92.494200000 +18 143.873600000 131.873600000 +19 201.979800000 187.979800000 20 283.741000000 267.741000000 -21 398.955000000 380.955000000 +21 398.955300000 380.955300000 22 561.479000000 541.479000000 -23 790.908000000 768.908000000 -24 1114.957000000 1090.957000000 +23 790.908400000 768.908400000 +24 1114.956500000 1090.956500000 -- !sql_test_DecimalV2_TinyInt_notn_0 -- -1 25.395000000 23.395000000 -2 36.484000000 32.484000000 -3 51.756000000 45.756000000 -4 72.943000000 64.943000000 -5 102.494000000 92.494000000 -6 143.874000000 131.874000000 -7 201.980000000 187.980000000 +1 25.395200000 23.395200000 +2 36.483700000 32.483700000 +3 51.755800000 45.755800000 +4 72.942900000 64.942900000 +5 102.494200000 92.494200000 +6 143.873600000 131.873600000 +7 201.979800000 187.979800000 8 283.741000000 267.741000000 -9 398.955000000 380.955000000 +9 398.955300000 380.955300000 10 561.479000000 541.479000000 -11 790.908000000 768.908000000 -12 1114.957000000 1090.957000000 -13 25.395000000 23.395000000 -14 36.484000000 32.484000000 -15 51.756000000 45.756000000 -16 72.943000000 64.943000000 -17 102.494000000 92.494000000 -18 143.874000000 131.874000000 -19 201.980000000 187.980000000 +11 790.908400000 768.908400000 +12 1114.956500000 1090.956500000 +13 25.395200000 23.395200000 +14 36.483700000 32.483700000 +15 51.755800000 45.755800000 +16 72.942900000 64.942900000 +17 102.494200000 92.494200000 +18 143.873600000 131.873600000 +19 201.979800000 187.979800000 20 283.741000000 267.741000000 -21 398.955000000 380.955000000 +21 398.955300000 380.955300000 22 561.479000000 541.479000000 -23 790.908000000 768.908000000 -24 1114.957000000 1090.957000000 +23 790.908400000 768.908400000 +24 1114.956500000 1090.956500000 -- !sql_test_DecimalV2_TinyInt_1 -- \N \N \N \N -1 24.395000000 24.395000000 0.395000000 -2 68.968000000 17.242000000 0.484000000 -3 146.268000000 16.252000000 0.756000000 -4 275.772000000 17.235750000 0.943000000 -5 487.470000000 19.498800000 2.494000000 -6 827.244000000 22.979000000 5.874000000 -7 1364.860000000 27.854285714 5.980000000 +1 24.395200000 24.395200000 0.395200000 +2 68.967400000 17.241850000 0.483700000 +3 146.267400000 16.251933333 0.755800000 +4 275.771600000 17.235725000 0.942900000 +5 487.471000000 19.498840000 2.494200000 +6 827.241600000 22.978933333 5.873600000 +7 1364.858600000 27.854257143 5.979800000 8 2205.928000000 34.467625000 3.741000000 -9 3509.595000000 43.328333333 2.955000000 +9 3509.597700000 43.328366667 2.955300000 10 5514.790000000 55.147900000 1.479000000 -11 8578.988000000 70.900727273 9.908000000 -12 13235.484000000 91.913083333 10.957000000 -13 24.395000000 24.395000000 0.395000000 -14 68.968000000 17.242000000 0.484000000 -15 146.268000000 16.252000000 0.756000000 -16 275.772000000 17.235750000 0.943000000 -17 487.470000000 19.498800000 2.494000000 -18 827.244000000 22.979000000 5.874000000 -19 1364.860000000 27.854285714 5.980000000 +11 8578.992400000 70.900763636 9.908400000 +12 13235.478000000 91.913041667 10.956500000 +13 24.395200000 24.395200000 0.395200000 +14 68.967400000 17.241850000 0.483700000 +15 146.267400000 16.251933333 0.755800000 +16 275.771600000 17.235725000 0.942900000 +17 487.471000000 19.498840000 2.494200000 +18 827.241600000 22.978933333 5.873600000 +19 1364.858600000 27.854257143 5.979800000 20 2205.928000000 34.467625000 3.741000000 -21 3509.595000000 43.328333333 2.955000000 +21 3509.597700000 43.328366667 2.955300000 22 5514.790000000 55.147900000 1.479000000 -23 8578.988000000 70.900727273 9.908000000 -24 13235.484000000 91.913083333 10.957000000 +23 8578.992400000 70.900763636 9.908400000 +24 13235.478000000 91.913041667 10.956500000 -- !sql_test_DecimalV2_TinyInt_notn_1 -- -1 24.395000000 24.395000000 0.395000000 -2 68.968000000 17.242000000 0.484000000 -3 146.268000000 16.252000000 0.756000000 -4 275.772000000 17.235750000 0.943000000 -5 487.470000000 19.498800000 2.494000000 -6 827.244000000 22.979000000 5.874000000 -7 1364.860000000 27.854285714 5.980000000 +1 24.395200000 24.395200000 0.395200000 +2 68.967400000 17.241850000 0.483700000 +3 146.267400000 16.251933333 0.755800000 +4 275.771600000 17.235725000 0.942900000 +5 487.471000000 19.498840000 2.494200000 +6 827.241600000 22.978933333 5.873600000 +7 1364.858600000 27.854257143 5.979800000 8 2205.928000000 34.467625000 3.741000000 -9 3509.595000000 43.328333333 2.955000000 +9 3509.597700000 43.328366667 2.955300000 10 5514.790000000 55.147900000 1.479000000 -11 8578.988000000 70.900727273 9.908000000 -12 13235.484000000 91.913083333 10.957000000 -13 24.395000000 24.395000000 0.395000000 -14 68.968000000 17.242000000 0.484000000 -15 146.268000000 16.252000000 0.756000000 -16 275.772000000 17.235750000 0.943000000 -17 487.470000000 19.498800000 2.494000000 -18 827.244000000 22.979000000 5.874000000 -19 1364.860000000 27.854285714 5.980000000 +11 8578.992400000 70.900763636 9.908400000 +12 13235.478000000 91.913041667 10.956500000 +13 24.395200000 24.395200000 0.395200000 +14 68.967400000 17.241850000 0.483700000 +15 146.267400000 16.251933333 0.755800000 +16 275.771600000 17.235725000 0.942900000 +17 487.471000000 19.498840000 2.494200000 +18 827.241600000 22.978933333 5.873600000 +19 1364.858600000 27.854257143 5.979800000 20 2205.928000000 34.467625000 3.741000000 -21 3509.595000000 43.328333333 2.955000000 +21 3509.597700000 43.328366667 2.955300000 22 5514.790000000 55.147900000 1.479000000 -23 8578.988000000 70.900727273 9.908000000 -24 13235.484000000 91.913083333 10.957000000 +23 8578.992400000 70.900763636 9.908400000 +24 13235.478000000 91.913041667 10.956500000 -- !sql_test_DecimalV2_TinyInt_2 -- \N \N @@ -8057,109 +8057,109 @@ -- !sql_test_DecimalV2_SmallInt_0 -- \N \N \N -1 34.395000000 14.395000000 -2 54.484000000 14.484000000 -3 88.756000000 8.756000000 -4 148.943000000 -11.057000000 -5 257.494000000 -62.506000000 -6 457.874000000 -182.126000000 -7 834.980000000 -445.020000000 +1 34.395200000 14.395200000 +2 54.483700000 14.483700000 +3 88.755800000 8.755800000 +4 148.942900000 -11.057100000 +5 257.494200000 -62.505800000 +6 457.873600000 -182.126400000 +7 834.979800000 -445.020200000 8 1555.741000000 -1004.259000000 -9 2949.955000000 -2170.045000000 +9 2949.955300000 -2170.044700000 10 5671.479000000 -4568.521000000 -11 11019.908000000 -9460.092000000 -12 21582.957000000 -19377.043000000 -13 34.395000000 14.395000000 -14 54.484000000 14.484000000 -15 88.756000000 8.756000000 -16 148.943000000 -11.057000000 -17 257.494000000 -62.506000000 -18 457.874000000 -182.126000000 -19 834.980000000 -445.020000000 +11 11019.908400000 -9460.091600000 +12 21582.956500000 -19377.043500000 +13 34.395200000 14.395200000 +14 54.483700000 14.483700000 +15 88.755800000 8.755800000 +16 148.942900000 -11.057100000 +17 257.494200000 -62.505800000 +18 457.873600000 -182.126400000 +19 834.979800000 -445.020200000 20 1555.741000000 -1004.259000000 -21 2949.955000000 -2170.045000000 +21 2949.955300000 -2170.044700000 22 5671.479000000 -4568.521000000 -23 11019.908000000 -9460.092000000 -24 21582.957000000 -19377.043000000 +23 11019.908400000 -9460.091600000 +24 21582.956500000 -19377.043500000 -- !sql_test_DecimalV2_SmallInt_notn_0 -- -1 34.395000000 14.395000000 -2 54.484000000 14.484000000 -3 88.756000000 8.756000000 -4 148.943000000 -11.057000000 -5 257.494000000 -62.506000000 -6 457.874000000 -182.126000000 -7 834.980000000 -445.020000000 +1 34.395200000 14.395200000 +2 54.483700000 14.483700000 +3 88.755800000 8.755800000 +4 148.942900000 -11.057100000 +5 257.494200000 -62.505800000 +6 457.873600000 -182.126400000 +7 834.979800000 -445.020200000 8 1555.741000000 -1004.259000000 -9 2949.955000000 -2170.045000000 +9 2949.955300000 -2170.044700000 10 5671.479000000 -4568.521000000 -11 11019.908000000 -9460.092000000 -12 21582.957000000 -19377.043000000 -13 34.395000000 14.395000000 -14 54.484000000 14.484000000 -15 88.756000000 8.756000000 -16 148.943000000 -11.057000000 -17 257.494000000 -62.506000000 -18 457.874000000 -182.126000000 -19 834.980000000 -445.020000000 +11 11019.908400000 -9460.091600000 +12 21582.956500000 -19377.043500000 +13 34.395200000 14.395200000 +14 54.483700000 14.483700000 +15 88.755800000 8.755800000 +16 148.942900000 -11.057100000 +17 257.494200000 -62.505800000 +18 457.873600000 -182.126400000 +19 834.979800000 -445.020200000 20 1555.741000000 -1004.259000000 -21 2949.955000000 -2170.045000000 +21 2949.955300000 -2170.044700000 22 5671.479000000 -4568.521000000 -23 11019.908000000 -9460.092000000 -24 21582.957000000 -19377.043000000 +23 11019.908400000 -9460.091600000 +24 21582.956500000 -19377.043500000 -- !sql_test_DecimalV2_SmallInt_1 -- \N \N \N \N -1 243.950000000 2.439500000 4.395000000 -2 689.680000000 1.724200000 14.484000000 -3 1950.240000000 1.218900000 8.756000000 -4 5515.440000000 0.861787500 68.943000000 -5 15599.040000000 0.609337500 97.494000000 -6 44119.680000000 0.430856250 137.874000000 -7 124787.200000000 0.304656250 194.980000000 +1 243.952000000 2.439520000 4.395200000 +2 689.674000000 1.724185000 14.483700000 +3 1950.232000000 1.218895000 8.755800000 +4 5515.432000000 0.861786250 68.942900000 +5 15599.072000000 0.609338750 97.494200000 +6 44119.552000000 0.430855000 137.873600000 +7 124787.072000000 0.304655938 194.979800000 8 352948.480000000 0.215422656 275.741000000 -9 998284.800000000 0.152326172 389.955000000 +9 998285.568000000 0.152326289 389.955300000 10 2823572.480000000 0.107710742 551.479000000 -11 7986257.920000000 0.076162891 779.908000000 -12 22588559.360000000 0.053855322 1102.957000000 -13 243.950000000 2.439500000 4.395000000 -14 689.680000000 1.724200000 14.484000000 -15 1950.240000000 1.218900000 8.756000000 -16 5515.440000000 0.861787500 68.943000000 -17 15599.040000000 0.609337500 97.494000000 -18 44119.680000000 0.430856250 137.874000000 -19 124787.200000000 0.304656250 194.980000000 +11 7986262.016000000 0.076162930 779.908400000 +12 22588549.120000000 0.053855298 1102.956500000 +13 243.952000000 2.439520000 4.395200000 +14 689.674000000 1.724185000 14.483700000 +15 1950.232000000 1.218895000 8.755800000 +16 5515.432000000 0.861786250 68.942900000 +17 15599.072000000 0.609338750 97.494200000 +18 44119.552000000 0.430855000 137.873600000 +19 124787.072000000 0.304655938 194.979800000 20 352948.480000000 0.215422656 275.741000000 -21 998284.800000000 0.152326172 389.955000000 +21 998285.568000000 0.152326289 389.955300000 22 2823572.480000000 0.107710742 551.479000000 -23 7986257.920000000 0.076162891 779.908000000 -24 22588559.360000000 0.053855322 1102.957000000 +23 7986262.016000000 0.076162930 779.908400000 +24 22588549.120000000 0.053855298 1102.956500000 -- !sql_test_DecimalV2_SmallInt_notn_1 -- -1 243.950000000 2.439500000 4.395000000 -2 689.680000000 1.724200000 14.484000000 -3 1950.240000000 1.218900000 8.756000000 -4 5515.440000000 0.861787500 68.943000000 -5 15599.040000000 0.609337500 97.494000000 -6 44119.680000000 0.430856250 137.874000000 -7 124787.200000000 0.304656250 194.980000000 +1 243.952000000 2.439520000 4.395200000 +2 689.674000000 1.724185000 14.483700000 +3 1950.232000000 1.218895000 8.755800000 +4 5515.432000000 0.861786250 68.942900000 +5 15599.072000000 0.609338750 97.494200000 +6 44119.552000000 0.430855000 137.873600000 +7 124787.072000000 0.304655938 194.979800000 8 352948.480000000 0.215422656 275.741000000 -9 998284.800000000 0.152326172 389.955000000 +9 998285.568000000 0.152326289 389.955300000 10 2823572.480000000 0.107710742 551.479000000 -11 7986257.920000000 0.076162891 779.908000000 -12 22588559.360000000 0.053855322 1102.957000000 -13 243.950000000 2.439500000 4.395000000 -14 689.680000000 1.724200000 14.484000000 -15 1950.240000000 1.218900000 8.756000000 -16 5515.440000000 0.861787500 68.943000000 -17 15599.040000000 0.609337500 97.494000000 -18 44119.680000000 0.430856250 137.874000000 -19 124787.200000000 0.304656250 194.980000000 +11 7986262.016000000 0.076162930 779.908400000 +12 22588549.120000000 0.053855298 1102.956500000 +13 243.952000000 2.439520000 4.395200000 +14 689.674000000 1.724185000 14.483700000 +15 1950.232000000 1.218895000 8.755800000 +16 5515.432000000 0.861786250 68.942900000 +17 15599.072000000 0.609338750 97.494200000 +18 44119.552000000 0.430855000 137.873600000 +19 124787.072000000 0.304655938 194.979800000 20 352948.480000000 0.215422656 275.741000000 -21 998284.800000000 0.152326172 389.955000000 +21 998285.568000000 0.152326289 389.955300000 22 2823572.480000000 0.107710742 551.479000000 -23 7986257.920000000 0.076162891 779.908000000 -24 22588559.360000000 0.053855322 1102.957000000 +23 7986262.016000000 0.076162930 779.908400000 +24 22588549.120000000 0.053855298 1102.956500000 -- !sql_test_DecimalV2_SmallInt_2 -- \N \N @@ -8269,109 +8269,109 @@ -- !sql_test_DecimalV2_Integer_0 -- \N \N \N -1 23819.395000000 -23770.605000000 -2 47579.484000000 -47510.516000000 -3 95093.756000000 -94996.244000000 -4 190113.943000000 -189976.057000000 -5 380142.494000000 -379947.506000000 -6 760182.874000000 -759907.126000000 -7 1520239.980000000 -1519850.020000000 +1 23819.395200000 -23770.604800000 +2 47579.483700000 -47510.516300000 +3 95093.755800000 -94996.244200000 +4 190113.942900000 -189976.057100000 +5 380142.494200000 -379947.505800000 +6 760182.873600000 -759907.126400000 +7 1520239.979800000 -1519850.020200000 8 3040320.741000000 -3039769.259000000 -9 6080434.955000000 -6079655.045000000 +9 6080434.955300000 -6079655.044700000 10 12160596.479000000 -12159493.521000000 -11 24320824.908000000 -24319265.092000000 -12 48641147.957000000 -48638942.043000000 -13 23819.395000000 -23770.605000000 -14 47579.484000000 -47510.516000000 -15 95093.756000000 -94996.244000000 -16 190113.943000000 -189976.057000000 -17 380142.494000000 -379947.506000000 -18 760182.874000000 -759907.126000000 -19 1520239.980000000 -1519850.020000000 +11 24320824.908400000 -24319265.091600000 +12 48641147.956500000 -48638942.043500000 +13 23819.395200000 -23770.604800000 +14 47579.483700000 -47510.516300000 +15 95093.755800000 -94996.244200000 +16 190113.942900000 -189976.057100000 +17 380142.494200000 -379947.505800000 +18 760182.873600000 -759907.126400000 +19 1520239.979800000 -1519850.020200000 20 3040320.741000000 -3039769.259000000 -21 6080434.955000000 -6079655.045000000 +21 6080434.955300000 -6079655.044700000 22 12160596.479000000 -12159493.521000000 -23 24320824.908000000 -24319265.092000000 -24 48641147.957000000 -48638942.043000000 +23 24320824.908400000 -24319265.091600000 +24 48641147.956500000 -48638942.043500000 -- !sql_test_DecimalV2_Integer_notn_0 -- -1 23819.395000000 -23770.605000000 -2 47579.484000000 -47510.516000000 -3 95093.756000000 -94996.244000000 -4 190113.943000000 -189976.057000000 -5 380142.494000000 -379947.506000000 -6 760182.874000000 -759907.126000000 -7 1520239.980000000 -1519850.020000000 +1 23819.395200000 -23770.604800000 +2 47579.483700000 -47510.516300000 +3 95093.755800000 -94996.244200000 +4 190113.942900000 -189976.057100000 +5 380142.494200000 -379947.505800000 +6 760182.873600000 -759907.126400000 +7 1520239.979800000 -1519850.020200000 8 3040320.741000000 -3039769.259000000 -9 6080434.955000000 -6079655.045000000 +9 6080434.955300000 -6079655.044700000 10 12160596.479000000 -12159493.521000000 -11 24320824.908000000 -24319265.092000000 -12 48641147.957000000 -48638942.043000000 -13 23819.395000000 -23770.605000000 -14 47579.484000000 -47510.516000000 -15 95093.756000000 -94996.244000000 -16 190113.943000000 -189976.057000000 -17 380142.494000000 -379947.506000000 -18 760182.874000000 -759907.126000000 -19 1520239.980000000 -1519850.020000000 +11 24320824.908400000 -24319265.091600000 +12 48641147.956500000 -48638942.043500000 +13 23819.395200000 -23770.604800000 +14 47579.483700000 -47510.516300000 +15 95093.755800000 -94996.244200000 +16 190113.942900000 -189976.057100000 +17 380142.494200000 -379947.505800000 +18 760182.873600000 -759907.126400000 +19 1520239.979800000 -1519850.020200000 20 3040320.741000000 -3039769.259000000 -21 6080434.955000000 -6079655.045000000 +21 6080434.955300000 -6079655.044700000 22 12160596.479000000 -12159493.521000000 -23 24320824.908000000 -24319265.092000000 -24 48641147.957000000 -48638942.043000000 +23 24320824.908400000 -24319265.091600000 +24 48641147.956500000 -48638942.043500000 -- !sql_test_DecimalV2_Integer_1 -- \N \N \N \N -1 580479.025000000 0.001025215 24.395000000 -2 1639541.780000000 0.000725292 34.484000000 -3 4634014.020000000 0.000512978 48.756000000 -4 13102272.435000000 0.000362772 68.943000000 -5 37052107.230000000 0.000256533 97.494000000 -6 104790444.330000000 0.000181402 137.874000000 -7 296378374.100000000 0.000128273 194.980000000 +1 580483.784000000 0.001025224 24.395200000 +2 1639527.516500000 0.000725286 34.483700000 +3 4633995.011000000 0.000512976 48.755800000 +4 13102253.430500000 0.000362771 68.942900000 +5 37052183.239000000 0.000256533 97.494200000 +6 104790140.312000000 0.000181402 137.873600000 +7 296378070.091000000 0.000128272 194.979800000 8 838265048.345000000 0.000090703 275.741000000 -9 2370943947.975000000 0.000064137 389.955000000 +9 2370945771.988500000 0.000064137 389.955300000 10 6706009456.555000000 0.000045352 551.479000000 -11 18967397655.860000000 0.000032069 779.908000000 -12 53647878113.065000000 0.000022676 1102.957000000 -13 580479.025000000 0.001025215 24.395000000 -14 1639541.780000000 0.000725292 34.484000000 -15 4634014.020000000 0.000512978 48.756000000 -16 13102272.435000000 0.000362772 68.943000000 -17 37052107.230000000 0.000256533 97.494000000 -18 104790444.330000000 0.000181402 137.874000000 -19 296378374.100000000 0.000128273 194.980000000 +11 18967407383.878000000 0.000032069 779.908400000 +12 53647853793.042500000 0.000022676 1102.956500000 +13 580483.784000000 0.001025224 24.395200000 +14 1639527.516500000 0.000725286 34.483700000 +15 4633995.011000000 0.000512976 48.755800000 +16 13102253.430500000 0.000362771 68.942900000 +17 37052183.239000000 0.000256533 97.494200000 +18 104790140.312000000 0.000181402 137.873600000 +19 296378070.091000000 0.000128272 194.979800000 20 838265048.345000000 0.000090703 275.741000000 -21 2370943947.975000000 0.000064137 389.955000000 +21 2370945771.988500000 0.000064137 389.955300000 22 6706009456.555000000 0.000045352 551.479000000 -23 18967397655.860000000 0.000032069 779.908000000 -24 53647878113.065000000 0.000022676 1102.957000000 +23 18967407383.878000000 0.000032069 779.908400000 +24 53647853793.042500000 0.000022676 1102.956500000 -- !sql_test_DecimalV2_Integer_notn_1 -- -1 580479.025000000 0.001025215 24.395000000 -2 1639541.780000000 0.000725292 34.484000000 -3 4634014.020000000 0.000512978 48.756000000 -4 13102272.435000000 0.000362772 68.943000000 -5 37052107.230000000 0.000256533 97.494000000 -6 104790444.330000000 0.000181402 137.874000000 -7 296378374.100000000 0.000128273 194.980000000 +1 580483.784000000 0.001025224 24.395200000 +2 1639527.516500000 0.000725286 34.483700000 +3 4633995.011000000 0.000512976 48.755800000 +4 13102253.430500000 0.000362771 68.942900000 +5 37052183.239000000 0.000256533 97.494200000 +6 104790140.312000000 0.000181402 137.873600000 +7 296378070.091000000 0.000128272 194.979800000 8 838265048.345000000 0.000090703 275.741000000 -9 2370943947.975000000 0.000064137 389.955000000 +9 2370945771.988500000 0.000064137 389.955300000 10 6706009456.555000000 0.000045352 551.479000000 -11 18967397655.860000000 0.000032069 779.908000000 -12 53647878113.065000000 0.000022676 1102.957000000 -13 580479.025000000 0.001025215 24.395000000 -14 1639541.780000000 0.000725292 34.484000000 -15 4634014.020000000 0.000512978 48.756000000 -16 13102272.435000000 0.000362772 68.943000000 -17 37052107.230000000 0.000256533 97.494000000 -18 104790444.330000000 0.000181402 137.874000000 -19 296378374.100000000 0.000128273 194.980000000 +11 18967407383.878000000 0.000032069 779.908400000 +12 53647853793.042500000 0.000022676 1102.956500000 +13 580483.784000000 0.001025224 24.395200000 +14 1639527.516500000 0.000725286 34.483700000 +15 4633995.011000000 0.000512976 48.755800000 +16 13102253.430500000 0.000362771 68.942900000 +17 37052183.239000000 0.000256533 97.494200000 +18 104790140.312000000 0.000181402 137.873600000 +19 296378070.091000000 0.000128272 194.979800000 20 838265048.345000000 0.000090703 275.741000000 -21 2370943947.975000000 0.000064137 389.955000000 +21 2370945771.988500000 0.000064137 389.955300000 22 6706009456.555000000 0.000045352 551.479000000 -23 18967397655.860000000 0.000032069 779.908000000 -24 53647878113.065000000 0.000022676 1102.957000000 +23 18967407383.878000000 0.000032069 779.908400000 +24 53647853793.042500000 0.000022676 1102.956500000 -- !sql_test_DecimalV2_Integer_2 -- \N \N @@ -8852,109 +8852,109 @@ -- !sql_test_DecimalV2_Float_0 -- \N \N \N -1 24.495000001 24.294999999 -2 34.684000003 34.283999997 -3 49.056000012 48.455999988 -4 69.343000006 68.542999994 -5 97.994000000 96.994000000 -6 138.474000024 137.273999976 -7 195.679999988 194.280000012 +1 24.495200001 24.295199999 +2 34.683700003 34.283699997 +3 49.055800012 48.455799988 +4 69.342900006 68.542899994 +5 97.994200000 96.994200000 +6 138.473600024 137.273599976 +7 195.679799988 194.279800012 8 276.541000012 274.940999988 -9 390.854999976 389.055000024 +9 390.855299976 389.055300024 10 552.479000000 550.479000000 -11 781.008000024 778.807999976 -12 1104.157000048 1101.756999952 -13 24.495000001 24.294999999 -14 34.684000003 34.283999997 -15 49.056000012 48.455999988 -16 69.343000006 68.542999994 -17 97.994000000 96.994000000 -18 138.474000024 137.273999976 -19 195.679999988 194.280000012 +11 781.008400024 778.808399976 +12 1104.156500048 1101.756499952 +13 24.495200001 24.295199999 +14 34.683700003 34.283699997 +15 49.055800012 48.455799988 +16 69.342900006 68.542899994 +17 97.994200000 96.994200000 +18 138.473600024 137.273599976 +19 195.679799988 194.279800012 20 276.541000012 274.940999988 -21 390.854999976 389.055000024 +21 390.855299976 389.055300024 22 552.479000000 550.479000000 -23 781.008000024 778.807999976 -24 1104.157000048 1101.756999952 +23 781.008400024 778.808399976 +24 1104.156500048 1101.756499952 -- !sql_test_DecimalV2_Float_notn_0 -- -1 24.495000001 24.294999999 -2 34.684000003 34.283999997 -3 49.056000012 48.455999988 -4 69.343000006 68.542999994 -5 97.994000000 96.994000000 -6 138.474000024 137.273999976 -7 195.679999988 194.280000012 +1 24.495200001 24.295199999 +2 34.683700003 34.283699997 +3 49.055800012 48.455799988 +4 69.342900006 68.542899994 +5 97.994200000 96.994200000 +6 138.473600024 137.273599976 +7 195.679799988 194.279800012 8 276.541000012 274.940999988 -9 390.854999976 389.055000024 +9 390.855299976 389.055300024 10 552.479000000 550.479000000 -11 781.008000024 778.807999976 -12 1104.157000048 1101.756999952 -13 24.495000001 24.294999999 -14 34.684000003 34.283999997 -15 49.056000012 48.455999988 -16 69.343000006 68.542999994 -17 97.994000000 96.994000000 -18 138.474000024 137.273999976 -19 195.679999988 194.280000012 +11 781.008400024 778.808399976 +12 1104.156500048 1101.756499952 +13 24.495200001 24.295199999 +14 34.683700003 34.283699997 +15 49.055800012 48.455799988 +16 69.342900006 68.542899994 +17 97.994200000 96.994200000 +18 138.473600024 137.273599976 +19 195.679799988 194.279800012 20 276.541000012 274.940999988 -21 390.854999976 389.055000024 +21 390.855299976 389.055300024 22 552.479000000 550.479000000 -23 781.008000024 778.807999976 -24 1104.157000048 1101.756999952 +23 781.008400024 778.808399976 +24 1104.156500048 1101.756499952 -- !sql_test_DecimalV2_Float_1 -- \N \N \N \N -1 2.439500025 243.9499963648618 0.094999757 -2 6.896800104 172.41999743074183 0.083999484 -3 14.626800586 162.51999354203568 0.155998056 -4 27.577200414 172.35749743167315 0.142998968 -5 48.747000000 194.988 0.494000000 -6 82.724403309 229.78999086896613 0.473994504 -7 136.485997661 278.5428618864138 0.380003336 -8 220.592803309 344.67624486392367 0.540995872 -9 350.959490642 433.2833448114221 0.255010392 +1 2.439520025 243.951996364832 0.095199757 +2 6.896740104 172.4184974307642 0.083699484 +3 14.626740586 162.5193268753955 0.155798056 +4 27.577160414 172.3572474316769 0.142898968 +5 48.747100000 194.9884 0.494200000 +6 82.724163309 229.789324202326 0.473594504 +7 136.485857661 278.5425761721232 0.379803336 +8 220.592803309 344.6762448639237 0.540995872 +9 350.959760642 433.2836781447643 0.255310392 10 551.479000000 551.479 0.479000000 -11 857.898818718 709.0072573599543 0.007982984 -12 1323.548452942 919.130796810357 0.156955888 -13 2.439500025 243.9499963648618 0.094999757 -14 6.896800104 172.41999743074183 0.083999484 -15 14.626800586 162.51999354203568 0.155998056 -16 27.577200414 172.35749743167315 0.142998968 -17 48.747000000 194.988 0.494000000 -18 82.724403309 229.78999086896613 0.473994504 -19 136.485997661 278.5428618864138 0.380003336 -20 220.592803309 344.67624486392367 0.540995872 -21 350.959490642 433.2833448114221 0.255010392 +11 857.899258718 709.00762099631 0.008382984 +12 1323.547852942 919.1303801437068 0.156455888 +13 2.439520025 243.951996364832 0.095199757 +14 6.896740104 172.4184974307642 0.083699484 +15 14.626740586 162.5193268753955 0.155798056 +16 27.577160414 172.3572474316769 0.142898968 +17 48.747100000 194.9884 0.494200000 +18 82.724163309 229.789324202326 0.473594504 +19 136.485857661 278.5425761721232 0.379803336 +20 220.592803309 344.6762448639237 0.540995872 +21 350.959760642 433.2836781447643 0.255310392 22 551.479000000 551.479 0.479000000 -23 857.898818718 709.0072573599543 0.007982984 -24 1323.548452942 919.130796810357 0.156955888 +23 857.899258718 709.00762099631 0.008382984 +24 1323.547852942 919.1303801437068 0.156455888 -- !sql_test_DecimalV2_Float_notn_1 -- -1 2.439500025 243.9499963648618 0.094999757 -2 6.896800104 172.41999743074183 0.083999484 -3 14.626800586 162.51999354203568 0.155998056 -4 27.577200414 172.35749743167315 0.142998968 -5 48.747000000 194.988 0.494000000 -6 82.724403309 229.78999086896613 0.473994504 -7 136.485997661 278.5428618864138 0.380003336 -8 220.592803309 344.67624486392367 0.540995872 -9 350.959490642 433.2833448114221 0.255010392 +1 2.439520025 243.951996364832 0.095199757 +2 6.896740104 172.4184974307642 0.083699484 +3 14.626740586 162.5193268753955 0.155798056 +4 27.577160414 172.3572474316769 0.142898968 +5 48.747100000 194.9884 0.494200000 +6 82.724163309 229.789324202326 0.473594504 +7 136.485857661 278.5425761721232 0.379803336 +8 220.592803309 344.6762448639237 0.540995872 +9 350.959760642 433.2836781447643 0.255310392 10 551.479000000 551.479 0.479000000 -11 857.898818718 709.0072573599543 0.007982984 -12 1323.548452942 919.130796810357 0.156955888 -13 2.439500025 243.9499963648618 0.094999757 -14 6.896800104 172.41999743074183 0.083999484 -15 14.626800586 162.51999354203568 0.155998056 -16 27.577200414 172.35749743167315 0.142998968 -17 48.747000000 194.988 0.494000000 -18 82.724403309 229.78999086896613 0.473994504 -19 136.485997661 278.5428618864138 0.380003336 -20 220.592803309 344.67624486392367 0.540995872 -21 350.959490642 433.2833448114221 0.255010392 +11 857.899258718 709.00762099631 0.008382984 +12 1323.547852942 919.1303801437068 0.156455888 +13 2.439520025 243.951996364832 0.095199757 +14 6.896740104 172.4184974307642 0.083699484 +15 14.626740586 162.5193268753955 0.155798056 +16 27.577160414 172.3572474316769 0.142898968 +17 48.747100000 194.9884 0.494200000 +18 82.724163309 229.789324202326 0.473594504 +19 136.485857661 278.5425761721232 0.379803336 +20 220.592803309 344.6762448639237 0.540995872 +21 350.959760642 433.2836781447643 0.255310392 22 551.479000000 551.479 0.479000000 -23 857.898818718 709.0072573599543 0.007982984 -24 1323.548452942 919.130796810357 0.156955888 +23 857.899258718 709.00762099631 0.008382984 +24 1323.547852942 919.1303801437068 0.156455888 -- !sql_test_DecimalV2_Float_2 -- \N \N @@ -9064,109 +9064,109 @@ -- !sql_test_DecimalV2_Double_0 -- \N \N \N -1 24.919400000 23.870600000 -2 35.225600000 33.742400000 -3 49.792800000 47.719200000 -4 70.392100000 67.493900000 -5 99.525000000 95.463000000 -6 140.728800000 135.019200000 -7 199.001800000 190.958200000 +1 24.919600000 23.870800000 +2 35.225300000 33.742100000 +3 49.792600000 47.719000000 +4 70.392000000 67.493800000 +5 99.525200000 95.463200000 +6 140.728400000 135.018800000 +7 199.001600000 190.958000000 8 281.415500000 270.066500000 -9 397.969100000 381.940900000 +9 397.969400000 381.941200000 10 562.803800000 540.154200000 -11 795.916600000 763.899400000 -12 1125.591000000 1080.323000000 -13 24.919400000 23.870600000 -14 35.225600000 33.742400000 -15 49.792800000 47.719200000 -16 70.392100000 67.493900000 -17 99.525000000 95.463000000 -18 140.728800000 135.019200000 -19 199.001800000 190.958200000 +11 795.917000000 763.899800000 +12 1125.590500000 1080.322500000 +13 24.919600000 23.870800000 +14 35.225300000 33.742100000 +15 49.792600000 47.719000000 +16 70.392000000 67.493800000 +17 99.525200000 95.463200000 +18 140.728400000 135.018800000 +19 199.001600000 190.958000000 20 281.415500000 270.066500000 -21 397.969100000 381.940900000 +21 397.969400000 381.941200000 22 562.803800000 540.154200000 -23 795.916600000 763.899400000 -24 1125.591000000 1080.323000000 +23 795.917000000 763.899800000 +24 1125.590500000 1080.322500000 -- !sql_test_DecimalV2_Double_notn_0 -- -1 24.919400000 23.870600000 -2 35.225600000 33.742400000 -3 49.792800000 47.719200000 -4 70.392100000 67.493900000 -5 99.525000000 95.463000000 -6 140.728800000 135.019200000 -7 199.001800000 190.958200000 +1 24.919600000 23.870800000 +2 35.225300000 33.742100000 +3 49.792600000 47.719000000 +4 70.392000000 67.493800000 +5 99.525200000 95.463200000 +6 140.728400000 135.018800000 +7 199.001600000 190.958000000 8 281.415500000 270.066500000 -9 397.969100000 381.940900000 +9 397.969400000 381.941200000 10 562.803800000 540.154200000 -11 795.916600000 763.899400000 -12 1125.591000000 1080.323000000 -13 24.919400000 23.870600000 -14 35.225600000 33.742400000 -15 49.792800000 47.719200000 -16 70.392100000 67.493900000 -17 99.525000000 95.463000000 -18 140.728800000 135.019200000 -19 199.001800000 190.958200000 +11 795.917000000 763.899800000 +12 1125.590500000 1080.322500000 +13 24.919600000 23.870800000 +14 35.225300000 33.742100000 +15 49.792600000 47.719000000 +16 70.392000000 67.493800000 +17 99.525200000 95.463200000 +18 140.728400000 135.018800000 +19 199.001600000 190.958000000 20 281.415500000 270.066500000 -21 397.969100000 381.940900000 +21 397.969400000 381.941200000 22 562.803800000 540.154200000 -23 795.916600000 763.899400000 -24 1125.591000000 1080.323000000 +23 795.917000000 763.899800000 +24 1125.590500000 1080.322500000 -- !sql_test_DecimalV2_Double_1 -- \N \N \N \N -1 12.792738000 46.519832189168575 0.272600000 -2 25.573334400 46.49946062567422 0.370400000 -3 50.550220800 47.02546296296297 0.026400000 -4 99.905301300 47.57642674763646 0.835300000 -5 198.010314000 48.002954209748886 0.006000000 -6 393.602695200 48.29550231189575 0.843600000 -7 784.170564000 48.48077975036053 1.933600000 -8 1564.692304500 48.593003788880075 3.365000000 -9 3125.138365500 48.65861419248575 5.278200000 +1 12.792842880 46.52021357742181 0.272800000 +2 25.573111920 46.49905609492988 0.370100000 +3 50.550013440 47.0252700617284 0.026200000 +4 99.905156390 47.57635773928645 0.835200000 +5 198.010720200 48.00305268340719 0.006200000 +6 393.601553280 48.29536219700154 0.843200000 +7 784.169759640 48.48073002138347 1.933400000 +8 1564.692304500 48.59300378888008 3.365000000 +9 3125.140769730 48.65865162650829 5.278500000 10 6245.389379200 48.69657742300085 7.888600000 -11 12485.235208800 48.718064040578184 11.495200000 -12 24964.328738000 48.730096315277905 16.525000000 -13 12.792738000 46.519832189168575 0.272600000 -14 25.573334400 46.49946062567422 0.370400000 -15 50.550220800 47.02546296296297 0.026400000 -16 99.905301300 47.57642674763646 0.835300000 -17 198.010314000 48.002954209748886 0.006000000 -18 393.602695200 48.29550231189575 0.843600000 -19 784.170564000 48.48077975036053 1.933600000 -20 1564.692304500 48.593003788880075 3.365000000 -21 3125.138365500 48.65861419248575 5.278200000 +11 12485.241612240 48.7180890271479 11.495600000 +12 24964.317421000 48.73007422461783 16.524500000 +13 12.792842880 46.52021357742181 0.272800000 +14 25.573111920 46.49905609492988 0.370100000 +15 50.550013440 47.0252700617284 0.026200000 +16 99.905156390 47.57635773928645 0.835200000 +17 198.010720200 48.00305268340719 0.006200000 +18 393.601553280 48.29536219700154 0.843200000 +19 784.169759640 48.48073002138347 1.933400000 +20 1564.692304500 48.59300378888008 3.365000000 +21 3125.140769730 48.65865162650829 5.278500000 22 6245.389379200 48.69657742300085 7.888600000 -23 12485.235208800 48.718064040578184 11.495200000 -24 24964.328738000 48.730096315277905 16.525000000 +23 12485.241612240 48.7180890271479 11.495600000 +24 24964.317421000 48.73007422461783 16.524500000 -- !sql_test_DecimalV2_Double_notn_1 -- -1 12.792738000 46.519832189168575 0.272600000 -2 25.573334400 46.49946062567422 0.370400000 -3 50.550220800 47.02546296296297 0.026400000 -4 99.905301300 47.57642674763646 0.835300000 -5 198.010314000 48.002954209748886 0.006000000 -6 393.602695200 48.29550231189575 0.843600000 -7 784.170564000 48.48077975036053 1.933600000 -8 1564.692304500 48.593003788880075 3.365000000 -9 3125.138365500 48.65861419248575 5.278200000 +1 12.792842880 46.52021357742181 0.272800000 +2 25.573111920 46.49905609492988 0.370100000 +3 50.550013440 47.0252700617284 0.026200000 +4 99.905156390 47.57635773928645 0.835200000 +5 198.010720200 48.00305268340719 0.006200000 +6 393.601553280 48.29536219700154 0.843200000 +7 784.169759640 48.48073002138347 1.933400000 +8 1564.692304500 48.59300378888008 3.365000000 +9 3125.140769730 48.65865162650829 5.278500000 10 6245.389379200 48.69657742300085 7.888600000 -11 12485.235208800 48.718064040578184 11.495200000 -12 24964.328738000 48.730096315277905 16.525000000 -13 12.792738000 46.519832189168575 0.272600000 -14 25.573334400 46.49946062567422 0.370400000 -15 50.550220800 47.02546296296297 0.026400000 -16 99.905301300 47.57642674763646 0.835300000 -17 198.010314000 48.002954209748886 0.006000000 -18 393.602695200 48.29550231189575 0.843600000 -19 784.170564000 48.48077975036053 1.933600000 -20 1564.692304500 48.593003788880075 3.365000000 -21 3125.138365500 48.65861419248575 5.278200000 +11 12485.241612240 48.7180890271479 11.495600000 +12 24964.317421000 48.73007422461783 16.524500000 +13 12.792842880 46.52021357742181 0.272800000 +14 25.573111920 46.49905609492988 0.370100000 +15 50.550013440 47.0252700617284 0.026200000 +16 99.905156390 47.57635773928645 0.835200000 +17 198.010720200 48.00305268340719 0.006200000 +18 393.601553280 48.29536219700154 0.843200000 +19 784.169759640 48.48073002138347 1.933400000 +20 1564.692304500 48.59300378888008 3.365000000 +21 3125.140769730 48.65865162650829 5.278500000 22 6245.389379200 48.69657742300085 7.888600000 -23 12485.235208800 48.718064040578184 11.495200000 -24 24964.328738000 48.730096315277905 16.525000000 +23 12485.241612240 48.7180890271479 11.495600000 +24 24964.317421000 48.73007422461783 16.524500000 -- !sql_test_DecimalV2_Double_2 -- \N \N @@ -9276,109 +9276,109 @@ -- !sql_test_DecimalV2_DecimalV2_0 -- \N \N \N -1 48.790000000 0E-9 -2 68.968000000 0E-9 -3 97.512000000 0E-9 -4 137.886000000 0E-9 -5 194.988000000 0E-9 -6 275.748000000 0E-9 -7 389.960000000 0E-9 +1 48.790400000 0E-9 +2 68.967400000 0E-9 +3 97.511600000 0E-9 +4 137.885800000 0E-9 +5 194.988400000 0E-9 +6 275.747200000 0E-9 +7 389.959600000 0E-9 8 551.482000000 0E-9 -9 779.910000000 0E-9 +9 779.910600000 0E-9 10 1102.958000000 0E-9 -11 1559.816000000 0E-9 -12 2205.914000000 0E-9 -13 48.790000000 0E-9 -14 68.968000000 0E-9 -15 97.512000000 0E-9 -16 137.886000000 0E-9 -17 194.988000000 0E-9 -18 275.748000000 0E-9 -19 389.960000000 0E-9 +11 1559.816800000 0E-9 +12 2205.913000000 0E-9 +13 48.790400000 0E-9 +14 68.967400000 0E-9 +15 97.511600000 0E-9 +16 137.885800000 0E-9 +17 194.988400000 0E-9 +18 275.747200000 0E-9 +19 389.959600000 0E-9 20 551.482000000 0E-9 -21 779.910000000 0E-9 +21 779.910600000 0E-9 22 1102.958000000 0E-9 -23 1559.816000000 0E-9 -24 2205.914000000 0E-9 +23 1559.816800000 0E-9 +24 2205.913000000 0E-9 -- !sql_test_DecimalV2_DecimalV2_notn_0 -- -1 48.790000000 0E-9 -2 68.968000000 0E-9 -3 97.512000000 0E-9 -4 137.886000000 0E-9 -5 194.988000000 0E-9 -6 275.748000000 0E-9 -7 389.960000000 0E-9 +1 48.790400000 0E-9 +2 68.967400000 0E-9 +3 97.511600000 0E-9 +4 137.885800000 0E-9 +5 194.988400000 0E-9 +6 275.747200000 0E-9 +7 389.959600000 0E-9 8 551.482000000 0E-9 -9 779.910000000 0E-9 +9 779.910600000 0E-9 10 1102.958000000 0E-9 -11 1559.816000000 0E-9 -12 2205.914000000 0E-9 -13 48.790000000 0E-9 -14 68.968000000 0E-9 -15 97.512000000 0E-9 -16 137.886000000 0E-9 -17 194.988000000 0E-9 -18 275.748000000 0E-9 -19 389.960000000 0E-9 +11 1559.816800000 0E-9 +12 2205.913000000 0E-9 +13 48.790400000 0E-9 +14 68.967400000 0E-9 +15 97.511600000 0E-9 +16 137.885800000 0E-9 +17 194.988400000 0E-9 +18 275.747200000 0E-9 +19 389.959600000 0E-9 20 551.482000000 0E-9 -21 779.910000000 0E-9 +21 779.910600000 0E-9 22 1102.958000000 0E-9 -23 1559.816000000 0E-9 -24 2205.914000000 0E-9 +23 1559.816800000 0E-9 +24 2205.913000000 0E-9 -- !sql_test_DecimalV2_DecimalV2_1 -- \N \N \N \N -1 595.116025000 1.000000000 0E-9 -2 1189.146256000 1.000000000 0E-9 -3 2377.147536000 1.000000000 0E-9 -4 4753.137249000 1.000000000 0E-9 -5 9505.080036000 1.000000000 0E-9 -6 19009.239876000 1.000000000 0E-9 -7 38017.200400000 1.000000000 0E-9 +1 595.125783040 1.000000000 0E-9 +2 1189.125565690 1.000000000 0E-9 +3 2377.128033640 1.000000000 0E-9 +4 4753.123460410 1.000000000 0E-9 +5 9505.119033640 1.000000000 0E-9 +6 19009.129576960 1.000000000 0E-9 +7 38017.122408040 1.000000000 0E-9 8 76033.099081000 1.000000000 0E-9 -9 152064.902025000 1.000000000 0E-9 +9 152065.135998090 1.000000000 0E-9 10 304129.087441000 1.000000000 0E-9 -11 608256.488464000 1.000000000 0E-9 -12 1216514.143849000 1.000000000 0E-9 -13 595.116025000 1.000000000 0E-9 -14 1189.146256000 1.000000000 0E-9 -15 2377.147536000 1.000000000 0E-9 -16 4753.137249000 1.000000000 0E-9 -17 9505.080036000 1.000000000 0E-9 -18 19009.239876000 1.000000000 0E-9 -19 38017.200400000 1.000000000 0E-9 +11 608257.112390560 1.000000000 0E-9 +12 1216513.040892250 1.000000000 0E-9 +13 595.125783040 1.000000000 0E-9 +14 1189.125565690 1.000000000 0E-9 +15 2377.128033640 1.000000000 0E-9 +16 4753.123460410 1.000000000 0E-9 +17 9505.119033640 1.000000000 0E-9 +18 19009.129576960 1.000000000 0E-9 +19 38017.122408040 1.000000000 0E-9 20 76033.099081000 1.000000000 0E-9 -21 152064.902025000 1.000000000 0E-9 +21 152065.135998090 1.000000000 0E-9 22 304129.087441000 1.000000000 0E-9 -23 608256.488464000 1.000000000 0E-9 -24 1216514.143849000 1.000000000 0E-9 +23 608257.112390560 1.000000000 0E-9 +24 1216513.040892250 1.000000000 0E-9 -- !sql_test_DecimalV2_DecimalV2_notn_1 -- -1 595.116025000 1.000000000 0E-9 -2 1189.146256000 1.000000000 0E-9 -3 2377.147536000 1.000000000 0E-9 -4 4753.137249000 1.000000000 0E-9 -5 9505.080036000 1.000000000 0E-9 -6 19009.239876000 1.000000000 0E-9 -7 38017.200400000 1.000000000 0E-9 +1 595.125783040 1.000000000 0E-9 +2 1189.125565690 1.000000000 0E-9 +3 2377.128033640 1.000000000 0E-9 +4 4753.123460410 1.000000000 0E-9 +5 9505.119033640 1.000000000 0E-9 +6 19009.129576960 1.000000000 0E-9 +7 38017.122408040 1.000000000 0E-9 8 76033.099081000 1.000000000 0E-9 -9 152064.902025000 1.000000000 0E-9 +9 152065.135998090 1.000000000 0E-9 10 304129.087441000 1.000000000 0E-9 -11 608256.488464000 1.000000000 0E-9 -12 1216514.143849000 1.000000000 0E-9 -13 595.116025000 1.000000000 0E-9 -14 1189.146256000 1.000000000 0E-9 -15 2377.147536000 1.000000000 0E-9 -16 4753.137249000 1.000000000 0E-9 -17 9505.080036000 1.000000000 0E-9 -18 19009.239876000 1.000000000 0E-9 -19 38017.200400000 1.000000000 0E-9 +11 608257.112390560 1.000000000 0E-9 +12 1216513.040892250 1.000000000 0E-9 +13 595.125783040 1.000000000 0E-9 +14 1189.125565690 1.000000000 0E-9 +15 2377.128033640 1.000000000 0E-9 +16 4753.123460410 1.000000000 0E-9 +17 9505.119033640 1.000000000 0E-9 +18 19009.129576960 1.000000000 0E-9 +19 38017.122408040 1.000000000 0E-9 20 76033.099081000 1.000000000 0E-9 -21 152064.902025000 1.000000000 0E-9 +21 152065.135998090 1.000000000 0E-9 22 304129.087441000 1.000000000 0E-9 -23 608256.488464000 1.000000000 0E-9 -24 1216514.143849000 1.000000000 0E-9 +23 608257.112390560 1.000000000 0E-9 +24 1216513.040892250 1.000000000 0E-9 -- !sql_test_DecimalV2_DecimalV2_2 -- \N \N @@ -9647,56 +9647,56 @@ -- !sql_test_DecimalV2_Decimal64V3_0 -- \N \N \N -1 1258.40734 -1209.61734 -2 2379.60745 -2310.63945 -3 3504.99056 -3407.47856 -4 4636.28867 -4498.40267 -5 5775.95078 -5580.96278 -6 6927.44189 -6651.69389 -7 8095.65900 -7705.69900 +1 1258.40754 -1209.61714 +2 2379.60715 -2310.63975 +3 3504.99036 -3407.47876 +4 4636.28857 -4498.40277 +5 5775.95098 -5580.96258 +6 6927.44149 -6651.69429 +7 8095.65880 -7705.69920 8 9287.53111 -8736.04911 -9 10512.85622 -9732.94622 +9 10512.85652 -9732.94592 10 11785.49133 -10682.53333 -11 13125.03144 -11565.21544 -12 14559.19155 -12353.27755 -13 14591.74066 -14542.95066 -14 15712.94077 -15643.97277 -15 16838.32388 -16740.81188 -16 17969.62199 -17831.73599 -17 19109.28410 -18914.29610 -18 20260.77521 -19985.02721 -19 21428.99232 -21039.03232 +11 13125.03184 -11565.21504 +12 14559.19105 -12353.27805 +13 14591.74086 -14542.95046 +14 15712.94047 -15643.97307 +15 16838.32368 -16740.81208 +16 17969.62189 -17831.73609 +17 19109.28430 -18914.29590 +18 20260.77481 -19985.02761 +19 21428.99212 -21039.03252 20 22620.86443 -22069.38243 -21 23846.18954 -23066.27954 +21 23846.18984 -23066.27924 22 25118.82465 -24015.86665 -23 26458.36476 -24898.54876 -24 27892.52487 -25686.61087 +23 26458.36516 -24898.54836 +24 27892.52437 -25686.61137 -- !sql_test_DecimalV2_Decimal64V3_notn_0 -- -1 1258.40734 -1209.61734 -2 2379.60745 -2310.63945 -3 3504.99056 -3407.47856 -4 4636.28867 -4498.40267 -5 5775.95078 -5580.96278 -6 6927.44189 -6651.69389 -7 8095.65900 -7705.69900 +1 1258.40754 -1209.61714 +2 2379.60715 -2310.63975 +3 3504.99036 -3407.47876 +4 4636.28857 -4498.40277 +5 5775.95098 -5580.96258 +6 6927.44149 -6651.69429 +7 8095.65880 -7705.69920 8 9287.53111 -8736.04911 -9 10512.85622 -9732.94622 +9 10512.85652 -9732.94592 10 11785.49133 -10682.53333 -11 13125.03144 -11565.21544 -12 14559.19155 -12353.27755 -13 14591.74066 -14542.95066 -14 15712.94077 -15643.97277 -15 16838.32388 -16740.81188 -16 17969.62199 -17831.73599 -17 19109.28410 -18914.29610 -18 20260.77521 -19985.02721 -19 21428.99232 -21039.03232 +11 13125.03184 -11565.21504 +12 14559.19105 -12353.27805 +13 14591.74086 -14542.95046 +14 15712.94047 -15643.97307 +15 16838.32368 -16740.81208 +16 17969.62189 -17831.73609 +17 19109.28430 -18914.29590 +18 20260.77481 -19985.02761 +19 21428.99212 -21039.03252 20 22620.86443 -22069.38243 -21 23846.18954 -23066.27954 +21 23846.18984 -23066.27924 22 25118.82465 -24015.86665 -23 26458.36476 -24898.54876 -24 27892.52487 -25686.61087 +23 26458.36516 -24898.54836 +24 27892.52437 -25686.61137 -- !sql_test_DecimalV2_Decimal64V3_2 -- \N \N @@ -9806,56 +9806,56 @@ -- !sql_test_DecimalV2_Decimal128V3_0 -- \N \N \N -1 12345702.40734500 -12345653.61734500 -2 23456823.60745600 -23456754.63945600 -3 34567948.99056700 -34567851.47856700 -4 45679080.28867800 -45678942.40267800 -5 56790219.95078900 -56790024.96278900 -6 67901371.44190000 -67901095.69390000 -7 79012539.65901100 -79012149.69901100 +1 12345702.40754500 -12345653.61714500 +2 23456823.60715600 -23456754.63975600 +3 34567948.99036700 -34567851.47876700 +4 45679080.28857800 -45678942.40277800 +5 56790219.95098900 -56790024.96258900 +6 67901371.44150000 -67901095.69430000 +7 79012539.65881100 -79012149.69921100 8 90123731.53112200 -90123180.04912200 -9 101234956.85623300 -101234176.94623300 +9 101234956.85653300 -101234176.94593300 10 112346229.49134400 -112345126.53334400 -11 123457569.03145500 -123456009.21545500 -12 134569003.19156600 -134566797.27756600 -13 145679035.74067700 -145678986.95067700 -14 156790156.94078800 -156790087.97278800 -15 167901282.32389900 -167901184.81189900 -16 179012413.62201000 -179012275.73601000 -17 190123553.28412100 -190123358.29612100 -18 201234704.77523200 -201234429.02723200 -19 212345872.99234300 -212345483.03234300 +11 123457569.03185500 -123456009.21505500 +12 134569003.19106600 -134566797.27806600 +13 145679035.74087700 -145678986.95047700 +14 156790156.94048800 -156790087.97308800 +15 167901282.32369900 -167901184.81209900 +16 179012413.62191000 -179012275.73611000 +17 190123553.28432100 -190123358.29592100 +18 201234704.77483200 -201234429.02763200 +19 212345872.99214300 -212345483.03254300 20 223457064.86445400 -223456513.38245400 -21 234568290.18956500 -234567510.27956500 +21 234568290.18986500 -234567510.27926500 22 245679562.82467600 -245678459.86667600 -23 256790902.36478700 -256789342.54878700 -24 267902336.52489800 -267900130.61089800 +23 256790902.36518700 -256789342.54838700 +24 267902336.52439800 -267900130.61139800 -- !sql_test_DecimalV2_Decimal128V3_notn_0 -- -1 12345702.40734500 -12345653.61734500 -2 23456823.60745600 -23456754.63945600 -3 34567948.99056700 -34567851.47856700 -4 45679080.28867800 -45678942.40267800 -5 56790219.95078900 -56790024.96278900 -6 67901371.44190000 -67901095.69390000 -7 79012539.65901100 -79012149.69901100 +1 12345702.40754500 -12345653.61714500 +2 23456823.60715600 -23456754.63975600 +3 34567948.99036700 -34567851.47876700 +4 45679080.28857800 -45678942.40277800 +5 56790219.95098900 -56790024.96258900 +6 67901371.44150000 -67901095.69430000 +7 79012539.65881100 -79012149.69921100 8 90123731.53112200 -90123180.04912200 -9 101234956.85623300 -101234176.94623300 +9 101234956.85653300 -101234176.94593300 10 112346229.49134400 -112345126.53334400 -11 123457569.03145500 -123456009.21545500 -12 134569003.19156600 -134566797.27756600 -13 145679035.74067700 -145678986.95067700 -14 156790156.94078800 -156790087.97278800 -15 167901282.32389900 -167901184.81189900 -16 179012413.62201000 -179012275.73601000 -17 190123553.28412100 -190123358.29612100 -18 201234704.77523200 -201234429.02723200 -19 212345872.99234300 -212345483.03234300 +11 123457569.03185500 -123456009.21505500 +12 134569003.19106600 -134566797.27806600 +13 145679035.74087700 -145678986.95047700 +14 156790156.94048800 -156790087.97308800 +15 167901282.32369900 -167901184.81209900 +16 179012413.62191000 -179012275.73611000 +17 190123553.28432100 -190123358.29592100 +18 201234704.77483200 -201234429.02763200 +19 212345872.99214300 -212345483.03254300 20 223457064.86445400 -223456513.38245400 -21 234568290.18956500 -234567510.27956500 +21 234568290.18986500 -234567510.27926500 22 245679562.82467600 -245678459.86667600 -23 256790902.36478700 -256789342.54878700 -24 267902336.52489800 -267900130.61089800 +23 256790902.36518700 -256789342.54838700 +24 267902336.52439800 -267900130.61139800 -- !sql_test_DecimalV2_Decimal128V3_2 -- \N \N @@ -9977,18 +9977,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 178.684000000 -129.894000000 -14 252.578000000 -183.610000000 -15 357.115000000 -259.603000000 -16 504.976000000 -367.090000000 -17 714.102000000 -519.114000000 -18 1009.863000000 -734.115000000 -19 1428.141000000 -1038.181000000 +13 178.684200000 -129.893800000 +14 252.577700000 -183.610300000 +15 357.114800000 -259.603200000 +16 504.975900000 -367.090100000 +17 714.102200000 -519.113800000 +18 1009.862600000 -734.115400000 +19 1428.140800000 -1038.181200000 20 2019.681000000 -1468.199000000 -21 2856.249000000 -2076.339000000 +21 2856.249300000 -2076.338700000 22 4039.339000000 -2936.381000000 -23 5712.482000000 -4152.666000000 -24 8078.667000000 -5872.753000000 +23 5712.482400000 -4152.665600000 +24 8078.666500000 -5872.753500000 -- !sql_test_DecimalV2_Char_notn_0 -- 1 \N \N @@ -10003,18 +10003,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 178.684000000 -129.894000000 -14 252.578000000 -183.610000000 -15 357.115000000 -259.603000000 -16 504.976000000 -367.090000000 -17 714.102000000 -519.114000000 -18 1009.863000000 -734.115000000 -19 1428.141000000 -1038.181000000 +13 178.684200000 -129.893800000 +14 252.577700000 -183.610300000 +15 357.114800000 -259.603200000 +16 504.975900000 -367.090100000 +17 714.102200000 -519.113800000 +18 1009.862600000 -734.115400000 +19 1428.140800000 -1038.181200000 20 2019.681000000 -1468.199000000 -21 2856.249000000 -2076.339000000 +21 2856.249300000 -2076.338700000 22 4039.339000000 -2936.381000000 -23 5712.482000000 -4152.666000000 -24 8078.667000000 -5872.753000000 +23 5712.482400000 -4152.665600000 +24 8078.666500000 -5872.753500000 -- !sql_test_DecimalV2_Char_1 -- \N \N \N \N @@ -10030,18 +10030,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3763.880155000 0.1581123735327859 24.395000000 -14 7520.753496000 0.15811530807816815 34.484000000 -15 15034.351404000 0.158114405611641 48.756000000 -16 30061.423119000 0.1581141794313733 68.943000000 -17 60115.580352000 0.15811342052000624 97.494000000 -18 120224.611386000 0.15811437988323246 137.874000000 -19 240441.731780000 0.15811398511629868 194.980000000 -20 480875.759540000 0.15811381125497437 275.741000000 -21 961743.676770000 0.15811375286158097 389.955000000 +13 3763.911012800 0.1581136698014765 24.395200000 +14 7520.688067800 0.1581139325245078 34.483700000 +15 15034.289732200 0.1581137570169835 48.755800000 +16 30061.379515700 0.1581139500909335 68.942900000 +17 60115.703673600 0.1581137448751881 97.494200000 +18 120224.262590400 0.1581139211618495 137.873600000 +19 240441.485147800 0.1581138229314745 194.979800000 +20 480875.759540000 0.1581138112549744 275.741000000 +21 961744.416658200 0.1581138745015801 389.955300000 22 1923481.544940000 0.1581138577809889 551.479000000 -23 3846953.923192000 0.1581137961640312 779.908000000 -24 7693908.174470000 0.15811394108986757 1102.957000000 +23 3846955.896221600 0.1581138772575941 779.908400000 +24 7693904.686615000 0.1581138694125759 1102.956500000 -- !sql_test_DecimalV2_Char_notn_1 -- 1 \N \N \N @@ -10056,18 +10056,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3763.880155000 0.1581123735327859 24.395000000 -14 7520.753496000 0.15811530807816815 34.484000000 -15 15034.351404000 0.158114405611641 48.756000000 -16 30061.423119000 0.1581141794313733 68.943000000 -17 60115.580352000 0.15811342052000624 97.494000000 -18 120224.611386000 0.15811437988323246 137.874000000 -19 240441.731780000 0.15811398511629868 194.980000000 -20 480875.759540000 0.15811381125497437 275.741000000 -21 961743.676770000 0.15811375286158097 389.955000000 +13 3763.911012800 0.1581136698014765 24.395200000 +14 7520.688067800 0.1581139325245078 34.483700000 +15 15034.289732200 0.1581137570169835 48.755800000 +16 30061.379515700 0.1581139500909335 68.942900000 +17 60115.703673600 0.1581137448751881 97.494200000 +18 120224.262590400 0.1581139211618495 137.873600000 +19 240441.485147800 0.1581138229314745 194.979800000 +20 480875.759540000 0.1581138112549744 275.741000000 +21 961744.416658200 0.1581138745015801 389.955300000 22 1923481.544940000 0.1581138577809889 551.479000000 -23 3846953.923192000 0.1581137961640312 779.908000000 -24 7693908.174470000 0.15811394108986757 1102.957000000 +23 3846955.896221600 0.1581138772575941 779.908400000 +24 7693904.686615000 0.1581138694125759 1102.956500000 -- !sql_test_DecimalV2_Char_2 -- \N \N @@ -10189,18 +10189,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2343.516000000 -2294.726000000 -14 3312.566000000 -3243.598000000 -15 4683.497000000 -4585.985000000 -16 6622.631000000 -6484.745000000 -17 9365.224000000 -9170.236000000 -18 13244.011000000 -12968.263000000 -19 18729.565000000 -18339.605000000 +13 2343.516200000 -2294.725800000 +14 3312.565700000 -3243.598300000 +15 4683.496800000 -4585.985200000 +16 6622.630900000 -6484.745100000 +17 9365.224200000 -9170.235800000 +18 13244.010600000 -12968.263400000 +19 18729.564800000 -18339.605200000 20 26487.395000000 -25935.913000000 -21 37458.686000000 -36678.776000000 +21 37458.686300000 -36678.775700000 22 52974.478000000 -51871.520000000 -23 74917.151000000 -73357.335000000 -24 105948.800000000 -103742.886000000 +23 74917.151400000 -73357.334600000 +24 105948.799500000 -103742.886500000 -- !sql_test_DecimalV2_Varchar_notn_0 -- 1 \N \N @@ -10215,18 +10215,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2343.516000000 -2294.726000000 -14 3312.566000000 -3243.598000000 -15 4683.497000000 -4585.985000000 -16 6622.631000000 -6484.745000000 -17 9365.224000000 -9170.236000000 -18 13244.011000000 -12968.263000000 -19 18729.565000000 -18339.605000000 +13 2343.516200000 -2294.725800000 +14 3312.565700000 -3243.598300000 +15 4683.496800000 -4585.985200000 +16 6622.630900000 -6484.745100000 +17 9365.224200000 -9170.235800000 +18 13244.010600000 -12968.263400000 +19 18729.564800000 -18339.605200000 20 26487.395000000 -25935.913000000 -21 37458.686000000 -36678.776000000 +21 37458.686300000 -36678.775700000 22 52974.478000000 -51871.520000000 -23 74917.151000000 -73357.335000000 -24 105948.800000000 -103742.886000000 +23 74917.151400000 -73357.334600000 +24 105948.799500000 -103742.886500000 -- !sql_test_DecimalV2_Varchar_1 -- \N \N \N \N @@ -10242,18 +10242,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 56574.956795000 0.01051907166551465 24.395000000 -14 113041.379688000 0.010519566014517026 34.484000000 -15 225971.432196000 0.010519681682320543 48.756000000 -16 451830.911784000 0.010519725687277147 68.943000000 -17 903548.068620000 0.010519728131915798 97.494000000 -18 1806995.532738000 0.010519804577046614 137.874000000 -19 3613873.383300000 0.01051979313267602 194.980000000 +13 56575.420619200 0.01051915790508559 24.395200000 +14 113040.396263400 0.01051947449758731 34.483700000 +15 225970.505247800 0.01051963852996316 48.755800000 +16 451830.256415200 0.01051971042869297 68.942900000 +17 903549.922166000 0.01051974971217332 97.494200000 +18 1806990.290283200 0.0105197740569933 137.873600000 +19 3613869.676383000 0.01051978234203787 194.979800000 20 7227627.685614000 0.01051978635152135 275.741000000 -21 14455136.997105000 0.01051978283259818 389.955000000 -22 28910183.065521000 0.010519791132132673 551.479000000 -23 57820228.913644000 0.010519786930841223 779.908000000 -24 115640456.457751000 0.010519797146368503 1102.957000000 +21 14455148.117724300 0.01051979092567264 389.955300000 +22 28910183.065521000 0.01051979113213267 551.479000000 +23 57820258.568541200 0.01051979232624013 779.908400000 +24 115640404.034829500 0.01051979237746221 1102.956500000 -- !sql_test_DecimalV2_Varchar_notn_1 -- 1 \N \N \N @@ -10268,18 +10268,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 56574.956795000 0.01051907166551465 24.395000000 -14 113041.379688000 0.010519566014517026 34.484000000 -15 225971.432196000 0.010519681682320543 48.756000000 -16 451830.911784000 0.010519725687277147 68.943000000 -17 903548.068620000 0.010519728131915798 97.494000000 -18 1806995.532738000 0.010519804577046614 137.874000000 -19 3613873.383300000 0.01051979313267602 194.980000000 +13 56575.420619200 0.01051915790508559 24.395200000 +14 113040.396263400 0.01051947449758731 34.483700000 +15 225970.505247800 0.01051963852996316 48.755800000 +16 451830.256415200 0.01051971042869297 68.942900000 +17 903549.922166000 0.01051974971217332 97.494200000 +18 1806990.290283200 0.0105197740569933 137.873600000 +19 3613869.676383000 0.01051978234203787 194.979800000 20 7227627.685614000 0.01051978635152135 275.741000000 -21 14455136.997105000 0.01051978283259818 389.955000000 -22 28910183.065521000 0.010519791132132673 551.479000000 -23 57820228.913644000 0.010519786930841223 779.908000000 -24 115640456.457751000 0.010519797146368503 1102.957000000 +21 14455148.117724300 0.01051979092567264 389.955300000 +22 28910183.065521000 0.01051979113213267 551.479000000 +23 57820258.568541200 0.01051979232624013 779.908400000 +24 115640404.034829500 0.01051979237746221 1102.956500000 -- !sql_test_DecimalV2_Varchar_2 -- \N \N @@ -10401,18 +10401,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 10628.412000000 -10579.622000000 -14 15023.277000000 -14954.309000000 -15 21240.769000000 -21143.257000000 -16 30035.198000000 -29897.312000000 -17 42473.506000000 -42278.518000000 -18 60064.716000000 -59788.968000000 -19 84942.997000000 -84553.037000000 +13 10628.412200000 -10579.621800000 +14 15023.276700000 -14954.309300000 +15 21240.768800000 -21143.257200000 +16 30035.197900000 -29897.312100000 +17 42473.506200000 -42278.517800000 +18 60064.715600000 -59788.968400000 +19 84942.996800000 -84553.037200000 20 120126.592000000 -119575.110000000 -21 169883.986000000 -169104.076000000 +21 169883.986300000 -169104.075700000 22 240251.764000000 -239148.806000000 -23 339766.967000000 -338207.151000000 -24 480502.818000000 -478296.904000000 +23 339766.967400000 -338207.150600000 +24 480502.817500000 -478296.904500000 -- !sql_test_DecimalV2_String_notn_0 -- 1 \N \N @@ -10427,18 +10427,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 10628.412000000 -10579.622000000 -14 15023.277000000 -14954.309000000 -15 21240.769000000 -21143.257000000 -16 30035.198000000 -29897.312000000 -17 42473.506000000 -42278.518000000 -18 60064.716000000 -59788.968000000 -19 84942.997000000 -84553.037000000 +13 10628.412200000 -10579.621800000 +14 15023.276700000 -14954.309300000 +15 21240.768800000 -21143.257200000 +16 30035.197900000 -29897.312100000 +17 42473.506200000 -42278.517800000 +18 60064.715600000 -59788.968400000 +19 84942.996800000 -84553.037200000 20 120126.592000000 -119575.110000000 -21 169883.986000000 -169104.076000000 +21 169883.986300000 -169104.075700000 22 240251.764000000 -239148.806000000 -23 339766.967000000 -338207.151000000 -24 480502.818000000 -478296.904000000 +23 339766.967400000 -338207.150600000 +24 480502.817500000 -478296.904500000 -- !sql_test_DecimalV2_String_1 -- \N \N \N \N @@ -10454,18 +10454,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 258684.994715000 0.002300543275251256 24.395000000 -14 516873.537812000 0.0023006522273007575 34.484000000 -15 1033237.785828000 0.00230067809037301 48.756000000 -16 2065963.518465000 0.0023006878904287503 68.943000000 -17 4131406.913928000 0.0023006884177774914 97.494000000 -18 8262353.413908000 0.002300705249911217 137.874000000 -19 16524168.354660000 0.0023007027999251 194.980000000 -20 33047793.505591000 0.0023007012273947055 275.741000000 -21 66095044.858605000 0.0023007004889747415 389.955000000 -22 132189673.471515000 0.0023007023124732625 551.479000000 -23 264378719.210572000 0.002300701396391654 779.908000000 -24 528757432.488977000 0.0023007036291151535 1102.957000000 +13 258687.115518400 0.002300562136028261 24.395200000 +14 516869.041174100 0.002300632212346918 34.483700000 +15 1033233.547425400 0.002300668652855206 48.755800000 +16 2065960.521839500 0.00230068455334175 68.942900000 +17 4131415.389130400 0.002300693137428789 97.494200000 +18 8262329.443171200 0.00230069857510596 137.873600000 +19 16524151.405056600 0.002300700439987876 194.979800000 +20 33047793.505591000 0.002300701227394706 275.741000000 +21 66095095.706814300 0.002300702258948577 389.955300000 +22 132189673.471515000 0.002300702312473262 551.479000000 +23 264378854.805395600 0.002300702576377702 779.908400000 +24 528757192.789046500 0.002300702586144471 1102.956500000 -- !sql_test_DecimalV2_String_notn_1 -- 1 \N \N \N @@ -10480,18 +10480,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 258684.994715000 0.002300543275251256 24.395000000 -14 516873.537812000 0.0023006522273007575 34.484000000 -15 1033237.785828000 0.00230067809037301 48.756000000 -16 2065963.518465000 0.0023006878904287503 68.943000000 -17 4131406.913928000 0.0023006884177774914 97.494000000 -18 8262353.413908000 0.002300705249911217 137.874000000 -19 16524168.354660000 0.0023007027999251 194.980000000 -20 33047793.505591000 0.0023007012273947055 275.741000000 -21 66095044.858605000 0.0023007004889747415 389.955000000 -22 132189673.471515000 0.0023007023124732625 551.479000000 -23 264378719.210572000 0.002300701396391654 779.908000000 -24 528757432.488977000 0.0023007036291151535 1102.957000000 +13 258687.115518400 0.002300562136028261 24.395200000 +14 516869.041174100 0.002300632212346918 34.483700000 +15 1033233.547425400 0.002300668652855206 48.755800000 +16 2065960.521839500 0.00230068455334175 68.942900000 +17 4131415.389130400 0.002300693137428789 97.494200000 +18 8262329.443171200 0.00230069857510596 137.873600000 +19 16524151.405056600 0.002300700439987876 194.979800000 +20 33047793.505591000 0.002300701227394706 275.741000000 +21 66095095.706814300 0.002300702258948577 389.955300000 +22 132189673.471515000 0.002300702312473262 551.479000000 +23 264378854.805395600 0.002300702576377702 779.908400000 +24 528757192.789046500 0.002300702586144471 1102.956500000 -- !sql_test_DecimalV2_String_2 -- \N \N @@ -11449,56 +11449,56 @@ -- !sql_test_DecimalV2_Boolean_0 -- \N \N \N -1 24.395000000 24.395000000 -2 34.484000000 34.484000000 -3 48.756000000 48.756000000 -4 68.943000000 68.943000000 -5 97.494000000 97.494000000 -6 137.874000000 137.874000000 -7 194.980000000 194.980000000 +1 24.395200000 24.395200000 +2 34.483700000 34.483700000 +3 48.755800000 48.755800000 +4 68.942900000 68.942900000 +5 97.494200000 97.494200000 +6 137.873600000 137.873600000 +7 194.979800000 194.979800000 8 276.741000000 274.741000000 -9 390.955000000 388.955000000 +9 390.955300000 388.955300000 10 552.479000000 550.479000000 -11 780.908000000 778.908000000 -12 1103.957000000 1101.957000000 -13 24.395000000 24.395000000 -14 34.484000000 34.484000000 -15 48.756000000 48.756000000 -16 68.943000000 68.943000000 -17 97.494000000 97.494000000 -18 137.874000000 137.874000000 -19 194.980000000 194.980000000 +11 780.908400000 778.908400000 +12 1103.956500000 1101.956500000 +13 24.395200000 24.395200000 +14 34.483700000 34.483700000 +15 48.755800000 48.755800000 +16 68.942900000 68.942900000 +17 97.494200000 97.494200000 +18 137.873600000 137.873600000 +19 194.979800000 194.979800000 20 276.741000000 274.741000000 -21 390.955000000 388.955000000 +21 390.955300000 388.955300000 22 552.479000000 550.479000000 -23 780.908000000 778.908000000 -24 1103.957000000 1101.957000000 +23 780.908400000 778.908400000 +24 1103.956500000 1101.956500000 -- !sql_test_DecimalV2_Boolean_notn_0 -- -1 24.395000000 24.395000000 -2 34.484000000 34.484000000 -3 48.756000000 48.756000000 -4 68.943000000 68.943000000 -5 97.494000000 97.494000000 -6 137.874000000 137.874000000 -7 194.980000000 194.980000000 +1 24.395200000 24.395200000 +2 34.483700000 34.483700000 +3 48.755800000 48.755800000 +4 68.942900000 68.942900000 +5 97.494200000 97.494200000 +6 137.873600000 137.873600000 +7 194.979800000 194.979800000 8 276.741000000 274.741000000 -9 390.955000000 388.955000000 +9 390.955300000 388.955300000 10 552.479000000 550.479000000 -11 780.908000000 778.908000000 -12 1103.957000000 1101.957000000 -13 24.395000000 24.395000000 -14 34.484000000 34.484000000 -15 48.756000000 48.756000000 -16 68.943000000 68.943000000 -17 97.494000000 97.494000000 -18 137.874000000 137.874000000 -19 194.980000000 194.980000000 +11 780.908400000 778.908400000 +12 1103.956500000 1101.956500000 +13 24.395200000 24.395200000 +14 34.483700000 34.483700000 +15 48.755800000 48.755800000 +16 68.942900000 68.942900000 +17 97.494200000 97.494200000 +18 137.873600000 137.873600000 +19 194.979800000 194.979800000 20 276.741000000 274.741000000 -21 390.955000000 388.955000000 +21 390.955300000 388.955300000 22 552.479000000 550.479000000 -23 780.908000000 778.908000000 -24 1103.957000000 1101.957000000 +23 780.908400000 778.908400000 +24 1103.956500000 1101.956500000 -- !sql_test_DecimalV2_Boolean_1 -- \N \N \N \N @@ -11510,10 +11510,10 @@ 6 0E-9 \N \N 7 0E-9 \N \N 8 275.741000000 275.741000000 0.741000000 -9 389.955000000 389.955000000 0.955000000 +9 389.955300000 389.955300000 0.955300000 10 551.479000000 551.479000000 0.479000000 -11 779.908000000 779.908000000 0.908000000 -12 1102.957000000 1102.957000000 0.957000000 +11 779.908400000 779.908400000 0.908400000 +12 1102.956500000 1102.956500000 0.956500000 13 0E-9 \N \N 14 0E-9 \N \N 15 0E-9 \N \N @@ -11522,10 +11522,10 @@ 18 0E-9 \N \N 19 0E-9 \N \N 20 275.741000000 275.741000000 0.741000000 -21 389.955000000 389.955000000 0.955000000 +21 389.955300000 389.955300000 0.955300000 22 551.479000000 551.479000000 0.479000000 -23 779.908000000 779.908000000 0.908000000 -24 1102.957000000 1102.957000000 0.957000000 +23 779.908400000 779.908400000 0.908400000 +24 1102.956500000 1102.956500000 0.956500000 -- !sql_test_DecimalV2_Boolean_notn_1 -- 1 0E-9 \N \N @@ -11536,10 +11536,10 @@ 6 0E-9 \N \N 7 0E-9 \N \N 8 275.741000000 275.741000000 0.741000000 -9 389.955000000 389.955000000 0.955000000 +9 389.955300000 389.955300000 0.955300000 10 551.479000000 551.479000000 0.479000000 -11 779.908000000 779.908000000 0.908000000 -12 1102.957000000 1102.957000000 0.957000000 +11 779.908400000 779.908400000 0.908400000 +12 1102.956500000 1102.956500000 0.956500000 13 0E-9 \N \N 14 0E-9 \N \N 15 0E-9 \N \N @@ -11548,10 +11548,10 @@ 18 0E-9 \N \N 19 0E-9 \N \N 20 275.741000000 275.741000000 0.741000000 -21 389.955000000 389.955000000 0.955000000 +21 389.955300000 389.955300000 0.955300000 22 551.479000000 551.479000000 0.479000000 -23 779.908000000 779.908000000 0.908000000 -24 1102.957000000 1102.957000000 0.957000000 +23 779.908400000 779.908400000 0.908400000 +24 1102.956500000 1102.956500000 0.956500000 -- !sql_test_DecimalV2_Boolean_2 -- \N \N @@ -12456,55 +12456,55 @@ -- !sql_test_Decimal32V3_Float_0 -- \N \N \N -1 12.112000001490117 11.911999998509884 -2 23.323000002980233 22.92299999701977 +1 12.11200000149012 11.91199999850988 +2 23.32300000298023 22.92299999701977 3 34.53400001192093 33.93399998807907 -4 45.74500000596046 44.944999994039534 +4 45.74500000596046 44.94499999403953 5 56.956 55.956 6 68.16700002384185 66.96699997615814 7 79.37799998807907 77.97800001192093 8 90.58900001192093 88.98899998807907 -9 101.79999997615815 100.00000002384186 +9 101.7999999761581 100.0000000238419 10 113.011 111.011 -11 124.22200002384186 122.02199997615814 -12 135.43300004768372 133.0329999523163 -13 145.4440000014901 145.24399999850988 -14 156.65500000298024 156.25499999701978 -15 167.86600001192093 167.26599998807907 -16 179.07700000596046 178.27699999403953 +11 124.2220000238419 122.0219999761581 +12 135.4330000476837 133.0329999523163 +13 145.4440000014901 145.2439999985099 +14 156.6550000029802 156.2549999970198 +15 167.8660000119209 167.2659999880791 +16 179.0770000059605 178.2769999940395 17 190.288 189.288 -18 201.49900002384186 200.29899997615814 -19 212.70999998807906 211.31000001192092 -20 223.92100001192094 222.32099998807908 -21 235.13199997615814 233.33200002384186 +18 201.4990000238419 200.2989999761581 +19 212.7099999880791 211.3100000119209 +20 223.9210000119209 222.3209999880791 +21 235.1319999761581 233.3320000238419 22 246.343 244.343 -23 257.55400002384187 255.35399997615815 +23 257.5540000238419 255.3539999761581 24 268.7650000476837 266.3649999523163 -- !sql_test_Decimal32V3_Float_notn_0 -- -1 12.112000001490117 11.911999998509884 -2 23.323000002980233 22.92299999701977 +1 12.11200000149012 11.91199999850988 +2 23.32300000298023 22.92299999701977 3 34.53400001192093 33.93399998807907 -4 45.74500000596046 44.944999994039534 +4 45.74500000596046 44.94499999403953 5 56.956 55.956 6 68.16700002384185 66.96699997615814 7 79.37799998807907 77.97800001192093 8 90.58900001192093 88.98899998807907 -9 101.79999997615815 100.00000002384186 +9 101.7999999761581 100.0000000238419 10 113.011 111.011 -11 124.22200002384186 122.02199997615814 -12 135.43300004768372 133.0329999523163 -13 145.4440000014901 145.24399999850988 -14 156.65500000298024 156.25499999701978 -15 167.86600001192093 167.26599998807907 -16 179.07700000596046 178.27699999403953 +11 124.2220000238419 122.0219999761581 +12 135.4330000476837 133.0329999523163 +13 145.4440000014901 145.2439999985099 +14 156.6550000029802 156.2549999970198 +15 167.8660000119209 167.2659999880791 +16 179.0770000059605 178.2769999940395 17 190.288 189.288 -18 201.49900002384186 200.29899997615814 -19 212.70999998807906 211.31000001192092 -20 223.92100001192094 222.32099998807908 -21 235.13199997615814 233.33200002384186 +18 201.4990000238419 200.2989999761581 +19 212.7099999880791 211.3100000119209 +20 223.9210000119209 222.3209999880791 +21 235.1319999761581 233.3320000238419 22 246.343 244.343 -23 257.55400002384187 255.35399997615815 +23 257.5540000238419 255.3539999761581 24 268.7650000476837 266.3649999523163 -- !sql_test_Decimal32V3_Float_2 -- @@ -12616,108 +12616,108 @@ -- !sql_test_Decimal32V3_Double_0 -- \N \N \N 1 12.5364 11.4876 -2 23.864600000000003 22.3814 +2 23.8646 22.3814 3 35.2708 33.1972 4 46.7941 43.8959 -5 58.487 54.425000000000004 +5 58.487 54.425 6 70.42179999999999 64.7122 7 82.6998 74.6562 -8 95.4635 84.1145 -9 108.9141 92.8859 -10 123.33579999999999 100.6862 -11 139.13060000000002 107.1134 -12 156.86700000000002 111.599 -13 145.8684 144.81959999999998 -14 157.19660000000002 155.7134 +8 95.4635 84.11450000000001 +9 108.9141 92.88590000000001 +10 123.3358 100.6862 +11 139.1306 107.1134 +12 156.867 111.599 +13 145.8684 144.8196 +14 157.1966 155.7134 15 168.6028 166.5292 -16 180.12609999999998 177.2279 -17 191.81900000000002 187.757 +16 180.1261 177.2279 +17 191.819 187.757 18 203.7538 198.0442 -19 216.0318 207.98819999999998 -20 228.7955 217.44650000000001 +19 216.0318 207.9882 +20 228.7955 217.4465 21 242.2461 226.2179 -22 256.6678 234.01819999999998 +22 256.6678 234.0182 23 272.4626 240.4454 -24 290.199 244.93099999999998 +24 290.199 244.931 -- !sql_test_Decimal32V3_Double_notn_0 -- 1 12.5364 11.4876 -2 23.864600000000003 22.3814 +2 23.8646 22.3814 3 35.2708 33.1972 4 46.7941 43.8959 -5 58.487 54.425000000000004 +5 58.487 54.425 6 70.42179999999999 64.7122 7 82.6998 74.6562 -8 95.4635 84.1145 -9 108.9141 92.8859 -10 123.33579999999999 100.6862 -11 139.13060000000002 107.1134 -12 156.86700000000002 111.599 -13 145.8684 144.81959999999998 -14 157.19660000000002 155.7134 +8 95.4635 84.11450000000001 +9 108.9141 92.88590000000001 +10 123.3358 100.6862 +11 139.1306 107.1134 +12 156.867 111.599 +13 145.8684 144.8196 +14 157.1966 155.7134 15 168.6028 166.5292 -16 180.12609999999998 177.2279 -17 191.81900000000002 187.757 +16 180.1261 177.2279 +17 191.819 187.757 18 203.7538 198.0442 -19 216.0318 207.98819999999998 -20 228.7955 217.44650000000001 +19 216.0318 207.9882 +20 228.7955 217.4465 21 242.2461 226.2179 -22 256.6678 234.01819999999998 +22 256.6678 234.0182 23 272.4626 240.4454 -24 290.199 244.93099999999998 +24 290.199 244.931 -- !sql_test_Decimal32V3_Double_1 -- \N \N \N \N -1 6.2990928 22.90617848970252 0.47520000000000095 -2 17.1480168 31.17988133764833 0.13339999999999996 -3 35.4938112 33.01890432098766 0.019600000000003615 -4 65.7094395 31.291836312193773 0.42289999999999717 -5 114.66213600000002 27.797144263909402 1.6189999999999993 -6 192.89027159999998 23.667857643267478 1.906599999999993 -7 316.4271804 19.562882291511265 2.2638000000000007 -8 509.5076805 15.823244338708257 4.6715 +1 6.2990928 22.90617848970252 0.475200000000001 +2 17.1480168 31.17988133764833 0.1334 +3 35.4938112 33.01890432098766 0.01960000000000361 +4 65.7094395 31.29183631219377 0.4228999999999972 +5 114.662136 27.7971442639094 1.618999999999999 +6 192.8902716 23.66785764326748 1.906599999999993 +7 316.4271804 19.56288229151127 2.263800000000001 +8 509.5076805 15.82324433870826 4.6715 9 808.6226899999999 12.59030957936637 4.730800000000016 -10 1268.5021728 9.89077069793727 10.087799999999998 -11 1971.0108492000002 7.690991092287895 11.061799999999991 -12 3038.229722 5.930591146063445 21.063000000000002 +10 1268.5021728 9.89077069793727 10.0878 +11 1971.0108492 7.690991092287895 11.06179999999999 +12 3038.229722 5.930591146063445 21.063 13 76.2183936 277.162471395881 0.08520000000000039 -14 116.02702800000002 210.96952535059333 0.7190000000000047 -15 173.73242879999998 161.6184413580247 0.6412000000000115 -16 258.9208407 123.3020495479953 0.43769999999998577 -17 385.45942800000006 93.44559330379124 0.904999999999998 -18 573.5264652 70.37235533137172 1.0630000000000006 -19 852.6618179999999 52.71520214829181 2.8764000000000003 -20 1266.1001145 39.31994008282668 1.8155000000000054 -21 1877.1586711999998 29.22748655494691 1.823100000000025 -22 2778.4604064 21.6642236507488 7.5221999999999944 -23 4105.4695044 16.01976437664755 0.31639999999998736 -24 6056.06621 11.82137492268269 18.590999999999994 +14 116.027028 210.9695253505933 0.7190000000000047 +15 173.7324288 161.6184413580247 0.6412000000000115 +16 258.9208407 123.3020495479953 0.4376999999999858 +17 385.4594280000001 93.44559330379124 0.904999999999998 +18 573.5264652 70.37235533137172 1.063000000000001 +19 852.6618179999999 52.71520214829181 2.8764 +20 1266.1001145 39.31994008282668 1.815500000000005 +21 1877.1586712 29.22748655494691 1.823100000000025 +22 2778.4604064 21.6642236507488 7.522199999999994 +23 4105.4695044 16.01976437664755 0.3163999999999874 +24 6056.06621 11.82137492268269 18.59099999999999 -- !sql_test_Decimal32V3_Double_notn_1 -- -1 6.2990928 22.90617848970252 0.47520000000000095 -2 17.1480168 31.17988133764833 0.13339999999999996 -3 35.4938112 33.01890432098766 0.019600000000003615 -4 65.7094395 31.291836312193773 0.42289999999999717 -5 114.66213600000002 27.797144263909402 1.6189999999999993 -6 192.89027159999998 23.667857643267478 1.906599999999993 -7 316.4271804 19.562882291511265 2.2638000000000007 -8 509.5076805 15.823244338708257 4.6715 +1 6.2990928 22.90617848970252 0.475200000000001 +2 17.1480168 31.17988133764833 0.1334 +3 35.4938112 33.01890432098766 0.01960000000000361 +4 65.7094395 31.29183631219377 0.4228999999999972 +5 114.662136 27.7971442639094 1.618999999999999 +6 192.8902716 23.66785764326748 1.906599999999993 +7 316.4271804 19.56288229151127 2.263800000000001 +8 509.5076805 15.82324433870826 4.6715 9 808.6226899999999 12.59030957936637 4.730800000000016 -10 1268.5021728 9.89077069793727 10.087799999999998 -11 1971.0108492000002 7.690991092287895 11.061799999999991 -12 3038.229722 5.930591146063445 21.063000000000002 +10 1268.5021728 9.89077069793727 10.0878 +11 1971.0108492 7.690991092287895 11.06179999999999 +12 3038.229722 5.930591146063445 21.063 13 76.2183936 277.162471395881 0.08520000000000039 -14 116.02702800000002 210.96952535059333 0.7190000000000047 -15 173.73242879999998 161.6184413580247 0.6412000000000115 -16 258.9208407 123.3020495479953 0.43769999999998577 -17 385.45942800000006 93.44559330379124 0.904999999999998 -18 573.5264652 70.37235533137172 1.0630000000000006 -19 852.6618179999999 52.71520214829181 2.8764000000000003 -20 1266.1001145 39.31994008282668 1.8155000000000054 -21 1877.1586711999998 29.22748655494691 1.823100000000025 -22 2778.4604064 21.6642236507488 7.5221999999999944 -23 4105.4695044 16.01976437664755 0.31639999999998736 -24 6056.06621 11.82137492268269 18.590999999999994 +14 116.027028 210.9695253505933 0.7190000000000047 +15 173.7324288 161.6184413580247 0.6412000000000115 +16 258.9208407 123.3020495479953 0.4376999999999858 +17 385.4594280000001 93.44559330379124 0.904999999999998 +18 573.5264652 70.37235533137172 1.063000000000001 +19 852.6618179999999 52.71520214829181 2.8764 +20 1266.1001145 39.31994008282668 1.815500000000005 +21 1877.1586712 29.22748655494691 1.823100000000025 +22 2778.4604064 21.6642236507488 7.522199999999994 +23 4105.4695044 16.01976437664755 0.3163999999999874 +24 6056.06621 11.82137492268269 18.59099999999999 -- !sql_test_Decimal32V3_Double_2 -- \N \N @@ -13477,14 +13477,14 @@ 12 \N \N 13 299.633 -8.944999999999993 14 374.549 -61.63899999999998 -15 475.92499999999995 -140.79299999999998 +15 475.925 -140.793 16 614.71 -257.356 -17 806.396 -426.81999999999994 +17 806.396 -426.8199999999999 18 1072.888 -671.09 -19 1445.171 -1021.1510000000001 -20 1967.0610000000001 -1520.819 +19 1445.171 -1021.151 +20 1967.061 -1520.819 21 2700.526 -2232.062 -22 3733.203 -3242.5170000000003 +22 3733.203 -3242.517 23 5189.027999999999 -4676.12 24 7243.275 -6708.145 @@ -13503,14 +13503,14 @@ 12 \N \N 13 299.633 -8.944999999999993 14 374.549 -61.63899999999998 -15 475.92499999999995 -140.79299999999998 +15 475.925 -140.793 16 614.71 -257.356 -17 806.396 -426.81999999999994 +17 806.396 -426.8199999999999 18 1072.888 -671.09 -19 1445.171 -1021.1510000000001 -20 1967.0610000000001 -1520.819 +19 1445.171 -1021.151 +20 1967.061 -1520.819 21 2700.526 -2232.062 -22 3733.203 -3242.5170000000003 +22 3733.203 -3242.517 23 5189.027999999999 -4676.12 24 7243.275 -6708.145 @@ -13531,15 +13531,15 @@ 13 22424.980416 0.9420243828140697 145.344 14 34121.89677 0.7173741597659725 156.455 15 51670.484194 0.543412061914846 167.566 -16 77909.068341 0.40977861767343293 178.677 -17 117024.79910399999 0.30779360631065444 189.788 -18 175181.718111 0.23039166778480002 200.899 -19 261442.46361 0.17192402289725348 212.01 -20 389109.63674000005 0.1279407548424831 223.121 +16 77909.06834100001 0.4097786176734329 178.677 +17 117024.799104 0.3077936063106544 189.788 +18 175181.718111 0.2303916677848 200.899 +19 261442.46361 0.1719240228972535 212.01 +20 389109.63674 0.1279407548424831 223.121 21 577684.976208 0.09497326758285915 234.232 22 855722.03598 0.07034198620357468 245.343 23 1264978.332596 0.05199192145926245 256.454 -24 1866455.8461499999 0.03835666907024518 267.565 +24 1866455.84615 0.03835666907024518 267.565 -- !sql_test_Decimal32V3_Char_notn_1 -- 1 \N \N \N @@ -13557,15 +13557,15 @@ 13 22424.980416 0.9420243828140697 145.344 14 34121.89677 0.7173741597659725 156.455 15 51670.484194 0.543412061914846 167.566 -16 77909.068341 0.40977861767343293 178.677 -17 117024.79910399999 0.30779360631065444 189.788 -18 175181.718111 0.23039166778480002 200.899 -19 261442.46361 0.17192402289725348 212.01 -20 389109.63674000005 0.1279407548424831 223.121 +16 77909.06834100001 0.4097786176734329 178.677 +17 117024.799104 0.3077936063106544 189.788 +18 175181.718111 0.2303916677848 200.899 +19 261442.46361 0.1719240228972535 212.01 +20 389109.63674 0.1279407548424831 223.121 21 577684.976208 0.09497326758285915 234.232 22 855722.03598 0.07034198620357468 245.343 23 1264978.332596 0.05199192145926245 256.454 -24 1866455.8461499999 0.03835666907024518 267.565 +24 1866455.84615 0.03835666907024518 267.565 -- !sql_test_Decimal32V3_Char_2 -- \N \N @@ -13691,14 +13691,14 @@ 14 3434.537 -3121.627 15 4802.307 -4467.175 16 6732.365 -6375.011 -17 9457.518 -9077.942 -18 13307.036 -12905.238000000001 -19 18746.594999999998 -18322.575 -20 26434.774999999998 -25988.533 -21 37302.963 -36834.498999999996 -22 52668.342000000004 -52177.656 +17 9457.518 -9077.941999999999 +18 13307.036 -12905.238 +19 18746.595 -18322.575 +20 26434.775 -25988.533 +21 37302.963 -36834.499 +22 52668.342 -52177.656 23 74393.697 -73880.789 -24 105113.408 -104578.27799999999 +24 105113.408 -104578.278 -- !sql_test_Decimal32V3_Varchar_notn_0 -- 1 \N \N @@ -13717,14 +13717,14 @@ 14 3434.537 -3121.627 15 4802.307 -4467.175 16 6732.365 -6375.011 -17 9457.518 -9077.942 -18 13307.036 -12905.238000000001 -19 18746.594999999998 -18322.575 -20 26434.774999999998 -25988.533 -21 37302.963 -36834.498999999996 -22 52668.342000000004 -52177.656 +17 9457.518 -9077.941999999999 +18 13307.036 -12905.238 +19 18746.595 -18322.575 +20 26434.775 -25988.533 +21 37302.963 -36834.499 +22 52668.342 -52177.656 23 74393.697 -73880.789 -24 105113.408 -104578.27799999999 +24 105113.408 -104578.278 -- !sql_test_Decimal32V3_Varchar_1 -- \N \N \N \N @@ -13741,17 +13741,17 @@ 11 \N \N \N 12 \N \N \N 13 337070.322624 0.06267202099416115 145.344 -14 512872.31931000005 0.04772760412948792 156.455 +14 512872.31931 0.04772760412948792 156.455 15 776625.010406 0.03615433958445574 167.566 -16 1170993.310776 0.027263580445086796 178.677 -17 1758903.94124 0.020478369568384062 189.788 -18 2633009.8171630003 0.015328620477567112 200.899 -19 3929517.3658499997 0.011438615971169573 212.01 +16 1170993.310776 0.0272635804450868 178.677 +17 1758903.94124 0.02047836956838406 189.788 +18 2633009.817163 0.01532862047756711 200.899 +19 3929517.36585 0.01143861597116957 212.01 20 5848370.452134 0.008512282361120746 223.121 -21 8682682.999592 0.0063188567205065636 234.232 -22 1.2861615843657E7 0.004680064183279556 245.343 -23 1.9012792516322E7 0.0034591790795349647 256.454 -24 2.8053077982295E7 0.0025519848221354853 267.565 +21 8682682.999592001 0.006318856720506564 234.232 +22 12861615.843657 0.004680064183279556 245.343 +23 19012792.516322 0.003459179079534965 256.454 +24 28053077.982295 0.002551984822135485 267.565 -- !sql_test_Decimal32V3_Varchar_notn_1 -- 1 \N \N \N @@ -13767,17 +13767,17 @@ 11 \N \N \N 12 \N \N \N 13 337070.322624 0.06267202099416115 145.344 -14 512872.31931000005 0.04772760412948792 156.455 +14 512872.31931 0.04772760412948792 156.455 15 776625.010406 0.03615433958445574 167.566 -16 1170993.310776 0.027263580445086796 178.677 -17 1758903.94124 0.020478369568384062 189.788 -18 2633009.8171630003 0.015328620477567112 200.899 -19 3929517.3658499997 0.011438615971169573 212.01 +16 1170993.310776 0.0272635804450868 178.677 +17 1758903.94124 0.02047836956838406 189.788 +18 2633009.817163 0.01532862047756711 200.899 +19 3929517.36585 0.01143861597116957 212.01 20 5848370.452134 0.008512282361120746 223.121 -21 8682682.999592 0.0063188567205065636 234.232 -22 1.2861615843657E7 0.004680064183279556 245.343 -23 1.9012792516322E7 0.0034591790795349647 256.454 -24 2.8053077982295E7 0.0025519848221354853 267.565 +21 8682682.999592001 0.006318856720506564 234.232 +22 12861615.843657 0.004680064183279556 245.343 +23 19012792.516322 0.003459179079534965 256.454 +24 28053077.982295 0.002551984822135485 267.565 -- !sql_test_Decimal32V3_Varchar_2 -- \N \N @@ -13899,17 +13899,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 10749.360999999999 -10458.673 +13 10749.361 -10458.673 14 15145.248 -14832.338 -15 21359.578999999998 -21024.447 +15 21359.579 -21024.447 16 30144.932 -29787.578 17 42565.8 -42186.224 -18 60127.740999999995 -59725.943 +18 60127.74099999999 -59725.943 19 84960.027 -84536.00700000001 20 120073.972 -119627.73 -21 169728.26299999998 -169259.799 +21 169728.263 -169259.799 22 239945.628 -239454.942 -23 339243.51300000004 -338730.605 +23 339243.513 -338730.605 24 479667.426 -479132.296 -- !sql_test_Decimal32V3_String_notn_0 -- @@ -13925,17 +13925,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 10749.360999999999 -10458.673 +13 10749.361 -10458.673 14 15145.248 -14832.338 -15 21359.578999999998 -21024.447 +15 21359.579 -21024.447 16 30144.932 -29787.578 17 42565.8 -42186.224 -18 60127.740999999995 -59725.943 +18 60127.74099999999 -59725.943 19 84960.027 -84536.00700000001 20 120073.972 -119627.73 -21 169728.26299999998 -169259.799 +21 169728.263 -169259.799 22 239945.628 -239454.942 -23 339243.51300000004 -338730.605 +23 339243.513 -338730.605 24 479667.426 -479132.296 -- !sql_test_Decimal32V3_String_1 -- @@ -13952,18 +13952,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1541230.246848 0.013706503865469096 145.344 -14 2345071.608815 0.010438132009695511 156.455 +13 1541230.246848 0.0137065038654691 145.344 +14 2345071.608815 0.01043813200969551 156.455 15 3551060.850358 0.00790703554211674 167.566 16 5354280.544635 0.005962606939038595 178.677 17 8042458.565456001 0.004478665901831442 189.788 -18 1.2039242630958E7 0.00335240425317256 200.899 -19 1.7967427084170002E7 0.0025016514545703173 212.01 -20 2.6741241725971E7 0.001861655533843477 223.121 -21 3.9700925869192E7 0.0013819483707954295 234.232 -22 5.8808787022755E7 0.001023540710433448 245.343 -23 8.6934587228786E7 7.56530354747259E-4 256.454 -24 1.2827062380846499E8 5.581249010833568E-4 267.565 +18 12039242.630958 0.00335240425317256 200.899 +19 17967427.08417 0.002501651454570317 212.01 +20 26741241.725971 0.001861655533843477 223.121 +21 39700925.869192 0.00138194837079543 234.232 +22 58808787.022755 0.001023540710433448 245.343 +23 86934587.22878601 0.000756530354747259 256.454 +24 128270623.808465 0.0005581249010833568 267.565 -- !sql_test_Decimal32V3_String_notn_1 -- 1 \N \N \N @@ -13978,18 +13978,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1541230.246848 0.013706503865469096 145.344 -14 2345071.608815 0.010438132009695511 156.455 +13 1541230.246848 0.0137065038654691 145.344 +14 2345071.608815 0.01043813200969551 156.455 15 3551060.850358 0.00790703554211674 167.566 16 5354280.544635 0.005962606939038595 178.677 17 8042458.565456001 0.004478665901831442 189.788 -18 1.2039242630958E7 0.00335240425317256 200.899 -19 1.7967427084170002E7 0.0025016514545703173 212.01 -20 2.6741241725971E7 0.001861655533843477 223.121 -21 3.9700925869192E7 0.0013819483707954295 234.232 -22 5.8808787022755E7 0.001023540710433448 245.343 -23 8.6934587228786E7 7.56530354747259E-4 256.454 -24 1.2827062380846499E8 5.581249010833568E-4 267.565 +18 12039242.630958 0.00335240425317256 200.899 +19 17967427.08417 0.002501651454570317 212.01 +20 26741241.725971 0.001861655533843477 223.121 +21 39700925.869192 0.00138194837079543 234.232 +22 58808787.022755 0.001023540710433448 245.343 +23 86934587.22878601 0.000756530354747259 256.454 +24 128270623.808465 0.0005581249010833568 267.565 -- !sql_test_Decimal32V3_String_2 -- \N \N @@ -15689,56 +15689,56 @@ -- !sql_test_Decimal64V3_Float_0 -- \N \N \N -1 1234.11234000149 1233.9123399985099 -2 2345.3234500029803 2344.92344999702 +1 1234.11234000149 1233.91233999851 +2 2345.32345000298 2344.92344999702 3 3456.534560011921 3455.934559988079 4 4567.74567000596 4566.945669994039 5 5678.95678 5677.95678 6 6790.167890023842 6788.967889976158 7 7901.378999988079 7899.979000011921 -8 9012.59011001192 9010.990109988079 -9 10123.801219976158 10122.001220023842 +8 9012.590110011921 9010.990109988079 +9 10123.80121997616 10122.00122002384 10 11235.01233 11233.01233 -11 12346.223440023841 12344.023439976158 -12 13457.434550047683 13455.034549952316 -13 14567.445660001491 14567.24565999851 -14 15678.656770002981 15678.25676999702 -15 16789.86788001192 16789.267879988078 +11 12346.22344002384 12344.02343997616 +12 13457.43455004768 13455.03454995232 +13 14567.44566000149 14567.24565999851 +14 15678.65677000298 15678.25676999702 +15 16789.86788001192 16789.26787998808 16 17901.07899000596 17900.27898999404 17 19012.2901 19011.2901 -18 20123.501210023842 20122.301209976158 -19 21234.71231998808 21233.312320011923 +18 20123.50121002384 20122.30120997616 +19 21234.71231998808 21233.31232001192 20 22345.92343001192 22344.32342998808 -21 23457.13453997616 23455.334540023843 +21 23457.13453997616 23455.33454002384 22 24568.34565 24566.34565 -23 25679.556760023843 25677.35675997616 -24 26790.767870047683 26788.367869952315 +23 25679.55676002384 25677.35675997616 +24 26790.76787004768 26788.36786995232 -- !sql_test_Decimal64V3_Float_notn_0 -- -1 1234.11234000149 1233.9123399985099 -2 2345.3234500029803 2344.92344999702 +1 1234.11234000149 1233.91233999851 +2 2345.32345000298 2344.92344999702 3 3456.534560011921 3455.934559988079 4 4567.74567000596 4566.945669994039 5 5678.95678 5677.95678 6 6790.167890023842 6788.967889976158 7 7901.378999988079 7899.979000011921 -8 9012.59011001192 9010.990109988079 -9 10123.801219976158 10122.001220023842 +8 9012.590110011921 9010.990109988079 +9 10123.80121997616 10122.00122002384 10 11235.01233 11233.01233 -11 12346.223440023841 12344.023439976158 -12 13457.434550047683 13455.034549952316 -13 14567.445660001491 14567.24565999851 -14 15678.656770002981 15678.25676999702 -15 16789.86788001192 16789.267879988078 +11 12346.22344002384 12344.02343997616 +12 13457.43455004768 13455.03454995232 +13 14567.44566000149 14567.24565999851 +14 15678.65677000298 15678.25676999702 +15 16789.86788001192 16789.26787998808 16 17901.07899000596 17900.27898999404 17 19012.2901 19011.2901 -18 20123.501210023842 20122.301209976158 -19 21234.71231998808 21233.312320011923 +18 20123.50121002384 20122.30120997616 +19 21234.71231998808 21233.31232001192 20 22345.92343001192 22344.32342998808 -21 23457.13453997616 23455.334540023843 +21 23457.13453997616 23455.33454002384 22 24568.34565 24566.34565 -23 25679.556760023843 25677.35675997616 -24 26790.767870047683 26788.367869952315 +23 25679.55676002384 25677.35675997616 +24 26790.76787004768 26788.36786995232 -- !sql_test_Decimal64V3_Float_2 -- \N \N @@ -15850,107 +15850,107 @@ \N \N \N 1 1234.53674 1233.48794 2 2345.86505 2344.38185 -3 3457.2713599999997 3455.19776 -4 4568.7947699999995 4565.89657 -5 5680.48778 5676.4257800000005 +3 3457.27136 3455.19776 +4 4568.79477 4565.89657 +5 5680.48778 5676.42578 6 6792.42269 6786.71309 -7 7904.7008000000005 7896.6572 -8 9017.464609999999 9006.11561 +7 7904.700800000001 7896.6572 +8 9017.464609999999 9006.115610000001 9 10130.91532 10114.88712 10 11245.33713 11222.68753 -11 12361.132039999999 12329.11484 +11 12361.13204 12329.11484 12 13478.86855 13433.60055 -13 14567.870060000001 14566.82126 -14 15679.19837 15677.715170000001 -15 16790.60468 16788.531079999997 -16 17902.128090000002 17899.22989 -17 19013.821099999997 19009.7591 +13 14567.87006 14566.82126 +14 15679.19837 15677.71517 +15 16790.60468 16788.53108 +16 17902.12809 17899.22989 +17 19013.8211 19009.7591 18 20125.75601 20120.04641 -19 21238.03412 21229.990520000003 +19 21238.03412 21229.99052 20 22350.79793 22339.44893 21 23464.24864 23448.22044 -22 24578.670449999998 24556.02085 -23 25694.465360000002 25662.44816 -24 26812.201869999997 26766.93387 +22 24578.67045 24556.02085 +23 25694.46536 25662.44816 +24 26812.20187 26766.93387 -- !sql_test_Decimal64V3_Double_notn_0 -- 1 1234.53674 1233.48794 2 2345.86505 2344.38185 -3 3457.2713599999997 3455.19776 -4 4568.7947699999995 4565.89657 -5 5680.48778 5676.4257800000005 +3 3457.27136 3455.19776 +4 4568.79477 4565.89657 +5 5680.48778 5676.42578 6 6792.42269 6786.71309 -7 7904.7008000000005 7896.6572 -8 9017.464609999999 9006.11561 +7 7904.700800000001 7896.6572 +8 9017.464609999999 9006.115610000001 9 10130.91532 10114.88712 10 11245.33713 11222.68753 -11 12361.132039999999 12329.11484 +11 12361.13204 12329.11484 12 13478.86855 13433.60055 -13 14567.870060000001 14566.82126 -14 15679.19837 15677.715170000001 -15 16790.60468 16788.531079999997 -16 17902.128090000002 17899.22989 -17 19013.821099999997 19009.7591 +13 14567.87006 14566.82126 +14 15679.19837 15677.71517 +15 16790.60468 16788.53108 +16 17902.12809 17899.22989 +17 19013.8211 19009.7591 18 20125.75601 20120.04641 -19 21238.03412 21229.990520000003 +19 21238.03412 21229.99052 20 22350.79793 22339.44893 21 23464.24864 23448.22044 -22 24578.670449999998 24556.02085 -23 25694.465360000002 25662.44816 -24 26812.201869999997 26766.93387 +22 24578.67045 24556.02085 +23 25694.46536 25662.44816 +24 26812.20187 26766.93387 -- !sql_test_Decimal64V3_Double_1 -- \N \N \N \N 1 647.1160710959999 2353.189054157132 0.09914000000004819 -2 1739.1435505200002 3162.2484492988133 0.1842499999999312 -3 3583.4239918079998 3333.5595679012345 0.5801600000000611 -4 6618.540610397 3151.8498861362223 1.2315699999995275 -5 11532.945720180001 2795.8920630231414 1.8117800000000481 +2 1739.14355052 3162.248449298813 0.1842499999999312 +3 3583.423991808 3333.559567901234 0.5801600000000611 +4 6618.540610397 3151.849886136222 1.231569999999528 +5 11532.94572018 2795.892063023141 1.811780000000048 6 19382.858412372 2378.298966652655 0.8534900000002512 -7 31774.950802199997 1964.4634243373614 1.8638000000004418 -8 51137.402979195 1588.1205586395276 0.6841099999997553 -9 81125.94266720199 1263.1363746396976 1.0929200000008592 -10 127222.94283478399 991.9832871220684 11.135529999999807 -11 197628.143101584 771.1557188011443 2.4928399999984094 -12 304568.41280469997 594.5142065034903 11.638549999999015 -13 7639.1160641040005 27779.072578184594 0.03806000000149368 -14 11627.143540632002 21141.392624056094 0.2911699999999069 +7 31774.9508022 1964.463424337361 1.863800000000442 +8 51137.402979195 1588.120558639528 0.6841099999997553 +9 81125.94266720199 1263.136374639698 1.092920000000859 +10 127222.942834784 991.9832871220684 11.13552999999981 +11 197628.143101584 771.1557188011443 2.492839999998409 +12 304568.4128047 594.5142065034903 11.63854999999901 +13 7639.116064104001 27779.07257818459 0.03806000000149368 +14 11627.143540632 21141.39262405609 0.2911699999999069 15 17407.423977984 16193.6418595679 0.6654799999996039 -16 25939.873924409003 12352.96321164861 1.3957899999996641 +16 25939.873924409 12352.96321164861 1.395789999999664 17 38612.9456931 9360.802609551944 1.63009999999705 18 57446.858374308 7048.795435757321 2.270809999999962 -19 85398.950748576 5279.728559351534 2.9301200000025895 -20 126797.402903535 3937.8136276323903 4.616929999999252 -21 187980.60922701398 2926.870707877367 6.977940000003883 -22 278220.27601712 2169.3403547965527 3.854449999999826 -23 411076.14288813603 1604.0413752607972 0.6623599999988983 -24 606355.07916958 1183.5984744190155 13.545869999998544 +19 85398.950748576 5279.728559351534 2.93012000000259 +20 126797.402903535 3937.81362763239 4.616929999999252 +21 187980.609227014 2926.870707877367 6.977940000003883 +22 278220.27601712 2169.340354796553 3.854449999999826 +23 411076.142888136 1604.041375260797 0.6623599999988983 +24 606355.07916958 1183.598474419015 13.54586999999854 -- !sql_test_Decimal64V3_Double_notn_1 -- 1 647.1160710959999 2353.189054157132 0.09914000000004819 -2 1739.1435505200002 3162.2484492988133 0.1842499999999312 -3 3583.4239918079998 3333.5595679012345 0.5801600000000611 -4 6618.540610397 3151.8498861362223 1.2315699999995275 -5 11532.945720180001 2795.8920630231414 1.8117800000000481 +2 1739.14355052 3162.248449298813 0.1842499999999312 +3 3583.423991808 3333.559567901234 0.5801600000000611 +4 6618.540610397 3151.849886136222 1.231569999999528 +5 11532.94572018 2795.892063023141 1.811780000000048 6 19382.858412372 2378.298966652655 0.8534900000002512 -7 31774.950802199997 1964.4634243373614 1.8638000000004418 -8 51137.402979195 1588.1205586395276 0.6841099999997553 -9 81125.94266720199 1263.1363746396976 1.0929200000008592 -10 127222.94283478399 991.9832871220684 11.135529999999807 -11 197628.143101584 771.1557188011443 2.4928399999984094 -12 304568.41280469997 594.5142065034903 11.638549999999015 -13 7639.1160641040005 27779.072578184594 0.03806000000149368 -14 11627.143540632002 21141.392624056094 0.2911699999999069 +7 31774.9508022 1964.463424337361 1.863800000000442 +8 51137.402979195 1588.120558639528 0.6841099999997553 +9 81125.94266720199 1263.136374639698 1.092920000000859 +10 127222.942834784 991.9832871220684 11.13552999999981 +11 197628.143101584 771.1557188011443 2.492839999998409 +12 304568.4128047 594.5142065034903 11.63854999999901 +13 7639.116064104001 27779.07257818459 0.03806000000149368 +14 11627.143540632 21141.39262405609 0.2911699999999069 15 17407.423977984 16193.6418595679 0.6654799999996039 -16 25939.873924409003 12352.96321164861 1.3957899999996641 +16 25939.873924409 12352.96321164861 1.395789999999664 17 38612.9456931 9360.802609551944 1.63009999999705 18 57446.858374308 7048.795435757321 2.270809999999962 -19 85398.950748576 5279.728559351534 2.9301200000025895 -20 126797.402903535 3937.8136276323903 4.616929999999252 -21 187980.60922701398 2926.870707877367 6.977940000003883 -22 278220.27601712 2169.3403547965527 3.854449999999826 -23 411076.14288813603 1604.0413752607972 0.6623599999988983 -24 606355.07916958 1183.5984744190155 13.545869999998544 +19 85398.950748576 5279.728559351534 2.93012000000259 +20 126797.402903535 3937.81362763239 4.616929999999252 +21 187980.609227014 2926.870707877367 6.977940000003883 +22 278220.27601712 2169.340354796553 3.854449999999826 +23 411076.142888136 1604.041375260797 0.6623599999988983 +24 606355.07916958 1183.598474419015 13.54586999999854 -- !sql_test_Decimal64V3_Double_2 -- \N \N @@ -16060,56 +16060,56 @@ -- !sql_test_Decimal64V3_DecimalV2_0 -- \N \N \N -1 1258.40734 1209.61734 -2 2379.60745 2310.63945 -3 3504.99056 3407.47856 -4 4636.28867 4498.40267 -5 5775.95078 5580.96278 -6 6927.44189 6651.69389 -7 8095.65900 7705.69900 +1 1258.40754 1209.61714 +2 2379.60715 2310.63975 +3 3504.99036 3407.47876 +4 4636.28857 4498.40277 +5 5775.95098 5580.96258 +6 6927.44149 6651.69429 +7 8095.65880 7705.69920 8 9287.53111 8736.04911 -9 10512.85622 9732.94622 +9 10512.85652 9732.94592 10 11785.49133 10682.53333 -11 13125.03144 11565.21544 -12 14559.19155 12353.27755 -13 14591.74066 14542.95066 -14 15712.94077 15643.97277 -15 16838.32388 16740.81188 -16 17969.62199 17831.73599 -17 19109.28410 18914.29610 -18 20260.77521 19985.02721 -19 21428.99232 21039.03232 +11 13125.03184 11565.21504 +12 14559.19105 12353.27805 +13 14591.74086 14542.95046 +14 15712.94047 15643.97307 +15 16838.32368 16740.81208 +16 17969.62189 17831.73609 +17 19109.28430 18914.29590 +18 20260.77481 19985.02761 +19 21428.99212 21039.03252 20 22620.86443 22069.38243 -21 23846.18954 23066.27954 +21 23846.18984 23066.27924 22 25118.82465 24015.86665 -23 26458.36476 24898.54876 -24 27892.52487 25686.61087 +23 26458.36516 24898.54836 +24 27892.52437 25686.61137 -- !sql_test_Decimal64V3_DecimalV2_notn_0 -- -1 1258.40734 1209.61734 -2 2379.60745 2310.63945 -3 3504.99056 3407.47856 -4 4636.28867 4498.40267 -5 5775.95078 5580.96278 -6 6927.44189 6651.69389 -7 8095.65900 7705.69900 +1 1258.40754 1209.61714 +2 2379.60715 2310.63975 +3 3504.99036 3407.47876 +4 4636.28857 4498.40277 +5 5775.95098 5580.96258 +6 6927.44149 6651.69429 +7 8095.65880 7705.69920 8 9287.53111 8736.04911 -9 10512.85622 9732.94622 +9 10512.85652 9732.94592 10 11785.49133 10682.53333 -11 13125.03144 11565.21544 -12 14559.19155 12353.27755 -13 14591.74066 14542.95066 -14 15712.94077 15643.97277 -15 16838.32388 16740.81188 -16 17969.62199 17831.73599 -17 19109.28410 18914.29610 -18 20260.77521 19985.02721 -19 21428.99232 21039.03232 +11 13125.03184 11565.21504 +12 14559.19105 12353.27805 +13 14591.74086 14542.95046 +14 15712.94047 15643.97307 +15 16838.32368 16740.81208 +16 17969.62189 17831.73609 +17 19109.28430 18914.29590 +18 20260.77481 19985.02761 +19 21428.99212 21039.03252 20 22620.86443 22069.38243 -21 23846.18954 23066.27954 +21 23846.18984 23066.27924 22 25118.82465 24015.86665 -23 26458.36476 24898.54876 -24 27892.52487 25686.61087 +23 26458.36516 24898.54836 +24 27892.52437 25686.61137 -- !sql_test_Decimal64V3_DecimalV2_2 -- \N \N @@ -16708,15 +16708,15 @@ 10 \N \N 11 \N \N 12 \N \N -13 14721.634660000002 14413.05666 -14 15896.55077 15460.362770000002 +13 14721.63466 14413.05666 +14 15896.55077 15460.36277 15 17097.92688 16481.20888 16 18336.71199 17464.64599 -17 19628.3981 18395.182099999998 +17 19628.3981 18395.1821 18 20994.89021 19250.91221 19 22467.17332 20000.85132 20 24089.06343 20601.18343 -21 25922.52854 20989.940540000003 +21 25922.52854 20989.94054 22 28055.20565 21079.48565 23 30611.03076 20745.88276 24 33765.27787 19813.85787 @@ -16734,15 +16734,15 @@ 10 \N \N 11 \N \N 12 \N \N -13 14721.634660000002 14413.05666 -14 15896.55077 15460.362770000002 +13 14721.63466 14413.05666 +14 15896.55077 15460.36277 15 17097.92688 16481.20888 16 18336.71199 17464.64599 -17 19628.3981 18395.182099999998 +17 19628.3981 18395.1821 18 20994.89021 19250.91221 19 22467.17332 20000.85132 20 24089.06343 20601.18343 -21 25922.52854 20989.940540000003 +21 25922.52854 20989.94054 22 28055.20565 21079.48565 23 30611.03076 20745.88276 24 33765.27787 19813.85787 @@ -16761,18 +16761,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2247581.1945357397 94.4159704191485 64.17966000000206 +13 2247581.19453574 94.41597041914849 64.17966000000206 14 3419377.35079638 71.8885286619531 193.7827700000011 -15 5177214.361908919 54.44812014567436 138.18187999999975 -16 7805286.762046671 41.05349592806049 23.325989999999706 -17 1.1722821869980797E7 30.83286318049717 513.5500999999999 -18 1.754694850320669E7 23.077012680205826 67.15420999999924 -19 2.6184955866543524E7 17.21917277630415 270.27532000000065 -20 3.89685545545142E7 12.813011588701446 1417.843429999999 -21 5.784997050859476E7 9.510721163008142 1259.5885400000025 -22 8.5687462198809E7 7.043673097544052 152.3256499999984 -23 1.2666088817450024E8 5.205893872043279 1015.5867600000029 -24 1.868762564864377E8 3.8404073377476986 5862.437869999999 +15 5177214.361908919 54.44812014567436 138.1818799999998 +16 7805286.762046671 41.05349592806049 23.32598999999971 +17 11722821.8699808 30.83286318049717 513.5500999999999 +18 17546948.50320669 23.07701268020583 67.15420999999924 +19 26184955.86654352 17.21917277630415 270.2753200000006 +20 38968554.5545142 12.81301158870145 1417.843429999999 +21 57849970.50859476 9.510721163008142 1259.588540000002 +22 85687462.198809 7.043673097544052 152.3256499999984 +23 126660888.1745002 5.205893872043279 1015.586760000003 +24 186876256.4864377 3.840407337747699 5862.437869999999 -- !sql_test_Decimal64V3_Char_notn_1 -- 1 \N \N \N @@ -16787,18 +16787,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2247581.1945357397 94.4159704191485 64.17966000000206 +13 2247581.19453574 94.41597041914849 64.17966000000206 14 3419377.35079638 71.8885286619531 193.7827700000011 -15 5177214.361908919 54.44812014567436 138.18187999999975 -16 7805286.762046671 41.05349592806049 23.325989999999706 -17 1.1722821869980797E7 30.83286318049717 513.5500999999999 -18 1.754694850320669E7 23.077012680205826 67.15420999999924 -19 2.6184955866543524E7 17.21917277630415 270.27532000000065 -20 3.89685545545142E7 12.813011588701446 1417.843429999999 -21 5.784997050859476E7 9.510721163008142 1259.5885400000025 -22 8.5687462198809E7 7.043673097544052 152.3256499999984 -23 1.2666088817450024E8 5.205893872043279 1015.5867600000029 -24 1.868762564864377E8 3.8404073377476986 5862.437869999999 +15 5177214.361908919 54.44812014567436 138.1818799999998 +16 7805286.762046671 41.05349592806049 23.32598999999971 +17 11722821.8699808 30.83286318049717 513.5500999999999 +18 17546948.50320669 23.07701268020583 67.15420999999924 +19 26184955.86654352 17.21917277630415 270.2753200000006 +20 38968554.5545142 12.81301158870145 1417.843429999999 +21 57849970.50859476 9.510721163008142 1259.588540000002 +22 85687462.198809 7.043673097544052 152.3256499999984 +23 126660888.1745002 5.205893872043279 1015.586760000003 +24 186876256.4864377 3.840407337747699 5862.437869999999 -- !sql_test_Decimal64V3_Char_2 -- \N \N @@ -16920,18 +16920,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 16886.466660000002 12248.22466 +13 16886.46666 12248.22466 14 18956.53877 12400.37477 -15 21424.308879999997 12154.826879999999 -16 24454.366990000002 11346.99099 -17 28279.520099999998 9744.060099999999 +15 21424.30888 12154.82688 +16 24454.36699 11346.99099 +17 28279.5201 9744.060099999999 18 33229.03821 7016.764209999999 -19 39768.59732 2699.4273200000025 +19 39768.59732 2699.427320000003 20 48556.77743 -3866.530569999999 -21 60524.965540000005 -13612.496459999998 -22 76990.34465 -27855.653350000004 +21 60524.96554 -13612.49646 +22 76990.34465 -27855.65335 23 99815.69976 -48458.78624 -24 131635.41087 -78056.27513 +24 131635.41087 -78056.27512999999 -- !sql_test_Decimal64V3_Varchar_notn_0 -- 1 \N \N @@ -16946,18 +16946,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 16886.466660000002 12248.22466 +13 16886.46666 12248.22466 14 18956.53877 12400.37477 -15 21424.308879999997 12154.826879999999 -16 24454.366990000002 11346.99099 -17 28279.520099999998 9744.060099999999 +15 21424.30888 12154.82688 +16 24454.36699 11346.99099 +17 28279.5201 9744.060099999999 18 33229.03821 7016.764209999999 -19 39768.59732 2699.4273200000025 +19 39768.59732 2699.427320000003 20 48556.77743 -3866.530569999999 -21 60524.965540000005 -13612.496459999998 -22 76990.34465 -27855.653350000004 +21 60524.96554 -13612.49646 +22 76990.34465 -27855.65335 23 99815.69976 -48458.78624 -24 131635.41087 -78056.27513 +24 131635.41087 -78056.27512999999 -- !sql_test_Decimal64V3_Varchar_1 -- \N \N \N \N @@ -16973,18 +16973,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378343723436486E7 6.281408197329937 652.6196600000003 -14 5.139526692551514E7 4.782814087628071 2566.128770000001 -15 7.781529862571907E7 3.6225471671448304 2885.3448799999987 -16 1.1731546508861512E8 2.7313901714576585 4793.30299 -17 1.7619613746347296E8 2.051396631105999 476.3300999999992 -18 2.6373350009572577E8 1.5353800444783996 7016.764209999999 -19 3.935636062360872E8 1.1456427171150583 2699.4273200000025 -20 5.857026439344531E8 0.8524881119672952 22345.12343 -21 8.694928484361688E8 0.6327768420235373 23456.23454 -22 1.2878939364426043E9 0.46863678382841084 24567.34565 -23 1.9037299886811128E9 0.34636379397059586 25678.45676 -24 2.808774826935864E9 0.2555138773599255 26789.56787 +13 33783437.23436486 6.281408197329937 652.6196600000003 +14 51395266.92551514 4.782814087628071 2566.128770000001 +15 77815298.62571907 3.62254716714483 2885.344879999999 +16 117315465.0886151 2.731390171457659 4793.30299 +17 176196137.463473 2.051396631105999 476.3300999999992 +18 263733500.0957258 1.5353800444784 7016.764209999999 +19 393563606.2360872 1.145642717115058 2699.427320000003 +20 585702643.9344531 0.8524881119672952 22345.12343 +21 869492848.4361688 0.6327768420235373 23456.23454 +22 1287893936.442604 0.4686367838284108 24567.34565 +23 1903729988.681113 0.3463637939705959 25678.45676 +24 2808774826.935864 0.2555138773599255 26789.56787 -- !sql_test_Decimal64V3_Varchar_notn_1 -- 1 \N \N \N @@ -16999,18 +16999,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378343723436486E7 6.281408197329937 652.6196600000003 -14 5.139526692551514E7 4.782814087628071 2566.128770000001 -15 7.781529862571907E7 3.6225471671448304 2885.3448799999987 -16 1.1731546508861512E8 2.7313901714576585 4793.30299 -17 1.7619613746347296E8 2.051396631105999 476.3300999999992 -18 2.6373350009572577E8 1.5353800444783996 7016.764209999999 -19 3.935636062360872E8 1.1456427171150583 2699.4273200000025 -20 5.857026439344531E8 0.8524881119672952 22345.12343 -21 8.694928484361688E8 0.6327768420235373 23456.23454 -22 1.2878939364426043E9 0.46863678382841084 24567.34565 -23 1.9037299886811128E9 0.34636379397059586 25678.45676 -24 2.808774826935864E9 0.2555138773599255 26789.56787 +13 33783437.23436486 6.281408197329937 652.6196600000003 +14 51395266.92551514 4.782814087628071 2566.128770000001 +15 77815298.62571907 3.62254716714483 2885.344879999999 +16 117315465.0886151 2.731390171457659 4793.30299 +17 176196137.463473 2.051396631105999 476.3300999999992 +18 263733500.0957258 1.5353800444784 7016.764209999999 +19 393563606.2360872 1.145642717115058 2699.427320000003 +20 585702643.9344531 0.8524881119672952 22345.12343 +21 869492848.4361688 0.6327768420235373 23456.23454 +22 1287893936.442604 0.4686367838284108 24567.34565 +23 1903729988.681113 0.3463637939705959 25678.45676 +24 2808774826.935864 0.2555138773599255 26789.56787 -- !sql_test_Decimal64V3_Varchar_2 -- \N \N @@ -17133,17 +17133,17 @@ 11 \N \N 12 \N \N 13 25171.36266 3963.328660000001 -14 30667.249770000002 689.663770000001 -15 37981.580879999994 -4402.44512 -16 47866.933990000005 -12065.57601 -17 61387.8021 -23364.221900000004 +14 30667.24977 689.663770000001 +15 37981.58087999999 -4402.44512 +16 47866.93399 -12065.57601 +17 61387.8021 -23364.2219 18 80049.74321 -39803.94078999999 -19 105982.02932 -63514.004680000005 +19 105982.02932 -63514.00468000001 20 142195.97443 -97505.72756999999 -21 192950.26554 -146037.79645999998 +21 192950.26554 -146037.79646 22 264267.63065 -215132.93935 -23 364665.51576 -313308.60224000004 -24 506189.42886999995 -452610.29313 +23 364665.51576 -313308.60224 +24 506189.4288699999 -452610.29313 -- !sql_test_Decimal64V3_String_notn_0 -- 1 \N \N @@ -17159,17 +17159,17 @@ 11 \N \N 12 \N \N 13 25171.36266 3963.328660000001 -14 30667.249770000002 689.663770000001 -15 37981.580879999994 -4402.44512 -16 47866.933990000005 -12065.57601 -17 61387.8021 -23364.221900000004 +14 30667.24977 689.663770000001 +15 37981.58087999999 -4402.44512 +16 47866.93399 -12065.57601 +17 61387.8021 -23364.2219 18 80049.74321 -39803.94078999999 -19 105982.02932 -63514.004680000005 +19 105982.02932 -63514.00468000001 20 142195.97443 -97505.72756999999 -21 192950.26554 -146037.79645999998 +21 192950.26554 -146037.79646 22 264267.63065 -215132.93935 -23 364665.51576 -313308.60224000004 -24 506189.42886999995 -452610.29313 +23 364665.51576 -313308.60224 +24 506189.4288699999 -452610.29313 -- !sql_test_Decimal64V3_String_1 -- \N \N \N \N @@ -17185,18 +17185,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447238102351624E8 1.373757290279712 3963.328660000001 -14 2.350011430849786E8 1.0460119617370125 689.663770000001 -15 3.558047407773424E8 0.7922592289840517 16789.56788 -16 5.364163112874825E8 0.5973612314918898 17900.67899 -17 8.056438454190812E8 0.4486450990244197 19011.7901 -18 1.2059019213932788E9 0.335791116942221 20122.90121 -19 1.7995404370735698E9 0.25055468047116664 21234.01232 -20 2.6780820587855387E9 0.1864410911024737 22345.12343 -21 3.975691744266031E9 0.13838973798434237 23456.23454 -22 5.88879975399851E9 0.10249193341593231 24567.34565 -23 8.70466453673107E9 0.07575055176368842 25678.45676 -24 1.2842915113128065E10 0.055881467746191106 26789.56787 +13 154472381.0235162 1.373757290279712 3963.328660000001 +14 235001143.0849786 1.046011961737012 689.663770000001 +15 355804740.7773424 0.7922592289840517 16789.56788 +16 536416311.2874825 0.5973612314918898 17900.67899 +17 805643845.4190812 0.4486450990244197 19011.7901 +18 1205901921.393279 0.335791116942221 20122.90121 +19 1799540437.07357 0.2505546804711666 21234.01232 +20 2678082058.785539 0.1864410911024737 22345.12343 +21 3975691744.266031 0.1383897379843424 23456.23454 +22 5888799753.99851 0.1024919334159323 24567.34565 +23 8704664536.73107 0.07575055176368842 25678.45676 +24 12842915113.12807 0.05588146774619111 26789.56787 -- !sql_test_Decimal64V3_String_notn_1 -- 1 \N \N \N @@ -17211,18 +17211,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447238102351624E8 1.373757290279712 3963.328660000001 -14 2.350011430849786E8 1.0460119617370125 689.663770000001 -15 3.558047407773424E8 0.7922592289840517 16789.56788 -16 5.364163112874825E8 0.5973612314918898 17900.67899 -17 8.056438454190812E8 0.4486450990244197 19011.7901 -18 1.2059019213932788E9 0.335791116942221 20122.90121 -19 1.7995404370735698E9 0.25055468047116664 21234.01232 -20 2.6780820587855387E9 0.1864410911024737 22345.12343 -21 3.975691744266031E9 0.13838973798434237 23456.23454 -22 5.88879975399851E9 0.10249193341593231 24567.34565 -23 8.70466453673107E9 0.07575055176368842 25678.45676 -24 1.2842915113128065E10 0.055881467746191106 26789.56787 +13 154472381.0235162 1.373757290279712 3963.328660000001 +14 235001143.0849786 1.046011961737012 689.663770000001 +15 355804740.7773424 0.7922592289840517 16789.56788 +16 536416311.2874825 0.5973612314918898 17900.67899 +17 805643845.4190812 0.4486450990244197 19011.7901 +18 1205901921.393279 0.335791116942221 20122.90121 +19 1799540437.07357 0.2505546804711666 21234.01232 +20 2678082058.785539 0.1864410911024737 22345.12343 +21 3975691744.266031 0.1383897379843424 23456.23454 +22 5888799753.99851 0.1024919334159323 24567.34565 +23 8704664536.73107 0.07575055176368842 25678.45676 +24 12842915113.12807 0.05588146774619111 26789.56787 -- !sql_test_Decimal64V3_String_2 -- \N \N @@ -18922,56 +18922,56 @@ -- !sql_test_Decimal128V3_Float_0 -- \N \N \N -1 1.2345678112345E7 1.2345677912344998E7 -2 2.3456789323456004E7 2.3456788923456E7 -3 3.456790053456701E7 3.456789993456699E7 -4 4.567901174567801E7 4.5679010945677996E7 -5 5.6790122956789E7 5.6790121956789E7 -6 6.790123416790003E7 6.790123296789998E7 -7 7.901234537901099E7 7.901234397901101E7 -8 9.012345659012201E7 9.012345499012199E7 -9 1.0123456780123298E8 1.0123456600123303E8 -10 1.12345679012344E8 1.12345677012344E8 -11 1.2345679022345503E8 1.2345678802345498E8 -12 1.3456790143456605E8 1.3456789903456596E8 -13 1.4567901144567698E8 1.45679011245677E8 -14 1.56790122656788E8 1.5679012225678802E8 -15 1.67901233867899E8 1.6790123326789898E8 -16 1.7901234507901E8 1.7901234427901E8 -17 1.90123456290121E8 1.90123455290121E8 -18 2.0123456750123203E8 2.0123456630123198E8 -19 2.1234567871234298E8 2.12345677312343E8 -20 2.2345678992345402E8 2.23456788323454E8 -21 2.3456790113456497E8 2.34567899334565E8 -22 2.45679012345676E8 2.45679010345676E8 -23 2.56790123556787E8 2.5679012135678697E8 -24 2.6790123476789805E8 2.6790123236789796E8 +1 12345678.112345 12345677.912345 +2 23456789.323456 23456788.923456 +3 34567900.53456701 34567899.93456699 +4 45679011.74567801 45679010.945678 +5 56790122.956789 56790121.956789 +6 67901234.16790003 67901232.96789998 +7 79012345.37901099 79012343.97901101 +8 90123456.59012201 90123454.99012199 +9 101234567.801233 101234566.001233 +10 112345679.012344 112345677.012344 +11 123456790.223455 123456788.023455 +12 134567901.4345661 134567899.034566 +13 145679011.445677 145679011.245677 +14 156790122.656788 156790122.256788 +15 167901233.867899 167901233.267899 +16 179012345.07901 179012344.27901 +17 190123456.290121 190123455.290121 +18 201234567.501232 201234566.301232 +19 212345678.712343 212345677.312343 +20 223456789.923454 223456788.323454 +21 234567901.134565 234567899.334565 +22 245679012.345676 245679010.345676 +23 256790123.556787 256790121.356787 +24 267901234.7678981 267901232.367898 -- !sql_test_Decimal128V3_Float_notn_0 -- -1 1.2345678112345E7 1.2345677912344998E7 -2 2.3456789323456004E7 2.3456788923456E7 -3 3.456790053456701E7 3.456789993456699E7 -4 4.567901174567801E7 4.5679010945677996E7 -5 5.6790122956789E7 5.6790121956789E7 -6 6.790123416790003E7 6.790123296789998E7 -7 7.901234537901099E7 7.901234397901101E7 -8 9.012345659012201E7 9.012345499012199E7 -9 1.0123456780123298E8 1.0123456600123303E8 -10 1.12345679012344E8 1.12345677012344E8 -11 1.2345679022345503E8 1.2345678802345498E8 -12 1.3456790143456605E8 1.3456789903456596E8 -13 1.4567901144567698E8 1.45679011245677E8 -14 1.56790122656788E8 1.5679012225678802E8 -15 1.67901233867899E8 1.6790123326789898E8 -16 1.7901234507901E8 1.7901234427901E8 -17 1.90123456290121E8 1.90123455290121E8 -18 2.0123456750123203E8 2.0123456630123198E8 -19 2.1234567871234298E8 2.12345677312343E8 -20 2.2345678992345402E8 2.23456788323454E8 -21 2.3456790113456497E8 2.34567899334565E8 -22 2.45679012345676E8 2.45679010345676E8 -23 2.56790123556787E8 2.5679012135678697E8 -24 2.6790123476789805E8 2.6790123236789796E8 +1 12345678.112345 12345677.912345 +2 23456789.323456 23456788.923456 +3 34567900.53456701 34567899.93456699 +4 45679011.74567801 45679010.945678 +5 56790122.956789 56790121.956789 +6 67901234.16790003 67901232.96789998 +7 79012345.37901099 79012343.97901101 +8 90123456.59012201 90123454.99012199 +9 101234567.801233 101234566.001233 +10 112345679.012344 112345677.012344 +11 123456790.223455 123456788.023455 +12 134567901.4345661 134567899.034566 +13 145679011.445677 145679011.245677 +14 156790122.656788 156790122.256788 +15 167901233.867899 167901233.267899 +16 179012345.07901 179012344.27901 +17 190123456.290121 190123455.290121 +18 201234567.501232 201234566.301232 +19 212345678.712343 212345677.312343 +20 223456789.923454 223456788.323454 +21 234567901.134565 234567899.334565 +22 245679012.345676 245679010.345676 +23 256790123.556787 256790121.356787 +24 267901234.7678981 267901232.367898 -- !sql_test_Decimal128V3_Float_2 -- \N \N @@ -19081,109 +19081,109 @@ -- !sql_test_Decimal128V3_Double_0 -- \N \N \N -1 1.2345678536744999E7 1.2345677487945E7 -2 2.3456789865056E7 2.3456788381856002E7 -3 3.4567901271367E7 3.4567899197767004E7 -4 4.5679012794778004E7 4.5679009896578E7 -5 5.6790124487789005E7 5.6790120425789E7 -6 6.79012364227E7 6.79012307131E7 -7 7.9012348700811E7 7.9012340657211E7 -8 9.0123461464622E7 9.0123450115622E7 -9 1.01234574915333E8 1.01234558887133E8 -10 1.12345689337144E8 1.12345666687544E8 -11 1.23456805132055E8 1.23456773114855E8 -12 1.34567922868566E8 1.34567877600566E8 -13 1.4567901187007698E8 1.45679010821277E8 -14 1.56790123198388E8 1.56790121715188E8 -15 1.67901234604699E8 1.67901232531099E8 -16 1.7901234612811E8 1.7901234322991002E8 -17 1.9012345782112098E8 1.90123453759121E8 -18 2.01234569756032E8 2.0123456404643202E8 -19 2.12345682034143E8 2.1234567399054298E8 -20 2.23456794797954E8 2.2345678344895402E8 -21 2.3456790824866498E8 2.34567892220465E8 -22 2.4567902267047602E8 2.45679000020876E8 -23 2.56790138465387E8 2.56790106448187E8 -24 2.67901256201898E8 2.67901210933898E8 +1 12345678.536745 12345677.487945 +2 23456789.865056 23456788.381856 +3 34567901.271367 34567899.197767 +4 45679012.794778 45679009.896578 +5 56790124.48778901 56790120.425789 +6 67901236.4227 67901230.7131 +7 79012348.700811 79012340.65721101 +8 90123461.46462201 90123450.115622 +9 101234574.915333 101234558.887133 +10 112345689.337144 112345666.687544 +11 123456805.132055 123456773.114855 +12 134567922.868566 134567877.600566 +13 145679011.870077 145679010.821277 +14 156790123.198388 156790121.715188 +15 167901234.604699 167901232.531099 +16 179012346.12811 179012343.22991 +17 190123457.821121 190123453.759121 +18 201234569.756032 201234564.046432 +19 212345682.034143 212345673.990543 +20 223456794.797954 223456783.448954 +21 234567908.248665 234567892.220465 +22 245679022.670476 245679000.020876 +23 256790138.465387 256790106.448187 +24 267901256.201898 267901210.933898 -- !sql_test_Decimal128V3_Double_notn_0 -- -1 1.2345678536744999E7 1.2345677487945E7 -2 2.3456789865056E7 2.3456788381856002E7 -3 3.4567901271367E7 3.4567899197767004E7 -4 4.5679012794778004E7 4.5679009896578E7 -5 5.6790124487789005E7 5.6790120425789E7 -6 6.79012364227E7 6.79012307131E7 -7 7.9012348700811E7 7.9012340657211E7 -8 9.0123461464622E7 9.0123450115622E7 -9 1.01234574915333E8 1.01234558887133E8 -10 1.12345689337144E8 1.12345666687544E8 -11 1.23456805132055E8 1.23456773114855E8 -12 1.34567922868566E8 1.34567877600566E8 -13 1.4567901187007698E8 1.45679010821277E8 -14 1.56790123198388E8 1.56790121715188E8 -15 1.67901234604699E8 1.67901232531099E8 -16 1.7901234612811E8 1.7901234322991002E8 -17 1.9012345782112098E8 1.90123453759121E8 -18 2.01234569756032E8 2.0123456404643202E8 -19 2.12345682034143E8 2.1234567399054298E8 -20 2.23456794797954E8 2.2345678344895402E8 -21 2.3456790824866498E8 2.34567892220465E8 -22 2.4567902267047602E8 2.45679000020876E8 -23 2.56790138465387E8 2.56790106448187E8 -24 2.67901256201898E8 2.67901210933898E8 +1 12345678.536745 12345677.487945 +2 23456789.865056 23456788.381856 +3 34567901.271367 34567899.197767 +4 45679012.794778 45679009.896578 +5 56790124.48778901 56790120.425789 +6 67901236.4227 67901230.7131 +7 79012348.700811 79012340.65721101 +8 90123461.46462201 90123450.115622 +9 101234574.915333 101234558.887133 +10 112345689.337144 112345666.687544 +11 123456805.132055 123456773.114855 +12 134567922.868566 134567877.600566 +13 145679011.870077 145679010.821277 +14 156790123.198388 156790121.715188 +15 167901234.604699 167901232.531099 +16 179012346.12811 179012343.22991 +17 190123457.821121 190123453.759121 +18 201234569.756032 201234564.046432 +19 212345682.034143 212345673.990543 +20 223456794.797954 223456783.448954 +21 234567908.248665 234567892.220465 +22 245679022.670476 245679000.020876 +23 256790138.465387 256790106.448187 +24 267901256.201898 267901210.933898 -- !sql_test_Decimal128V3_Double_1 -- \N \N \N \N -1 6474073.5496737175 2.3542482861069795E7 0.45154499977414275 -2 1.739555481395497E7 3.1629974546192016E7 0.40505600011306697 -3 3.5839998963199064E7 3.334095315834009E7 0.1641670033335063 -4 6.619345534102199E7 3.1522332030693535E7 0.044477999917583944 -5 1.1534073870973846E8 2.796165556710438E7 1.1517889979482212 -6 1.9384444158964092E8 2.378493539578955E7 1.1299000019013148 -7 3.177718478300464E8 1.96460153858996E7 1.5520110057286312 -8 5.114055498810473E8 1.588218447266226E7 2.682122000783309 -9 8.113039426031713E8 1.2632056862434087E7 6.911633013745018 -10 1.2722923343541934E9 9920323.362208959 4.101944005148486 -11 1.976370354361742E9 7711904.171723636 2.749054993084428 -12 3.045809853909167E9 5945387.480541045 10.876566001056446 -13 7.6394073549673E7 2.7780131835560066E8 0.18647699467973666 -14 1.16275554813954E8 2.1142141647355446E8 0.35118799563302616 -15 1.7407999896319765E8 1.6194177620360628E8 0.21109899781401253 -16 2.5940678867435342E8 1.2353346537782761E8 0.5475099970464234 -17 3.8614073870973575E8 9.361076109804085E7 0.19912097611392676 -18 5.744844415896372E8 7.04899001335407E7 0.3812320038651329 -19 8.54011847830041E8 5.279866676919364E7 3.0935429989737226 -20 1.2680055498810399E9 3.9379115186087586E7 1.0559540006088621 -21 1.8798506092698271E9 2.926940021144795E7 1.6945650157600767 -22 2.7822656676875114E9 2.1693894050727256E7 0.5744760101891941 -23 4.1108503543617206E9 1.6040760744648937E7 11.92078696974113 -24 6.063676520575804E9 1.183623016558708E7 3.7478980012102454 +1 6474073.549673717 23542482.86106979 0.4515449997741428 +2 17395554.81395497 31629974.54619202 0.405056000113067 +3 35839998.96319906 33340953.15834009 0.1641670033335063 +4 66193455.34102199 31522332.03069353 0.04447799991758394 +5 115340738.7097385 27961655.56710438 1.151788997948221 +6 193844441.5896409 23784935.39578955 1.129900001901315 +7 317771847.8300464 19646015.3858996 1.552011005728631 +8 511405549.8810473 15882184.47266226 2.682122000783309 +9 811303942.6031713 12632056.86243409 6.911633013745018 +10 1272292334.354193 9920323.362208959 4.101944005148486 +11 1976370354.361742 7711904.171723636 2.749054993084428 +12 3045809853.909167 5945387.480541045 10.87656600105645 +13 76394073.54967301 277801318.3556007 0.1864769946797367 +14 116275554.813954 211421416.4735545 0.3511879956330262 +15 174079998.9631976 161941776.2036063 0.2110989978140125 +16 259406788.6743534 123533465.3778276 0.5475099970464234 +17 386140738.7097358 93610761.09804085 0.1991209761139268 +18 574484441.5896372 70489900.1335407 0.3812320038651329 +19 854011847.8300411 52798666.76919364 3.093542998973723 +20 1268005549.88104 39379115.18608759 1.055954000608862 +21 1879850609.269827 29269400.21144795 1.694565015760077 +22 2782265667.687511 21693894.05072726 0.5744760101891941 +23 4110850354.361721 16040760.74464894 11.92078696974113 +24 6063676520.575804 11836230.16558708 3.747898001210245 -- !sql_test_Decimal128V3_Double_notn_1 -- -1 6474073.5496737175 2.3542482861069795E7 0.45154499977414275 -2 1.739555481395497E7 3.1629974546192016E7 0.40505600011306697 -3 3.5839998963199064E7 3.334095315834009E7 0.1641670033335063 -4 6.619345534102199E7 3.1522332030693535E7 0.044477999917583944 -5 1.1534073870973846E8 2.796165556710438E7 1.1517889979482212 -6 1.9384444158964092E8 2.378493539578955E7 1.1299000019013148 -7 3.177718478300464E8 1.96460153858996E7 1.5520110057286312 -8 5.114055498810473E8 1.588218447266226E7 2.682122000783309 -9 8.113039426031713E8 1.2632056862434087E7 6.911633013745018 -10 1.2722923343541934E9 9920323.362208959 4.101944005148486 -11 1.976370354361742E9 7711904.171723636 2.749054993084428 -12 3.045809853909167E9 5945387.480541045 10.876566001056446 -13 7.6394073549673E7 2.7780131835560066E8 0.18647699467973666 -14 1.16275554813954E8 2.1142141647355446E8 0.35118799563302616 -15 1.7407999896319765E8 1.6194177620360628E8 0.21109899781401253 -16 2.5940678867435342E8 1.2353346537782761E8 0.5475099970464234 -17 3.8614073870973575E8 9.361076109804085E7 0.19912097611392676 -18 5.744844415896372E8 7.04899001335407E7 0.3812320038651329 -19 8.54011847830041E8 5.279866676919364E7 3.0935429989737226 -20 1.2680055498810399E9 3.9379115186087586E7 1.0559540006088621 -21 1.8798506092698271E9 2.926940021144795E7 1.6945650157600767 -22 2.7822656676875114E9 2.1693894050727256E7 0.5744760101891941 -23 4.1108503543617206E9 1.6040760744648937E7 11.92078696974113 -24 6.063676520575804E9 1.183623016558708E7 3.7478980012102454 +1 6474073.549673717 23542482.86106979 0.4515449997741428 +2 17395554.81395497 31629974.54619202 0.405056000113067 +3 35839998.96319906 33340953.15834009 0.1641670033335063 +4 66193455.34102199 31522332.03069353 0.04447799991758394 +5 115340738.7097385 27961655.56710438 1.151788997948221 +6 193844441.5896409 23784935.39578955 1.129900001901315 +7 317771847.8300464 19646015.3858996 1.552011005728631 +8 511405549.8810473 15882184.47266226 2.682122000783309 +9 811303942.6031713 12632056.86243409 6.911633013745018 +10 1272292334.354193 9920323.362208959 4.101944005148486 +11 1976370354.361742 7711904.171723636 2.749054993084428 +12 3045809853.909167 5945387.480541045 10.87656600105645 +13 76394073.54967301 277801318.3556007 0.1864769946797367 +14 116275554.813954 211421416.4735545 0.3511879956330262 +15 174079998.9631976 161941776.2036063 0.2110989978140125 +16 259406788.6743534 123533465.3778276 0.5475099970464234 +17 386140738.7097358 93610761.09804085 0.1991209761139268 +18 574484441.5896372 70489900.1335407 0.3812320038651329 +19 854011847.8300411 52798666.76919364 3.093542998973723 +20 1268005549.88104 39379115.18608759 1.055954000608862 +21 1879850609.269827 29269400.21144795 1.694565015760077 +22 2782265667.687511 21693894.05072726 0.5744760101891941 +23 4110850354.361721 16040760.74464894 11.92078696974113 +24 6063676520.575804 11836230.16558708 3.747898001210245 -- !sql_test_Decimal128V3_Double_2 -- \N \N @@ -19293,56 +19293,56 @@ -- !sql_test_Decimal128V3_DecimalV2_0 -- \N \N \N -1 12345702.40734500 12345653.61734500 -2 23456823.60745600 23456754.63945600 -3 34567948.99056700 34567851.47856700 -4 45679080.28867800 45678942.40267800 -5 56790219.95078900 56790024.96278900 -6 67901371.44190000 67901095.69390000 -7 79012539.65901100 79012149.69901100 +1 12345702.40754500 12345653.61714500 +2 23456823.60715600 23456754.63975600 +3 34567948.99036700 34567851.47876700 +4 45679080.28857800 45678942.40277800 +5 56790219.95098900 56790024.96258900 +6 67901371.44150000 67901095.69430000 +7 79012539.65881100 79012149.69921100 8 90123731.53112200 90123180.04912200 -9 101234956.85623300 101234176.94623300 +9 101234956.85653300 101234176.94593300 10 112346229.49134400 112345126.53334400 -11 123457569.03145500 123456009.21545500 -12 134569003.19156600 134566797.27756600 -13 145679035.74067700 145678986.95067700 -14 156790156.94078800 156790087.97278800 -15 167901282.32389900 167901184.81189900 -16 179012413.62201000 179012275.73601000 -17 190123553.28412100 190123358.29612100 -18 201234704.77523200 201234429.02723200 -19 212345872.99234300 212345483.03234300 +11 123457569.03185500 123456009.21505500 +12 134569003.19106600 134566797.27806600 +13 145679035.74087700 145678986.95047700 +14 156790156.94048800 156790087.97308800 +15 167901282.32369900 167901184.81209900 +16 179012413.62191000 179012275.73611000 +17 190123553.28432100 190123358.29592100 +18 201234704.77483200 201234429.02763200 +19 212345872.99214300 212345483.03254300 20 223457064.86445400 223456513.38245400 -21 234568290.18956500 234567510.27956500 +21 234568290.18986500 234567510.27926500 22 245679562.82467600 245678459.86667600 -23 256790902.36478700 256789342.54878700 -24 267902336.52489800 267900130.61089800 +23 256790902.36518700 256789342.54838700 +24 267902336.52439800 267900130.61139800 -- !sql_test_Decimal128V3_DecimalV2_notn_0 -- -1 12345702.40734500 12345653.61734500 -2 23456823.60745600 23456754.63945600 -3 34567948.99056700 34567851.47856700 -4 45679080.28867800 45678942.40267800 -5 56790219.95078900 56790024.96278900 -6 67901371.44190000 67901095.69390000 -7 79012539.65901100 79012149.69901100 +1 12345702.40754500 12345653.61714500 +2 23456823.60715600 23456754.63975600 +3 34567948.99036700 34567851.47876700 +4 45679080.28857800 45678942.40277800 +5 56790219.95098900 56790024.96258900 +6 67901371.44150000 67901095.69430000 +7 79012539.65881100 79012149.69921100 8 90123731.53112200 90123180.04912200 -9 101234956.85623300 101234176.94623300 +9 101234956.85653300 101234176.94593300 10 112346229.49134400 112345126.53334400 -11 123457569.03145500 123456009.21545500 -12 134569003.19156600 134566797.27756600 -13 145679035.74067700 145678986.95067700 -14 156790156.94078800 156790087.97278800 -15 167901282.32389900 167901184.81189900 -16 179012413.62201000 179012275.73601000 -17 190123553.28412100 190123358.29612100 -18 201234704.77523200 201234429.02723200 -19 212345872.99234300 212345483.03234300 +11 123457569.03185500 123456009.21505500 +12 134569003.19106600 134566797.27806600 +13 145679035.74087700 145678986.95047700 +14 156790156.94048800 156790087.97308800 +15 167901282.32369900 167901184.81209900 +16 179012413.62191000 179012275.73611000 +17 190123553.28432100 190123358.29592100 +18 201234704.77483200 201234429.02763200 +19 212345872.99214300 212345483.03254300 20 223457064.86445400 223456513.38245400 -21 234568290.18956500 234567510.27956500 +21 234568290.18986500 234567510.27926500 22 245679562.82467600 245678459.86667600 -23 256790902.36478700 256789342.54878700 -24 267902336.52489800 267900130.61089800 +23 256790902.36518700 256789342.54838700 +24 267902336.52439800 267900130.61139800 -- !sql_test_Decimal128V3_DecimalV2_2 -- \N \N @@ -19941,18 +19941,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.45679165634677E8 1.4567885705667698E8 -14 1.5679034055078802E8 1.56789904362788E8 -15 1.67901541926899E8 1.67900925208899E8 -16 1.7901278071201E8 1.7901190864601E8 -17 1.90124072398121E8 1.9012283918212098E8 -18 2.01235438890232E8 2.01233694912232E8 -19 2.12346911173343E8 2.1234444485134298E8 -20 2.23458533063454E8 2.23455045183454E8 -21 2.34570366528565E8 2.34565433940565E8 -22 2.4568249920567602E8 2.45675523485676E8 -23 2.56795055030787E8 2.56785189882787E8 -24 2.67908209277898E8 2.67894257857898E8 +13 145679165.634677 145678857.056677 +14 156790340.550788 156789904.362788 +15 167901541.926899 167900925.208899 +16 179012780.71201 179011908.64601 +17 190124072.398121 190122839.182121 +18 201235438.890232 201233694.912232 +19 212346911.173343 212344444.851343 +20 223458533.063454 223455045.183454 +21 234570366.528565 234565433.940565 +22 245682499.205676 245675523.485676 +23 256795055.030787 256785189.882787 +24 267908209.277898 267894257.857898 -- !sql_test_Decimal128V3_Char_notn_0 -- 1 \N \N @@ -19967,18 +19967,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.45679165634677E8 1.4567885705667698E8 -14 1.5679034055078802E8 1.56789904362788E8 -15 1.67901541926899E8 1.67900925208899E8 -16 1.7901278071201E8 1.7901190864601E8 -17 1.90124072398121E8 1.9012283918212098E8 -18 2.01235438890232E8 2.01233694912232E8 -19 2.12346911173343E8 2.1234444485134298E8 -20 2.23458533063454E8 2.23455045183454E8 -21 2.34570366528565E8 2.34565433940565E8 -22 2.4568249920567602E8 2.45675523485676E8 -23 2.56795055030787E8 2.56785189882787E8 -24 2.67908209277898E8 2.67894257857898E8 +13 145679165.634677 145678857.056677 +14 156790340.550788 156789904.362788 +15 167901541.926899 167900925.208899 +16 179012780.71201 179011908.64601 +17 190124072.398121 190122839.182121 +18 201235438.890232 201233694.912232 +19 212346911.173343 212344444.851343 +20 223458533.063454 223455045.183454 +21 234570366.528565 234565433.940565 +22 245682499.205676 245675523.485676 +23 256795055.030787 256785189.882787 +24 267908209.277898 267894257.857898 -- !sql_test_Decimal128V3_Char_1 -- \N \N \N \N @@ -19994,18 +19994,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.2476668981513157E10 944195.7064060108 108.99067700038563 -14 3.419498496709072E10 718910.7561729713 164.91678800769466 -15 5.177385648176376E10 544499.215420659 66.42689899937096 -16 7.805528968742278E10 410547.69863521797 304.6280099974575 -17 1.1723164382783492E11 308337.64042977226 394.89412100534923 -18 1.754743287576384E11 230776.4970673162 433.4372319966096 -19 2.618564086433789E11 172196.23229435814 286.4563429794216 -20 3.8969523282395636E11 128133.30110178905 525.103453997534 -21 5.785134049411062E11 95109.46393032015 1144.1885650022614 -22 8.568939965121295E11 70438.32359833135 1128.6656759959178 -23 1.2666362814871636E12 52060.06487825363 320.0167870102414 -24 1.8688013140119219E12 38404.86969324957 6066.72789800385 +13 22476668981.51316 944195.7064060108 108.9906770003856 +14 34194984967.09072 718910.7561729713 164.9167880076947 +15 51773856481.76376 544499.215420659 66.42689899937096 +16 78055289687.42278 410547.698635218 304.6280099974575 +17 117231643827.8349 308337.6404297723 394.8941210053492 +18 175474328757.6384 230776.4970673162 433.4372319966096 +19 261856408643.3789 172196.2322943581 286.4563429794216 +20 389695232823.9564 128133.3011017891 525.103453997534 +21 578513404941.1062 95109.46393032015 1144.188565002261 +22 856893996512.1295 70438.32359833135 1128.665675995918 +23 1266636281487.164 52060.06487825363 320.0167870102414 +24 1868801314011.922 38404.86969324957 6066.72789800385 -- !sql_test_Decimal128V3_Char_notn_1 -- 1 \N \N \N @@ -20020,18 +20020,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.2476668981513157E10 944195.7064060108 108.99067700038563 -14 3.419498496709072E10 718910.7561729713 164.91678800769466 -15 5.177385648176376E10 544499.215420659 66.42689899937096 -16 7.805528968742278E10 410547.69863521797 304.6280099974575 -17 1.1723164382783492E11 308337.64042977226 394.89412100534923 -18 1.754743287576384E11 230776.4970673162 433.4372319966096 -19 2.618564086433789E11 172196.23229435814 286.4563429794216 -20 3.8969523282395636E11 128133.30110178905 525.103453997534 -21 5.785134049411062E11 95109.46393032015 1144.1885650022614 -22 8.568939965121295E11 70438.32359833135 1128.6656759959178 -23 1.2666362814871636E12 52060.06487825363 320.0167870102414 -24 1.8688013140119219E12 38404.86969324957 6066.72789800385 +13 22476668981.51316 944195.7064060108 108.9906770003856 +14 34194984967.09072 718910.7561729713 164.9167880076947 +15 51773856481.76376 544499.215420659 66.42689899937096 +16 78055289687.42278 410547.698635218 304.6280099974575 +17 117231643827.8349 308337.6404297723 394.8941210053492 +18 175474328757.6384 230776.4970673162 433.4372319966096 +19 261856408643.3789 172196.2322943581 286.4563429794216 +20 389695232823.9564 128133.3011017891 525.103453997534 +21 578513404941.1062 95109.46393032015 1144.188565002261 +22 856893996512.1295 70438.32359833135 1128.665675995918 +23 1266636281487.164 52060.06487825363 320.0167870102414 +24 1868801314011.922 38404.86969324957 6066.72789800385 -- !sql_test_Decimal128V3_Char_2 -- \N \N @@ -20153,18 +20153,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568133046667698E8 1.45676692224677E8 -14 1.56793400538788E8 1.5678684437478802E8 -15 1.67905868308899E8 1.67896598826899E8 -16 1.7901889836701E8 1.7900579099101E8 -17 1.9013272352012098E8 1.90114188060121E8 -18 2.01247673038232E8 2.01221460764232E8 -19 2.12364212597343E8 2.1232714342734298E8 -20 2.2348300077745402E8 2.23430577469454E8 -21 2.34604968965565E8 2.3453083150356498E8 -22 2.4573143434467602E8 2.45626588346676E8 -23 2.56864259699787E8 2.56715985213787E8 -24 2.68006079410898E8 2.67796387724898E8 +13 145681330.466677 145676692.224677 +14 156793400.538788 156786844.374788 +15 167905868.308899 167896598.826899 +16 179018898.36701 179005790.99101 +17 190132723.520121 190114188.060121 +18 201247673.038232 201221460.764232 +19 212364212.597343 212327143.427343 +20 223483000.777454 223430577.469454 +21 234604968.965565 234530831.503565 +22 245731434.344676 245626588.346676 +23 256864259.699787 256715985.213787 +24 268006079.410898 267796387.724898 -- !sql_test_Decimal128V3_Varchar_notn_0 -- 1 \N \N @@ -20179,18 +20179,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568133046667698E8 1.45676692224677E8 -14 1.56793400538788E8 1.5678684437478802E8 -15 1.67905868308899E8 1.67896598826899E8 -16 1.7901889836701E8 1.7900579099101E8 -17 1.9013272352012098E8 1.90114188060121E8 -18 2.01247673038232E8 2.01221460764232E8 -19 2.12364212597343E8 2.1232714342734298E8 -20 2.2348300077745402E8 2.23430577469454E8 -21 2.34604968965565E8 2.3453083150356498E8 -22 2.4573143434467602E8 2.45626588346676E8 -23 2.56864259699787E8 2.56715985213787E8 -24 2.68006079410898E8 2.67796387724898E8 +13 145681330.466677 145676692.224677 +14 156793400.538788 156786844.374788 +15 167905868.308899 167896598.826899 +16 179018898.36701 179005790.99101 +17 190132723.520121 190114188.060121 +18 201247673.038232 201221460.764232 +19 212364212.597343 212327143.427343 +20 223483000.777454 223430577.469454 +21 234604968.965565 234530831.503565 +22 245731434.344676 245626588.346676 +23 256864259.699787 256715985.213787 +24 268006079.410898 267796387.724898 -- !sql_test_Decimal128V3_Varchar_1 -- \N \N \N \N @@ -20206,18 +20206,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378472544709978E11 62816.47716771871 1106.6096769824217 -14 5.139708782033925E11 47829.83539056924 2738.4787880091867 -15 7.781787311677178E11 36226.670178096036 3106.101898989251 -16 1.1731910551746917E12 27314.749295207523 4910.647010001023 -17 1.7620128549297778E12 20514.565680066316 5242.57012099804 -18 2.6374078029432124E12 15354.224276858391 2939.403231994558 -19 3.935739018502402E12 11456.72687100051 13472.252342999447 -20 5.857172040454939E12 8525.093041570517 2438.7734540161873 -21 8.695134395029927E12 6327.918272534471 34039.19756499128 -22 1.2879230566095363E13 4686.473800281361 24838.031675988794 -23 1.9037711708578574E13 3463.7128663765793 52849.947786982506 -24 2.8088330674166164E13 2555.191754888155 20104.702898021904 +13 337847254470.9978 62816.47716771871 1106.609676982422 +14 513970878203.3925 47829.83539056924 2738.478788009187 +15 778178731167.7178 36226.67017809604 3106.101898989251 +16 1173191055174.692 27314.74929520752 4910.647010001023 +17 1762012854929.778 20514.56568006632 5242.57012099804 +18 2637407802943.212 15354.22427685839 2939.403231994558 +19 3935739018502.402 11456.72687100051 13472.25234299945 +20 5857172040454.939 8525.093041570517 2438.773454016187 +21 8695134395029.927 6327.918272534471 34039.19756499128 +22 12879230566095.36 4686.473800281361 24838.03167598879 +23 19037711708578.57 3463.712866376579 52849.94778698251 +24 28088330674166.16 2555.191754888155 20104.7028980219 -- !sql_test_Decimal128V3_Varchar_notn_1 -- 1 \N \N \N @@ -20232,18 +20232,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378472544709978E11 62816.47716771871 1106.6096769824217 -14 5.139708782033925E11 47829.83539056924 2738.4787880091867 -15 7.781787311677178E11 36226.670178096036 3106.101898989251 -16 1.1731910551746917E12 27314.749295207523 4910.647010001023 -17 1.7620128549297778E12 20514.565680066316 5242.57012099804 -18 2.6374078029432124E12 15354.224276858391 2939.403231994558 -19 3.935739018502402E12 11456.72687100051 13472.252342999447 -20 5.857172040454939E12 8525.093041570517 2438.7734540161873 -21 8.695134395029927E12 6327.918272534471 34039.19756499128 -22 1.2879230566095363E13 4686.473800281361 24838.031675988794 -23 1.9037711708578574E13 3463.7128663765793 52849.947786982506 -24 2.8088330674166164E13 2555.191754888155 20104.702898021904 +13 337847254470.9978 62816.47716771871 1106.609676982422 +14 513970878203.3925 47829.83539056924 2738.478788009187 +15 778178731167.7178 36226.67017809604 3106.101898989251 +16 1173191055174.692 27314.74929520752 4910.647010001023 +17 1762012854929.778 20514.56568006632 5242.57012099804 +18 2637407802943.212 15354.22427685839 2939.403231994558 +19 3935739018502.402 11456.72687100051 13472.25234299945 +20 5857172040454.939 8525.093041570517 2438.773454016187 +21 8695134395029.927 6327.918272534471 34039.19756499128 +22 12879230566095.36 4686.473800281361 24838.03167598879 +23 19037711708578.57 3463.712866376579 52849.94778698251 +24 28088330674166.16 2555.191754888155 20104.7028980219 -- !sql_test_Decimal128V3_Varchar_2 -- \N \N @@ -20365,18 +20365,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568961536267698E8 1.45668407328677E8 -14 1.5680511124978802E8 1.56775133663788E8 -15 1.67922425580899E8 1.6788004155489898E8 -16 1.7904231093401E8 1.7898237842401E8 -17 1.9016583180212098E8 1.90081079778121E8 -18 2.01294493743232E8 2.01174640059232E8 -19 2.1243042602934298E8 2.12260929995343E8 -20 2.2357663997445402E8 2.23336938272454E8 -21 2.3473739426556498E8 2.34398406203565E8 -22 2.45918711630676E8 2.45439311060676E8 -23 2.5712910951578698E8 2.56451135397787E8 -24 2.68380633428898E8 2.67421833706898E8 +13 145689615.362677 145668407.328677 +14 156805111.249788 156775133.663788 +15 167922425.580899 167880041.554899 +16 179042310.93401 178982378.42401 +17 190165831.802121 190081079.778121 +18 201294493.743232 201174640.059232 +19 212430426.029343 212260929.995343 +20 223576639.974454 223336938.272454 +21 234737394.265565 234398406.203565 +22 245918711.630676 245439311.060676 +23 257129109.515787 256451135.397787 +24 268380633.428898 267421833.706898 -- !sql_test_Decimal128V3_String_notn_0 -- 1 \N \N @@ -20391,18 +20391,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568961536267698E8 1.45668407328677E8 -14 1.5680511124978802E8 1.56775133663788E8 -15 1.67922425580899E8 1.6788004155489898E8 -16 1.7904231093401E8 1.7898237842401E8 -17 1.9016583180212098E8 1.90081079778121E8 -18 2.01294493743232E8 2.01174640059232E8 -19 2.1243042602934298E8 2.12260929995343E8 -20 2.2357663997445402E8 2.23336938272454E8 -21 2.3473739426556498E8 2.34398406203565E8 -22 2.45918711630676E8 2.45439311060676E8 -23 2.5712910951578698E8 2.56451135397787E8 -24 2.68380633428898E8 2.67421833706898E8 +13 145689615.362677 145668407.328677 +14 156805111.249788 156775133.663788 +15 167922425.580899 167880041.554899 +16 179042310.93401 178982378.42401 +17 190165831.802121 190081079.778121 +18 201294493.743232 201174640.059232 +19 212430426.029343 212260929.995343 +20 223576639.974454 223336938.272454 +21 234737394.265565 234398406.203565 +22 245918711.630676 245439311.060676 +23 257129109.515787 256451135.397787 +24 268380633.428898 267421833.706898 -- !sql_test_Decimal128V3_String_1 -- \N \N \N \N @@ -20418,18 +20418,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447827128527517E12 13738.0967368948 1025.7996769907622 -14 2.350094689949447E12 10460.490211372457 7347.676788006946 -15 3.5581651244869517E12 7922.854405945249 18106.581898996563 -16 5.364329568799107E12 5973.79768272712 23903.56400999772 -17 8.056673844043637E12 4486.582073606194 24665.958120978117 -18 1.2059352095628559E13 3358.0038624633685 231.4652320145251 -19 1.799587513006657E13 2505.612349753776 51895.427342971656 -20 2.6781486338173504E13 1864.4572588262558 54802.85945401364 -21 3.9757858953962266E13 1383.9301528828764 157655.36156500623 -22 5.888932903807677E13 1024.9425082897837 225919.5056760013 -23 8.704852839187608E13 757.5219042706494 176918.79378698382 -24 1.2843181413417883E14 558.8262645906316 396111.129898019 +13 1544782712852.752 13738.0967368948 1025.799676990762 +14 2350094689949.447 10460.49021137246 7347.676788006946 +15 3558165124486.952 7922.854405945249 18106.58189899656 +16 5364329568799.107 5973.79768272712 23903.56400999772 +17 8056673844043.637 4486.582073606194 24665.95812097812 +18 12059352095628.56 3358.003862463368 231.4652320145251 +19 17995875130066.57 2505.612349753776 51895.42734297166 +20 26781486338173.5 1864.457258826256 54802.85945401364 +21 39757858953962.27 1383.930152882876 157655.3615650062 +22 58889329038076.77 1024.942508289784 225919.5056760013 +23 87048528391876.08 757.5219042706494 176918.7937869838 +24 128431814134178.8 558.8262645906316 396111.129898019 -- !sql_test_Decimal128V3_String_notn_1 -- 1 \N \N \N @@ -20444,18 +20444,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447827128527517E12 13738.0967368948 1025.7996769907622 -14 2.350094689949447E12 10460.490211372457 7347.676788006946 -15 3.5581651244869517E12 7922.854405945249 18106.581898996563 -16 5.364329568799107E12 5973.79768272712 23903.56400999772 -17 8.056673844043637E12 4486.582073606194 24665.958120978117 -18 1.2059352095628559E13 3358.0038624633685 231.4652320145251 -19 1.799587513006657E13 2505.612349753776 51895.427342971656 -20 2.6781486338173504E13 1864.4572588262558 54802.85945401364 -21 3.9757858953962266E13 1383.9301528828764 157655.36156500623 -22 5.888932903807677E13 1024.9425082897837 225919.5056760013 -23 8.704852839187608E13 757.5219042706494 176918.79378698382 -24 1.2843181413417883E14 558.8262645906316 396111.129898019 +13 1544782712852.752 13738.0967368948 1025.799676990762 +14 2350094689949.447 10460.49021137246 7347.676788006946 +15 3558165124486.952 7922.854405945249 18106.58189899656 +16 5364329568799.107 5973.79768272712 23903.56400999772 +17 8056673844043.637 4486.582073606194 24665.95812097812 +18 12059352095628.56 3358.003862463368 231.4652320145251 +19 17995875130066.57 2505.612349753776 51895.42734297166 +20 26781486338173.5 1864.457258826256 54802.85945401364 +21 39757858953962.27 1383.930152882876 157655.3615650062 +22 58889329038076.77 1024.942508289784 225919.5056760013 +23 87048528391876.08 757.5219042706494 176918.7937869838 +24 128431814134178.8 558.8262645906316 396111.129898019 -- !sql_test_Decimal128V3_String_2 -- \N \N diff --git a/regression-test/data/nereids_arith_p0/integer.out b/regression-test/data/nereids_arith_p0/integer.out index a10ce1b653882b..35f818e6858640 100644 --- a/regression-test/data/nereids_arith_p0/integer.out +++ b/regression-test/data/nereids_arith_p0/integer.out @@ -54,25 +54,25 @@ -- !sql_test_Boolean_TinyInt_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 8 8 0.125 1 9 9 0.1111111111111111 1 10 10 0.1 1 11 11 0.09090909090909091 1 12 12 0.08333333333333333 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 20 8 0.125 1 21 9 0.1111111111111111 1 22 10 0.1 1 @@ -80,25 +80,25 @@ 24 12 0.08333333333333333 1 -- !sql_test_Boolean_TinyInt_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 8 8 0.125 1 9 9 0.1111111111111111 1 10 10 0.1 1 11 11 0.09090909090909091 1 12 12 0.08333333333333333 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 20 8 0.125 1 21 9 0.1111111111111111 1 22 10 0.1 1 @@ -319,56 +319,56 @@ -- !sql_test_Boolean_SmallInt_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 1280 7.8125E-4 1 -9 2560 3.90625E-4 1 -10 5120 1.953125E-4 1 -11 10240 9.765625E-5 1 -12 20480 4.8828125E-5 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 1280 7.8125E-4 1 -21 2560 3.90625E-4 1 -22 5120 1.953125E-4 1 -23 10240 9.765625E-5 1 -24 20480 4.8828125E-5 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 1280 0.00078125 1 +9 2560 0.000390625 1 +10 5120 0.0001953125 1 +11 10240 9.765625000000001e-05 1 +12 20480 4.8828125e-05 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 1280 0.00078125 1 +21 2560 0.000390625 1 +22 5120 0.0001953125 1 +23 10240 9.765625000000001e-05 1 +24 20480 4.8828125e-05 1 -- !sql_test_Boolean_SmallInt_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 1280 7.8125E-4 1 -9 2560 3.90625E-4 1 -10 5120 1.953125E-4 1 -11 10240 9.765625E-5 1 -12 20480 4.8828125E-5 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 1280 7.8125E-4 1 -21 2560 3.90625E-4 1 -22 5120 1.953125E-4 1 -23 10240 9.765625E-5 1 -24 20480 4.8828125E-5 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 1280 0.00078125 1 +9 2560 0.000390625 1 +10 5120 0.0001953125 1 +11 10240 9.765625000000001e-05 1 +12 20480 4.8828125e-05 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 1280 0.00078125 1 +21 2560 0.000390625 1 +22 5120 0.0001953125 1 +23 10240 9.765625000000001e-05 1 +24 20480 4.8828125e-05 1 -- !sql_test_Boolean_SmallInt_2 -- \N \N @@ -584,56 +584,56 @@ -- !sql_test_Boolean_Integer_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 3040045 3.289424992064262E-7 1 -9 6080045 1.6447246689786013E-7 1 -10 12160045 8.22365377759704E-8 1 -11 24320045 4.111834497016761E-8 1 -12 48640045 2.05591915056822E-8 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 3040045 3.289424992064262E-7 1 -21 6080045 1.6447246689786013E-7 1 -22 12160045 8.22365377759704E-8 1 -23 24320045 4.111834497016761E-8 1 -24 48640045 2.05591915056822E-8 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 3040045 3.289424992064262e-07 1 +9 6080045 1.644724668978601e-07 1 +10 12160045 8.22365377759704e-08 1 +11 24320045 4.111834497016761e-08 1 +12 48640045 2.05591915056822e-08 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 3040045 3.289424992064262e-07 1 +21 6080045 1.644724668978601e-07 1 +22 12160045 8.22365377759704e-08 1 +23 24320045 4.111834497016761e-08 1 +24 48640045 2.05591915056822e-08 1 -- !sql_test_Boolean_Integer_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 3040045 3.289424992064262E-7 1 -9 6080045 1.6447246689786013E-7 1 -10 12160045 8.22365377759704E-8 1 -11 24320045 4.111834497016761E-8 1 -12 48640045 2.05591915056822E-8 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 3040045 3.289424992064262E-7 1 -21 6080045 1.6447246689786013E-7 1 -22 12160045 8.22365377759704E-8 1 -23 24320045 4.111834497016761E-8 1 -24 48640045 2.05591915056822E-8 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 3040045 3.289424992064262e-07 1 +9 6080045 1.644724668978601e-07 1 +10 12160045 8.22365377759704e-08 1 +11 24320045 4.111834497016761e-08 1 +12 48640045 2.05591915056822e-08 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 3040045 3.289424992064262e-07 1 +21 6080045 1.644724668978601e-07 1 +22 12160045 8.22365377759704e-08 1 +23 24320045 4.111834497016761e-08 1 +24 48640045 2.05591915056822e-08 1 -- !sql_test_Boolean_Integer_2 -- \N \N @@ -849,56 +849,56 @@ -- !sql_test_Boolean_BigInt_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 684010779 1.4619652653163819E-9 1 -9 1368010779 7.309883923071048E-10 1 -10 2736010779 3.654956360827992E-10 1 -11 5472010779 1.8274817802583865E-10 1 -12 10944010779 9.1374179009295E-11 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 684010779 1.4619652653163819E-9 1 -21 1368010779 7.309883923071048E-10 1 -22 2736010779 3.654956360827992E-10 1 -23 5472010779 1.8274817802583865E-10 1 -24 10944010779 9.1374179009295E-11 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 684010779 1.461965265316382e-09 1 +9 1368010779 7.309883923071048e-10 1 +10 2736010779 3.654956360827992e-10 1 +11 5472010779 1.827481780258387e-10 1 +12 10944010779 9.1374179009295e-11 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 684010779 1.461965265316382e-09 1 +21 1368010779 7.309883923071048e-10 1 +22 2736010779 3.654956360827992e-10 1 +23 5472010779 1.827481780258387e-10 1 +24 10944010779 9.1374179009295e-11 1 -- !sql_test_Boolean_BigInt_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 684010779 1.4619652653163819E-9 1 -9 1368010779 7.309883923071048E-10 1 -10 2736010779 3.654956360827992E-10 1 -11 5472010779 1.8274817802583865E-10 1 -12 10944010779 9.1374179009295E-11 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 684010779 1.4619652653163819E-9 1 -21 1368010779 7.309883923071048E-10 1 -22 2736010779 3.654956360827992E-10 1 -23 5472010779 1.8274817802583865E-10 1 -24 10944010779 9.1374179009295E-11 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 684010779 1.461965265316382e-09 1 +9 1368010779 7.309883923071048e-10 1 +10 2736010779 3.654956360827992e-10 1 +11 5472010779 1.827481780258387e-10 1 +12 10944010779 9.1374179009295e-11 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 684010779 1.461965265316382e-09 1 +21 1368010779 7.309883923071048e-10 1 +22 2736010779 3.654956360827992e-10 1 +23 5472010779 1.827481780258387e-10 1 +24 10944010779 9.1374179009295e-11 1 -- !sql_test_Boolean_BigInt_2 -- \N \N @@ -1114,56 +1114,56 @@ -- !sql_test_Boolean_LargeInt_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 13680215645 7.309826291850094E-11 1 -9 27360215645 3.654941952852433E-11 1 -10 54720215645 1.8274781782432063E-11 1 -11 109440215645 9.137408895864936E-12 1 -12 218880215645 4.5687089491079984E-12 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 13680215645 7.309826291850094E-11 1 -21 27360215645 3.654941952852433E-11 1 -22 54720215645 1.8274781782432063E-11 1 -23 109440215645 9.137408895864936E-12 1 -24 218880215645 4.5687089491079984E-12 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 13680215645 7.309826291850094e-11 1 +9 27360215645 3.654941952852433e-11 1 +10 54720215645 1.827478178243206e-11 1 +11 109440215645 9.137408895864936e-12 1 +12 218880215645 4.568708949107998e-12 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 13680215645 7.309826291850094e-11 1 +21 27360215645 3.654941952852433e-11 1 +22 54720215645 1.827478178243206e-11 1 +23 109440215645 9.137408895864936e-12 1 +24 218880215645 4.568708949107998e-12 1 -- !sql_test_Boolean_LargeInt_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 13680215645 7.309826291850094E-11 1 -9 27360215645 3.654941952852433E-11 1 -10 54720215645 1.8274781782432063E-11 1 -11 109440215645 9.137408895864936E-12 1 -12 218880215645 4.5687089491079984E-12 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 13680215645 7.309826291850094E-11 1 -21 27360215645 3.654941952852433E-11 1 -22 54720215645 1.8274781782432063E-11 1 -23 109440215645 9.137408895864936E-12 1 -24 218880215645 4.5687089491079984E-12 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 13680215645 7.309826291850094e-11 1 +9 27360215645 3.654941952852433e-11 1 +10 54720215645 1.827478178243206e-11 1 +11 109440215645 9.137408895864936e-12 1 +12 218880215645 4.568708949107998e-12 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 13680215645 7.309826291850094e-11 1 +21 27360215645 3.654941952852433e-11 1 +22 54720215645 1.827478178243206e-11 1 +23 109440215645 9.137408895864936e-12 1 +24 218880215645 4.568708949107998e-12 1 -- !sql_test_Boolean_LargeInt_3 -- \N \N \N \N @@ -1273,109 +1273,109 @@ -- !sql_test_Boolean_Float_0 -- \N \N \N -1 0.10000000149011612 -0.10000000149011612 -2 0.20000000298023224 -0.20000000298023224 -3 0.30000001192092896 -0.30000001192092896 +1 0.1000000014901161 -0.1000000014901161 +2 0.2000000029802322 -0.2000000029802322 +3 0.300000011920929 -0.300000011920929 4 0.4000000059604645 -0.4000000059604645 5 0.5 -0.5 6 0.6000000238418579 -0.6000000238418579 7 0.699999988079071 -0.699999988079071 -8 1.800000011920929 0.19999998807907104 -9 1.899999976158142 0.10000002384185791 -10 2.0 0.0 -11 2.100000023841858 -0.10000002384185791 -12 2.200000047683716 -0.20000004768371582 -13 0.10000000149011612 -0.10000000149011612 -14 0.20000000298023224 -0.20000000298023224 -15 0.30000001192092896 -0.30000001192092896 +8 1.800000011920929 0.199999988079071 +9 1.899999976158142 0.1000000238418579 +10 2 0 +11 2.100000023841858 -0.1000000238418579 +12 2.200000047683716 -0.2000000476837158 +13 0.1000000014901161 -0.1000000014901161 +14 0.2000000029802322 -0.2000000029802322 +15 0.300000011920929 -0.300000011920929 16 0.4000000059604645 -0.4000000059604645 17 0.5 -0.5 18 0.6000000238418579 -0.6000000238418579 19 0.699999988079071 -0.699999988079071 -20 1.800000011920929 0.19999998807907104 -21 1.899999976158142 0.10000002384185791 -22 2.0 0.0 -23 2.100000023841858 -0.10000002384185791 -24 2.200000047683716 -0.20000004768371582 +20 1.800000011920929 0.199999988079071 +21 1.899999976158142 0.1000000238418579 +22 2 0 +23 2.100000023841858 -0.1000000238418579 +24 2.200000047683716 -0.2000000476837158 -- !sql_test_Boolean_Float_notn_0 -- -1 0.10000000149011612 -0.10000000149011612 -2 0.20000000298023224 -0.20000000298023224 -3 0.30000001192092896 -0.30000001192092896 +1 0.1000000014901161 -0.1000000014901161 +2 0.2000000029802322 -0.2000000029802322 +3 0.300000011920929 -0.300000011920929 4 0.4000000059604645 -0.4000000059604645 5 0.5 -0.5 6 0.6000000238418579 -0.6000000238418579 7 0.699999988079071 -0.699999988079071 -8 1.800000011920929 0.19999998807907104 -9 1.899999976158142 0.10000002384185791 -10 2.0 0.0 -11 2.100000023841858 -0.10000002384185791 -12 2.200000047683716 -0.20000004768371582 -13 0.10000000149011612 -0.10000000149011612 -14 0.20000000298023224 -0.20000000298023224 -15 0.30000001192092896 -0.30000001192092896 +8 1.800000011920929 0.199999988079071 +9 1.899999976158142 0.1000000238418579 +10 2 0 +11 2.100000023841858 -0.1000000238418579 +12 2.200000047683716 -0.2000000476837158 +13 0.1000000014901161 -0.1000000014901161 +14 0.2000000029802322 -0.2000000029802322 +15 0.300000011920929 -0.300000011920929 16 0.4000000059604645 -0.4000000059604645 17 0.5 -0.5 18 0.6000000238418579 -0.6000000238418579 19 0.699999988079071 -0.699999988079071 -20 1.800000011920929 0.19999998807907104 -21 1.899999976158142 0.10000002384185791 -22 2.0 0.0 -23 2.100000023841858 -0.10000002384185791 -24 2.200000047683716 -0.20000004768371582 +20 1.800000011920929 0.199999988079071 +21 1.899999976158142 0.1000000238418579 +22 2 0 +23 2.100000023841858 -0.1000000238418579 +24 2.200000047683716 -0.2000000476837158 -- !sql_test_Boolean_Float_1 -- \N \N \N \N -1 0.0 0.0 0.0 -2 0.0 0.0 0.0 -3 0.0 0.0 0.0 -4 0.0 0.0 0.0 -5 0.0 0.0 0.0 -6 0.0 0.0 0.0 -7 0.0 0.0 0.0 -8 0.800000011920929 1.2499999813735487 0.19999998807907104 -9 0.8999999761581421 1.1111111405455043 0.10000002384185791 -10 1.0 1.0 0.0 -11 1.100000023841858 0.9090908893868948 1.0 -12 1.2000000476837158 0.8333333002196431 1.0 -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 0.800000011920929 1.2499999813735487 0.19999998807907104 -21 0.8999999761581421 1.1111111405455043 0.10000002384185791 -22 1.0 1.0 0.0 -23 1.100000023841858 0.9090908893868948 1.0 -24 1.2000000476837158 0.8333333002196431 1.0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 0.800000011920929 1.249999981373549 0.199999988079071 +9 0.8999999761581421 1.111111140545504 0.1000000238418579 +10 1 1 0 +11 1.100000023841858 0.9090908893868948 1 +12 1.200000047683716 0.8333333002196431 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 0.800000011920929 1.249999981373549 0.199999988079071 +21 0.8999999761581421 1.111111140545504 0.1000000238418579 +22 1 1 0 +23 1.100000023841858 0.9090908893868948 1 +24 1.200000047683716 0.8333333002196431 1 -- !sql_test_Boolean_Float_notn_1 -- -1 0.0 0.0 0.0 -2 0.0 0.0 0.0 -3 0.0 0.0 0.0 -4 0.0 0.0 0.0 -5 0.0 0.0 0.0 -6 0.0 0.0 0.0 -7 0.0 0.0 0.0 -8 0.800000011920929 1.2499999813735487 0.19999998807907104 -9 0.8999999761581421 1.1111111405455043 0.10000002384185791 -10 1.0 1.0 0.0 -11 1.100000023841858 0.9090908893868948 1.0 -12 1.2000000476837158 0.8333333002196431 1.0 -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 0.800000011920929 1.2499999813735487 0.19999998807907104 -21 0.8999999761581421 1.1111111405455043 0.10000002384185791 -22 1.0 1.0 0.0 -23 1.100000023841858 0.9090908893868948 1.0 -24 1.2000000476837158 0.8333333002196431 1.0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 0.800000011920929 1.249999981373549 0.199999988079071 +9 0.8999999761581421 1.111111140545504 0.1000000238418579 +10 1 1 0 +11 1.100000023841858 0.9090908893868948 1 +12 1.200000047683716 0.8333333002196431 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 0.800000011920929 1.249999981373549 0.199999988079071 +21 0.8999999761581421 1.111111140545504 0.1000000238418579 +22 1 1 0 +23 1.100000023841858 0.9090908893868948 1 +24 1.200000047683716 0.8333333002196431 1 -- !sql_test_Boolean_Float_3 -- \N \N \N \N @@ -1493,9 +1493,9 @@ 6 2.8548 -2.8548 7 4.0218 -4.0218 8 6.6745 -4.6745 -9 9.0141 -7.014099999999999 +9 9.014099999999999 -7.014099999999999 10 12.3248 -10.3248 -11 17.0086 -15.008600000000001 +11 17.0086 -15.0086 12 23.634 -21.634 13 0.5244 -0.5244 14 0.7416 -0.7416 @@ -1505,9 +1505,9 @@ 18 2.8548 -2.8548 19 4.0218 -4.0218 20 6.6745 -4.6745 -21 9.0141 -7.014099999999999 +21 9.014099999999999 -7.014099999999999 22 12.3248 -10.3248 -23 17.0086 -15.008600000000001 +23 17.0086 -15.0086 24 23.634 -21.634 -- !sql_test_Boolean_Double_notn_0 -- @@ -1519,9 +1519,9 @@ 6 2.8548 -2.8548 7 4.0218 -4.0218 8 6.6745 -4.6745 -9 9.0141 -7.014099999999999 +9 9.014099999999999 -7.014099999999999 10 12.3248 -10.3248 -11 17.0086 -15.008600000000001 +11 17.0086 -15.0086 12 23.634 -21.634 13 0.5244 -0.5244 14 0.7416 -0.7416 @@ -1531,63 +1531,63 @@ 18 2.8548 -2.8548 19 4.0218 -4.0218 20 6.6745 -4.6745 -21 9.0141 -7.014099999999999 +21 9.014099999999999 -7.014099999999999 22 12.3248 -10.3248 -23 17.0086 -15.008600000000001 +23 17.0086 -15.0086 24 23.634 -21.634 -- !sql_test_Boolean_Double_1 -- \N \N \N \N -1 0.0 0.0 0.0 -2 0.0 0.0 0.0 -3 0.0 0.0 0.0 -4 0.0 0.0 0.0 -5 0.0 0.0 0.0 -6 0.0 0.0 0.0 -7 0.0 0.0 0.0 -8 5.6745 0.17622698035069168 1.0 -9 8.0141 0.12478007511760524 1.0 -10 11.3248 0.08830178016388811 1.0 -11 16.0086 0.06246642429694039 1.0 -12 22.634 0.04418132013784572 1.0 -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 5.6745 0.17622698035069168 1.0 -21 8.0141 0.12478007511760524 1.0 -22 11.3248 0.08830178016388811 1.0 -23 16.0086 0.06246642429694039 1.0 -24 22.634 0.04418132013784572 1.0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 5.6745 0.1762269803506917 1 +9 8.014099999999999 0.1247800751176052 1 +10 11.3248 0.08830178016388811 1 +11 16.0086 0.06246642429694039 1 +12 22.634 0.04418132013784572 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 5.6745 0.1762269803506917 1 +21 8.014099999999999 0.1247800751176052 1 +22 11.3248 0.08830178016388811 1 +23 16.0086 0.06246642429694039 1 +24 22.634 0.04418132013784572 1 -- !sql_test_Boolean_Double_notn_1 -- -1 0.0 0.0 0.0 -2 0.0 0.0 0.0 -3 0.0 0.0 0.0 -4 0.0 0.0 0.0 -5 0.0 0.0 0.0 -6 0.0 0.0 0.0 -7 0.0 0.0 0.0 -8 5.6745 0.17622698035069168 1.0 -9 8.0141 0.12478007511760524 1.0 -10 11.3248 0.08830178016388811 1.0 -11 16.0086 0.06246642429694039 1.0 -12 22.634 0.04418132013784572 1.0 -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 5.6745 0.17622698035069168 1.0 -21 8.0141 0.12478007511760524 1.0 -22 11.3248 0.08830178016388811 1.0 -23 16.0086 0.06246642429694039 1.0 -24 22.634 0.04418132013784572 1.0 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 5.6745 0.1762269803506917 1 +9 8.014099999999999 0.1247800751176052 1 +10 11.3248 0.08830178016388811 1 +11 16.0086 0.06246642429694039 1 +12 22.634 0.04418132013784572 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 5.6745 0.1762269803506917 1 +21 8.014099999999999 0.1247800751176052 1 +22 11.3248 0.08830178016388811 1 +23 16.0086 0.06246642429694039 1 +24 22.634 0.04418132013784572 1 -- !sql_test_Boolean_Double_3 -- \N \N \N \N @@ -1697,56 +1697,56 @@ -- !sql_test_Boolean_DecimalV2_0 -- \N \N \N -1 24.395000000 -24.395000000 -2 34.484000000 -34.484000000 -3 48.756000000 -48.756000000 -4 68.943000000 -68.943000000 -5 97.494000000 -97.494000000 -6 137.874000000 -137.874000000 -7 194.980000000 -194.980000000 +1 24.395200000 -24.395200000 +2 34.483700000 -34.483700000 +3 48.755800000 -48.755800000 +4 68.942900000 -68.942900000 +5 97.494200000 -97.494200000 +6 137.873600000 -137.873600000 +7 194.979800000 -194.979800000 8 276.741000000 -274.741000000 -9 390.955000000 -388.955000000 +9 390.955300000 -388.955300000 10 552.479000000 -550.479000000 -11 780.908000000 -778.908000000 -12 1103.957000000 -1101.957000000 -13 24.395000000 -24.395000000 -14 34.484000000 -34.484000000 -15 48.756000000 -48.756000000 -16 68.943000000 -68.943000000 -17 97.494000000 -97.494000000 -18 137.874000000 -137.874000000 -19 194.980000000 -194.980000000 +11 780.908400000 -778.908400000 +12 1103.956500000 -1101.956500000 +13 24.395200000 -24.395200000 +14 34.483700000 -34.483700000 +15 48.755800000 -48.755800000 +16 68.942900000 -68.942900000 +17 97.494200000 -97.494200000 +18 137.873600000 -137.873600000 +19 194.979800000 -194.979800000 20 276.741000000 -274.741000000 -21 390.955000000 -388.955000000 +21 390.955300000 -388.955300000 22 552.479000000 -550.479000000 -23 780.908000000 -778.908000000 -24 1103.957000000 -1101.957000000 +23 780.908400000 -778.908400000 +24 1103.956500000 -1101.956500000 -- !sql_test_Boolean_DecimalV2_notn_0 -- -1 24.395000000 -24.395000000 -2 34.484000000 -34.484000000 -3 48.756000000 -48.756000000 -4 68.943000000 -68.943000000 -5 97.494000000 -97.494000000 -6 137.874000000 -137.874000000 -7 194.980000000 -194.980000000 +1 24.395200000 -24.395200000 +2 34.483700000 -34.483700000 +3 48.755800000 -48.755800000 +4 68.942900000 -68.942900000 +5 97.494200000 -97.494200000 +6 137.873600000 -137.873600000 +7 194.979800000 -194.979800000 8 276.741000000 -274.741000000 -9 390.955000000 -388.955000000 +9 390.955300000 -388.955300000 10 552.479000000 -550.479000000 -11 780.908000000 -778.908000000 -12 1103.957000000 -1101.957000000 -13 24.395000000 -24.395000000 -14 34.484000000 -34.484000000 -15 48.756000000 -48.756000000 -16 68.943000000 -68.943000000 -17 97.494000000 -97.494000000 -18 137.874000000 -137.874000000 -19 194.980000000 -194.980000000 +11 780.908400000 -778.908400000 +12 1103.956500000 -1101.956500000 +13 24.395200000 -24.395200000 +14 34.483700000 -34.483700000 +15 48.755800000 -48.755800000 +16 68.942900000 -68.942900000 +17 97.494200000 -97.494200000 +18 137.873600000 -137.873600000 +19 194.979800000 -194.979800000 20 276.741000000 -274.741000000 -21 390.955000000 -388.955000000 +21 390.955300000 -388.955300000 22 552.479000000 -550.479000000 -23 780.908000000 -778.908000000 -24 1103.957000000 -1101.957000000 +23 780.908400000 -778.908400000 +24 1103.956500000 -1101.956500000 -- !sql_test_Boolean_DecimalV2_1 -- \N \N \N \N @@ -1758,10 +1758,10 @@ 6 0E-9 0E-9 0E-9 7 0E-9 0E-9 0E-9 8 275.741000000 0.003626592 1.000000000 -9 389.955000000 0.002564398 1.000000000 +9 389.955300000 0.002564396 1.000000000 10 551.479000000 0.001813306 1.000000000 -11 779.908000000 0.001282203 1.000000000 -12 1102.957000000 0.000906654 1.000000000 +11 779.908400000 0.001282202 1.000000000 +12 1102.956500000 0.000906654 1.000000000 13 0E-9 0E-9 0E-9 14 0E-9 0E-9 0E-9 15 0E-9 0E-9 0E-9 @@ -1770,10 +1770,10 @@ 18 0E-9 0E-9 0E-9 19 0E-9 0E-9 0E-9 20 275.741000000 0.003626592 1.000000000 -21 389.955000000 0.002564398 1.000000000 +21 389.955300000 0.002564396 1.000000000 22 551.479000000 0.001813306 1.000000000 -23 779.908000000 0.001282203 1.000000000 -24 1102.957000000 0.000906654 1.000000000 +23 779.908400000 0.001282202 1.000000000 +24 1102.956500000 0.000906654 1.000000000 -- !sql_test_Boolean_DecimalV2_notn_1 -- 1 0E-9 0E-9 0E-9 @@ -1784,10 +1784,10 @@ 6 0E-9 0E-9 0E-9 7 0E-9 0E-9 0E-9 8 275.741000000 0.003626592 1.000000000 -9 389.955000000 0.002564398 1.000000000 +9 389.955300000 0.002564396 1.000000000 10 551.479000000 0.001813306 1.000000000 -11 779.908000000 0.001282203 1.000000000 -12 1102.957000000 0.000906654 1.000000000 +11 779.908400000 0.001282202 1.000000000 +12 1102.956500000 0.000906654 1.000000000 13 0E-9 0E-9 0E-9 14 0E-9 0E-9 0E-9 15 0E-9 0E-9 0E-9 @@ -1796,10 +1796,10 @@ 18 0E-9 0E-9 0E-9 19 0E-9 0E-9 0E-9 20 275.741000000 0.003626592 1.000000000 -21 389.955000000 0.002564398 1.000000000 +21 389.955300000 0.002564396 1.000000000 22 551.479000000 0.001813306 1.000000000 -23 779.908000000 0.001282203 1.000000000 -24 1102.957000000 0.000906654 1.000000000 +23 779.908400000 0.001282202 1.000000000 +24 1102.956500000 0.000906654 1.000000000 -- !sql_test_Boolean_DecimalV2_2 -- \N \N @@ -2402,7 +2402,7 @@ 14 218.094 -218.094 15 308.359 -308.359 16 436.033 -436.033 -17 616.608 -616.608 +17 616.6079999999999 -616.6079999999999 18 871.989 -871.989 19 1233.161 -1233.161 20 1744.94 -1742.94 @@ -2428,7 +2428,7 @@ 14 218.094 -218.094 15 308.359 -308.359 16 436.033 -436.033 -17 616.608 -616.608 +17 616.6079999999999 -616.6079999999999 18 871.989 -871.989 19 1233.161 -1233.161 20 1744.94 -1742.94 @@ -2451,18 +2451,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 1743.94 5.734142229663864E-4 1.0 -21 2466.294 4.0546666374730673E-4 1.0 -22 3487.86 2.8670875551197584E-4 1.0 -23 4932.574 2.0273390728654046E-4 1.0 -24 6975.71 1.4335458326105872E-4 1.0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 1743.94 0.0005734142229663864 1 +21 2466.294 0.0004054666637473067 1 +22 3487.86 0.0002867087555119758 1 +23 4932.574 0.0002027339072865405 1 +24 6975.71 0.0001433545832610587 1 -- !sql_test_Boolean_Char_notn_1 -- 1 \N \N \N @@ -2477,18 +2477,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 1743.94 5.734142229663864E-4 1.0 -21 2466.294 4.0546666374730673E-4 1.0 -22 3487.86 2.8670875551197584E-4 1.0 -23 4932.574 2.0273390728654046E-4 1.0 -24 6975.71 1.4335458326105872E-4 1.0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 1743.94 0.0005734142229663864 1 +21 2466.294 0.0004054666637473067 1 +22 3487.86 0.0002867087555119758 1 +23 4932.574 0.0002027339072865405 1 +24 6975.71 0.0001433545832610587 1 -- !sql_test_Boolean_Char_3 -- \N \N \N \N @@ -2610,18 +2610,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 26211.654 3.815096903079829E-5 1.0 -21 37068.731 2.697691485581203E-5 1.0 -22 52422.999 1.907559695316172E-5 1.0 -23 74137.243 1.3488497272551665E-5 1.0 -24 104845.843 9.537812576889673E-6 1.0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 26211.654 3.815096903079829e-05 1 +21 37068.731 2.697691485581203e-05 1 +22 52422.999 1.907559695316172e-05 1 +23 74137.243 1.348849727255166e-05 1 +24 104845.843 9.537812576889673e-06 1 -- !sql_test_Boolean_Varchar_notn_1 -- 1 \N \N \N @@ -2636,18 +2636,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 26211.654 3.815096903079829E-5 1.0 -21 37068.731 2.697691485581203E-5 1.0 -22 52422.999 1.907559695316172E-5 1.0 -23 74137.243 1.3488497272551665E-5 1.0 -24 104845.843 9.537812576889673E-6 1.0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 26211.654 3.815096903079829e-05 1 +21 37068.731 2.697691485581203e-05 1 +22 52422.999 1.907559695316172e-05 1 +23 74137.243 1.348849727255166e-05 1 +24 104845.843 9.537812576889673e-06 1 -- !sql_test_Boolean_Varchar_3 -- \N \N \N \N @@ -2722,7 +2722,7 @@ 16 29966.255 -29966.255 17 42376.012 -42376.012 18 59926.842 -59926.842 -19 84748.017 -84748.017 +19 84748.01700000001 -84748.01700000001 20 119851.851 -119849.851 21 169495.031 -169493.031 22 239701.285 -239699.285 @@ -2748,7 +2748,7 @@ 16 29966.255 -29966.255 17 42376.012 -42376.012 18 59926.842 -59926.842 -19 84748.017 -84748.017 +19 84748.01700000001 -84748.01700000001 20 119851.851 -119849.851 21 169495.031 -169493.031 22 239701.285 -239699.285 @@ -2769,18 +2769,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 119850.851 8.343703792307657E-6 1.0 -21 169494.031 5.899912782179333E-6 1.0 -22 239700.285 4.17187655826108E-6 1.0 -23 338987.059 2.949965119464929E-6 1.0 -24 479399.861 2.0859413640923024E-6 1.0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 119850.851 8.343703792307657e-06 1 +21 169494.031 5.899912782179333e-06 1 +22 239700.285 4.17187655826108e-06 1 +23 338987.059 2.949965119464929e-06 1 +24 479399.861 2.085941364092302e-06 1 -- !sql_test_Boolean_String_notn_1 -- 1 \N \N \N @@ -2795,18 +2795,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 0.0 0.0 -14 0.0 0.0 0.0 -15 0.0 0.0 0.0 -16 0.0 0.0 0.0 -17 0.0 0.0 0.0 -18 0.0 0.0 0.0 -19 0.0 0.0 0.0 -20 119850.851 8.343703792307657E-6 1.0 -21 169494.031 5.899912782179333E-6 1.0 -22 239700.285 4.17187655826108E-6 1.0 -23 338987.059 2.949965119464929E-6 1.0 -24 479399.861 2.0859413640923024E-6 1.0 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 119850.851 8.343703792307657e-06 1 +21 169494.031 5.899912782179333e-06 1 +22 239700.285 4.17187655826108e-06 1 +23 338987.059 2.949965119464929e-06 1 +24 479399.861 2.085941364092302e-06 1 -- !sql_test_Boolean_String_3 -- \N \N \N \N @@ -2916,56 +2916,56 @@ -- !sql_test_Boolean_Date_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308 4.970102843356076E-8 1 -9 20120309 4.9701025963368655E-8 1 -10 20120310 4.9701023493176794E-8 1 -11 20120311 4.970102102298518E-8 1 -12 20120312 4.9701018552793814E-8 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308 4.970102843356076E-8 1 -21 20120309 4.9701025963368655E-8 1 -22 20120310 4.9701023493176794E-8 1 -23 20120311 4.970102102298518E-8 1 -24 20120312 4.9701018552793814E-8 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308 4.970102843356076e-08 1 +9 20120309 4.970102596336866e-08 1 +10 20120310 4.970102349317679e-08 1 +11 20120311 4.970102102298518e-08 1 +12 20120312 4.970101855279381e-08 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308 4.970102843356076e-08 1 +21 20120309 4.970102596336866e-08 1 +22 20120310 4.970102349317679e-08 1 +23 20120311 4.970102102298518e-08 1 +24 20120312 4.970101855279381e-08 1 -- !sql_test_Boolean_Date_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308 4.970102843356076E-8 1 -9 20120309 4.9701025963368655E-8 1 -10 20120310 4.9701023493176794E-8 1 -11 20120311 4.970102102298518E-8 1 -12 20120312 4.9701018552793814E-8 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308 4.970102843356076E-8 1 -21 20120309 4.9701025963368655E-8 1 -22 20120310 4.9701023493176794E-8 1 -23 20120311 4.970102102298518E-8 1 -24 20120312 4.9701018552793814E-8 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308 4.970102843356076e-08 1 +9 20120309 4.970102596336866e-08 1 +10 20120310 4.970102349317679e-08 1 +11 20120311 4.970102102298518e-08 1 +12 20120312 4.970101855279381e-08 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308 4.970102843356076e-08 1 +21 20120309 4.970102596336866e-08 1 +22 20120310 4.970102349317679e-08 1 +23 20120311 4.970102102298518e-08 1 +24 20120312 4.970101855279381e-08 1 -- !sql_test_Boolean_Date_2 -- \N \N @@ -3181,56 +3181,56 @@ -- !sql_test_Boolean_DateTime_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308080708 4.9701028234196486E-14 1 -9 20120309090809 4.970102573905299E-14 1 -10 20120310100910 4.970102324390975E-14 1 -11 20120311111011 4.970102074876676E-14 1 -12 20120312121112 4.970101825362401E-14 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308080708 4.9701028234196486E-14 1 -21 20120309090809 4.970102573905299E-14 1 -22 20120310100910 4.970102324390975E-14 1 -23 20120311111011 4.970102074876676E-14 1 -24 20120312121112 4.970101825362401E-14 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308080708 4.970102823419649e-14 1 +9 20120309090809 4.970102573905299e-14 1 +10 20120310100910 4.970102324390975e-14 1 +11 20120311111011 4.970102074876676e-14 1 +12 20120312121112 4.970101825362401e-14 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308080708 4.970102823419649e-14 1 +21 20120309090809 4.970102573905299e-14 1 +22 20120310100910 4.970102324390975e-14 1 +23 20120311111011 4.970102074876676e-14 1 +24 20120312121112 4.970101825362401e-14 1 -- !sql_test_Boolean_DateTime_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308080708 4.9701028234196486E-14 1 -9 20120309090809 4.970102573905299E-14 1 -10 20120310100910 4.970102324390975E-14 1 -11 20120311111011 4.970102074876676E-14 1 -12 20120312121112 4.970101825362401E-14 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308080708 4.9701028234196486E-14 1 -21 20120309090809 4.970102573905299E-14 1 -22 20120310100910 4.970102324390975E-14 1 -23 20120311111011 4.970102074876676E-14 1 -24 20120312121112 4.970101825362401E-14 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308080708 4.970102823419649e-14 1 +9 20120309090809 4.970102573905299e-14 1 +10 20120310100910 4.970102324390975e-14 1 +11 20120311111011 4.970102074876676e-14 1 +12 20120312121112 4.970101825362401e-14 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308080708 4.970102823419649e-14 1 +21 20120309090809 4.970102573905299e-14 1 +22 20120310100910 4.970102324390975e-14 1 +23 20120311111011 4.970102074876676e-14 1 +24 20120312121112 4.970101825362401e-14 1 -- !sql_test_Boolean_DateTime_2 -- \N \N @@ -3446,56 +3446,56 @@ -- !sql_test_Boolean_DateV2_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308 4.970102843356076E-8 1 -9 20120309 4.9701025963368655E-8 1 -10 20120310 4.9701023493176794E-8 1 -11 20120311 4.970102102298518E-8 1 -12 20120312 4.9701018552793814E-8 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308 4.970102843356076E-8 1 -21 20120309 4.9701025963368655E-8 1 -22 20120310 4.9701023493176794E-8 1 -23 20120311 4.970102102298518E-8 1 -24 20120312 4.9701018552793814E-8 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308 4.970102843356076e-08 1 +9 20120309 4.970102596336866e-08 1 +10 20120310 4.970102349317679e-08 1 +11 20120311 4.970102102298518e-08 1 +12 20120312 4.970101855279381e-08 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308 4.970102843356076e-08 1 +21 20120309 4.970102596336866e-08 1 +22 20120310 4.970102349317679e-08 1 +23 20120311 4.970102102298518e-08 1 +24 20120312 4.970101855279381e-08 1 -- !sql_test_Boolean_DateV2_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308 4.970102843356076E-8 1 -9 20120309 4.9701025963368655E-8 1 -10 20120310 4.9701023493176794E-8 1 -11 20120311 4.970102102298518E-8 1 -12 20120312 4.9701018552793814E-8 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308 4.970102843356076E-8 1 -21 20120309 4.9701025963368655E-8 1 -22 20120310 4.9701023493176794E-8 1 -23 20120311 4.970102102298518E-8 1 -24 20120312 4.9701018552793814E-8 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308 4.970102843356076e-08 1 +9 20120309 4.970102596336866e-08 1 +10 20120310 4.970102349317679e-08 1 +11 20120311 4.970102102298518e-08 1 +12 20120312 4.970101855279381e-08 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308 4.970102843356076e-08 1 +21 20120309 4.970102596336866e-08 1 +22 20120310 4.970102349317679e-08 1 +23 20120311 4.970102102298518e-08 1 +24 20120312 4.970101855279381e-08 1 -- !sql_test_Boolean_DateV2_2 -- \N \N @@ -3711,56 +3711,56 @@ -- !sql_test_Boolean_DateTimeV2_1 -- \N \N \N \N -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308080708 4.9701028234196486E-14 1 -9 20120309090809 4.970102573905299E-14 1 -10 20120310100910 4.970102324390975E-14 1 -11 20120311111011 4.970102074876676E-14 1 -12 20120312121112 4.970101825362401E-14 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308080708 4.9701028234196486E-14 1 -21 20120309090809 4.970102573905299E-14 1 -22 20120310100910 4.970102324390975E-14 1 -23 20120311111011 4.970102074876676E-14 1 -24 20120312121112 4.970101825362401E-14 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308080708 4.970102823419649e-14 1 +9 20120309090809 4.970102573905299e-14 1 +10 20120310100910 4.970102324390975e-14 1 +11 20120311111011 4.970102074876676e-14 1 +12 20120312121112 4.970101825362401e-14 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308080708 4.970102823419649e-14 1 +21 20120309090809 4.970102573905299e-14 1 +22 20120310100910 4.970102324390975e-14 1 +23 20120311111011 4.970102074876676e-14 1 +24 20120312121112 4.970101825362401e-14 1 -- !sql_test_Boolean_DateTimeV2_notn_1 -- -1 0 0.0 0 -2 0 0.0 0 -3 0 0.0 0 -4 0 0.0 0 -5 0 0.0 0 -6 0 0.0 0 -7 0 0.0 0 -8 20120308080708 4.9701028234196486E-14 1 -9 20120309090809 4.970102573905299E-14 1 -10 20120310100910 4.970102324390975E-14 1 -11 20120311111011 4.970102074876676E-14 1 -12 20120312121112 4.970101825362401E-14 1 -13 0 0.0 0 -14 0 0.0 0 -15 0 0.0 0 -16 0 0.0 0 -17 0 0.0 0 -18 0 0.0 0 -19 0 0.0 0 -20 20120308080708 4.9701028234196486E-14 1 -21 20120309090809 4.970102573905299E-14 1 -22 20120310100910 4.970102324390975E-14 1 -23 20120311111011 4.970102074876676E-14 1 -24 20120312121112 4.970101825362401E-14 1 +1 0 0 0 +2 0 0 0 +3 0 0 0 +4 0 0 0 +5 0 0 0 +6 0 0 0 +7 0 0 0 +8 20120308080708 4.970102823419649e-14 1 +9 20120309090809 4.970102573905299e-14 1 +10 20120310100910 4.970102324390975e-14 1 +11 20120311111011 4.970102074876676e-14 1 +12 20120312121112 4.970101825362401e-14 1 +13 0 0 0 +14 0 0 0 +15 0 0 0 +16 0 0 0 +17 0 0 0 +18 0 0 0 +19 0 0 0 +20 20120308080708 4.970102823419649e-14 1 +21 20120309090809 4.970102573905299e-14 1 +22 20120310100910 4.970102324390975e-14 1 +23 20120311111011 4.970102074876676e-14 1 +24 20120312121112 4.970101825362401e-14 1 -- !sql_test_Boolean_DateTimeV2_2 -- \N \N @@ -3983,11 +3983,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 1 1.0 0 -9 1 1.0 0 -10 1 1.0 0 -11 1 1.0 0 -12 1 1.0 0 +8 1 1 0 +9 1 1 0 +10 1 1 0 +11 1 1 0 +12 1 1 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -3995,11 +3995,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 1 1.0 0 -21 1 1.0 0 -22 1 1.0 0 -23 1 1.0 0 -24 1 1.0 0 +20 1 1 0 +21 1 1 0 +22 1 1 0 +23 1 1 0 +24 1 1 0 -- !sql_test_Boolean_Boolean_notn_1 -- 1 0 \N \N @@ -4009,11 +4009,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 1 1.0 0 -9 1 1.0 0 -10 1 1.0 0 -11 1 1.0 0 -12 1 1.0 0 +8 1 1 0 +9 1 1 0 +10 1 1 0 +11 1 1 0 +12 1 1 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -4021,11 +4021,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 1 1.0 0 -21 1 1.0 0 -22 1 1.0 0 -23 1 1.0 0 -24 1 1.0 0 +20 1 1 0 +21 1 1 0 +22 1 1 0 +23 1 1 0 +24 1 1 0 -- !sql_test_Boolean_Boolean_2 -- \N \N @@ -4241,56 +4241,56 @@ -- !sql_test_TinyInt_TinyInt_1 -- \N \N \N \N -1 1 1.0 0 -2 4 1.0 0 -3 9 1.0 0 -4 16 1.0 0 -5 25 1.0 0 -6 36 1.0 0 -7 49 1.0 0 -8 64 1.0 0 -9 81 1.0 0 -10 100 1.0 0 -11 121 1.0 0 -12 144 1.0 0 -13 1 1.0 0 -14 4 1.0 0 -15 9 1.0 0 -16 16 1.0 0 -17 25 1.0 0 -18 36 1.0 0 -19 49 1.0 0 -20 64 1.0 0 -21 81 1.0 0 -22 100 1.0 0 -23 121 1.0 0 -24 144 1.0 0 +1 1 1 0 +2 4 1 0 +3 9 1 0 +4 16 1 0 +5 25 1 0 +6 36 1 0 +7 49 1 0 +8 64 1 0 +9 81 1 0 +10 100 1 0 +11 121 1 0 +12 144 1 0 +13 1 1 0 +14 4 1 0 +15 9 1 0 +16 16 1 0 +17 25 1 0 +18 36 1 0 +19 49 1 0 +20 64 1 0 +21 81 1 0 +22 100 1 0 +23 121 1 0 +24 144 1 0 -- !sql_test_TinyInt_TinyInt_notn_1 -- -1 1 1.0 0 -2 4 1.0 0 -3 9 1.0 0 -4 16 1.0 0 -5 25 1.0 0 -6 36 1.0 0 -7 49 1.0 0 -8 64 1.0 0 -9 81 1.0 0 -10 100 1.0 0 -11 121 1.0 0 -12 144 1.0 0 -13 1 1.0 0 -14 4 1.0 0 -15 9 1.0 0 -16 16 1.0 0 -17 25 1.0 0 -18 36 1.0 0 -19 49 1.0 0 -20 64 1.0 0 -21 81 1.0 0 -22 100 1.0 0 -23 121 1.0 0 -24 144 1.0 0 +1 1 1 0 +2 4 1 0 +3 9 1 0 +4 16 1 0 +5 25 1 0 +6 36 1 0 +7 49 1 0 +8 64 1 0 +9 81 1 0 +10 100 1 0 +11 121 1 0 +12 144 1 0 +13 1 1 0 +14 4 1 0 +15 9 1 0 +16 16 1 0 +17 25 1 0 +18 36 1 0 +19 49 1 0 +20 64 1 0 +21 81 1 0 +22 100 1 0 +23 121 1 0 +24 144 1 0 -- !sql_test_TinyInt_TinyInt_2 -- \N \N @@ -4517,7 +4517,7 @@ 9 23040 0.003515625 9 10 51200 0.001953125 10 11 112640 0.00107421875 11 -12 245760 5.859375E-4 12 +12 245760 0.0005859375 12 13 10 0.1 1 14 40 0.1 2 15 120 0.075 3 @@ -4529,7 +4529,7 @@ 21 23040 0.003515625 9 22 51200 0.001953125 10 23 112640 0.00107421875 11 -24 245760 5.859375E-4 12 +24 245760 0.0005859375 12 -- !sql_test_TinyInt_SmallInt_notn_1 -- 1 10 0.1 1 @@ -4543,7 +4543,7 @@ 9 23040 0.003515625 9 10 51200 0.001953125 10 11 112640 0.00107421875 11 -12 245760 5.859375E-4 12 +12 245760 0.0005859375 12 13 10 0.1 1 14 40 0.1 2 15 120 0.075 3 @@ -4555,7 +4555,7 @@ 21 23040 0.003515625 9 22 51200 0.001953125 10 23 112640 0.00107421875 11 -24 245760 5.859375E-4 12 +24 245760 0.0005859375 12 -- !sql_test_TinyInt_SmallInt_3 -- \N \N \N \N @@ -4718,56 +4718,56 @@ -- !sql_test_TinyInt_Integer_1 -- \N \N \N \N -1 23795 4.202563563773902E-5 1 -2 95090 4.206541171521716E-5 2 -3 285135 3.156399600189384E-5 3 -4 760180 2.1047646610013417E-5 4 -5 1900225 1.3156336749595442E-5 5 -6 4560270 7.894269418258129E-6 6 -7 10640315 4.605126821903299E-6 7 -8 24320360 2.6315399936514097E-6 8 -9 54720405 1.4802522020807412E-6 9 -10 121600450 8.22365377759704E-7 10 -11 267520495 4.5230179467184376E-7 11 -12 583680540 2.467102980681864E-7 12 -13 23795 4.202563563773902E-5 1 -14 95090 4.206541171521716E-5 2 -15 285135 3.156399600189384E-5 3 -16 760180 2.1047646610013417E-5 4 -17 1900225 1.3156336749595442E-5 5 -18 4560270 7.894269418258129E-6 6 -19 10640315 4.605126821903299E-6 7 -20 24320360 2.6315399936514097E-6 8 -21 54720405 1.4802522020807412E-6 9 -22 121600450 8.22365377759704E-7 10 -23 267520495 4.5230179467184376E-7 11 -24 583680540 2.467102980681864E-7 12 +1 23795 4.202563563773902e-05 1 +2 95090 4.206541171521716e-05 2 +3 285135 3.156399600189384e-05 3 +4 760180 2.104764661001342e-05 4 +5 1900225 1.315633674959544e-05 5 +6 4560270 7.894269418258129e-06 6 +7 10640315 4.605126821903299e-06 7 +8 24320360 2.63153999365141e-06 8 +9 54720405 1.480252202080741e-06 9 +10 121600450 8.22365377759704e-07 10 +11 267520495 4.523017946718438e-07 11 +12 583680540 2.467102980681864e-07 12 +13 23795 4.202563563773902e-05 1 +14 95090 4.206541171521716e-05 2 +15 285135 3.156399600189384e-05 3 +16 760180 2.104764661001342e-05 4 +17 1900225 1.315633674959544e-05 5 +18 4560270 7.894269418258129e-06 6 +19 10640315 4.605126821903299e-06 7 +20 24320360 2.63153999365141e-06 8 +21 54720405 1.480252202080741e-06 9 +22 121600450 8.22365377759704e-07 10 +23 267520495 4.523017946718438e-07 11 +24 583680540 2.467102980681864e-07 12 -- !sql_test_TinyInt_Integer_notn_1 -- -1 23795 4.202563563773902E-5 1 -2 95090 4.206541171521716E-5 2 -3 285135 3.156399600189384E-5 3 -4 760180 2.1047646610013417E-5 4 -5 1900225 1.3156336749595442E-5 5 -6 4560270 7.894269418258129E-6 6 -7 10640315 4.605126821903299E-6 7 -8 24320360 2.6315399936514097E-6 8 -9 54720405 1.4802522020807412E-6 9 -10 121600450 8.22365377759704E-7 10 -11 267520495 4.5230179467184376E-7 11 -12 583680540 2.467102980681864E-7 12 -13 23795 4.202563563773902E-5 1 -14 95090 4.206541171521716E-5 2 -15 285135 3.156399600189384E-5 3 -16 760180 2.1047646610013417E-5 4 -17 1900225 1.3156336749595442E-5 5 -18 4560270 7.894269418258129E-6 6 -19 10640315 4.605126821903299E-6 7 -20 24320360 2.6315399936514097E-6 8 -21 54720405 1.4802522020807412E-6 9 -22 121600450 8.22365377759704E-7 10 -23 267520495 4.5230179467184376E-7 11 -24 583680540 2.467102980681864E-7 12 +1 23795 4.202563563773902e-05 1 +2 95090 4.206541171521716e-05 2 +3 285135 3.156399600189384e-05 3 +4 760180 2.104764661001342e-05 4 +5 1900225 1.315633674959544e-05 5 +6 4560270 7.894269418258129e-06 6 +7 10640315 4.605126821903299e-06 7 +8 24320360 2.63153999365141e-06 8 +9 54720405 1.480252202080741e-06 9 +10 121600450 8.22365377759704e-07 10 +11 267520495 4.523017946718438e-07 11 +12 583680540 2.467102980681864e-07 12 +13 23795 4.202563563773902e-05 1 +14 95090 4.206541171521716e-05 2 +15 285135 3.156399600189384e-05 3 +16 760180 2.104764661001342e-05 4 +17 1900225 1.315633674959544e-05 5 +18 4560270 7.894269418258129e-06 6 +19 10640315 4.605126821903299e-06 7 +20 24320360 2.63153999365141e-06 8 +21 54720405 1.480252202080741e-06 9 +22 121600450 8.22365377759704e-07 10 +23 267520495 4.523017946718438e-07 11 +24 583680540 2.467102980681864e-07 12 -- !sql_test_TinyInt_Integer_3 -- \N \N \N \N @@ -4930,56 +4930,56 @@ -- !sql_test_TinyInt_BigInt_1 -- \N \N \N \N -1 5354529 1.8675778952733284E-7 1 -2 21396558 1.8694595644776137E-7 2 -3 64157337 1.4028013662724187E-7 3 -4 171043116 9.354366532938981E-8 4 -5 427553895 5.8472160568201586E-8 5 -6 1026064674 3.508550768019132E-8 6 -7 2394075453 2.046719118171419E-8 7 -8 5472086232 1.1695722122531055E-8 8 -9 12312097011 6.578895530763943E-9 9 -10 27360107790 3.6549563608279924E-9 10 -11 60192118569 2.010229958284225E-9 11 -12 131328129348 1.0964901481115399E-9 12 -13 5354529 1.8675778952733284E-7 1 -14 21396558 1.8694595644776137E-7 2 -15 64157337 1.4028013662724187E-7 3 -16 171043116 9.354366532938981E-8 4 -17 427553895 5.8472160568201586E-8 5 -18 1026064674 3.508550768019132E-8 6 -19 2394075453 2.046719118171419E-8 7 -20 5472086232 1.1695722122531055E-8 8 -21 12312097011 6.578895530763943E-9 9 -22 27360107790 3.6549563608279924E-9 10 -23 60192118569 2.010229958284225E-9 11 -24 131328129348 1.0964901481115399E-9 12 +1 5354529 1.867577895273328e-07 1 +2 21396558 1.869459564477614e-07 2 +3 64157337 1.402801366272419e-07 3 +4 171043116 9.354366532938981e-08 4 +5 427553895 5.847216056820159e-08 5 +6 1026064674 3.508550768019132e-08 6 +7 2394075453 2.046719118171419e-08 7 +8 5472086232 1.169572212253105e-08 8 +9 12312097011 6.578895530763943e-09 9 +10 27360107790 3.654956360827992e-09 10 +11 60192118569 2.010229958284225e-09 11 +12 131328129348 1.09649014811154e-09 12 +13 5354529 1.867577895273328e-07 1 +14 21396558 1.869459564477614e-07 2 +15 64157337 1.402801366272419e-07 3 +16 171043116 9.354366532938981e-08 4 +17 427553895 5.847216056820159e-08 5 +18 1026064674 3.508550768019132e-08 6 +19 2394075453 2.046719118171419e-08 7 +20 5472086232 1.169572212253105e-08 8 +21 12312097011 6.578895530763943e-09 9 +22 27360107790 3.654956360827992e-09 10 +23 60192118569 2.010229958284225e-09 11 +24 131328129348 1.09649014811154e-09 12 -- !sql_test_TinyInt_BigInt_notn_1 -- -1 5354529 1.8675778952733284E-7 1 -2 21396558 1.8694595644776137E-7 2 -3 64157337 1.4028013662724187E-7 3 -4 171043116 9.354366532938981E-8 4 -5 427553895 5.8472160568201586E-8 5 -6 1026064674 3.508550768019132E-8 6 -7 2394075453 2.046719118171419E-8 7 -8 5472086232 1.1695722122531055E-8 8 -9 12312097011 6.578895530763943E-9 9 -10 27360107790 3.6549563608279924E-9 10 -11 60192118569 2.010229958284225E-9 11 -12 131328129348 1.0964901481115399E-9 12 -13 5354529 1.8675778952733284E-7 1 -14 21396558 1.8694595644776137E-7 2 -15 64157337 1.4028013662724187E-7 3 -16 171043116 9.354366532938981E-8 4 -17 427553895 5.8472160568201586E-8 5 -18 1026064674 3.508550768019132E-8 6 -19 2394075453 2.046719118171419E-8 7 -20 5472086232 1.1695722122531055E-8 8 -21 12312097011 6.578895530763943E-9 9 -22 27360107790 3.6549563608279924E-9 10 -23 60192118569 2.010229958284225E-9 11 -24 131328129348 1.0964901481115399E-9 12 +1 5354529 1.867577895273328e-07 1 +2 21396558 1.869459564477614e-07 2 +3 64157337 1.402801366272419e-07 3 +4 171043116 9.354366532938981e-08 4 +5 427553895 5.847216056820159e-08 5 +6 1026064674 3.508550768019132e-08 6 +7 2394075453 2.046719118171419e-08 7 +8 5472086232 1.169572212253105e-08 8 +9 12312097011 6.578895530763943e-09 9 +10 27360107790 3.654956360827992e-09 10 +11 60192118569 2.010229958284225e-09 11 +12 131328129348 1.09649014811154e-09 12 +13 5354529 1.867577895273328e-07 1 +14 21396558 1.869459564477614e-07 2 +15 64157337 1.402801366272419e-07 3 +16 171043116 9.354366532938981e-08 4 +17 427553895 5.847216056820159e-08 5 +18 1026064674 3.508550768019132e-08 6 +19 2394075453 2.046719118171419e-08 7 +20 5472086232 1.169572212253105e-08 8 +21 12312097011 6.578895530763943e-09 9 +22 27360107790 3.654956360827992e-09 10 +23 60192118569 2.010229958284225e-09 11 +24 131328129348 1.09649014811154e-09 12 -- !sql_test_TinyInt_BigInt_3 -- \N \N \N \N @@ -5142,56 +5142,56 @@ -- !sql_test_TinyInt_LargeInt_1 -- \N \N \N \N -1 107090645 9.33788380861839E-9 1 -2 427931290 9.347294982799691E-9 2 -3 1283146935 7.0140057654425994E-9 3 -4 3420862580 4.6771829109838136E-9 4 -5 8551078225 2.9236079172927928E-9 5 -6 20521293870 1.7542753506701768E-9 6 -7 47881509515 1.023359549361108E-9 7 -8 109441725160 5.847861033480075E-10 8 -9 246241940805 3.28944775756719E-10 9 -10 547202156450 1.8274781782432062E-10 10 -11 1203842372095 1.0051149785451431E-10 11 -12 2626562587740 5.482450738929598E-11 12 -13 107090645 9.33788380861839E-9 1 -14 427931290 9.347294982799691E-9 2 -15 1283146935 7.0140057654425994E-9 3 -16 3420862580 4.6771829109838136E-9 4 -17 8551078225 2.9236079172927928E-9 5 -18 20521293870 1.7542753506701768E-9 6 -19 47881509515 1.023359549361108E-9 7 -20 109441725160 5.847861033480075E-10 8 -21 246241940805 3.28944775756719E-10 9 -22 547202156450 1.8274781782432062E-10 10 -23 1203842372095 1.0051149785451431E-10 11 -24 2626562587740 5.482450738929598E-11 12 +1 107090645 9.33788380861839e-09 1 +2 427931290 9.347294982799691e-09 2 +3 1283146935 7.014005765442599e-09 3 +4 3420862580 4.677182910983814e-09 4 +5 8551078225 2.923607917292793e-09 5 +6 20521293870 1.754275350670177e-09 6 +7 47881509515 1.023359549361108e-09 7 +8 109441725160 5.847861033480075e-10 8 +9 246241940805 3.28944775756719e-10 9 +10 547202156450 1.827478178243206e-10 10 +11 1203842372095 1.005114978545143e-10 11 +12 2626562587740 5.482450738929598e-11 12 +13 107090645 9.33788380861839e-09 1 +14 427931290 9.347294982799691e-09 2 +15 1283146935 7.014005765442599e-09 3 +16 3420862580 4.677182910983814e-09 4 +17 8551078225 2.923607917292793e-09 5 +18 20521293870 1.754275350670177e-09 6 +19 47881509515 1.023359549361108e-09 7 +20 109441725160 5.847861033480075e-10 8 +21 246241940805 3.28944775756719e-10 9 +22 547202156450 1.827478178243206e-10 10 +23 1203842372095 1.005114978545143e-10 11 +24 2626562587740 5.482450738929598e-11 12 -- !sql_test_TinyInt_LargeInt_notn_1 -- -1 107090645 9.33788380861839E-9 1 -2 427931290 9.347294982799691E-9 2 -3 1283146935 7.0140057654425994E-9 3 -4 3420862580 4.6771829109838136E-9 4 -5 8551078225 2.9236079172927928E-9 5 -6 20521293870 1.7542753506701768E-9 6 -7 47881509515 1.023359549361108E-9 7 -8 109441725160 5.847861033480075E-10 8 -9 246241940805 3.28944775756719E-10 9 -10 547202156450 1.8274781782432062E-10 10 -11 1203842372095 1.0051149785451431E-10 11 -12 2626562587740 5.482450738929598E-11 12 -13 107090645 9.33788380861839E-9 1 -14 427931290 9.347294982799691E-9 2 -15 1283146935 7.0140057654425994E-9 3 -16 3420862580 4.6771829109838136E-9 4 -17 8551078225 2.9236079172927928E-9 5 -18 20521293870 1.7542753506701768E-9 6 -19 47881509515 1.023359549361108E-9 7 -20 109441725160 5.847861033480075E-10 8 -21 246241940805 3.28944775756719E-10 9 -22 547202156450 1.8274781782432062E-10 10 -23 1203842372095 1.0051149785451431E-10 11 -24 2626562587740 5.482450738929598E-11 12 +1 107090645 9.33788380861839e-09 1 +2 427931290 9.347294982799691e-09 2 +3 1283146935 7.014005765442599e-09 3 +4 3420862580 4.677182910983814e-09 4 +5 8551078225 2.923607917292793e-09 5 +6 20521293870 1.754275350670177e-09 6 +7 47881509515 1.023359549361108e-09 7 +8 109441725160 5.847861033480075e-10 8 +9 246241940805 3.28944775756719e-10 9 +10 547202156450 1.827478178243206e-10 10 +11 1203842372095 1.005114978545143e-10 11 +12 2626562587740 5.482450738929598e-11 12 +13 107090645 9.33788380861839e-09 1 +14 427931290 9.347294982799691e-09 2 +15 1283146935 7.014005765442599e-09 3 +16 3420862580 4.677182910983814e-09 4 +17 8551078225 2.923607917292793e-09 5 +18 20521293870 1.754275350670177e-09 6 +19 47881509515 1.023359549361108e-09 7 +20 109441725160 5.847861033480075e-10 8 +21 246241940805 3.28944775756719e-10 9 +22 547202156450 1.827478178243206e-10 10 +23 1203842372095 1.005114978545143e-10 11 +24 2626562587740 5.482450738929598e-11 12 -- !sql_test_TinyInt_LargeInt_3 -- \N \N \N \N @@ -5301,109 +5301,109 @@ -- !sql_test_TinyInt_Float_0 -- \N \N \N -1 1.1000000014901161 0.8999999985098839 -2 2.2000000029802322 1.7999999970197678 +1 1.100000001490116 0.8999999985098839 +2 2.200000002980232 1.799999997019768 3 3.300000011920929 2.699999988079071 -4 4.4000000059604645 3.5999999940395355 +4 4.400000005960464 3.599999994039536 5 5.5 4.5 6 6.600000023841858 5.399999976158142 7 7.699999988079071 6.300000011920929 8 8.800000011920929 7.199999988079071 9 9.899999976158142 8.100000023841858 -10 11.0 9.0 -11 12.100000023841858 9.899999976158142 -12 13.200000047683716 10.799999952316284 -13 1.1000000014901161 0.8999999985098839 -14 2.2000000029802322 1.7999999970197678 +10 11 9 +11 12.10000002384186 9.899999976158142 +12 13.20000004768372 10.79999995231628 +13 1.100000001490116 0.8999999985098839 +14 2.200000002980232 1.799999997019768 15 3.300000011920929 2.699999988079071 -16 4.4000000059604645 3.5999999940395355 +16 4.400000005960464 3.599999994039536 17 5.5 4.5 18 6.600000023841858 5.399999976158142 19 7.699999988079071 6.300000011920929 20 8.800000011920929 7.199999988079071 21 9.899999976158142 8.100000023841858 -22 11.0 9.0 -23 12.100000023841858 9.899999976158142 -24 13.200000047683716 10.799999952316284 +22 11 9 +23 12.10000002384186 9.899999976158142 +24 13.20000004768372 10.79999995231628 -- !sql_test_TinyInt_Float_notn_0 -- -1 1.1000000014901161 0.8999999985098839 -2 2.2000000029802322 1.7999999970197678 +1 1.100000001490116 0.8999999985098839 +2 2.200000002980232 1.799999997019768 3 3.300000011920929 2.699999988079071 -4 4.4000000059604645 3.5999999940395355 +4 4.400000005960464 3.599999994039536 5 5.5 4.5 6 6.600000023841858 5.399999976158142 7 7.699999988079071 6.300000011920929 8 8.800000011920929 7.199999988079071 9 9.899999976158142 8.100000023841858 -10 11.0 9.0 -11 12.100000023841858 9.899999976158142 -12 13.200000047683716 10.799999952316284 -13 1.1000000014901161 0.8999999985098839 -14 2.2000000029802322 1.7999999970197678 +10 11 9 +11 12.10000002384186 9.899999976158142 +12 13.20000004768372 10.79999995231628 +13 1.100000001490116 0.8999999985098839 +14 2.200000002980232 1.799999997019768 15 3.300000011920929 2.699999988079071 -16 4.4000000059604645 3.5999999940395355 +16 4.400000005960464 3.599999994039536 17 5.5 4.5 18 6.600000023841858 5.399999976158142 19 7.699999988079071 6.300000011920929 20 8.800000011920929 7.199999988079071 21 9.899999976158142 8.100000023841858 -22 11.0 9.0 -23 12.100000023841858 9.899999976158142 -24 13.200000047683716 10.799999952316284 +22 11 9 +23 12.10000002384186 9.899999976158142 +24 13.20000004768372 10.79999995231628 -- !sql_test_TinyInt_Float_1 -- \N \N \N \N -1 0.10000000149011612 9.99999985098839 0.09999998658895493 -2 0.4000000059604645 9.99999985098839 0.19999997317790985 +1 0.1000000014901161 9.99999985098839 0.09999998658895493 +2 0.4000000059604645 9.99999985098839 0.1999999731779099 3 0.9000000357627869 9.999999602635718 0.2999998927116394 4 1.600000023841858 9.99999985098839 0.3999999463558197 -5 2.5 10.0 0.0 -6 3.6000001430511475 9.999999602635718 0.5999997854232788 -7 4.899999916553497 10.000000170298987 1.1920928955078125E-7 +5 2.5 10 0 +6 3.600000143051147 9.999999602635718 0.5999997854232788 +7 4.899999916553497 10.00000017029899 1.192092895507812e-07 8 6.400000095367432 9.99999985098839 0.7999998927116394 -9 8.099999785423279 10.00000026490954 2.384185791015625E-7 -10 10.0 10.0 0.0 -11 12.100000262260437 9.999999783255841 1.0999997854232788 -12 14.40000057220459 9.999999602635718 1.1999995708465576 -13 0.10000000149011612 9.99999985098839 0.09999998658895493 -14 0.4000000059604645 9.99999985098839 0.19999997317790985 +9 8.099999785423279 10.00000026490954 2.384185791015625e-07 +10 10 10 0 +11 12.10000026226044 9.999999783255841 1.099999785423279 +12 14.40000057220459 9.999999602635718 1.199999570846558 +13 0.1000000014901161 9.99999985098839 0.09999998658895493 +14 0.4000000059604645 9.99999985098839 0.1999999731779099 15 0.9000000357627869 9.999999602635718 0.2999998927116394 16 1.600000023841858 9.99999985098839 0.3999999463558197 -17 2.5 10.0 0.0 -18 3.6000001430511475 9.999999602635718 0.5999997854232788 -19 4.899999916553497 10.000000170298987 1.1920928955078125E-7 +17 2.5 10 0 +18 3.600000143051147 9.999999602635718 0.5999997854232788 +19 4.899999916553497 10.00000017029899 1.192092895507812e-07 20 6.400000095367432 9.99999985098839 0.7999998927116394 -21 8.099999785423279 10.00000026490954 2.384185791015625E-7 -22 10.0 10.0 0.0 -23 12.100000262260437 9.999999783255841 1.0999997854232788 -24 14.40000057220459 9.999999602635718 1.1999995708465576 +21 8.099999785423279 10.00000026490954 2.384185791015625e-07 +22 10 10 0 +23 12.10000026226044 9.999999783255841 1.099999785423279 +24 14.40000057220459 9.999999602635718 1.199999570846558 -- !sql_test_TinyInt_Float_notn_1 -- -1 0.10000000149011612 9.99999985098839 0.09999998658895493 -2 0.4000000059604645 9.99999985098839 0.19999997317790985 +1 0.1000000014901161 9.99999985098839 0.09999998658895493 +2 0.4000000059604645 9.99999985098839 0.1999999731779099 3 0.9000000357627869 9.999999602635718 0.2999998927116394 4 1.600000023841858 9.99999985098839 0.3999999463558197 -5 2.5 10.0 0.0 -6 3.6000001430511475 9.999999602635718 0.5999997854232788 -7 4.899999916553497 10.000000170298987 1.1920928955078125E-7 +5 2.5 10 0 +6 3.600000143051147 9.999999602635718 0.5999997854232788 +7 4.899999916553497 10.00000017029899 1.192092895507812e-07 8 6.400000095367432 9.99999985098839 0.7999998927116394 -9 8.099999785423279 10.00000026490954 2.384185791015625E-7 -10 10.0 10.0 0.0 -11 12.100000262260437 9.999999783255841 1.0999997854232788 -12 14.40000057220459 9.999999602635718 1.1999995708465576 -13 0.10000000149011612 9.99999985098839 0.09999998658895493 -14 0.4000000059604645 9.99999985098839 0.19999997317790985 +9 8.099999785423279 10.00000026490954 2.384185791015625e-07 +10 10 10 0 +11 12.10000026226044 9.999999783255841 1.099999785423279 +12 14.40000057220459 9.999999602635718 1.199999570846558 +13 0.1000000014901161 9.99999985098839 0.09999998658895493 +14 0.4000000059604645 9.99999985098839 0.1999999731779099 15 0.9000000357627869 9.999999602635718 0.2999998927116394 16 1.600000023841858 9.99999985098839 0.3999999463558197 -17 2.5 10.0 0.0 -18 3.6000001430511475 9.999999602635718 0.5999997854232788 -19 4.899999916553497 10.000000170298987 1.1920928955078125E-7 +17 2.5 10 0 +18 3.600000143051147 9.999999602635718 0.5999997854232788 +19 4.899999916553497 10.00000017029899 1.192092895507812e-07 20 6.400000095367432 9.99999985098839 0.7999998927116394 -21 8.099999785423279 10.00000026490954 2.384185791015625E-7 -22 10.0 10.0 0.0 -23 12.100000262260437 9.999999783255841 1.0999997854232788 -24 14.40000057220459 9.999999602635718 1.1999995708465576 +21 8.099999785423279 10.00000026490954 2.384185791015625e-07 +22 10 10 0 +23 12.10000026226044 9.999999783255841 1.099999785423279 +24 14.40000057220459 9.999999602635718 1.199999570846558 -- !sql_test_TinyInt_Float_3 -- \N \N \N \N @@ -5515,107 +5515,107 @@ \N \N \N 1 1.5244 0.4756 2 2.7416 1.2584 -3 4.0367999999999995 1.9632 +3 4.036799999999999 1.9632 4 5.4491 2.5509 5 7.031000000000001 2.969 6 8.854800000000001 3.1452 -7 11.021799999999999 2.9782 +7 11.0218 2.9782 8 13.6745 2.3255 9 17.0141 0.9859000000000009 -10 21.3248 -1.3247999999999998 +10 21.3248 -1.3248 11 27.0086 -5.008600000000001 12 34.634 -10.634 13 1.5244 0.4756 14 2.7416 1.2584 -15 4.0367999999999995 1.9632 +15 4.036799999999999 1.9632 16 5.4491 2.5509 17 7.031000000000001 2.969 18 8.854800000000001 3.1452 -19 11.021799999999999 2.9782 +19 11.0218 2.9782 20 13.6745 2.3255 21 17.0141 0.9859000000000009 -22 21.3248 -1.3247999999999998 +22 21.3248 -1.3248 23 27.0086 -5.008600000000001 24 34.634 -10.634 -- !sql_test_TinyInt_Double_notn_0 -- 1 1.5244 0.4756 2 2.7416 1.2584 -3 4.0367999999999995 1.9632 +3 4.036799999999999 1.9632 4 5.4491 2.5509 5 7.031000000000001 2.969 6 8.854800000000001 3.1452 -7 11.021799999999999 2.9782 +7 11.0218 2.9782 8 13.6745 2.3255 9 17.0141 0.9859000000000009 -10 21.3248 -1.3247999999999998 +10 21.3248 -1.3248 11 27.0086 -5.008600000000001 12 34.634 -10.634 13 1.5244 0.4756 14 2.7416 1.2584 -15 4.0367999999999995 1.9632 +15 4.036799999999999 1.9632 16 5.4491 2.5509 17 7.031000000000001 2.969 18 8.854800000000001 3.1452 -19 11.021799999999999 2.9782 +19 11.0218 2.9782 20 13.6745 2.3255 21 17.0141 0.9859000000000009 -22 21.3248 -1.3247999999999998 +22 21.3248 -1.3248 23 27.0086 -5.008600000000001 24 34.634 -10.634 -- !sql_test_TinyInt_Double_1 -- \N \N \N \N -1 0.5244 1.9069412662090008 0.4756 +1 0.5244 1.906941266209001 0.4756 2 1.4832 2.696871628910464 0.5167999999999999 -3 3.1104 2.8935185185185186 0.9264000000000001 +3 3.1104 2.893518518518519 0.9264000000000001 4 5.7964 2.76033400041405 1.1018 -5 10.155000000000001 2.461841457410143 0.9379999999999997 +5 10.155 2.461841457410143 0.9379999999999997 6 17.1288 2.101723413198823 0.2904 7 28.1526 1.740514197622955 2.9782 -8 45.396 1.4098158428055334 2.3255 -9 72.12689999999999 1.1230206760584471 0.9859000000000009 -10 113.24799999999999 0.8830178016388811 10.0 -11 176.0946 0.6871306672663443 11.0 -12 271.608 0.5301758416541487 12.0 -13 0.5244 1.9069412662090008 0.4756 +8 45.396 1.409815842805533 2.3255 +9 72.12689999999999 1.123020676058447 0.9859000000000009 +10 113.248 0.8830178016388811 10 +11 176.0946 0.6871306672663443 11 +12 271.608 0.5301758416541487 12 +13 0.5244 1.906941266209001 0.4756 14 1.4832 2.696871628910464 0.5167999999999999 -15 3.1104 2.8935185185185186 0.9264000000000001 +15 3.1104 2.893518518518519 0.9264000000000001 16 5.7964 2.76033400041405 1.1018 -17 10.155000000000001 2.461841457410143 0.9379999999999997 +17 10.155 2.461841457410143 0.9379999999999997 18 17.1288 2.101723413198823 0.2904 19 28.1526 1.740514197622955 2.9782 -20 45.396 1.4098158428055334 2.3255 -21 72.12689999999999 1.1230206760584471 0.9859000000000009 -22 113.24799999999999 0.8830178016388811 10.0 -23 176.0946 0.6871306672663443 11.0 -24 271.608 0.5301758416541487 12.0 +20 45.396 1.409815842805533 2.3255 +21 72.12689999999999 1.123020676058447 0.9859000000000009 +22 113.248 0.8830178016388811 10 +23 176.0946 0.6871306672663443 11 +24 271.608 0.5301758416541487 12 -- !sql_test_TinyInt_Double_notn_1 -- -1 0.5244 1.9069412662090008 0.4756 +1 0.5244 1.906941266209001 0.4756 2 1.4832 2.696871628910464 0.5167999999999999 -3 3.1104 2.8935185185185186 0.9264000000000001 +3 3.1104 2.893518518518519 0.9264000000000001 4 5.7964 2.76033400041405 1.1018 -5 10.155000000000001 2.461841457410143 0.9379999999999997 +5 10.155 2.461841457410143 0.9379999999999997 6 17.1288 2.101723413198823 0.2904 7 28.1526 1.740514197622955 2.9782 -8 45.396 1.4098158428055334 2.3255 -9 72.12689999999999 1.1230206760584471 0.9859000000000009 -10 113.24799999999999 0.8830178016388811 10.0 -11 176.0946 0.6871306672663443 11.0 -12 271.608 0.5301758416541487 12.0 -13 0.5244 1.9069412662090008 0.4756 +8 45.396 1.409815842805533 2.3255 +9 72.12689999999999 1.123020676058447 0.9859000000000009 +10 113.248 0.8830178016388811 10 +11 176.0946 0.6871306672663443 11 +12 271.608 0.5301758416541487 12 +13 0.5244 1.906941266209001 0.4756 14 1.4832 2.696871628910464 0.5167999999999999 -15 3.1104 2.8935185185185186 0.9264000000000001 +15 3.1104 2.893518518518519 0.9264000000000001 16 5.7964 2.76033400041405 1.1018 -17 10.155000000000001 2.461841457410143 0.9379999999999997 +17 10.155 2.461841457410143 0.9379999999999997 18 17.1288 2.101723413198823 0.2904 19 28.1526 1.740514197622955 2.9782 -20 45.396 1.4098158428055334 2.3255 -21 72.12689999999999 1.1230206760584471 0.9859000000000009 -22 113.24799999999999 0.8830178016388811 10.0 -23 176.0946 0.6871306672663443 11.0 -24 271.608 0.5301758416541487 12.0 +20 45.396 1.409815842805533 2.3255 +21 72.12689999999999 1.123020676058447 0.9859000000000009 +22 113.248 0.8830178016388811 10 +23 176.0946 0.6871306672663443 11 +24 271.608 0.5301758416541487 12 -- !sql_test_TinyInt_Double_3 -- \N \N \N \N @@ -5725,109 +5725,109 @@ -- !sql_test_TinyInt_DecimalV2_0 -- \N \N \N -1 25.395000000 -23.395000000 -2 36.484000000 -32.484000000 -3 51.756000000 -45.756000000 -4 72.943000000 -64.943000000 -5 102.494000000 -92.494000000 -6 143.874000000 -131.874000000 -7 201.980000000 -187.980000000 +1 25.395200000 -23.395200000 +2 36.483700000 -32.483700000 +3 51.755800000 -45.755800000 +4 72.942900000 -64.942900000 +5 102.494200000 -92.494200000 +6 143.873600000 -131.873600000 +7 201.979800000 -187.979800000 8 283.741000000 -267.741000000 -9 398.955000000 -380.955000000 +9 398.955300000 -380.955300000 10 561.479000000 -541.479000000 -11 790.908000000 -768.908000000 -12 1114.957000000 -1090.957000000 -13 25.395000000 -23.395000000 -14 36.484000000 -32.484000000 -15 51.756000000 -45.756000000 -16 72.943000000 -64.943000000 -17 102.494000000 -92.494000000 -18 143.874000000 -131.874000000 -19 201.980000000 -187.980000000 +11 790.908400000 -768.908400000 +12 1114.956500000 -1090.956500000 +13 25.395200000 -23.395200000 +14 36.483700000 -32.483700000 +15 51.755800000 -45.755800000 +16 72.942900000 -64.942900000 +17 102.494200000 -92.494200000 +18 143.873600000 -131.873600000 +19 201.979800000 -187.979800000 20 283.741000000 -267.741000000 -21 398.955000000 -380.955000000 +21 398.955300000 -380.955300000 22 561.479000000 -541.479000000 -23 790.908000000 -768.908000000 -24 1114.957000000 -1090.957000000 +23 790.908400000 -768.908400000 +24 1114.956500000 -1090.956500000 -- !sql_test_TinyInt_DecimalV2_notn_0 -- -1 25.395000000 -23.395000000 -2 36.484000000 -32.484000000 -3 51.756000000 -45.756000000 -4 72.943000000 -64.943000000 -5 102.494000000 -92.494000000 -6 143.874000000 -131.874000000 -7 201.980000000 -187.980000000 +1 25.395200000 -23.395200000 +2 36.483700000 -32.483700000 +3 51.755800000 -45.755800000 +4 72.942900000 -64.942900000 +5 102.494200000 -92.494200000 +6 143.873600000 -131.873600000 +7 201.979800000 -187.979800000 8 283.741000000 -267.741000000 -9 398.955000000 -380.955000000 +9 398.955300000 -380.955300000 10 561.479000000 -541.479000000 -11 790.908000000 -768.908000000 -12 1114.957000000 -1090.957000000 -13 25.395000000 -23.395000000 -14 36.484000000 -32.484000000 -15 51.756000000 -45.756000000 -16 72.943000000 -64.943000000 -17 102.494000000 -92.494000000 -18 143.874000000 -131.874000000 -19 201.980000000 -187.980000000 +11 790.908400000 -768.908400000 +12 1114.956500000 -1090.956500000 +13 25.395200000 -23.395200000 +14 36.483700000 -32.483700000 +15 51.755800000 -45.755800000 +16 72.942900000 -64.942900000 +17 102.494200000 -92.494200000 +18 143.873600000 -131.873600000 +19 201.979800000 -187.979800000 20 283.741000000 -267.741000000 -21 398.955000000 -380.955000000 +21 398.955300000 -380.955300000 22 561.479000000 -541.479000000 -23 790.908000000 -768.908000000 -24 1114.957000000 -1090.957000000 +23 790.908400000 -768.908400000 +24 1114.956500000 -1090.956500000 -- !sql_test_TinyInt_DecimalV2_1 -- \N \N \N \N -1 24.395000000 0.040992007 1.000000000 -2 68.968000000 0.057997912 2.000000000 -3 146.268000000 0.061530889 3.000000000 -4 275.772000000 0.058018943 4.000000000 -5 487.470000000 0.051285207 5.000000000 -6 827.244000000 0.043517995 6.000000000 -7 1364.860000000 0.035901118 7.000000000 +1 24.395200000 0.040991670 1.000000000 +2 68.967400000 0.057998417 2.000000000 +3 146.267400000 0.061531141 3.000000000 +4 275.771600000 0.058019027 4.000000000 +5 487.471000000 0.051285102 5.000000000 +6 827.241600000 0.043518121 6.000000000 +7 1364.858600000 0.035901155 7.000000000 8 2205.928000000 0.029012733 8.000000000 -9 3509.595000000 0.023079586 9.000000000 +9 3509.597700000 0.023079568 9.000000000 10 5514.790000000 0.018133057 10.000000000 -11 8578.988000000 0.014104228 11.000000000 -12 13235.484000000 0.010879844 12.000000000 -13 24.395000000 0.040992007 1.000000000 -14 68.968000000 0.057997912 2.000000000 -15 146.268000000 0.061530889 3.000000000 -16 275.772000000 0.058018943 4.000000000 -17 487.470000000 0.051285207 5.000000000 -18 827.244000000 0.043517995 6.000000000 -19 1364.860000000 0.035901118 7.000000000 +11 8578.992400000 0.014104220 11.000000000 +12 13235.478000000 0.010879849 12.000000000 +13 24.395200000 0.040991670 1.000000000 +14 68.967400000 0.057998417 2.000000000 +15 146.267400000 0.061531141 3.000000000 +16 275.771600000 0.058019027 4.000000000 +17 487.471000000 0.051285102 5.000000000 +18 827.241600000 0.043518121 6.000000000 +19 1364.858600000 0.035901155 7.000000000 20 2205.928000000 0.029012733 8.000000000 -21 3509.595000000 0.023079586 9.000000000 +21 3509.597700000 0.023079568 9.000000000 22 5514.790000000 0.018133057 10.000000000 -23 8578.988000000 0.014104228 11.000000000 -24 13235.484000000 0.010879844 12.000000000 +23 8578.992400000 0.014104220 11.000000000 +24 13235.478000000 0.010879849 12.000000000 -- !sql_test_TinyInt_DecimalV2_notn_1 -- -1 24.395000000 0.040992007 1.000000000 -2 68.968000000 0.057997912 2.000000000 -3 146.268000000 0.061530889 3.000000000 -4 275.772000000 0.058018943 4.000000000 -5 487.470000000 0.051285207 5.000000000 -6 827.244000000 0.043517995 6.000000000 -7 1364.860000000 0.035901118 7.000000000 +1 24.395200000 0.040991670 1.000000000 +2 68.967400000 0.057998417 2.000000000 +3 146.267400000 0.061531141 3.000000000 +4 275.771600000 0.058019027 4.000000000 +5 487.471000000 0.051285102 5.000000000 +6 827.241600000 0.043518121 6.000000000 +7 1364.858600000 0.035901155 7.000000000 8 2205.928000000 0.029012733 8.000000000 -9 3509.595000000 0.023079586 9.000000000 +9 3509.597700000 0.023079568 9.000000000 10 5514.790000000 0.018133057 10.000000000 -11 8578.988000000 0.014104228 11.000000000 -12 13235.484000000 0.010879844 12.000000000 -13 24.395000000 0.040992007 1.000000000 -14 68.968000000 0.057997912 2.000000000 -15 146.268000000 0.061530889 3.000000000 -16 275.772000000 0.058018943 4.000000000 -17 487.470000000 0.051285207 5.000000000 -18 827.244000000 0.043517995 6.000000000 -19 1364.860000000 0.035901118 7.000000000 +11 8578.992400000 0.014104220 11.000000000 +12 13235.478000000 0.010879849 12.000000000 +13 24.395200000 0.040991670 1.000000000 +14 68.967400000 0.057998417 2.000000000 +15 146.267400000 0.061531141 3.000000000 +16 275.771600000 0.058019027 4.000000000 +17 487.471000000 0.051285102 5.000000000 +18 827.241600000 0.043518121 6.000000000 +19 1364.858600000 0.035901155 7.000000000 20 2205.928000000 0.029012733 8.000000000 -21 3509.595000000 0.023079586 9.000000000 +21 3509.597700000 0.023079568 9.000000000 22 5514.790000000 0.018133057 10.000000000 -23 8578.988000000 0.014104228 11.000000000 -24 13235.484000000 0.010879844 12.000000000 +23 8578.992400000 0.014104220 11.000000000 +24 13235.478000000 0.010879849 12.000000000 -- !sql_test_TinyInt_DecimalV2_2 -- \N \N @@ -6430,7 +6430,7 @@ 14 220.094 -216.094 15 311.359 -305.359 16 440.033 -432.033 -17 621.608 -611.608 +17 621.6079999999999 -611.6079999999999 18 877.989 -865.989 19 1240.161 -1226.161 20 1751.94 -1735.94 @@ -6456,7 +6456,7 @@ 14 220.094 -216.094 15 311.359 -305.359 16 440.033 -432.033 -17 621.608 -611.608 +17 621.6079999999999 -611.6079999999999 18 877.989 -865.989 19 1240.161 -1226.161 20 1751.94 -1735.94 @@ -6479,18 +6479,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 154.289 0.006481343452870911 1.0 -14 436.188 0.009170357735655268 2.0 -15 925.077 0.00972891986288709 3.0 -16 1744.132 0.00917361759316382 4.0 -17 3083.04 0.008108879547459652 5.0 -18 5231.934 0.00688082074429838 6.0 -19 8632.127 0.0056764688471335045 7.0 -20 13951.52 0.004587313783731091 8.0 -21 22196.646 0.0036491999737257603 9.0 -22 34878.6 0.0028670875551197583 10.0 -23 54258.314 0.0022300729801519453 11.0 -24 83708.52 0.0017202549991327048 12.0 +13 154.289 0.006481343452870911 1 +14 436.188 0.009170357735655268 2 +15 925.077 0.009728919862887091 3 +16 1744.132 0.00917361759316382 4 +17 3083.04 0.008108879547459652 5 +18 5231.934 0.00688082074429838 6 +19 8632.127 0.005676468847133504 7 +20 13951.52 0.004587313783731091 8 +21 22196.646 0.00364919997372576 9 +22 34878.6 0.002867087555119758 10 +23 54258.314 0.002230072980151945 11 +24 83708.52 0.001720254999132705 12 -- !sql_test_TinyInt_Char_notn_1 -- 1 \N \N \N @@ -6505,18 +6505,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 154.289 0.006481343452870911 1.0 -14 436.188 0.009170357735655268 2.0 -15 925.077 0.00972891986288709 3.0 -16 1744.132 0.00917361759316382 4.0 -17 3083.04 0.008108879547459652 5.0 -18 5231.934 0.00688082074429838 6.0 -19 8632.127 0.0056764688471335045 7.0 -20 13951.52 0.004587313783731091 8.0 -21 22196.646 0.0036491999737257603 9.0 -22 34878.6 0.0028670875551197583 10.0 -23 54258.314 0.0022300729801519453 11.0 -24 83708.52 0.0017202549991327048 12.0 +13 154.289 0.006481343452870911 1 +14 436.188 0.009170357735655268 2 +15 925.077 0.009728919862887091 3 +16 1744.132 0.00917361759316382 4 +17 3083.04 0.008108879547459652 5 +18 5231.934 0.00688082074429838 6 +19 8632.127 0.005676468847133504 7 +20 13951.52 0.004587313783731091 8 +21 22196.646 0.00364919997372576 9 +22 34878.6 0.002867087555119758 10 +23 54258.314 0.002230072980151945 11 +24 83708.52 0.001720254999132705 12 -- !sql_test_TinyInt_Char_3 -- \N \N \N \N @@ -6638,18 +6638,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2319.121 4.3119785470443323E-4 1.0 -14 6556.164 6.101128647788555E-4 2.0 -15 13904.223 6.472853607137918E-4 3.0 -16 26214.752 6.103433669713907E-4 4.0 -17 46338.649999999994 5.395064379303239E-4 5.0 -18 78636.822 4.5780079973221704E-4 6.0 -19 129742.095 3.7767233525865294E-4 7.0 -20 209693.232 3.052077522463863E-4 8.0 -21 333618.579 2.427922337023083E-4 9.0 -22 524229.99000000005 1.907559695316172E-4 10.0 -23 815509.6730000001 1.483734699980683E-4 11.0 -24 1258150.116 1.1445375092267607E-4 12.0 +13 2319.121 0.0004311978547044332 1 +14 6556.164 0.0006101128647788555 2 +15 13904.223 0.0006472853607137918 3 +16 26214.752 0.0006103433669713907 4 +17 46338.64999999999 0.0005395064379303239 5 +18 78636.822 0.000457800799732217 6 +19 129742.095 0.0003776723352586529 7 +20 209693.232 0.0003052077522463863 8 +21 333618.579 0.0002427922337023083 9 +22 524229.99 0.0001907559695316172 10 +23 815509.6730000001 0.0001483734699980683 11 +24 1258150.116 0.0001144537509226761 12 -- !sql_test_TinyInt_Varchar_notn_1 -- 1 \N \N \N @@ -6664,18 +6664,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2319.121 4.3119785470443323E-4 1.0 -14 6556.164 6.101128647788555E-4 2.0 -15 13904.223 6.472853607137918E-4 3.0 -16 26214.752 6.103433669713907E-4 4.0 -17 46338.649999999994 5.395064379303239E-4 5.0 -18 78636.822 4.5780079973221704E-4 6.0 -19 129742.095 3.7767233525865294E-4 7.0 -20 209693.232 3.052077522463863E-4 8.0 -21 333618.579 2.427922337023083E-4 9.0 -22 524229.99000000005 1.907559695316172E-4 10.0 -23 815509.6730000001 1.483734699980683E-4 11.0 -24 1258150.116 1.1445375092267607E-4 12.0 +13 2319.121 0.0004311978547044332 1 +14 6556.164 0.0006101128647788555 2 +15 13904.223 0.0006472853607137918 3 +16 26214.752 0.0006103433669713907 4 +17 46338.64999999999 0.0005395064379303239 5 +18 78636.822 0.000457800799732217 6 +19 129742.095 0.0003776723352586529 7 +20 209693.232 0.0003052077522463863 8 +21 333618.579 0.0002427922337023083 9 +22 524229.99 0.0001907559695316172 10 +23 815509.6730000001 0.0001483734699980683 11 +24 1258150.116 0.0001144537509226761 12 -- !sql_test_TinyInt_Varchar_3 -- \N \N \N \N @@ -6750,7 +6750,7 @@ 16 29970.255 -29962.255 17 42381.012 -42371.012 18 59932.842 -59920.842 -19 84755.017 -84741.017 +19 84755.01700000001 -84741.01700000001 20 119858.851 -119842.851 21 169503.031 -169485.031 22 239710.285 -239690.285 @@ -6776,7 +6776,7 @@ 16 29970.255 -29962.255 17 42381.012 -42371.012 18 59932.842 -59920.842 -19 84755.017 -84741.017 +19 84755.01700000001 -84741.01700000001 20 119858.851 -119842.851 21 169503.031 -169485.031 22 239710.285 -239690.285 @@ -6797,18 +6797,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 10604.017 9.43038850277211E-5 1.0 -14 29977.586 1.3343302559452254E-4 2.0 -15 63576.039 1.4156276706700776E-4 3.0 -16 119865.02 1.334834800010879E-4 4.0 -17 211880.06 1.1799128242648221E-4 5.0 -18 359561.05199999997 1.0012207885074272E-4 6.0 -19 593236.1190000001 8.259780284888553E-5 7.0 -20 958806.808 6.674963033846126E-5 8.0 -21 1525446.2789999999 5.309921503961399E-5 9.0 -22 2397002.85 4.17187655826108E-5 10.0 -23 3728857.649 3.244961631411422E-5 11.0 -24 5752798.3319999995 2.5031296369107625E-5 12.0 +13 10604.017 9.430388502772109e-05 1 +14 29977.586 0.0001334330255945225 2 +15 63576.039 0.0001415627670670078 3 +16 119865.02 0.0001334834800010879 4 +17 211880.06 0.0001179912824264822 5 +18 359561.052 0.0001001220788507427 6 +19 593236.1190000001 8.259780284888553e-05 7 +20 958806.808 6.674963033846126e-05 8 +21 1525446.279 5.309921503961399e-05 9 +22 2397002.85 4.17187655826108e-05 10 +23 3728857.649 3.244961631411422e-05 11 +24 5752798.331999999 2.503129636910763e-05 12 -- !sql_test_TinyInt_String_notn_1 -- 1 \N \N \N @@ -6823,18 +6823,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 10604.017 9.43038850277211E-5 1.0 -14 29977.586 1.3343302559452254E-4 2.0 -15 63576.039 1.4156276706700776E-4 3.0 -16 119865.02 1.334834800010879E-4 4.0 -17 211880.06 1.1799128242648221E-4 5.0 -18 359561.05199999997 1.0012207885074272E-4 6.0 -19 593236.1190000001 8.259780284888553E-5 7.0 -20 958806.808 6.674963033846126E-5 8.0 -21 1525446.2789999999 5.309921503961399E-5 9.0 -22 2397002.85 4.17187655826108E-5 10.0 -23 3728857.649 3.244961631411422E-5 11.0 -24 5752798.3319999995 2.5031296369107625E-5 12.0 +13 10604.017 9.430388502772109e-05 1 +14 29977.586 0.0001334330255945225 2 +15 63576.039 0.0001415627670670078 3 +16 119865.02 0.0001334834800010879 4 +17 211880.06 0.0001179912824264822 5 +18 359561.052 0.0001001220788507427 6 +19 593236.1190000001 8.259780284888553e-05 7 +20 958806.808 6.674963033846126e-05 8 +21 1525446.279 5.309921503961399e-05 9 +22 2397002.85 4.17187655826108e-05 10 +23 3728857.649 3.244961631411422e-05 11 +24 5752798.331999999 2.503129636910763e-05 12 -- !sql_test_TinyInt_String_3 -- \N \N \N \N @@ -6944,56 +6944,56 @@ -- !sql_test_TinyInt_Date_1 -- \N \N \N \N -1 20120301 4.970104572491236E-8 1 -2 40240604 9.940208650943709E-8 2 -3 60360909 1.491031223535749E-7 3 -4 80481216 1.9880415325732653E-7 4 -5 100601525 2.485051792206927E-7 5 -6 120721836 2.9820620024367423E-7 6 -7 140842149 3.4790721632627175E-7 7 -8 160962464 3.976082274684861E-7 8 -9 181082781 4.4730923367031786E-7 9 -10 201203100 4.970102349317679E-7 10 -11 221323421 5.46711231252837E-7 11 -12 241443744 5.964122226335258E-7 12 -13 20120301 4.970104572491236E-8 1 -14 40240604 9.940208650943709E-8 2 -15 60360909 1.491031223535749E-7 3 -16 80481216 1.9880415325732653E-7 4 -17 100601525 2.485051792206927E-7 5 -18 120721836 2.9820620024367423E-7 6 -19 140842149 3.4790721632627175E-7 7 -20 160962464 3.976082274684861E-7 8 -21 181082781 4.4730923367031786E-7 9 -22 201203100 4.970102349317679E-7 10 -23 221323421 5.46711231252837E-7 11 -24 241443744 5.964122226335258E-7 12 +1 20120301 4.970104572491236e-08 1 +2 40240604 9.940208650943709e-08 2 +3 60360909 1.491031223535749e-07 3 +4 80481216 1.988041532573265e-07 4 +5 100601525 2.485051792206927e-07 5 +6 120721836 2.982062002436742e-07 6 +7 140842149 3.479072163262718e-07 7 +8 160962464 3.976082274684861e-07 8 +9 181082781 4.473092336703179e-07 9 +10 201203100 4.970102349317679e-07 10 +11 221323421 5.46711231252837e-07 11 +12 241443744 5.964122226335258e-07 12 +13 20120301 4.970104572491236e-08 1 +14 40240604 9.940208650943709e-08 2 +15 60360909 1.491031223535749e-07 3 +16 80481216 1.988041532573265e-07 4 +17 100601525 2.485051792206927e-07 5 +18 120721836 2.982062002436742e-07 6 +19 140842149 3.479072163262718e-07 7 +20 160962464 3.976082274684861e-07 8 +21 181082781 4.473092336703179e-07 9 +22 201203100 4.970102349317679e-07 10 +23 221323421 5.46711231252837e-07 11 +24 241443744 5.964122226335258e-07 12 -- !sql_test_TinyInt_Date_notn_1 -- -1 20120301 4.970104572491236E-8 1 -2 40240604 9.940208650943709E-8 2 -3 60360909 1.491031223535749E-7 3 -4 80481216 1.9880415325732653E-7 4 -5 100601525 2.485051792206927E-7 5 -6 120721836 2.9820620024367423E-7 6 -7 140842149 3.4790721632627175E-7 7 -8 160962464 3.976082274684861E-7 8 -9 181082781 4.4730923367031786E-7 9 -10 201203100 4.970102349317679E-7 10 -11 221323421 5.46711231252837E-7 11 -12 241443744 5.964122226335258E-7 12 -13 20120301 4.970104572491236E-8 1 -14 40240604 9.940208650943709E-8 2 -15 60360909 1.491031223535749E-7 3 -16 80481216 1.9880415325732653E-7 4 -17 100601525 2.485051792206927E-7 5 -18 120721836 2.9820620024367423E-7 6 -19 140842149 3.4790721632627175E-7 7 -20 160962464 3.976082274684861E-7 8 -21 181082781 4.4730923367031786E-7 9 -22 201203100 4.970102349317679E-7 10 -23 221323421 5.46711231252837E-7 11 -24 241443744 5.964122226335258E-7 12 +1 20120301 4.970104572491236e-08 1 +2 40240604 9.940208650943709e-08 2 +3 60360909 1.491031223535749e-07 3 +4 80481216 1.988041532573265e-07 4 +5 100601525 2.485051792206927e-07 5 +6 120721836 2.982062002436742e-07 6 +7 140842149 3.479072163262718e-07 7 +8 160962464 3.976082274684861e-07 8 +9 181082781 4.473092336703179e-07 9 +10 201203100 4.970102349317679e-07 10 +11 221323421 5.46711231252837e-07 11 +12 241443744 5.964122226335258e-07 12 +13 20120301 4.970104572491236e-08 1 +14 40240604 9.940208650943709e-08 2 +15 60360909 1.491031223535749e-07 3 +16 80481216 1.988041532573265e-07 4 +17 100601525 2.485051792206927e-07 5 +18 120721836 2.982062002436742e-07 6 +19 140842149 3.479072163262718e-07 7 +20 160962464 3.976082274684861e-07 8 +21 181082781 4.473092336703179e-07 9 +22 201203100 4.970102349317679e-07 10 +23 221323421 5.46711231252837e-07 11 +24 241443744 5.964122226335258e-07 12 -- !sql_test_TinyInt_Date_3 -- \N \N \N \N @@ -7156,56 +7156,56 @@ -- !sql_test_TinyInt_DateTime_1 -- \N \N \N \N -1 20120301010001 4.9701045700207953E-14 1 -2 40240604040204 9.940208641012542E-14 2 -3 60360909090609 1.4910312212975313E-13 3 -4 80481216161216 1.9880415285909187E-13 4 -5 100601525252025 2.485051785981423E-13 5 -6 120721836363036 2.9820619934690534E-13 6 -7 140842149494249 3.4790721510538163E-13 7 -8 160962464645664 3.976082258735719E-13 8 -9 181082781817281 4.4730923165147694E-13 9 -10 201203101009100 4.970102324390975E-13 10 -11 221323422221121 5.467112282364343E-13 11 -12 241443745453344 5.964122190434881E-13 12 -13 20120301010001 4.9701045700207953E-14 1 -14 40240604040204 9.940208641012542E-14 2 -15 60360909090609 1.4910312212975313E-13 3 -16 80481216161216 1.9880415285909187E-13 4 -17 100601525252025 2.485051785981423E-13 5 -18 120721836363036 2.9820619934690534E-13 6 -19 140842149494249 3.4790721510538163E-13 7 -20 160962464645664 3.976082258735719E-13 8 -21 181082781817281 4.4730923165147694E-13 9 -22 201203101009100 4.970102324390975E-13 10 -23 221323422221121 5.467112282364343E-13 11 -24 241443745453344 5.964122190434881E-13 12 +1 20120301010001 4.970104570020795e-14 1 +2 40240604040204 9.940208641012542e-14 2 +3 60360909090609 1.491031221297531e-13 3 +4 80481216161216 1.988041528590919e-13 4 +5 100601525252025 2.485051785981423e-13 5 +6 120721836363036 2.982061993469053e-13 6 +7 140842149494249 3.479072151053816e-13 7 +8 160962464645664 3.976082258735719e-13 8 +9 181082781817281 4.473092316514769e-13 9 +10 201203101009100 4.970102324390975e-13 10 +11 221323422221121 5.467112282364343e-13 11 +12 241443745453344 5.964122190434881e-13 12 +13 20120301010001 4.970104570020795e-14 1 +14 40240604040204 9.940208641012542e-14 2 +15 60360909090609 1.491031221297531e-13 3 +16 80481216161216 1.988041528590919e-13 4 +17 100601525252025 2.485051785981423e-13 5 +18 120721836363036 2.982061993469053e-13 6 +19 140842149494249 3.479072151053816e-13 7 +20 160962464645664 3.976082258735719e-13 8 +21 181082781817281 4.473092316514769e-13 9 +22 201203101009100 4.970102324390975e-13 10 +23 221323422221121 5.467112282364343e-13 11 +24 241443745453344 5.964122190434881e-13 12 -- !sql_test_TinyInt_DateTime_notn_1 -- -1 20120301010001 4.9701045700207953E-14 1 -2 40240604040204 9.940208641012542E-14 2 -3 60360909090609 1.4910312212975313E-13 3 -4 80481216161216 1.9880415285909187E-13 4 -5 100601525252025 2.485051785981423E-13 5 -6 120721836363036 2.9820619934690534E-13 6 -7 140842149494249 3.4790721510538163E-13 7 -8 160962464645664 3.976082258735719E-13 8 -9 181082781817281 4.4730923165147694E-13 9 -10 201203101009100 4.970102324390975E-13 10 -11 221323422221121 5.467112282364343E-13 11 -12 241443745453344 5.964122190434881E-13 12 -13 20120301010001 4.9701045700207953E-14 1 -14 40240604040204 9.940208641012542E-14 2 -15 60360909090609 1.4910312212975313E-13 3 -16 80481216161216 1.9880415285909187E-13 4 -17 100601525252025 2.485051785981423E-13 5 -18 120721836363036 2.9820619934690534E-13 6 -19 140842149494249 3.4790721510538163E-13 7 -20 160962464645664 3.976082258735719E-13 8 -21 181082781817281 4.4730923165147694E-13 9 -22 201203101009100 4.970102324390975E-13 10 -23 221323422221121 5.467112282364343E-13 11 -24 241443745453344 5.964122190434881E-13 12 +1 20120301010001 4.970104570020795e-14 1 +2 40240604040204 9.940208641012542e-14 2 +3 60360909090609 1.491031221297531e-13 3 +4 80481216161216 1.988041528590919e-13 4 +5 100601525252025 2.485051785981423e-13 5 +6 120721836363036 2.982061993469053e-13 6 +7 140842149494249 3.479072151053816e-13 7 +8 160962464645664 3.976082258735719e-13 8 +9 181082781817281 4.473092316514769e-13 9 +10 201203101009100 4.970102324390975e-13 10 +11 221323422221121 5.467112282364343e-13 11 +12 241443745453344 5.964122190434881e-13 12 +13 20120301010001 4.970104570020795e-14 1 +14 40240604040204 9.940208641012542e-14 2 +15 60360909090609 1.491031221297531e-13 3 +16 80481216161216 1.988041528590919e-13 4 +17 100601525252025 2.485051785981423e-13 5 +18 120721836363036 2.982061993469053e-13 6 +19 140842149494249 3.479072151053816e-13 7 +20 160962464645664 3.976082258735719e-13 8 +21 181082781817281 4.473092316514769e-13 9 +22 201203101009100 4.970102324390975e-13 10 +23 221323422221121 5.467112282364343e-13 11 +24 241443745453344 5.964122190434881e-13 12 -- !sql_test_TinyInt_DateTime_3 -- \N \N \N \N @@ -7368,56 +7368,56 @@ -- !sql_test_TinyInt_DateV2_1 -- \N \N \N \N -1 20120301 4.970104572491236E-8 1 -2 40240604 9.940208650943709E-8 2 -3 60360909 1.491031223535749E-7 3 -4 80481216 1.9880415325732653E-7 4 -5 100601525 2.485051792206927E-7 5 -6 120721836 2.9820620024367423E-7 6 -7 140842149 3.4790721632627175E-7 7 -8 160962464 3.976082274684861E-7 8 -9 181082781 4.4730923367031786E-7 9 -10 201203100 4.970102349317679E-7 10 -11 221323421 5.46711231252837E-7 11 -12 241443744 5.964122226335258E-7 12 -13 20120301 4.970104572491236E-8 1 -14 40240604 9.940208650943709E-8 2 -15 60360909 1.491031223535749E-7 3 -16 80481216 1.9880415325732653E-7 4 -17 100601525 2.485051792206927E-7 5 -18 120721836 2.9820620024367423E-7 6 -19 140842149 3.4790721632627175E-7 7 -20 160962464 3.976082274684861E-7 8 -21 181082781 4.4730923367031786E-7 9 -22 201203100 4.970102349317679E-7 10 -23 221323421 5.46711231252837E-7 11 -24 241443744 5.964122226335258E-7 12 +1 20120301 4.970104572491236e-08 1 +2 40240604 9.940208650943709e-08 2 +3 60360909 1.491031223535749e-07 3 +4 80481216 1.988041532573265e-07 4 +5 100601525 2.485051792206927e-07 5 +6 120721836 2.982062002436742e-07 6 +7 140842149 3.479072163262718e-07 7 +8 160962464 3.976082274684861e-07 8 +9 181082781 4.473092336703179e-07 9 +10 201203100 4.970102349317679e-07 10 +11 221323421 5.46711231252837e-07 11 +12 241443744 5.964122226335258e-07 12 +13 20120301 4.970104572491236e-08 1 +14 40240604 9.940208650943709e-08 2 +15 60360909 1.491031223535749e-07 3 +16 80481216 1.988041532573265e-07 4 +17 100601525 2.485051792206927e-07 5 +18 120721836 2.982062002436742e-07 6 +19 140842149 3.479072163262718e-07 7 +20 160962464 3.976082274684861e-07 8 +21 181082781 4.473092336703179e-07 9 +22 201203100 4.970102349317679e-07 10 +23 221323421 5.46711231252837e-07 11 +24 241443744 5.964122226335258e-07 12 -- !sql_test_TinyInt_DateV2_notn_1 -- -1 20120301 4.970104572491236E-8 1 -2 40240604 9.940208650943709E-8 2 -3 60360909 1.491031223535749E-7 3 -4 80481216 1.9880415325732653E-7 4 -5 100601525 2.485051792206927E-7 5 -6 120721836 2.9820620024367423E-7 6 -7 140842149 3.4790721632627175E-7 7 -8 160962464 3.976082274684861E-7 8 -9 181082781 4.4730923367031786E-7 9 -10 201203100 4.970102349317679E-7 10 -11 221323421 5.46711231252837E-7 11 -12 241443744 5.964122226335258E-7 12 -13 20120301 4.970104572491236E-8 1 -14 40240604 9.940208650943709E-8 2 -15 60360909 1.491031223535749E-7 3 -16 80481216 1.9880415325732653E-7 4 -17 100601525 2.485051792206927E-7 5 -18 120721836 2.9820620024367423E-7 6 -19 140842149 3.4790721632627175E-7 7 -20 160962464 3.976082274684861E-7 8 -21 181082781 4.4730923367031786E-7 9 -22 201203100 4.970102349317679E-7 10 -23 221323421 5.46711231252837E-7 11 -24 241443744 5.964122226335258E-7 12 +1 20120301 4.970104572491236e-08 1 +2 40240604 9.940208650943709e-08 2 +3 60360909 1.491031223535749e-07 3 +4 80481216 1.988041532573265e-07 4 +5 100601525 2.485051792206927e-07 5 +6 120721836 2.982062002436742e-07 6 +7 140842149 3.479072163262718e-07 7 +8 160962464 3.976082274684861e-07 8 +9 181082781 4.473092336703179e-07 9 +10 201203100 4.970102349317679e-07 10 +11 221323421 5.46711231252837e-07 11 +12 241443744 5.964122226335258e-07 12 +13 20120301 4.970104572491236e-08 1 +14 40240604 9.940208650943709e-08 2 +15 60360909 1.491031223535749e-07 3 +16 80481216 1.988041532573265e-07 4 +17 100601525 2.485051792206927e-07 5 +18 120721836 2.982062002436742e-07 6 +19 140842149 3.479072163262718e-07 7 +20 160962464 3.976082274684861e-07 8 +21 181082781 4.473092336703179e-07 9 +22 201203100 4.970102349317679e-07 10 +23 221323421 5.46711231252837e-07 11 +24 241443744 5.964122226335258e-07 12 -- !sql_test_TinyInt_DateV2_3 -- \N \N \N \N @@ -7580,56 +7580,56 @@ -- !sql_test_TinyInt_DateTimeV2_1 -- \N \N \N \N -1 20120301010001 4.9701045700207953E-14 1 -2 40240604040204 9.940208641012542E-14 2 -3 60360909090609 1.4910312212975313E-13 3 -4 80481216161216 1.9880415285909187E-13 4 -5 100601525252025 2.485051785981423E-13 5 -6 120721836363036 2.9820619934690534E-13 6 -7 140842149494249 3.4790721510538163E-13 7 -8 160962464645664 3.976082258735719E-13 8 -9 181082781817281 4.4730923165147694E-13 9 -10 201203101009100 4.970102324390975E-13 10 -11 221323422221121 5.467112282364343E-13 11 -12 241443745453344 5.964122190434881E-13 12 -13 20120301010001 4.9701045700207953E-14 1 -14 40240604040204 9.940208641012542E-14 2 -15 60360909090609 1.4910312212975313E-13 3 -16 80481216161216 1.9880415285909187E-13 4 -17 100601525252025 2.485051785981423E-13 5 -18 120721836363036 2.9820619934690534E-13 6 -19 140842149494249 3.4790721510538163E-13 7 -20 160962464645664 3.976082258735719E-13 8 -21 181082781817281 4.4730923165147694E-13 9 -22 201203101009100 4.970102324390975E-13 10 -23 221323422221121 5.467112282364343E-13 11 -24 241443745453344 5.964122190434881E-13 12 +1 20120301010001 4.970104570020795e-14 1 +2 40240604040204 9.940208641012542e-14 2 +3 60360909090609 1.491031221297531e-13 3 +4 80481216161216 1.988041528590919e-13 4 +5 100601525252025 2.485051785981423e-13 5 +6 120721836363036 2.982061993469053e-13 6 +7 140842149494249 3.479072151053816e-13 7 +8 160962464645664 3.976082258735719e-13 8 +9 181082781817281 4.473092316514769e-13 9 +10 201203101009100 4.970102324390975e-13 10 +11 221323422221121 5.467112282364343e-13 11 +12 241443745453344 5.964122190434881e-13 12 +13 20120301010001 4.970104570020795e-14 1 +14 40240604040204 9.940208641012542e-14 2 +15 60360909090609 1.491031221297531e-13 3 +16 80481216161216 1.988041528590919e-13 4 +17 100601525252025 2.485051785981423e-13 5 +18 120721836363036 2.982061993469053e-13 6 +19 140842149494249 3.479072151053816e-13 7 +20 160962464645664 3.976082258735719e-13 8 +21 181082781817281 4.473092316514769e-13 9 +22 201203101009100 4.970102324390975e-13 10 +23 221323422221121 5.467112282364343e-13 11 +24 241443745453344 5.964122190434881e-13 12 -- !sql_test_TinyInt_DateTimeV2_notn_1 -- -1 20120301010001 4.9701045700207953E-14 1 -2 40240604040204 9.940208641012542E-14 2 -3 60360909090609 1.4910312212975313E-13 3 -4 80481216161216 1.9880415285909187E-13 4 -5 100601525252025 2.485051785981423E-13 5 -6 120721836363036 2.9820619934690534E-13 6 -7 140842149494249 3.4790721510538163E-13 7 -8 160962464645664 3.976082258735719E-13 8 -9 181082781817281 4.4730923165147694E-13 9 -10 201203101009100 4.970102324390975E-13 10 -11 221323422221121 5.467112282364343E-13 11 -12 241443745453344 5.964122190434881E-13 12 -13 20120301010001 4.9701045700207953E-14 1 -14 40240604040204 9.940208641012542E-14 2 -15 60360909090609 1.4910312212975313E-13 3 -16 80481216161216 1.9880415285909187E-13 4 -17 100601525252025 2.485051785981423E-13 5 -18 120721836363036 2.9820619934690534E-13 6 -19 140842149494249 3.4790721510538163E-13 7 -20 160962464645664 3.976082258735719E-13 8 -21 181082781817281 4.4730923165147694E-13 9 -22 201203101009100 4.970102324390975E-13 10 -23 221323422221121 5.467112282364343E-13 11 -24 241443745453344 5.964122190434881E-13 12 +1 20120301010001 4.970104570020795e-14 1 +2 40240604040204 9.940208641012542e-14 2 +3 60360909090609 1.491031221297531e-13 3 +4 80481216161216 1.988041528590919e-13 4 +5 100601525252025 2.485051785981423e-13 5 +6 120721836363036 2.982061993469053e-13 6 +7 140842149494249 3.479072151053816e-13 7 +8 160962464645664 3.976082258735719e-13 8 +9 181082781817281 4.473092316514769e-13 9 +10 201203101009100 4.970102324390975e-13 10 +11 221323422221121 5.467112282364343e-13 11 +12 241443745453344 5.964122190434881e-13 12 +13 20120301010001 4.970104570020795e-14 1 +14 40240604040204 9.940208641012542e-14 2 +15 60360909090609 1.491031221297531e-13 3 +16 80481216161216 1.988041528590919e-13 4 +17 100601525252025 2.485051785981423e-13 5 +18 120721836363036 2.982061993469053e-13 6 +19 140842149494249 3.479072151053816e-13 7 +20 160962464645664 3.976082258735719e-13 8 +21 181082781817281 4.473092316514769e-13 9 +22 201203101009100 4.970102324390975e-13 10 +23 221323422221121 5.467112282364343e-13 11 +24 241443745453344 5.964122190434881e-13 12 -- !sql_test_TinyInt_DateTimeV2_3 -- \N \N \N \N @@ -7799,11 +7799,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 8 8.0 0 -9 9 9.0 0 -10 10 10.0 0 -11 11 11.0 0 -12 12 12.0 0 +8 8 8 0 +9 9 9 0 +10 10 10 0 +11 11 11 0 +12 12 12 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -7811,11 +7811,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 8 8.0 0 -21 9 9.0 0 -22 10 10.0 0 -23 11 11.0 0 -24 12 12.0 0 +20 8 8 0 +21 9 9 0 +22 10 10 0 +23 11 11 0 +24 12 12 0 -- !sql_test_TinyInt_Boolean_notn_1 -- 1 0 \N \N @@ -7825,11 +7825,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 8 8.0 0 -9 9 9.0 0 -10 10 10.0 0 -11 11 11.0 0 -12 12 12.0 0 +8 8 8 0 +9 9 9 0 +10 10 10 0 +11 11 11 0 +12 12 12 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -7837,11 +7837,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 8 8.0 0 -21 9 9.0 0 -22 10 10.0 0 -23 11 11.0 0 -24 12 12.0 0 +20 8 8 0 +21 9 9 0 +22 10 10 0 +23 11 11 0 +24 12 12 0 -- !sql_test_TinyInt_Boolean_3 -- \N \N \N \N @@ -8004,56 +8004,56 @@ -- !sql_test_SmallInt_TinyInt_1 -- \N \N \N \N -1 10 10.0 0 -2 40 10.0 0 -3 120 13.333333333333334 1 -4 320 20.0 0 -5 800 32.0 0 -6 1920 53.333333333333336 2 +1 10 10 0 +2 40 10 0 +3 120 13.33333333333333 1 +4 320 20 0 +5 800 32 0 +6 1920 53.33333333333334 2 7 4480 91.42857142857143 3 -8 10240 160.0 0 -9 23040 284.44444444444446 4 -10 51200 512.0 0 +8 10240 160 0 +9 23040 284.4444444444445 4 +10 51200 512 0 11 112640 930.9090909090909 10 -12 245760 1706.6666666666667 8 -13 10 10.0 0 -14 40 10.0 0 -15 120 13.333333333333334 1 -16 320 20.0 0 -17 800 32.0 0 -18 1920 53.333333333333336 2 +12 245760 1706.666666666667 8 +13 10 10 0 +14 40 10 0 +15 120 13.33333333333333 1 +16 320 20 0 +17 800 32 0 +18 1920 53.33333333333334 2 19 4480 91.42857142857143 3 -20 10240 160.0 0 -21 23040 284.44444444444446 4 -22 51200 512.0 0 +20 10240 160 0 +21 23040 284.4444444444445 4 +22 51200 512 0 23 112640 930.9090909090909 10 -24 245760 1706.6666666666667 8 +24 245760 1706.666666666667 8 -- !sql_test_SmallInt_TinyInt_notn_1 -- -1 10 10.0 0 -2 40 10.0 0 -3 120 13.333333333333334 1 -4 320 20.0 0 -5 800 32.0 0 -6 1920 53.333333333333336 2 +1 10 10 0 +2 40 10 0 +3 120 13.33333333333333 1 +4 320 20 0 +5 800 32 0 +6 1920 53.33333333333334 2 7 4480 91.42857142857143 3 -8 10240 160.0 0 -9 23040 284.44444444444446 4 -10 51200 512.0 0 +8 10240 160 0 +9 23040 284.4444444444445 4 +10 51200 512 0 11 112640 930.9090909090909 10 -12 245760 1706.6666666666667 8 -13 10 10.0 0 -14 40 10.0 0 -15 120 13.333333333333334 1 -16 320 20.0 0 -17 800 32.0 0 -18 1920 53.333333333333336 2 +12 245760 1706.666666666667 8 +13 10 10 0 +14 40 10 0 +15 120 13.33333333333333 1 +16 320 20 0 +17 800 32 0 +18 1920 53.33333333333334 2 19 4480 91.42857142857143 3 -20 10240 160.0 0 -21 23040 284.44444444444446 4 -22 51200 512.0 0 +20 10240 160 0 +21 23040 284.4444444444445 4 +22 51200 512 0 23 112640 930.9090909090909 10 -24 245760 1706.6666666666667 8 +24 245760 1706.666666666667 8 -- !sql_test_SmallInt_TinyInt_2 -- \N \N @@ -8269,56 +8269,56 @@ -- !sql_test_SmallInt_SmallInt_1 -- \N \N \N \N -1 100 1.0 0 -2 400 1.0 0 -3 1600 1.0 0 -4 6400 1.0 0 -5 25600 1.0 0 -6 102400 1.0 0 -7 409600 1.0 0 -8 1638400 1.0 0 -9 6553600 1.0 0 -10 26214400 1.0 0 -11 104857600 1.0 0 -12 419430400 1.0 0 -13 100 1.0 0 -14 400 1.0 0 -15 1600 1.0 0 -16 6400 1.0 0 -17 25600 1.0 0 -18 102400 1.0 0 -19 409600 1.0 0 -20 1638400 1.0 0 -21 6553600 1.0 0 -22 26214400 1.0 0 -23 104857600 1.0 0 -24 419430400 1.0 0 +1 100 1 0 +2 400 1 0 +3 1600 1 0 +4 6400 1 0 +5 25600 1 0 +6 102400 1 0 +7 409600 1 0 +8 1638400 1 0 +9 6553600 1 0 +10 26214400 1 0 +11 104857600 1 0 +12 419430400 1 0 +13 100 1 0 +14 400 1 0 +15 1600 1 0 +16 6400 1 0 +17 25600 1 0 +18 102400 1 0 +19 409600 1 0 +20 1638400 1 0 +21 6553600 1 0 +22 26214400 1 0 +23 104857600 1 0 +24 419430400 1 0 -- !sql_test_SmallInt_SmallInt_notn_1 -- -1 100 1.0 0 -2 400 1.0 0 -3 1600 1.0 0 -4 6400 1.0 0 -5 25600 1.0 0 -6 102400 1.0 0 -7 409600 1.0 0 -8 1638400 1.0 0 -9 6553600 1.0 0 -10 26214400 1.0 0 -11 104857600 1.0 0 -12 419430400 1.0 0 -13 100 1.0 0 -14 400 1.0 0 -15 1600 1.0 0 -16 6400 1.0 0 -17 25600 1.0 0 -18 102400 1.0 0 -19 409600 1.0 0 -20 1638400 1.0 0 -21 6553600 1.0 0 -22 26214400 1.0 0 -23 104857600 1.0 0 -24 419430400 1.0 0 +1 100 1 0 +2 400 1 0 +3 1600 1 0 +4 6400 1 0 +5 25600 1 0 +6 102400 1 0 +7 409600 1 0 +8 1638400 1 0 +9 6553600 1 0 +10 26214400 1 0 +11 104857600 1 0 +12 419430400 1 0 +13 100 1 0 +14 400 1 0 +15 1600 1 0 +16 6400 1 0 +17 25600 1 0 +18 102400 1 0 +19 409600 1 0 +20 1638400 1 0 +21 6553600 1 0 +22 26214400 1 0 +23 104857600 1 0 +24 419430400 1 0 -- !sql_test_SmallInt_SmallInt_2 -- \N \N @@ -8534,56 +8534,56 @@ -- !sql_test_SmallInt_Integer_1 -- \N \N \N \N -1 237950 4.202563563773902E-4 10 -2 950900 4.206541171521716E-4 20 -3 3801800 4.208532800252512E-4 40 -4 15203600 4.2095293220026836E-4 80 -5 60807200 4.2100277598705415E-4 160 -6 243214400 4.2102770230710026E-4 320 -7 972828800 4.210401665740159E-4 640 -8 3891257600 4.2104639898422555E-4 1280 -9 15564915200 4.2104951525852194E-4 2560 -10 62259430400 4.2105107341296844E-4 5120 -11 249037260800 4.2105185249451636E-4 10240 -12 996148121600 4.2105224203637146E-4 20480 -13 237950 4.202563563773902E-4 10 -14 950900 4.206541171521716E-4 20 -15 3801800 4.208532800252512E-4 40 -16 15203600 4.2095293220026836E-4 80 -17 60807200 4.2100277598705415E-4 160 -18 243214400 4.2102770230710026E-4 320 -19 972828800 4.210401665740159E-4 640 -20 3891257600 4.2104639898422555E-4 1280 -21 15564915200 4.2104951525852194E-4 2560 -22 62259430400 4.2105107341296844E-4 5120 -23 249037260800 4.2105185249451636E-4 10240 -24 996148121600 4.2105224203637146E-4 20480 +1 237950 0.0004202563563773902 10 +2 950900 0.0004206541171521716 20 +3 3801800 0.0004208532800252512 40 +4 15203600 0.0004209529322002684 80 +5 60807200 0.0004210027759870541 160 +6 243214400 0.0004210277023071003 320 +7 972828800 0.0004210401665740159 640 +8 3891257600 0.0004210463989842255 1280 +9 15564915200 0.0004210495152585219 2560 +10 62259430400 0.0004210510734129684 5120 +11 249037260800 0.0004210518524945164 10240 +12 996148121600 0.0004210522420363715 20480 +13 237950 0.0004202563563773902 10 +14 950900 0.0004206541171521716 20 +15 3801800 0.0004208532800252512 40 +16 15203600 0.0004209529322002684 80 +17 60807200 0.0004210027759870541 160 +18 243214400 0.0004210277023071003 320 +19 972828800 0.0004210401665740159 640 +20 3891257600 0.0004210463989842255 1280 +21 15564915200 0.0004210495152585219 2560 +22 62259430400 0.0004210510734129684 5120 +23 249037260800 0.0004210518524945164 10240 +24 996148121600 0.0004210522420363715 20480 -- !sql_test_SmallInt_Integer_notn_1 -- -1 237950 4.202563563773902E-4 10 -2 950900 4.206541171521716E-4 20 -3 3801800 4.208532800252512E-4 40 -4 15203600 4.2095293220026836E-4 80 -5 60807200 4.2100277598705415E-4 160 -6 243214400 4.2102770230710026E-4 320 -7 972828800 4.210401665740159E-4 640 -8 3891257600 4.2104639898422555E-4 1280 -9 15564915200 4.2104951525852194E-4 2560 -10 62259430400 4.2105107341296844E-4 5120 -11 249037260800 4.2105185249451636E-4 10240 -12 996148121600 4.2105224203637146E-4 20480 -13 237950 4.202563563773902E-4 10 -14 950900 4.206541171521716E-4 20 -15 3801800 4.208532800252512E-4 40 -16 15203600 4.2095293220026836E-4 80 -17 60807200 4.2100277598705415E-4 160 -18 243214400 4.2102770230710026E-4 320 -19 972828800 4.210401665740159E-4 640 -20 3891257600 4.2104639898422555E-4 1280 -21 15564915200 4.2104951525852194E-4 2560 -22 62259430400 4.2105107341296844E-4 5120 -23 249037260800 4.2105185249451636E-4 10240 -24 996148121600 4.2105224203637146E-4 20480 +1 237950 0.0004202563563773902 10 +2 950900 0.0004206541171521716 20 +3 3801800 0.0004208532800252512 40 +4 15203600 0.0004209529322002684 80 +5 60807200 0.0004210027759870541 160 +6 243214400 0.0004210277023071003 320 +7 972828800 0.0004210401665740159 640 +8 3891257600 0.0004210463989842255 1280 +9 15564915200 0.0004210495152585219 2560 +10 62259430400 0.0004210510734129684 5120 +11 249037260800 0.0004210518524945164 10240 +12 996148121600 0.0004210522420363715 20480 +13 237950 0.0004202563563773902 10 +14 950900 0.0004206541171521716 20 +15 3801800 0.0004208532800252512 40 +16 15203600 0.0004209529322002684 80 +17 60807200 0.0004210027759870541 160 +18 243214400 0.0004210277023071003 320 +19 972828800 0.0004210401665740159 640 +20 3891257600 0.0004210463989842255 1280 +21 15564915200 0.0004210495152585219 2560 +22 62259430400 0.0004210510734129684 5120 +23 249037260800 0.0004210518524945164 10240 +24 996148121600 0.0004210522420363715 20480 -- !sql_test_SmallInt_Integer_3 -- \N \N \N \N @@ -8746,56 +8746,56 @@ -- !sql_test_SmallInt_BigInt_1 -- \N \N \N \N -1 53545290 1.8675778952733285E-6 10 -2 213965580 1.8694595644776136E-6 20 -3 855431160 1.8704018216965582E-6 40 -4 3420862320 1.8708733065877963E-6 80 -5 13681724640 1.8711091381824508E-6 160 -6 54723449280 1.8712270762768702E-6 320 -7 218886898560 1.8712860508995829E-6 640 -8 875533797120 1.8713155396049686E-6 1280 -9 3502107594240 1.8713302843061882E-6 2560 -10 14008375188480 1.871337656743932E-6 5120 -11 56033390376960 1.8713413429845877E-6 10240 -12 224133340753920 1.8713431861103616E-6 20480 -13 53545290 1.8675778952733285E-6 10 -14 213965580 1.8694595644776136E-6 20 -15 855431160 1.8704018216965582E-6 40 -16 3420862320 1.8708733065877963E-6 80 -17 13681724640 1.8711091381824508E-6 160 -18 54723449280 1.8712270762768702E-6 320 -19 218886898560 1.8712860508995829E-6 640 -20 875533797120 1.8713155396049686E-6 1280 -21 3502107594240 1.8713302843061882E-6 2560 -22 14008375188480 1.871337656743932E-6 5120 -23 56033390376960 1.8713413429845877E-6 10240 -24 224133340753920 1.8713431861103616E-6 20480 +1 53545290 1.867577895273329e-06 10 +2 213965580 1.869459564477614e-06 20 +3 855431160 1.870401821696558e-06 40 +4 3420862320 1.870873306587796e-06 80 +5 13681724640 1.871109138182451e-06 160 +6 54723449280 1.87122707627687e-06 320 +7 218886898560 1.871286050899583e-06 640 +8 875533797120 1.871315539604969e-06 1280 +9 3502107594240 1.871330284306188e-06 2560 +10 14008375188480 1.871337656743932e-06 5120 +11 56033390376960 1.871341342984588e-06 10240 +12 224133340753920 1.871343186110362e-06 20480 +13 53545290 1.867577895273329e-06 10 +14 213965580 1.869459564477614e-06 20 +15 855431160 1.870401821696558e-06 40 +16 3420862320 1.870873306587796e-06 80 +17 13681724640 1.871109138182451e-06 160 +18 54723449280 1.87122707627687e-06 320 +19 218886898560 1.871286050899583e-06 640 +20 875533797120 1.871315539604969e-06 1280 +21 3502107594240 1.871330284306188e-06 2560 +22 14008375188480 1.871337656743932e-06 5120 +23 56033390376960 1.871341342984588e-06 10240 +24 224133340753920 1.871343186110362e-06 20480 -- !sql_test_SmallInt_BigInt_notn_1 -- -1 53545290 1.8675778952733285E-6 10 -2 213965580 1.8694595644776136E-6 20 -3 855431160 1.8704018216965582E-6 40 -4 3420862320 1.8708733065877963E-6 80 -5 13681724640 1.8711091381824508E-6 160 -6 54723449280 1.8712270762768702E-6 320 -7 218886898560 1.8712860508995829E-6 640 -8 875533797120 1.8713155396049686E-6 1280 -9 3502107594240 1.8713302843061882E-6 2560 -10 14008375188480 1.871337656743932E-6 5120 -11 56033390376960 1.8713413429845877E-6 10240 -12 224133340753920 1.8713431861103616E-6 20480 -13 53545290 1.8675778952733285E-6 10 -14 213965580 1.8694595644776136E-6 20 -15 855431160 1.8704018216965582E-6 40 -16 3420862320 1.8708733065877963E-6 80 -17 13681724640 1.8711091381824508E-6 160 -18 54723449280 1.8712270762768702E-6 320 -19 218886898560 1.8712860508995829E-6 640 -20 875533797120 1.8713155396049686E-6 1280 -21 3502107594240 1.8713302843061882E-6 2560 -22 14008375188480 1.871337656743932E-6 5120 -23 56033390376960 1.8713413429845877E-6 10240 -24 224133340753920 1.8713431861103616E-6 20480 +1 53545290 1.867577895273329e-06 10 +2 213965580 1.869459564477614e-06 20 +3 855431160 1.870401821696558e-06 40 +4 3420862320 1.870873306587796e-06 80 +5 13681724640 1.871109138182451e-06 160 +6 54723449280 1.87122707627687e-06 320 +7 218886898560 1.871286050899583e-06 640 +8 875533797120 1.871315539604969e-06 1280 +9 3502107594240 1.871330284306188e-06 2560 +10 14008375188480 1.871337656743932e-06 5120 +11 56033390376960 1.871341342984588e-06 10240 +12 224133340753920 1.871343186110362e-06 20480 +13 53545290 1.867577895273329e-06 10 +14 213965580 1.869459564477614e-06 20 +15 855431160 1.870401821696558e-06 40 +16 3420862320 1.870873306587796e-06 80 +17 13681724640 1.871109138182451e-06 160 +18 54723449280 1.87122707627687e-06 320 +19 218886898560 1.871286050899583e-06 640 +20 875533797120 1.871315539604969e-06 1280 +21 3502107594240 1.871330284306188e-06 2560 +22 14008375188480 1.871337656743932e-06 5120 +23 56033390376960 1.871341342984588e-06 10240 +24 224133340753920 1.871343186110362e-06 20480 -- !sql_test_SmallInt_BigInt_3 -- \N \N \N \N @@ -8958,56 +8958,56 @@ -- !sql_test_SmallInt_LargeInt_1 -- \N \N \N \N -1 1070906450 9.337883808618391E-8 10 -2 4279312900 9.347294982799692E-8 20 -3 17108625800 9.352007687256799E-8 40 -4 68417251600 9.354365821967628E-8 80 -5 273634503200 9.355545335336937E-8 160 -6 1094469006400 9.356135203574276E-8 320 -7 4377738012800 9.356430165587272E-8 640 -8 17510676025600 9.356577653568121E-8 1280 -9 70042152051200 9.356651399302229E-8 2560 -10 280167504102400 9.356688272605216E-8 5120 -11 1120667808204800 9.356706709365695E-8 10240 -12 4482666816409600 9.356715927773181E-8 20480 -13 1070906450 9.337883808618391E-8 10 -14 4279312900 9.347294982799692E-8 20 -15 17108625800 9.352007687256799E-8 40 -16 68417251600 9.354365821967628E-8 80 -17 273634503200 9.355545335336937E-8 160 -18 1094469006400 9.356135203574276E-8 320 -19 4377738012800 9.356430165587272E-8 640 -20 17510676025600 9.356577653568121E-8 1280 -21 70042152051200 9.356651399302229E-8 2560 -22 280167504102400 9.356688272605216E-8 5120 -23 1120667808204800 9.356706709365695E-8 10240 -24 4482666816409600 9.356715927773181E-8 20480 +1 1070906450 9.337883808618391e-08 10 +2 4279312900 9.347294982799692e-08 20 +3 17108625800 9.352007687256799e-08 40 +4 68417251600 9.354365821967628e-08 80 +5 273634503200 9.355545335336937e-08 160 +6 1094469006400 9.356135203574276e-08 320 +7 4377738012800 9.356430165587272e-08 640 +8 17510676025600 9.356577653568121e-08 1280 +9 70042152051200 9.356651399302229e-08 2560 +10 280167504102400 9.356688272605216e-08 5120 +11 1120667808204800 9.356706709365695e-08 10240 +12 4482666816409600 9.356715927773181e-08 20480 +13 1070906450 9.337883808618391e-08 10 +14 4279312900 9.347294982799692e-08 20 +15 17108625800 9.352007687256799e-08 40 +16 68417251600 9.354365821967628e-08 80 +17 273634503200 9.355545335336937e-08 160 +18 1094469006400 9.356135203574276e-08 320 +19 4377738012800 9.356430165587272e-08 640 +20 17510676025600 9.356577653568121e-08 1280 +21 70042152051200 9.356651399302229e-08 2560 +22 280167504102400 9.356688272605216e-08 5120 +23 1120667808204800 9.356706709365695e-08 10240 +24 4482666816409600 9.356715927773181e-08 20480 -- !sql_test_SmallInt_LargeInt_notn_1 -- -1 1070906450 9.337883808618391E-8 10 -2 4279312900 9.347294982799692E-8 20 -3 17108625800 9.352007687256799E-8 40 -4 68417251600 9.354365821967628E-8 80 -5 273634503200 9.355545335336937E-8 160 -6 1094469006400 9.356135203574276E-8 320 -7 4377738012800 9.356430165587272E-8 640 -8 17510676025600 9.356577653568121E-8 1280 -9 70042152051200 9.356651399302229E-8 2560 -10 280167504102400 9.356688272605216E-8 5120 -11 1120667808204800 9.356706709365695E-8 10240 -12 4482666816409600 9.356715927773181E-8 20480 -13 1070906450 9.337883808618391E-8 10 -14 4279312900 9.347294982799692E-8 20 -15 17108625800 9.352007687256799E-8 40 -16 68417251600 9.354365821967628E-8 80 -17 273634503200 9.355545335336937E-8 160 -18 1094469006400 9.356135203574276E-8 320 -19 4377738012800 9.356430165587272E-8 640 -20 17510676025600 9.356577653568121E-8 1280 -21 70042152051200 9.356651399302229E-8 2560 -22 280167504102400 9.356688272605216E-8 5120 -23 1120667808204800 9.356706709365695E-8 10240 -24 4482666816409600 9.356715927773181E-8 20480 +1 1070906450 9.337883808618391e-08 10 +2 4279312900 9.347294982799692e-08 20 +3 17108625800 9.352007687256799e-08 40 +4 68417251600 9.354365821967628e-08 80 +5 273634503200 9.355545335336937e-08 160 +6 1094469006400 9.356135203574276e-08 320 +7 4377738012800 9.356430165587272e-08 640 +8 17510676025600 9.356577653568121e-08 1280 +9 70042152051200 9.356651399302229e-08 2560 +10 280167504102400 9.356688272605216e-08 5120 +11 1120667808204800 9.356706709365695e-08 10240 +12 4482666816409600 9.356715927773181e-08 20480 +13 1070906450 9.337883808618391e-08 10 +14 4279312900 9.347294982799692e-08 20 +15 17108625800 9.352007687256799e-08 40 +16 68417251600 9.354365821967628e-08 80 +17 273634503200 9.355545335336937e-08 160 +18 1094469006400 9.356135203574276e-08 320 +19 4377738012800 9.356430165587272e-08 640 +20 17510676025600 9.356577653568121e-08 1280 +21 70042152051200 9.356651399302229e-08 2560 +22 280167504102400 9.356688272605216e-08 5120 +23 1120667808204800 9.356706709365695e-08 10240 +24 4482666816409600 9.356715927773181e-08 20480 -- !sql_test_SmallInt_LargeInt_3 -- \N \N \N \N @@ -9117,108 +9117,108 @@ -- !sql_test_SmallInt_Float_0 -- \N \N \N -1 10.100000001490116 9.899999998509884 -2 20.200000002980232 19.799999997019768 +1 10.10000000149012 9.899999998509884 +2 20.20000000298023 19.79999999701977 3 40.30000001192093 39.69999998807907 4 80.40000000596046 79.59999999403954 5 160.5 159.5 -6 320.60000002384186 319.39999997615814 +6 320.6000000238419 319.3999999761581 7 640.6999999880791 639.3000000119209 8 1280.800000011921 1279.199999988079 9 2560.899999976158 2559.100000023842 -10 5121.0 5119.0 -11 10241.100000023842 10238.899999976158 -12 20481.200000047684 20478.799999952316 -13 10.100000001490116 9.899999998509884 -14 20.200000002980232 19.799999997019768 +10 5121 5119 +11 10241.10000002384 10238.89999997616 +12 20481.20000004768 20478.79999995232 +13 10.10000000149012 9.899999998509884 +14 20.20000000298023 19.79999999701977 15 40.30000001192093 39.69999998807907 16 80.40000000596046 79.59999999403954 17 160.5 159.5 -18 320.60000002384186 319.39999997615814 +18 320.6000000238419 319.3999999761581 19 640.6999999880791 639.3000000119209 20 1280.800000011921 1279.199999988079 21 2560.899999976158 2559.100000023842 -22 5121.0 5119.0 -23 10241.100000023842 10238.899999976158 -24 20481.200000047684 20478.799999952316 +22 5121 5119 +23 10241.10000002384 10238.89999997616 +24 20481.20000004768 20478.79999995232 -- !sql_test_SmallInt_Float_notn_0 -- -1 10.100000001490116 9.899999998509884 -2 20.200000002980232 19.799999997019768 +1 10.10000000149012 9.899999998509884 +2 20.20000000298023 19.79999999701977 3 40.30000001192093 39.69999998807907 4 80.40000000596046 79.59999999403954 5 160.5 159.5 -6 320.60000002384186 319.39999997615814 +6 320.6000000238419 319.3999999761581 7 640.6999999880791 639.3000000119209 8 1280.800000011921 1279.199999988079 9 2560.899999976158 2559.100000023842 -10 5121.0 5119.0 -11 10241.100000023842 10238.899999976158 -12 20481.200000047684 20478.799999952316 -13 10.100000001490116 9.899999998509884 -14 20.200000002980232 19.799999997019768 +10 5121 5119 +11 10241.10000002384 10238.89999997616 +12 20481.20000004768 20478.79999995232 +13 10.10000000149012 9.899999998509884 +14 20.20000000298023 19.79999999701977 15 40.30000001192093 39.69999998807907 16 80.40000000596046 79.59999999403954 17 160.5 159.5 -18 320.60000002384186 319.39999997615814 +18 320.6000000238419 319.3999999761581 19 640.6999999880791 639.3000000119209 20 1280.800000011921 1279.199999988079 21 2560.899999976158 2559.100000023842 -22 5121.0 5119.0 -23 10241.100000023842 10238.899999976158 -24 20481.200000047684 20478.799999952316 +22 5121 5119 +23 10241.10000002384 10238.89999997616 +24 20481.20000004768 20478.79999995232 -- !sql_test_SmallInt_Float_1 -- \N \N \N \N -1 1.0000000149011612 99.99999850988391 0.09999985247850418 -2 4.000000059604645 99.99999850988391 0.19999970495700836 -3 12.000000476837158 133.3333280351429 0.09999841451644897 -4 32.00000047683716 199.99999701976782 0.39999881386756897 -5 80.0 320.0 0.0 -6 192.00000762939453 533.3333121405716 0.1999872922897339 -7 447.99999237060547 914.2857298559074 0.20001089572906494 -8 1024.000015258789 1599.9999761581425 0.7999809384346008 -9 2303.9999389648438 2844.444519796491 0.4000678062438965 -10 5120.0 5120.0 0.0 -11 11264.000244140625 9309.090707321802 0.09977805614471436 +1 1.000000014901161 99.99999850988391 0.09999985247850418 +2 4.000000059604645 99.99999850988391 0.1999997049570084 +3 12.00000047683716 133.3333280351429 0.09999841451644897 +4 32.00000047683716 199.9999970197678 0.399998813867569 +5 80 320 0 +6 192.0000076293945 533.3333121405716 0.1999872922897339 +7 447.9999923706055 914.2857298559074 0.2000108957290649 +8 1024.000015258789 1599.999976158143 0.7999809384346008 +9 2303.999938964844 2844.444519796491 0.4000678062438965 +10 5120 5120 0 +11 11264.00024414062 9309.090707321802 0.09977805614471436 12 24576.0009765625 17066.66598849829 0.7991862297058105 -13 1.0000000149011612 99.99999850988391 0.09999985247850418 -14 4.000000059604645 99.99999850988391 0.19999970495700836 -15 12.000000476837158 133.3333280351429 0.09999841451644897 -16 32.00000047683716 199.99999701976782 0.39999881386756897 -17 80.0 320.0 0.0 -18 192.00000762939453 533.3333121405716 0.1999872922897339 -19 447.99999237060547 914.2857298559074 0.20001089572906494 -20 1024.000015258789 1599.9999761581425 0.7999809384346008 -21 2303.9999389648438 2844.444519796491 0.4000678062438965 -22 5120.0 5120.0 0.0 -23 11264.000244140625 9309.090707321802 0.09977805614471436 +13 1.000000014901161 99.99999850988391 0.09999985247850418 +14 4.000000059604645 99.99999850988391 0.1999997049570084 +15 12.00000047683716 133.3333280351429 0.09999841451644897 +16 32.00000047683716 199.9999970197678 0.399998813867569 +17 80 320 0 +18 192.0000076293945 533.3333121405716 0.1999872922897339 +19 447.9999923706055 914.2857298559074 0.2000108957290649 +20 1024.000015258789 1599.999976158143 0.7999809384346008 +21 2303.999938964844 2844.444519796491 0.4000678062438965 +22 5120 5120 0 +23 11264.00024414062 9309.090707321802 0.09977805614471436 24 24576.0009765625 17066.66598849829 0.7991862297058105 -- !sql_test_SmallInt_Float_notn_1 -- -1 1.0000000149011612 99.99999850988391 0.09999985247850418 -2 4.000000059604645 99.99999850988391 0.19999970495700836 -3 12.000000476837158 133.3333280351429 0.09999841451644897 -4 32.00000047683716 199.99999701976782 0.39999881386756897 -5 80.0 320.0 0.0 -6 192.00000762939453 533.3333121405716 0.1999872922897339 -7 447.99999237060547 914.2857298559074 0.20001089572906494 -8 1024.000015258789 1599.9999761581425 0.7999809384346008 -9 2303.9999389648438 2844.444519796491 0.4000678062438965 -10 5120.0 5120.0 0.0 -11 11264.000244140625 9309.090707321802 0.09977805614471436 +1 1.000000014901161 99.99999850988391 0.09999985247850418 +2 4.000000059604645 99.99999850988391 0.1999997049570084 +3 12.00000047683716 133.3333280351429 0.09999841451644897 +4 32.00000047683716 199.9999970197678 0.399998813867569 +5 80 320 0 +6 192.0000076293945 533.3333121405716 0.1999872922897339 +7 447.9999923706055 914.2857298559074 0.2000108957290649 +8 1024.000015258789 1599.999976158143 0.7999809384346008 +9 2303.999938964844 2844.444519796491 0.4000678062438965 +10 5120 5120 0 +11 11264.00024414062 9309.090707321802 0.09977805614471436 12 24576.0009765625 17066.66598849829 0.7991862297058105 -13 1.0000000149011612 99.99999850988391 0.09999985247850418 -14 4.000000059604645 99.99999850988391 0.19999970495700836 -15 12.000000476837158 133.3333280351429 0.09999841451644897 -16 32.00000047683716 199.99999701976782 0.39999881386756897 -17 80.0 320.0 0.0 -18 192.00000762939453 533.3333121405716 0.1999872922897339 -19 447.99999237060547 914.2857298559074 0.20001089572906494 -20 1024.000015258789 1599.9999761581425 0.7999809384346008 -21 2303.9999389648438 2844.444519796491 0.4000678062438965 -22 5120.0 5120.0 0.0 -23 11264.000244140625 9309.090707321802 0.09977805614471436 +13 1.000000014901161 99.99999850988391 0.09999985247850418 +14 4.000000059604645 99.99999850988391 0.1999997049570084 +15 12.00000047683716 133.3333280351429 0.09999841451644897 +16 32.00000047683716 199.9999970197678 0.399998813867569 +17 80 320 0 +18 192.0000076293945 533.3333121405716 0.1999872922897339 +19 447.9999923706055 914.2857298559074 0.2000108957290649 +20 1024.000015258789 1599.999976158143 0.7999809384346008 +21 2303.999938964844 2844.444519796491 0.4000678062438965 +22 5120 5120 0 +23 11264.00024414062 9309.090707321802 0.09977805614471436 24 24576.0009765625 17066.66598849829 0.7991862297058105 -- !sql_test_SmallInt_Float_3 -- @@ -9330,54 +9330,54 @@ -- !sql_test_SmallInt_Double_1 -- \N \N \N \N 1 5.244 19.06941266209001 0.03640000000000043 -2 14.832 26.968716289104638 0.718399999999999 -3 41.471999999999994 38.58024691358025 0.6016000000000021 +2 14.832 26.96871628910464 0.718399999999999 +3 41.47199999999999 38.58024691358025 0.6016000000000021 4 115.928 55.206680008281 0.299499999999997 -5 324.96000000000004 78.77892663712457 1.5819999999999892 +5 324.96 78.77892663712457 1.581999999999989 6 913.5360000000001 112.0919153706039 0.2623999999999995 -7 2573.9519999999998 159.13272663981303 0.5338000000000287 -8 7263.360000000001 225.57053484888536 3.2374999999999776 -9 20516.095999999998 319.4369923010694 3.502100000000283 -10 57982.975999999995 452.1051144391071 1.1904000000001105 -11 163928.064 639.6561848006696 10.504599999999186 +7 2573.952 159.132726639813 0.5338000000000287 +8 7263.360000000001 225.5705348488854 3.237499999999978 +9 20516.096 319.4369923010694 3.502100000000283 +10 57982.976 452.1051144391071 1.19040000000011 +11 163928.064 639.6561848006696 10.50459999999919 12 463544.32 904.8334364230803 18.86399999999969 13 5.244 19.06941266209001 0.03640000000000043 -14 14.832 26.968716289104638 0.718399999999999 -15 41.471999999999994 38.58024691358025 0.6016000000000021 +14 14.832 26.96871628910464 0.718399999999999 +15 41.47199999999999 38.58024691358025 0.6016000000000021 16 115.928 55.206680008281 0.299499999999997 -17 324.96000000000004 78.77892663712457 1.5819999999999892 +17 324.96 78.77892663712457 1.581999999999989 18 913.5360000000001 112.0919153706039 0.2623999999999995 -19 2573.9519999999998 159.13272663981303 0.5338000000000287 -20 7263.360000000001 225.57053484888536 3.2374999999999776 -21 20516.095999999998 319.4369923010694 3.502100000000283 -22 57982.975999999995 452.1051144391071 1.1904000000001105 -23 163928.064 639.6561848006696 10.504599999999186 +19 2573.952 159.132726639813 0.5338000000000287 +20 7263.360000000001 225.5705348488854 3.237499999999978 +21 20516.096 319.4369923010694 3.502100000000283 +22 57982.976 452.1051144391071 1.19040000000011 +23 163928.064 639.6561848006696 10.50459999999919 24 463544.32 904.8334364230803 18.86399999999969 -- !sql_test_SmallInt_Double_notn_1 -- 1 5.244 19.06941266209001 0.03640000000000043 -2 14.832 26.968716289104638 0.718399999999999 -3 41.471999999999994 38.58024691358025 0.6016000000000021 +2 14.832 26.96871628910464 0.718399999999999 +3 41.47199999999999 38.58024691358025 0.6016000000000021 4 115.928 55.206680008281 0.299499999999997 -5 324.96000000000004 78.77892663712457 1.5819999999999892 +5 324.96 78.77892663712457 1.581999999999989 6 913.5360000000001 112.0919153706039 0.2623999999999995 -7 2573.9519999999998 159.13272663981303 0.5338000000000287 -8 7263.360000000001 225.57053484888536 3.2374999999999776 -9 20516.095999999998 319.4369923010694 3.502100000000283 -10 57982.975999999995 452.1051144391071 1.1904000000001105 -11 163928.064 639.6561848006696 10.504599999999186 +7 2573.952 159.132726639813 0.5338000000000287 +8 7263.360000000001 225.5705348488854 3.237499999999978 +9 20516.096 319.4369923010694 3.502100000000283 +10 57982.976 452.1051144391071 1.19040000000011 +11 163928.064 639.6561848006696 10.50459999999919 12 463544.32 904.8334364230803 18.86399999999969 13 5.244 19.06941266209001 0.03640000000000043 -14 14.832 26.968716289104638 0.718399999999999 -15 41.471999999999994 38.58024691358025 0.6016000000000021 +14 14.832 26.96871628910464 0.718399999999999 +15 41.47199999999999 38.58024691358025 0.6016000000000021 16 115.928 55.206680008281 0.299499999999997 -17 324.96000000000004 78.77892663712457 1.5819999999999892 +17 324.96 78.77892663712457 1.581999999999989 18 913.5360000000001 112.0919153706039 0.2623999999999995 -19 2573.9519999999998 159.13272663981303 0.5338000000000287 -20 7263.360000000001 225.57053484888536 3.2374999999999776 -21 20516.095999999998 319.4369923010694 3.502100000000283 -22 57982.975999999995 452.1051144391071 1.1904000000001105 -23 163928.064 639.6561848006696 10.504599999999186 +19 2573.952 159.132726639813 0.5338000000000287 +20 7263.360000000001 225.5705348488854 3.237499999999978 +21 20516.096 319.4369923010694 3.502100000000283 +22 57982.976 452.1051144391071 1.19040000000011 +23 163928.064 639.6561848006696 10.50459999999919 24 463544.32 904.8334364230803 18.86399999999969 -- !sql_test_SmallInt_Double_3 -- @@ -9435,109 +9435,109 @@ -- !sql_test_SmallInt_DecimalV2_0 -- \N \N \N -1 34.395000000 -14.395000000 -2 54.484000000 -14.484000000 -3 88.756000000 -8.756000000 -4 148.943000000 11.057000000 -5 257.494000000 62.506000000 -6 457.874000000 182.126000000 -7 834.980000000 445.020000000 +1 34.395200000 -14.395200000 +2 54.483700000 -14.483700000 +3 88.755800000 -8.755800000 +4 148.942900000 11.057100000 +5 257.494200000 62.505800000 +6 457.873600000 182.126400000 +7 834.979800000 445.020200000 8 1555.741000000 1004.259000000 -9 2949.955000000 2170.045000000 +9 2949.955300000 2170.044700000 10 5671.479000000 4568.521000000 -11 11019.908000000 9460.092000000 -12 21582.957000000 19377.043000000 -13 34.395000000 -14.395000000 -14 54.484000000 -14.484000000 -15 88.756000000 -8.756000000 -16 148.943000000 11.057000000 -17 257.494000000 62.506000000 -18 457.874000000 182.126000000 -19 834.980000000 445.020000000 +11 11019.908400000 9460.091600000 +12 21582.956500000 19377.043500000 +13 34.395200000 -14.395200000 +14 54.483700000 -14.483700000 +15 88.755800000 -8.755800000 +16 148.942900000 11.057100000 +17 257.494200000 62.505800000 +18 457.873600000 182.126400000 +19 834.979800000 445.020200000 20 1555.741000000 1004.259000000 -21 2949.955000000 2170.045000000 +21 2949.955300000 2170.044700000 22 5671.479000000 4568.521000000 -23 11019.908000000 9460.092000000 -24 21582.957000000 19377.043000000 +23 11019.908400000 9460.091600000 +24 21582.956500000 19377.043500000 -- !sql_test_SmallInt_DecimalV2_notn_0 -- -1 34.395000000 -14.395000000 -2 54.484000000 -14.484000000 -3 88.756000000 -8.756000000 -4 148.943000000 11.057000000 -5 257.494000000 62.506000000 -6 457.874000000 182.126000000 -7 834.980000000 445.020000000 +1 34.395200000 -14.395200000 +2 54.483700000 -14.483700000 +3 88.755800000 -8.755800000 +4 148.942900000 11.057100000 +5 257.494200000 62.505800000 +6 457.873600000 182.126400000 +7 834.979800000 445.020200000 8 1555.741000000 1004.259000000 -9 2949.955000000 2170.045000000 +9 2949.955300000 2170.044700000 10 5671.479000000 4568.521000000 -11 11019.908000000 9460.092000000 -12 21582.957000000 19377.043000000 -13 34.395000000 -14.395000000 -14 54.484000000 -14.484000000 -15 88.756000000 -8.756000000 -16 148.943000000 11.057000000 -17 257.494000000 62.506000000 -18 457.874000000 182.126000000 -19 834.980000000 445.020000000 +11 11019.908400000 9460.091600000 +12 21582.956500000 19377.043500000 +13 34.395200000 -14.395200000 +14 54.483700000 -14.483700000 +15 88.755800000 -8.755800000 +16 148.942900000 11.057100000 +17 257.494200000 62.505800000 +18 457.873600000 182.126400000 +19 834.979800000 445.020200000 20 1555.741000000 1004.259000000 -21 2949.955000000 2170.045000000 +21 2949.955300000 2170.044700000 22 5671.479000000 4568.521000000 -23 11019.908000000 9460.092000000 -24 21582.957000000 19377.043000000 +23 11019.908400000 9460.091600000 +24 21582.956500000 19377.043500000 -- !sql_test_SmallInt_DecimalV2_1 -- \N \N \N \N -1 243.950000000 0.409920066 10.000000000 -2 689.680000000 0.579979121 20.000000000 -3 1950.240000000 0.820411847 40.000000000 -4 5515.440000000 1.160378864 11.057000000 -5 15599.040000000 1.641126633 62.506000000 -6 44119.680000000 2.320959717 44.252000000 -7 124787.200000000 3.282387937 55.060000000 +1 243.952000000 0.409916705 10.000000000 +2 689.674000000 0.579984166 20.000000000 +3 1950.232000000 0.820415212 40.000000000 +4 5515.432000000 1.160380547 11.057100000 +5 15599.072000000 1.641123267 62.505800000 +6 44119.552000000 2.320966450 44.252800000 +7 124787.072000000 3.282391304 55.060600000 8 352948.480000000 4.642037274 177.036000000 -9 998284.800000000 6.564860048 220.270000000 +9 998285.568000000 6.564854997 220.268200000 10 2823572.480000000 9.284125053 156.689000000 -11 7986257.920000000 13.129753766 101.196000000 -12 22588559.360000000 18.568266941 626.774000000 -13 243.950000000 0.409920066 10.000000000 -14 689.680000000 0.579979121 20.000000000 -15 1950.240000000 0.820411847 40.000000000 -16 5515.440000000 1.160378864 11.057000000 -17 15599.040000000 1.641126633 62.506000000 -18 44119.680000000 2.320959717 44.252000000 -19 124787.200000000 3.282387937 55.060000000 +11 7986262.016000000 13.129747032 101.190800000 +12 22588549.120000000 18.568275358 626.783000000 +13 243.952000000 0.409916705 10.000000000 +14 689.674000000 0.579984166 20.000000000 +15 1950.232000000 0.820415212 40.000000000 +16 5515.432000000 1.160380547 11.057100000 +17 15599.072000000 1.641123267 62.505800000 +18 44119.552000000 2.320966450 44.252800000 +19 124787.072000000 3.282391304 55.060600000 20 352948.480000000 4.642037274 177.036000000 -21 998284.800000000 6.564860048 220.270000000 +21 998285.568000000 6.564854997 220.268200000 22 2823572.480000000 9.284125053 156.689000000 -23 7986257.920000000 13.129753766 101.196000000 -24 22588559.360000000 18.568266941 626.774000000 +23 7986262.016000000 13.129747032 101.190800000 +24 22588549.120000000 18.568275358 626.783000000 -- !sql_test_SmallInt_DecimalV2_notn_1 -- -1 243.950000000 0.409920066 10.000000000 -2 689.680000000 0.579979121 20.000000000 -3 1950.240000000 0.820411847 40.000000000 -4 5515.440000000 1.160378864 11.057000000 -5 15599.040000000 1.641126633 62.506000000 -6 44119.680000000 2.320959717 44.252000000 -7 124787.200000000 3.282387937 55.060000000 +1 243.952000000 0.409916705 10.000000000 +2 689.674000000 0.579984166 20.000000000 +3 1950.232000000 0.820415212 40.000000000 +4 5515.432000000 1.160380547 11.057100000 +5 15599.072000000 1.641123267 62.505800000 +6 44119.552000000 2.320966450 44.252800000 +7 124787.072000000 3.282391304 55.060600000 8 352948.480000000 4.642037274 177.036000000 -9 998284.800000000 6.564860048 220.270000000 +9 998285.568000000 6.564854997 220.268200000 10 2823572.480000000 9.284125053 156.689000000 -11 7986257.920000000 13.129753766 101.196000000 -12 22588559.360000000 18.568266941 626.774000000 -13 243.950000000 0.409920066 10.000000000 -14 689.680000000 0.579979121 20.000000000 -15 1950.240000000 0.820411847 40.000000000 -16 5515.440000000 1.160378864 11.057000000 -17 15599.040000000 1.641126633 62.506000000 -18 44119.680000000 2.320959717 44.252000000 -19 124787.200000000 3.282387937 55.060000000 +11 7986262.016000000 13.129747032 101.190800000 +12 22588549.120000000 18.568275358 626.783000000 +13 243.952000000 0.409916705 10.000000000 +14 689.674000000 0.579984166 20.000000000 +15 1950.232000000 0.820415212 40.000000000 +16 5515.432000000 1.160380547 11.057100000 +17 15599.072000000 1.641123267 62.505800000 +18 44119.552000000 2.320966450 44.252800000 +19 124787.072000000 3.282391304 55.060600000 20 352948.480000000 4.642037274 177.036000000 -21 998284.800000000 6.564860048 220.270000000 +21 998285.568000000 6.564854997 220.268200000 22 2823572.480000000 9.284125053 156.689000000 -23 7986257.920000000 13.129753766 101.196000000 -24 22588559.360000000 18.568266941 626.774000000 +23 7986262.016000000 13.129747032 101.190800000 +24 22588549.120000000 18.568275358 626.783000000 -- !sql_test_SmallInt_DecimalV2_2 -- \N \N @@ -9981,12 +9981,12 @@ 14 238.094 -198.094 15 348.359 -268.359 16 516.033 -356.033 -17 776.608 -456.60799999999995 +17 776.6079999999999 -456.6079999999999 18 1191.989 -551.989 19 1873.161 -593.1610000000001 -20 3023.94 -463.94000000000005 +20 3023.94 -463.9400000000001 21 5026.294 93.70600000000013 -22 8607.86 1632.1399999999999 +22 8607.860000000001 1632.14 23 15172.574 5307.426 24 27455.71 13504.29 @@ -10007,12 +10007,12 @@ 14 238.094 -198.094 15 348.359 -268.359 16 516.033 -356.033 -17 776.608 -456.60799999999995 +17 776.6079999999999 -456.6079999999999 18 1191.989 -551.989 19 1873.161 -593.1610000000001 -20 3023.94 -463.94000000000005 +20 3023.94 -463.9400000000001 21 5026.294 93.70600000000013 -22 8607.86 1632.1399999999999 +22 8607.860000000001 1632.14 23 15172.574 5307.426 24 27455.71 13504.29 @@ -10030,18 +10030,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1542.8899999999999 0.06481343452870912 10.0 -14 4361.88 0.09170357735655268 20.0 -15 12334.359999999999 0.1297189315051612 40.0 -16 34882.64 0.1834723518632764 80.0 -17 98657.28 0.25948414551870885 160.0 -18 279036.48 0.36697710636258024 320.0 -19 789223.04 0.5189914374522061 640.0 -20 2232243.2 0.7339702053969747 1280.0 +13 1542.89 0.06481343452870912 10 +14 4361.88 0.09170357735655268 20 +15 12334.36 0.1297189315051612 40 +16 34882.64 0.1834723518632764 80 +17 98657.28 0.2594841455187089 160 +18 279036.48 0.3669771063625802 320 +19 789223.04 0.5189914374522061 640 +20 2232243.2 0.7339702053969747 1280 21 6313712.64 1.037994659193105 93.70600000000013 -22 1.78578432E7 1.4679488282213162 1632.1399999999999 -23 5.050955776E7 2.0759952106141744 374.85200000000077 -24 1.428625408E8 2.9359018651864828 6528.58 +22 17857843.2 1.467948828221316 1632.14 +23 50509557.76 2.075995210614174 374.8520000000008 +24 142862540.8 2.935901865186483 6528.58 -- !sql_test_SmallInt_Char_notn_1 -- 1 \N \N \N @@ -10056,18 +10056,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1542.8899999999999 0.06481343452870912 10.0 -14 4361.88 0.09170357735655268 20.0 -15 12334.359999999999 0.1297189315051612 40.0 -16 34882.64 0.1834723518632764 80.0 -17 98657.28 0.25948414551870885 160.0 -18 279036.48 0.36697710636258024 320.0 -19 789223.04 0.5189914374522061 640.0 -20 2232243.2 0.7339702053969747 1280.0 +13 1542.89 0.06481343452870912 10 +14 4361.88 0.09170357735655268 20 +15 12334.36 0.1297189315051612 40 +16 34882.64 0.1834723518632764 80 +17 98657.28 0.2594841455187089 160 +18 279036.48 0.3669771063625802 320 +19 789223.04 0.5189914374522061 640 +20 2232243.2 0.7339702053969747 1280 21 6313712.64 1.037994659193105 93.70600000000013 -22 1.78578432E7 1.4679488282213162 1632.1399999999999 -23 5.050955776E7 2.0759952106141744 374.85200000000077 -24 1.428625408E8 2.9359018651864828 6528.58 +22 17857843.2 1.467948828221316 1632.14 +23 50509557.76 2.075995210614174 374.8520000000008 +24 142862540.8 2.935901865186483 6528.58 -- !sql_test_SmallInt_Char_3 -- \N \N \N \N @@ -10147,7 +10147,7 @@ 21 39628.731 -34508.731 22 57542.999 -47302.999 23 84377.243 -63897.243 -24 125325.843 -84365.843 +24 125325.843 -84365.84299999999 -- !sql_test_SmallInt_Varchar_notn_0 -- 1 \N \N @@ -10173,7 +10173,7 @@ 21 39628.731 -34508.731 22 57542.999 -47302.999 23 84377.243 -63897.243 -24 125325.843 -84365.843 +24 125325.843 -84365.84299999999 -- !sql_test_SmallInt_Varchar_1 -- \N \N \N \N @@ -10189,18 +10189,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 23191.21 0.004311978547044333 10.0 -14 65561.64 0.0061011286477885545 20.0 -15 185389.64 0.00863047147618389 40.0 -16 524295.04 0.012206867339427815 80.0 -17 1482836.7999999998 0.017264206013770364 160.0 -18 4193963.8400000003 0.02441604265238491 320.0 -19 1.1862134399999999E7 0.03453004208079113 640.0 -20 3.3550917119999997E7 0.048833240359421805 1280.0 -21 9.489595136E7 0.0690609020308788 2560.0 -22 2.6840575488000003E8 0.09766705640018801 5120.0 -23 7.5916536832E8 0.13812221207092903 10240.0 -24 2.1472428646399999E9 0.1953344015747005 20480.0 +13 23191.21 0.004311978547044333 10 +14 65561.64 0.006101128647788555 20 +15 185389.64 0.00863047147618389 40 +16 524295.04 0.01220686733942782 80 +17 1482836.8 0.01726420601377036 160 +18 4193963.84 0.02441604265238491 320 +19 11862134.4 0.03453004208079113 640 +20 33550917.12 0.0488332403594218 1280 +21 94895951.36 0.06906090203087881 2560 +22 268405754.88 0.09766705640018801 5120 +23 759165368.3200001 0.138122212070929 10240 +24 2147242864.64 0.1953344015747005 20480 -- !sql_test_SmallInt_Varchar_notn_1 -- 1 \N \N \N @@ -10215,18 +10215,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 23191.21 0.004311978547044333 10.0 -14 65561.64 0.0061011286477885545 20.0 -15 185389.64 0.00863047147618389 40.0 -16 524295.04 0.012206867339427815 80.0 -17 1482836.7999999998 0.017264206013770364 160.0 -18 4193963.8400000003 0.02441604265238491 320.0 -19 1.1862134399999999E7 0.03453004208079113 640.0 -20 3.3550917119999997E7 0.048833240359421805 1280.0 -21 9.489595136E7 0.0690609020308788 2560.0 -22 2.6840575488000003E8 0.09766705640018801 5120.0 -23 7.5916536832E8 0.13812221207092903 10240.0 -24 2.1472428646399999E9 0.1953344015747005 20480.0 +13 23191.21 0.004311978547044333 10 +14 65561.64 0.006101128647788555 20 +15 185389.64 0.00863047147618389 40 +16 524295.04 0.01220686733942782 80 +17 1482836.8 0.01726420601377036 160 +18 4193963.84 0.02441604265238491 320 +19 11862134.4 0.03453004208079113 640 +20 33550917.12 0.0488332403594218 1280 +21 94895951.36 0.06906090203087881 2560 +22 268405754.88 0.09766705640018801 5120 +23 759165368.3200001 0.138122212070929 10240 +24 2147242864.64 0.1953344015747005 20480 -- !sql_test_SmallInt_Varchar_3 -- \N \N \N \N @@ -10301,7 +10301,7 @@ 16 30046.255 -29886.255 17 42536.012 -42216.012 18 60246.842 -59606.842 -19 85388.017 -84108.017 +19 85388.01700000001 -84108.01700000001 20 121130.851 -118570.851 21 172054.031 -166934.031 22 244820.285 -234580.285 @@ -10327,7 +10327,7 @@ 16 30046.255 -29886.255 17 42536.012 -42216.012 18 60246.842 -59606.842 -19 85388.017 -84108.017 +19 85388.01700000001 -84108.01700000001 20 121130.851 -118570.851 21 172054.031 -166934.031 22 244820.285 -234580.285 @@ -10348,18 +10348,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 106040.17 9.43038850277211E-4 10.0 -14 299775.86 0.0013343302559452252 20.0 -15 847680.52 0.0018875035608934367 40.0 -16 2397300.4 0.002669669600021758 80.0 -17 6780161.92 0.003775721037647431 160.0 -18 1.9176589439999998E7 0.005339844205372945 320.0 -19 5.423873088E7 0.007551799117612392 640.0 -20 1.5340908928E8 0.010679940854153802 1280.0 -21 4.3390471935999995E8 0.015103776722379092 2560.0 -22 1.2272654592E9 0.02136000797829673 5120.0 -23 3.47122748416E9 0.030207642823320873 10240.0 -24 9.818109153279999E9 0.04272007913661035 20480.0 +13 106040.17 0.000943038850277211 10 +14 299775.86 0.001334330255945225 20 +15 847680.52 0.001887503560893437 40 +16 2397300.4 0.002669669600021758 80 +17 6780161.92 0.003775721037647431 160 +18 19176589.44 0.005339844205372945 320 +19 54238730.88 0.007551799117612392 640 +20 153409089.28 0.0106799408541538 1280 +21 433904719.36 0.01510377672237909 2560 +22 1227265459.2 0.02136000797829673 5120 +23 3471227484.16 0.03020764282332087 10240 +24 9818109153.279999 0.04272007913661035 20480 -- !sql_test_SmallInt_String_notn_1 -- 1 \N \N \N @@ -10374,18 +10374,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 106040.17 9.43038850277211E-4 10.0 -14 299775.86 0.0013343302559452252 20.0 -15 847680.52 0.0018875035608934367 40.0 -16 2397300.4 0.002669669600021758 80.0 -17 6780161.92 0.003775721037647431 160.0 -18 1.9176589439999998E7 0.005339844205372945 320.0 -19 5.423873088E7 0.007551799117612392 640.0 -20 1.5340908928E8 0.010679940854153802 1280.0 -21 4.3390471935999995E8 0.015103776722379092 2560.0 -22 1.2272654592E9 0.02136000797829673 5120.0 -23 3.47122748416E9 0.030207642823320873 10240.0 -24 9.818109153279999E9 0.04272007913661035 20480.0 +13 106040.17 0.000943038850277211 10 +14 299775.86 0.001334330255945225 20 +15 847680.52 0.001887503560893437 40 +16 2397300.4 0.002669669600021758 80 +17 6780161.92 0.003775721037647431 160 +18 19176589.44 0.005339844205372945 320 +19 54238730.88 0.007551799117612392 640 +20 153409089.28 0.0106799408541538 1280 +21 433904719.36 0.01510377672237909 2560 +22 1227265459.2 0.02136000797829673 5120 +23 3471227484.16 0.03020764282332087 10240 +24 9818109153.279999 0.04272007913661035 20480 -- !sql_test_SmallInt_String_3 -- \N \N \N \N @@ -10495,56 +10495,56 @@ -- !sql_test_SmallInt_Date_1 -- \N \N \N \N -1 201203010 4.970104572491237E-7 10 -2 402406040 9.940208650943708E-7 20 -3 804812120 1.9880416313809986E-6 40 -4 1609624320 3.9760830651465306E-6 80 -5 3219248800 7.952165735062167E-6 160 -6 6438497920 1.5904330679662627E-5 320 -7 12876996480 3.180865977840199E-5 640 -8 25753994240 6.361731639495777E-5 1280 -9 51507991040 1.2723462646622375E-4 2560 -10 103015987200 2.544692402850652E-4 5120 -11 206031984640 5.089384552753683E-4 10240 -12 412063989760 0.0010178768599612173 20480 -13 201203010 4.970104572491237E-7 10 -14 402406040 9.940208650943708E-7 20 -15 804812120 1.9880416313809986E-6 40 -16 1609624320 3.9760830651465306E-6 80 -17 3219248800 7.952165735062167E-6 160 -18 6438497920 1.5904330679662627E-5 320 -19 12876996480 3.180865977840199E-5 640 -20 25753994240 6.361731639495777E-5 1280 -21 51507991040 1.2723462646622375E-4 2560 -22 103015987200 2.544692402850652E-4 5120 -23 206031984640 5.089384552753683E-4 10240 -24 412063989760 0.0010178768599612173 20480 +1 201203010 4.970104572491237e-07 10 +2 402406040 9.940208650943708e-07 20 +3 804812120 1.988041631380999e-06 40 +4 1609624320 3.976083065146531e-06 80 +5 3219248800 7.952165735062167e-06 160 +6 6438497920 1.590433067966263e-05 320 +7 12876996480 3.180865977840199e-05 640 +8 25753994240 6.361731639495777e-05 1280 +9 51507991040 0.0001272346264662238 2560 +10 103015987200 0.0002544692402850652 5120 +11 206031984640 0.0005089384552753683 10240 +12 412063989760 0.001017876859961217 20480 +13 201203010 4.970104572491237e-07 10 +14 402406040 9.940208650943708e-07 20 +15 804812120 1.988041631380999e-06 40 +16 1609624320 3.976083065146531e-06 80 +17 3219248800 7.952165735062167e-06 160 +18 6438497920 1.590433067966263e-05 320 +19 12876996480 3.180865977840199e-05 640 +20 25753994240 6.361731639495777e-05 1280 +21 51507991040 0.0001272346264662238 2560 +22 103015987200 0.0002544692402850652 5120 +23 206031984640 0.0005089384552753683 10240 +24 412063989760 0.001017876859961217 20480 -- !sql_test_SmallInt_Date_notn_1 -- -1 201203010 4.970104572491237E-7 10 -2 402406040 9.940208650943708E-7 20 -3 804812120 1.9880416313809986E-6 40 -4 1609624320 3.9760830651465306E-6 80 -5 3219248800 7.952165735062167E-6 160 -6 6438497920 1.5904330679662627E-5 320 -7 12876996480 3.180865977840199E-5 640 -8 25753994240 6.361731639495777E-5 1280 -9 51507991040 1.2723462646622375E-4 2560 -10 103015987200 2.544692402850652E-4 5120 -11 206031984640 5.089384552753683E-4 10240 -12 412063989760 0.0010178768599612173 20480 -13 201203010 4.970104572491237E-7 10 -14 402406040 9.940208650943708E-7 20 -15 804812120 1.9880416313809986E-6 40 -16 1609624320 3.9760830651465306E-6 80 -17 3219248800 7.952165735062167E-6 160 -18 6438497920 1.5904330679662627E-5 320 -19 12876996480 3.180865977840199E-5 640 -20 25753994240 6.361731639495777E-5 1280 -21 51507991040 1.2723462646622375E-4 2560 -22 103015987200 2.544692402850652E-4 5120 -23 206031984640 5.089384552753683E-4 10240 -24 412063989760 0.0010178768599612173 20480 +1 201203010 4.970104572491237e-07 10 +2 402406040 9.940208650943708e-07 20 +3 804812120 1.988041631380999e-06 40 +4 1609624320 3.976083065146531e-06 80 +5 3219248800 7.952165735062167e-06 160 +6 6438497920 1.590433067966263e-05 320 +7 12876996480 3.180865977840199e-05 640 +8 25753994240 6.361731639495777e-05 1280 +9 51507991040 0.0001272346264662238 2560 +10 103015987200 0.0002544692402850652 5120 +11 206031984640 0.0005089384552753683 10240 +12 412063989760 0.001017876859961217 20480 +13 201203010 4.970104572491237e-07 10 +14 402406040 9.940208650943708e-07 20 +15 804812120 1.988041631380999e-06 40 +16 1609624320 3.976083065146531e-06 80 +17 3219248800 7.952165735062167e-06 160 +18 6438497920 1.590433067966263e-05 320 +19 12876996480 3.180865977840199e-05 640 +20 25753994240 6.361731639495777e-05 1280 +21 51507991040 0.0001272346264662238 2560 +22 103015987200 0.0002544692402850652 5120 +23 206031984640 0.0005089384552753683 10240 +24 412063989760 0.001017876859961217 20480 -- !sql_test_SmallInt_Date_3 -- \N \N \N \N @@ -10707,56 +10707,56 @@ -- !sql_test_SmallInt_DateTime_1 -- \N \N \N \N -1 201203010100010 4.970104570020795E-13 10 -2 402406040402040 9.940208641012542E-13 20 -3 804812121208120 1.9880416283967083E-12 40 -4 1609624323224320 3.976083057181837E-12 80 -5 3219248808064800 7.952165715140554E-12 160 -6 6438497939361920 1.590433063183495E-11 320 -7 12876996525188480 3.180865966677775E-11 640 -8 25753994343306240 6.36173161397715E-11 1280 -9 51507991272471040 1.2723462589197567E-10 2560 -10 103015987716659200 2.5446923900881793E-10 5120 -11 206031985776752640 5.089384524673715E-10 10240 -12 412063992240373760 1.0178768538342198E-9 20480 -13 201203010100010 4.970104570020795E-13 10 -14 402406040402040 9.940208641012542E-13 20 -15 804812121208120 1.9880416283967083E-12 40 -16 1609624323224320 3.976083057181837E-12 80 -17 3219248808064800 7.952165715140554E-12 160 -18 6438497939361920 1.590433063183495E-11 320 -19 12876996525188480 3.180865966677775E-11 640 -20 25753994343306240 6.36173161397715E-11 1280 -21 51507991272471040 1.2723462589197567E-10 2560 -22 103015987716659200 2.5446923900881793E-10 5120 -23 206031985776752640 5.089384524673715E-10 10240 -24 412063992240373760 1.0178768538342198E-9 20480 +1 201203010100010 4.970104570020795e-13 10 +2 402406040402040 9.940208641012542e-13 20 +3 804812121208120 1.988041628396708e-12 40 +4 1609624323224320 3.976083057181837e-12 80 +5 3219248808064800 7.952165715140554e-12 160 +6 6438497939361920 1.590433063183495e-11 320 +7 12876996525188480 3.180865966677775e-11 640 +8 25753994343306240 6.36173161397715e-11 1280 +9 51507991272471040 1.272346258919757e-10 2560 +10 103015987716659200 2.544692390088179e-10 5120 +11 206031985776752640 5.089384524673715e-10 10240 +12 412063992240373760 1.01787685383422e-09 20480 +13 201203010100010 4.970104570020795e-13 10 +14 402406040402040 9.940208641012542e-13 20 +15 804812121208120 1.988041628396708e-12 40 +16 1609624323224320 3.976083057181837e-12 80 +17 3219248808064800 7.952165715140554e-12 160 +18 6438497939361920 1.590433063183495e-11 320 +19 12876996525188480 3.180865966677775e-11 640 +20 25753994343306240 6.36173161397715e-11 1280 +21 51507991272471040 1.272346258919757e-10 2560 +22 103015987716659200 2.544692390088179e-10 5120 +23 206031985776752640 5.089384524673715e-10 10240 +24 412063992240373760 1.01787685383422e-09 20480 -- !sql_test_SmallInt_DateTime_notn_1 -- -1 201203010100010 4.970104570020795E-13 10 -2 402406040402040 9.940208641012542E-13 20 -3 804812121208120 1.9880416283967083E-12 40 -4 1609624323224320 3.976083057181837E-12 80 -5 3219248808064800 7.952165715140554E-12 160 -6 6438497939361920 1.590433063183495E-11 320 -7 12876996525188480 3.180865966677775E-11 640 -8 25753994343306240 6.36173161397715E-11 1280 -9 51507991272471040 1.2723462589197567E-10 2560 -10 103015987716659200 2.5446923900881793E-10 5120 -11 206031985776752640 5.089384524673715E-10 10240 -12 412063992240373760 1.0178768538342198E-9 20480 -13 201203010100010 4.970104570020795E-13 10 -14 402406040402040 9.940208641012542E-13 20 -15 804812121208120 1.9880416283967083E-12 40 -16 1609624323224320 3.976083057181837E-12 80 -17 3219248808064800 7.952165715140554E-12 160 -18 6438497939361920 1.590433063183495E-11 320 -19 12876996525188480 3.180865966677775E-11 640 -20 25753994343306240 6.36173161397715E-11 1280 -21 51507991272471040 1.2723462589197567E-10 2560 -22 103015987716659200 2.5446923900881793E-10 5120 -23 206031985776752640 5.089384524673715E-10 10240 -24 412063992240373760 1.0178768538342198E-9 20480 +1 201203010100010 4.970104570020795e-13 10 +2 402406040402040 9.940208641012542e-13 20 +3 804812121208120 1.988041628396708e-12 40 +4 1609624323224320 3.976083057181837e-12 80 +5 3219248808064800 7.952165715140554e-12 160 +6 6438497939361920 1.590433063183495e-11 320 +7 12876996525188480 3.180865966677775e-11 640 +8 25753994343306240 6.36173161397715e-11 1280 +9 51507991272471040 1.272346258919757e-10 2560 +10 103015987716659200 2.544692390088179e-10 5120 +11 206031985776752640 5.089384524673715e-10 10240 +12 412063992240373760 1.01787685383422e-09 20480 +13 201203010100010 4.970104570020795e-13 10 +14 402406040402040 9.940208641012542e-13 20 +15 804812121208120 1.988041628396708e-12 40 +16 1609624323224320 3.976083057181837e-12 80 +17 3219248808064800 7.952165715140554e-12 160 +18 6438497939361920 1.590433063183495e-11 320 +19 12876996525188480 3.180865966677775e-11 640 +20 25753994343306240 6.36173161397715e-11 1280 +21 51507991272471040 1.272346258919757e-10 2560 +22 103015987716659200 2.544692390088179e-10 5120 +23 206031985776752640 5.089384524673715e-10 10240 +24 412063992240373760 1.01787685383422e-09 20480 -- !sql_test_SmallInt_DateTime_3 -- \N \N \N \N @@ -10919,56 +10919,56 @@ -- !sql_test_SmallInt_DateV2_1 -- \N \N \N \N -1 201203010 4.970104572491237E-7 10 -2 402406040 9.940208650943708E-7 20 -3 804812120 1.9880416313809986E-6 40 -4 1609624320 3.9760830651465306E-6 80 -5 3219248800 7.952165735062167E-6 160 -6 6438497920 1.5904330679662627E-5 320 -7 12876996480 3.180865977840199E-5 640 -8 25753994240 6.361731639495777E-5 1280 -9 51507991040 1.2723462646622375E-4 2560 -10 103015987200 2.544692402850652E-4 5120 -11 206031984640 5.089384552753683E-4 10240 -12 412063989760 0.0010178768599612173 20480 -13 201203010 4.970104572491237E-7 10 -14 402406040 9.940208650943708E-7 20 -15 804812120 1.9880416313809986E-6 40 -16 1609624320 3.9760830651465306E-6 80 -17 3219248800 7.952165735062167E-6 160 -18 6438497920 1.5904330679662627E-5 320 -19 12876996480 3.180865977840199E-5 640 -20 25753994240 6.361731639495777E-5 1280 -21 51507991040 1.2723462646622375E-4 2560 -22 103015987200 2.544692402850652E-4 5120 -23 206031984640 5.089384552753683E-4 10240 -24 412063989760 0.0010178768599612173 20480 +1 201203010 4.970104572491237e-07 10 +2 402406040 9.940208650943708e-07 20 +3 804812120 1.988041631380999e-06 40 +4 1609624320 3.976083065146531e-06 80 +5 3219248800 7.952165735062167e-06 160 +6 6438497920 1.590433067966263e-05 320 +7 12876996480 3.180865977840199e-05 640 +8 25753994240 6.361731639495777e-05 1280 +9 51507991040 0.0001272346264662238 2560 +10 103015987200 0.0002544692402850652 5120 +11 206031984640 0.0005089384552753683 10240 +12 412063989760 0.001017876859961217 20480 +13 201203010 4.970104572491237e-07 10 +14 402406040 9.940208650943708e-07 20 +15 804812120 1.988041631380999e-06 40 +16 1609624320 3.976083065146531e-06 80 +17 3219248800 7.952165735062167e-06 160 +18 6438497920 1.590433067966263e-05 320 +19 12876996480 3.180865977840199e-05 640 +20 25753994240 6.361731639495777e-05 1280 +21 51507991040 0.0001272346264662238 2560 +22 103015987200 0.0002544692402850652 5120 +23 206031984640 0.0005089384552753683 10240 +24 412063989760 0.001017876859961217 20480 -- !sql_test_SmallInt_DateV2_notn_1 -- -1 201203010 4.970104572491237E-7 10 -2 402406040 9.940208650943708E-7 20 -3 804812120 1.9880416313809986E-6 40 -4 1609624320 3.9760830651465306E-6 80 -5 3219248800 7.952165735062167E-6 160 -6 6438497920 1.5904330679662627E-5 320 -7 12876996480 3.180865977840199E-5 640 -8 25753994240 6.361731639495777E-5 1280 -9 51507991040 1.2723462646622375E-4 2560 -10 103015987200 2.544692402850652E-4 5120 -11 206031984640 5.089384552753683E-4 10240 -12 412063989760 0.0010178768599612173 20480 -13 201203010 4.970104572491237E-7 10 -14 402406040 9.940208650943708E-7 20 -15 804812120 1.9880416313809986E-6 40 -16 1609624320 3.9760830651465306E-6 80 -17 3219248800 7.952165735062167E-6 160 -18 6438497920 1.5904330679662627E-5 320 -19 12876996480 3.180865977840199E-5 640 -20 25753994240 6.361731639495777E-5 1280 -21 51507991040 1.2723462646622375E-4 2560 -22 103015987200 2.544692402850652E-4 5120 -23 206031984640 5.089384552753683E-4 10240 -24 412063989760 0.0010178768599612173 20480 +1 201203010 4.970104572491237e-07 10 +2 402406040 9.940208650943708e-07 20 +3 804812120 1.988041631380999e-06 40 +4 1609624320 3.976083065146531e-06 80 +5 3219248800 7.952165735062167e-06 160 +6 6438497920 1.590433067966263e-05 320 +7 12876996480 3.180865977840199e-05 640 +8 25753994240 6.361731639495777e-05 1280 +9 51507991040 0.0001272346264662238 2560 +10 103015987200 0.0002544692402850652 5120 +11 206031984640 0.0005089384552753683 10240 +12 412063989760 0.001017876859961217 20480 +13 201203010 4.970104572491237e-07 10 +14 402406040 9.940208650943708e-07 20 +15 804812120 1.988041631380999e-06 40 +16 1609624320 3.976083065146531e-06 80 +17 3219248800 7.952165735062167e-06 160 +18 6438497920 1.590433067966263e-05 320 +19 12876996480 3.180865977840199e-05 640 +20 25753994240 6.361731639495777e-05 1280 +21 51507991040 0.0001272346264662238 2560 +22 103015987200 0.0002544692402850652 5120 +23 206031984640 0.0005089384552753683 10240 +24 412063989760 0.001017876859961217 20480 -- !sql_test_SmallInt_DateV2_3 -- \N \N \N \N @@ -11131,56 +11131,56 @@ -- !sql_test_SmallInt_DateTimeV2_1 -- \N \N \N \N -1 201203010100010 4.970104570020795E-13 10 -2 402406040402040 9.940208641012542E-13 20 -3 804812121208120 1.9880416283967083E-12 40 -4 1609624323224320 3.976083057181837E-12 80 -5 3219248808064800 7.952165715140554E-12 160 -6 6438497939361920 1.590433063183495E-11 320 -7 12876996525188480 3.180865966677775E-11 640 -8 25753994343306240 6.36173161397715E-11 1280 -9 51507991272471040 1.2723462589197567E-10 2560 -10 103015987716659200 2.5446923900881793E-10 5120 -11 206031985776752640 5.089384524673715E-10 10240 -12 412063992240373760 1.0178768538342198E-9 20480 -13 201203010100010 4.970104570020795E-13 10 -14 402406040402040 9.940208641012542E-13 20 -15 804812121208120 1.9880416283967083E-12 40 -16 1609624323224320 3.976083057181837E-12 80 -17 3219248808064800 7.952165715140554E-12 160 -18 6438497939361920 1.590433063183495E-11 320 -19 12876996525188480 3.180865966677775E-11 640 -20 25753994343306240 6.36173161397715E-11 1280 -21 51507991272471040 1.2723462589197567E-10 2560 -22 103015987716659200 2.5446923900881793E-10 5120 -23 206031985776752640 5.089384524673715E-10 10240 -24 412063992240373760 1.0178768538342198E-9 20480 +1 201203010100010 4.970104570020795e-13 10 +2 402406040402040 9.940208641012542e-13 20 +3 804812121208120 1.988041628396708e-12 40 +4 1609624323224320 3.976083057181837e-12 80 +5 3219248808064800 7.952165715140554e-12 160 +6 6438497939361920 1.590433063183495e-11 320 +7 12876996525188480 3.180865966677775e-11 640 +8 25753994343306240 6.36173161397715e-11 1280 +9 51507991272471040 1.272346258919757e-10 2560 +10 103015987716659200 2.544692390088179e-10 5120 +11 206031985776752640 5.089384524673715e-10 10240 +12 412063992240373760 1.01787685383422e-09 20480 +13 201203010100010 4.970104570020795e-13 10 +14 402406040402040 9.940208641012542e-13 20 +15 804812121208120 1.988041628396708e-12 40 +16 1609624323224320 3.976083057181837e-12 80 +17 3219248808064800 7.952165715140554e-12 160 +18 6438497939361920 1.590433063183495e-11 320 +19 12876996525188480 3.180865966677775e-11 640 +20 25753994343306240 6.36173161397715e-11 1280 +21 51507991272471040 1.272346258919757e-10 2560 +22 103015987716659200 2.544692390088179e-10 5120 +23 206031985776752640 5.089384524673715e-10 10240 +24 412063992240373760 1.01787685383422e-09 20480 -- !sql_test_SmallInt_DateTimeV2_notn_1 -- -1 201203010100010 4.970104570020795E-13 10 -2 402406040402040 9.940208641012542E-13 20 -3 804812121208120 1.9880416283967083E-12 40 -4 1609624323224320 3.976083057181837E-12 80 -5 3219248808064800 7.952165715140554E-12 160 -6 6438497939361920 1.590433063183495E-11 320 -7 12876996525188480 3.180865966677775E-11 640 -8 25753994343306240 6.36173161397715E-11 1280 -9 51507991272471040 1.2723462589197567E-10 2560 -10 103015987716659200 2.5446923900881793E-10 5120 -11 206031985776752640 5.089384524673715E-10 10240 -12 412063992240373760 1.0178768538342198E-9 20480 -13 201203010100010 4.970104570020795E-13 10 -14 402406040402040 9.940208641012542E-13 20 -15 804812121208120 1.9880416283967083E-12 40 -16 1609624323224320 3.976083057181837E-12 80 -17 3219248808064800 7.952165715140554E-12 160 -18 6438497939361920 1.590433063183495E-11 320 -19 12876996525188480 3.180865966677775E-11 640 -20 25753994343306240 6.36173161397715E-11 1280 -21 51507991272471040 1.2723462589197567E-10 2560 -22 103015987716659200 2.5446923900881793E-10 5120 -23 206031985776752640 5.089384524673715E-10 10240 -24 412063992240373760 1.0178768538342198E-9 20480 +1 201203010100010 4.970104570020795e-13 10 +2 402406040402040 9.940208641012542e-13 20 +3 804812121208120 1.988041628396708e-12 40 +4 1609624323224320 3.976083057181837e-12 80 +5 3219248808064800 7.952165715140554e-12 160 +6 6438497939361920 1.590433063183495e-11 320 +7 12876996525188480 3.180865966677775e-11 640 +8 25753994343306240 6.36173161397715e-11 1280 +9 51507991272471040 1.272346258919757e-10 2560 +10 103015987716659200 2.544692390088179e-10 5120 +11 206031985776752640 5.089384524673715e-10 10240 +12 412063992240373760 1.01787685383422e-09 20480 +13 201203010100010 4.970104570020795e-13 10 +14 402406040402040 9.940208641012542e-13 20 +15 804812121208120 1.988041628396708e-12 40 +16 1609624323224320 3.976083057181837e-12 80 +17 3219248808064800 7.952165715140554e-12 160 +18 6438497939361920 1.590433063183495e-11 320 +19 12876996525188480 3.180865966677775e-11 640 +20 25753994343306240 6.36173161397715e-11 1280 +21 51507991272471040 1.272346258919757e-10 2560 +22 103015987716659200 2.544692390088179e-10 5120 +23 206031985776752640 5.089384524673715e-10 10240 +24 412063992240373760 1.01787685383422e-09 20480 -- !sql_test_SmallInt_DateTimeV2_3 -- \N \N \N \N @@ -11350,11 +11350,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 1280 1280.0 0 -9 2560 2560.0 0 -10 5120 5120.0 0 -11 10240 10240.0 0 -12 20480 20480.0 0 +8 1280 1280 0 +9 2560 2560 0 +10 5120 5120 0 +11 10240 10240 0 +12 20480 20480 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -11362,11 +11362,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 1280 1280.0 0 -21 2560 2560.0 0 -22 5120 5120.0 0 -23 10240 10240.0 0 -24 20480 20480.0 0 +20 1280 1280 0 +21 2560 2560 0 +22 5120 5120 0 +23 10240 10240 0 +24 20480 20480 0 -- !sql_test_SmallInt_Boolean_notn_1 -- 1 0 \N \N @@ -11376,11 +11376,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 1280 1280.0 0 -9 2560 2560.0 0 -10 5120 5120.0 0 -11 10240 10240.0 0 -12 20480 20480.0 0 +8 1280 1280 0 +9 2560 2560 0 +10 5120 5120 0 +11 10240 10240 0 +12 20480 20480 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -11388,11 +11388,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 1280 1280.0 0 -21 2560 2560.0 0 -22 5120 5120.0 0 -23 10240 10240.0 0 -24 20480 20480.0 0 +20 1280 1280 0 +21 2560 2560 0 +22 5120 5120 0 +23 10240 10240 0 +24 20480 20480 0 -- !sql_test_SmallInt_Boolean_3 -- \N \N \N \N @@ -11555,56 +11555,56 @@ -- !sql_test_Integer_TinyInt_1 -- \N \N \N \N -1 23795 23795.0 0 +1 23795 23795 0 2 95090 23772.5 1 -3 285135 31681.666666666668 2 +3 285135 31681.66666666667 2 4 760180 47511.25 1 -5 1900225 76009.0 0 -6 4560270 126674.16666666667 1 +5 1900225 76009 0 +6 4560270 126674.1666666667 1 7 10640315 217149.2857142857 2 8 24320360 380005.625 5 9 54720405 675560.5555555555 5 10 121600450 1216004.5 5 -11 267520495 2210913.1818181816 2 -12 583680540 4053337.0833333335 1 -13 23795 23795.0 0 +11 267520495 2210913.181818182 2 +12 583680540 4053337.083333333 1 +13 23795 23795 0 14 95090 23772.5 1 -15 285135 31681.666666666668 2 +15 285135 31681.66666666667 2 16 760180 47511.25 1 -17 1900225 76009.0 0 -18 4560270 126674.16666666667 1 +17 1900225 76009 0 +18 4560270 126674.1666666667 1 19 10640315 217149.2857142857 2 20 24320360 380005.625 5 21 54720405 675560.5555555555 5 22 121600450 1216004.5 5 -23 267520495 2210913.1818181816 2 -24 583680540 4053337.0833333335 1 +23 267520495 2210913.181818182 2 +24 583680540 4053337.083333333 1 -- !sql_test_Integer_TinyInt_notn_1 -- -1 23795 23795.0 0 +1 23795 23795 0 2 95090 23772.5 1 -3 285135 31681.666666666668 2 +3 285135 31681.66666666667 2 4 760180 47511.25 1 -5 1900225 76009.0 0 -6 4560270 126674.16666666667 1 +5 1900225 76009 0 +6 4560270 126674.1666666667 1 7 10640315 217149.2857142857 2 8 24320360 380005.625 5 9 54720405 675560.5555555555 5 10 121600450 1216004.5 5 -11 267520495 2210913.1818181816 2 -12 583680540 4053337.0833333335 1 -13 23795 23795.0 0 +11 267520495 2210913.181818182 2 +12 583680540 4053337.083333333 1 +13 23795 23795 0 14 95090 23772.5 1 -15 285135 31681.666666666668 2 +15 285135 31681.66666666667 2 16 760180 47511.25 1 -17 1900225 76009.0 0 -18 4560270 126674.16666666667 1 +17 1900225 76009 0 +18 4560270 126674.1666666667 1 19 10640315 217149.2857142857 2 20 24320360 380005.625 5 21 54720405 675560.5555555555 5 22 121600450 1216004.5 5 -23 267520495 2210913.1818181816 2 -24 583680540 4053337.0833333335 1 +23 267520495 2210913.181818182 2 +24 583680540 4053337.083333333 1 -- !sql_test_Integer_TinyInt_2 -- \N \N @@ -12085,56 +12085,56 @@ -- !sql_test_Integer_Integer_1 -- \N \N \N \N -1 566202025 1.0 0 -2 2260527025 1.0 0 -3 9033552025 1.0 0 -4 36117102025 1.0 0 -5 144434202025 1.0 0 -6 577668402025 1.0 0 -7 2310536802025 1.0 0 -8 9241873602025 1.0 0 -9 36966947202025 1.0 0 -10 147866694402025 1.0 0 -11 591464588802025 1.0 0 -12 2365853977602025 1.0 0 -13 566202025 1.0 0 -14 2260527025 1.0 0 -15 9033552025 1.0 0 -16 36117102025 1.0 0 -17 144434202025 1.0 0 -18 577668402025 1.0 0 -19 2310536802025 1.0 0 -20 9241873602025 1.0 0 -21 36966947202025 1.0 0 -22 147866694402025 1.0 0 -23 591464588802025 1.0 0 -24 2365853977602025 1.0 0 +1 566202025 1 0 +2 2260527025 1 0 +3 9033552025 1 0 +4 36117102025 1 0 +5 144434202025 1 0 +6 577668402025 1 0 +7 2310536802025 1 0 +8 9241873602025 1 0 +9 36966947202025 1 0 +10 147866694402025 1 0 +11 591464588802025 1 0 +12 2365853977602025 1 0 +13 566202025 1 0 +14 2260527025 1 0 +15 9033552025 1 0 +16 36117102025 1 0 +17 144434202025 1 0 +18 577668402025 1 0 +19 2310536802025 1 0 +20 9241873602025 1 0 +21 36966947202025 1 0 +22 147866694402025 1 0 +23 591464588802025 1 0 +24 2365853977602025 1 0 -- !sql_test_Integer_Integer_notn_1 -- -1 566202025 1.0 0 -2 2260527025 1.0 0 -3 9033552025 1.0 0 -4 36117102025 1.0 0 -5 144434202025 1.0 0 -6 577668402025 1.0 0 -7 2310536802025 1.0 0 -8 9241873602025 1.0 0 -9 36966947202025 1.0 0 -10 147866694402025 1.0 0 -11 591464588802025 1.0 0 -12 2365853977602025 1.0 0 -13 566202025 1.0 0 -14 2260527025 1.0 0 -15 9033552025 1.0 0 -16 36117102025 1.0 0 -17 144434202025 1.0 0 -18 577668402025 1.0 0 -19 2310536802025 1.0 0 -20 9241873602025 1.0 0 -21 36966947202025 1.0 0 -22 147866694402025 1.0 0 -23 591464588802025 1.0 0 -24 2365853977602025 1.0 0 +1 566202025 1 0 +2 2260527025 1 0 +3 9033552025 1 0 +4 36117102025 1 0 +5 144434202025 1 0 +6 577668402025 1 0 +7 2310536802025 1 0 +8 9241873602025 1 0 +9 36966947202025 1 0 +10 147866694402025 1 0 +11 591464588802025 1 0 +12 2365853977602025 1 0 +13 566202025 1 0 +14 2260527025 1 0 +15 9033552025 1 0 +16 36117102025 1 0 +17 144434202025 1 0 +18 577668402025 1 0 +19 2310536802025 1 0 +20 9241873602025 1 0 +21 36966947202025 1 0 +22 147866694402025 1 0 +23 591464588802025 1 0 +24 2365853977602025 1 0 -- !sql_test_Integer_Integer_2 -- \N \N @@ -12353,7 +12353,7 @@ 1 127411017555 0.004443901601802885 23795 2 508649675055 0.004444172749654407 47545 3 2032611365055 0.004444308528578735 95045 -4 8126472245055 0.0044443764693809715 190045 +4 8126472245055 0.004444376469380971 190045 5 32497944005055 0.004444410452628434 380045 6 129975887525055 0.004444427447465168 760045 7 519871774565055 0.004444435945686964 1520045 @@ -12365,7 +12365,7 @@ 13 127411017555 0.004443901601802885 23795 14 508649675055 0.004444172749654407 47545 15 2032611365055 0.004444308528578735 95045 -16 8126472245055 0.0044443764693809715 190045 +16 8126472245055 0.004444376469380971 190045 17 32497944005055 0.004444410452628434 380045 18 129975887525055 0.004444427447465168 760045 19 519871774565055 0.004444435945686964 1520045 @@ -12379,7 +12379,7 @@ 1 127411017555 0.004443901601802885 23795 2 508649675055 0.004444172749654407 47545 3 2032611365055 0.004444308528578735 95045 -4 8126472245055 0.0044443764693809715 190045 +4 8126472245055 0.004444376469380971 190045 5 32497944005055 0.004444410452628434 380045 6 129975887525055 0.004444427447465168 760045 7 519871774565055 0.004444435945686964 1520045 @@ -12391,7 +12391,7 @@ 13 127411017555 0.004443901601802885 23795 14 508649675055 0.004444172749654407 47545 15 2032611365055 0.004444308528578735 95045 -16 8126472245055 0.0044443764693809715 190045 +16 8126472245055 0.004444376469380971 190045 17 32497944005055 0.004444410452628434 380045 18 129975887525055 0.004444427447465168 760045 19 519871774565055 0.004444435945686964 1520045 @@ -12562,56 +12562,56 @@ -- !sql_test_Integer_LargeInt_1 -- \N \N \N \N -1 2548221897775 2.221949452260746E-4 23795 -2 10172996591525 2.2220856997860568E-4 47545 -3 40652233479025 2.222153926588306E-4 95045 -4 162529457254025 2.2221880657947974E-4 190045 -5 649958904804025 2.2222051418550786E-4 380045 -6 2599517799904025 2.2222136815001908E-4 760045 -7 10397435590104025 2.222217951726579E-4 1520045 -8 41588471170504025 2.2222200869407422E-4 3040045 -9 166351342331304025 2.2222211545730672E-4 6080045 -10 665400284652904025 2.222221688395541E-4 12160045 -11 2661590969296104025 2.2222219553083558E-4 24320045 -12 10646343538582504025 2.2222220887651575E-4 48640045 -13 2548221897775 2.221949452260746E-4 23795 -14 10172996591525 2.2220856997860568E-4 47545 -15 40652233479025 2.222153926588306E-4 95045 -16 162529457254025 2.2221880657947974E-4 190045 -17 649958904804025 2.2222051418550786E-4 380045 -18 2599517799904025 2.2222136815001908E-4 760045 -19 10397435590104025 2.222217951726579E-4 1520045 -20 41588471170504025 2.2222200869407422E-4 3040045 -21 166351342331304025 2.2222211545730672E-4 6080045 -22 665400284652904025 2.222221688395541E-4 12160045 -23 2661590969296104025 2.2222219553083558E-4 24320045 -24 10646343538582504025 2.2222220887651575E-4 48640045 +1 2548221897775 0.0002221949452260746 23795 +2 10172996591525 0.0002222085699786057 47545 +3 40652233479025 0.0002222153926588306 95045 +4 162529457254025 0.0002222188065794797 190045 +5 649958904804025 0.0002222205141855079 380045 +6 2599517799904025 0.0002222213681500191 760045 +7 10397435590104025 0.0002222217951726579 1520045 +8 41588471170504025 0.0002222220086940742 3040045 +9 166351342331304025 0.0002222221154573067 6080045 +10 665400284652904025 0.0002222221688395541 12160045 +11 2661590969296104025 0.0002222221955308356 24320045 +12 10646343538582504025 0.0002222222088765157 48640045 +13 2548221897775 0.0002221949452260746 23795 +14 10172996591525 0.0002222085699786057 47545 +15 40652233479025 0.0002222153926588306 95045 +16 162529457254025 0.0002222188065794797 190045 +17 649958904804025 0.0002222205141855079 380045 +18 2599517799904025 0.0002222213681500191 760045 +19 10397435590104025 0.0002222217951726579 1520045 +20 41588471170504025 0.0002222220086940742 3040045 +21 166351342331304025 0.0002222221154573067 6080045 +22 665400284652904025 0.0002222221688395541 12160045 +23 2661590969296104025 0.0002222221955308356 24320045 +24 10646343538582504025 0.0002222222088765157 48640045 -- !sql_test_Integer_LargeInt_notn_1 -- -1 2548221897775 2.221949452260746E-4 23795 -2 10172996591525 2.2220856997860568E-4 47545 -3 40652233479025 2.222153926588306E-4 95045 -4 162529457254025 2.2221880657947974E-4 190045 -5 649958904804025 2.2222051418550786E-4 380045 -6 2599517799904025 2.2222136815001908E-4 760045 -7 10397435590104025 2.222217951726579E-4 1520045 -8 41588471170504025 2.2222200869407422E-4 3040045 -9 166351342331304025 2.2222211545730672E-4 6080045 -10 665400284652904025 2.222221688395541E-4 12160045 -11 2661590969296104025 2.2222219553083558E-4 24320045 -12 10646343538582504025 2.2222220887651575E-4 48640045 -13 2548221897775 2.221949452260746E-4 23795 -14 10172996591525 2.2220856997860568E-4 47545 -15 40652233479025 2.222153926588306E-4 95045 -16 162529457254025 2.2221880657947974E-4 190045 -17 649958904804025 2.2222051418550786E-4 380045 -18 2599517799904025 2.2222136815001908E-4 760045 -19 10397435590104025 2.222217951726579E-4 1520045 -20 41588471170504025 2.2222200869407422E-4 3040045 -21 166351342331304025 2.2222211545730672E-4 6080045 -22 665400284652904025 2.222221688395541E-4 12160045 -23 2661590969296104025 2.2222219553083558E-4 24320045 -24 10646343538582504025 2.2222220887651575E-4 48640045 +1 2548221897775 0.0002221949452260746 23795 +2 10172996591525 0.0002222085699786057 47545 +3 40652233479025 0.0002222153926588306 95045 +4 162529457254025 0.0002222188065794797 190045 +5 649958904804025 0.0002222205141855079 380045 +6 2599517799904025 0.0002222213681500191 760045 +7 10397435590104025 0.0002222217951726579 1520045 +8 41588471170504025 0.0002222220086940742 3040045 +9 166351342331304025 0.0002222221154573067 6080045 +10 665400284652904025 0.0002222221688395541 12160045 +11 2661590969296104025 0.0002222221955308356 24320045 +12 10646343538582504025 0.0002222222088765157 48640045 +13 2548221897775 0.0002221949452260746 23795 +14 10172996591525 0.0002222085699786057 47545 +15 40652233479025 0.0002222153926588306 95045 +16 162529457254025 0.0002222188065794797 190045 +17 649958904804025 0.0002222205141855079 380045 +18 2599517799904025 0.0002222213681500191 760045 +19 10397435590104025 0.0002222217951726579 1520045 +20 41588471170504025 0.0002222220086940742 3040045 +21 166351342331304025 0.0002222221154573067 6080045 +22 665400284652904025 0.0002222221688395541 12160045 +23 2661590969296104025 0.0002222221955308356 24320045 +24 10646343538582504025 0.0002222222088765157 48640045 -- !sql_test_Integer_LargeInt_3 -- \N \N \N \N @@ -12724,106 +12724,106 @@ 1 23795.10000000149 23794.89999999851 2 47545.20000000298 47544.79999999702 3 95045.30000001192 95044.69999998808 -4 190045.40000000596 190044.59999999404 +4 190045.400000006 190044.599999994 5 380045.5 380044.5 6 760045.6000000238 760044.3999999762 7 1520045.699999988 1520044.300000012 8 3040045.800000012 3040044.199999988 9 6080045.899999976 6080044.100000024 -10 1.2160046E7 1.2160044E7 -11 2.4320046100000024E7 2.4320043899999976E7 -12 4.864004620000005E7 4.864004379999995E7 +10 12160046 12160044 +11 24320046.10000002 24320043.89999998 +12 48640046.20000005 48640043.79999995 13 23795.10000000149 23794.89999999851 14 47545.20000000298 47544.79999999702 15 95045.30000001192 95044.69999998808 -16 190045.40000000596 190044.59999999404 +16 190045.400000006 190044.599999994 17 380045.5 380044.5 18 760045.6000000238 760044.3999999762 19 1520045.699999988 1520044.300000012 20 3040045.800000012 3040044.199999988 21 6080045.899999976 6080044.100000024 -22 1.2160046E7 1.2160044E7 -23 2.4320046100000024E7 2.4320043899999976E7 -24 4.864004620000005E7 4.864004379999995E7 +22 12160046 12160044 +23 24320046.10000002 24320043.89999998 +24 48640046.20000005 48640043.79999995 -- !sql_test_Integer_Float_notn_0 -- 1 23795.10000000149 23794.89999999851 2 47545.20000000298 47544.79999999702 3 95045.30000001192 95044.69999998808 -4 190045.40000000596 190044.59999999404 +4 190045.400000006 190044.599999994 5 380045.5 380044.5 6 760045.6000000238 760044.3999999762 7 1520045.699999988 1520044.300000012 8 3040045.800000012 3040044.199999988 9 6080045.899999976 6080044.100000024 -10 1.2160046E7 1.2160044E7 -11 2.4320046100000024E7 2.4320043899999976E7 -12 4.864004620000005E7 4.864004379999995E7 +10 12160046 12160044 +11 24320046.10000002 24320043.89999998 +12 48640046.20000005 48640043.79999995 13 23795.10000000149 23794.89999999851 14 47545.20000000298 47544.79999999702 15 95045.30000001192 95044.69999998808 -16 190045.40000000596 190044.59999999404 +16 190045.400000006 190044.599999994 17 380045.5 380044.5 18 760045.6000000238 760044.3999999762 19 1520045.699999988 1520044.300000012 20 3040045.800000012 3040044.199999988 21 6080045.899999976 6080044.100000024 -22 1.2160046E7 1.2160044E7 -23 2.4320046100000024E7 2.4320043899999976E7 -24 4.864004620000005E7 4.864004379999995E7 +22 12160046 12160044 +23 24320046.10000002 24320043.89999998 +24 48640046.20000005 48640043.79999995 -- !sql_test_Integer_Float_1 -- \N \N \N \N -1 2379.500035457313 237949.99645426875 0.09964542835950851 -2 9509.000141695142 237724.9964576215 0.19929152727127075 -3 28513.501133024693 316816.6540775039 0.19622325897216797 -4 76018.00113275647 475112.49292027217 0.19716811180114746 -5 190022.5 760090.0 0.0 -6 456027.0181208849 1266741.6163308772 0.36979854106903076 -7 1064031.4818796515 2171492.8941231607 0.6258862018585205 -8 2432036.0362401605 3800056.19337475 0.15469980239868164 +1 2379.500035457313 237949.9964542688 0.09964542835950851 +2 9509.000141695142 237724.9964576215 0.1992915272712708 +3 28513.50113302469 316816.6540775039 0.196223258972168 +4 76018.00113275647 475112.4929202722 0.1971681118011475 +5 190022.5 760090 0 +6 456027.0181208849 1266741.616330877 0.3697985410690308 +7 1064031.481879652 2171492.894123161 0.6258862018585205 +8 2432036.03624016 3800056.19337475 0.1546998023986816 9 5472040.355040431 6755605.734517992 0.6610661745071411 -10 1.2160045E7 1.2160045E7 0.0 -11 2.6752050079835057E7 2.21091313389793E7 0.37287724018096924 -12 5.836805631933808E7 4.053336922268195E7 0.26721835136413574 -13 2379.500035457313 237949.99645426875 0.09964542835950851 -14 9509.000141695142 237724.9964576215 0.19929152727127075 -15 28513.501133024693 316816.6540775039 0.19622325897216797 -16 76018.00113275647 475112.49292027217 0.19716811180114746 -17 190022.5 760090.0 0.0 -18 456027.0181208849 1266741.6163308772 0.36979854106903076 -19 1064031.4818796515 2171492.8941231607 0.6258862018585205 -20 2432036.0362401605 3800056.19337475 0.15469980239868164 +10 12160045 12160045 0 +11 26752050.07983506 22109131.3389793 0.3728772401809692 +12 58368056.31933808 40533369.22268195 0.2672183513641357 +13 2379.500035457313 237949.9964542688 0.09964542835950851 +14 9509.000141695142 237724.9964576215 0.1992915272712708 +15 28513.50113302469 316816.6540775039 0.196223258972168 +16 76018.00113275647 475112.4929202722 0.1971681118011475 +17 190022.5 760090 0 +18 456027.0181208849 1266741.616330877 0.3697985410690308 +19 1064031.481879652 2171492.894123161 0.6258862018585205 +20 2432036.03624016 3800056.19337475 0.1546998023986816 21 5472040.355040431 6755605.734517992 0.6610661745071411 -22 1.2160045E7 1.2160045E7 0.0 -23 2.6752050079835057E7 2.21091313389793E7 0.37287724018096924 -24 5.836805631933808E7 4.053336922268195E7 0.26721835136413574 +22 12160045 12160045 0 +23 26752050.07983506 22109131.3389793 0.3728772401809692 +24 58368056.31933808 40533369.22268195 0.2672183513641357 -- !sql_test_Integer_Float_notn_1 -- -1 2379.500035457313 237949.99645426875 0.09964542835950851 -2 9509.000141695142 237724.9964576215 0.19929152727127075 -3 28513.501133024693 316816.6540775039 0.19622325897216797 -4 76018.00113275647 475112.49292027217 0.19716811180114746 -5 190022.5 760090.0 0.0 -6 456027.0181208849 1266741.6163308772 0.36979854106903076 -7 1064031.4818796515 2171492.8941231607 0.6258862018585205 -8 2432036.0362401605 3800056.19337475 0.15469980239868164 +1 2379.500035457313 237949.9964542688 0.09964542835950851 +2 9509.000141695142 237724.9964576215 0.1992915272712708 +3 28513.50113302469 316816.6540775039 0.196223258972168 +4 76018.00113275647 475112.4929202722 0.1971681118011475 +5 190022.5 760090 0 +6 456027.0181208849 1266741.616330877 0.3697985410690308 +7 1064031.481879652 2171492.894123161 0.6258862018585205 +8 2432036.03624016 3800056.19337475 0.1546998023986816 9 5472040.355040431 6755605.734517992 0.6610661745071411 -10 1.2160045E7 1.2160045E7 0.0 -11 2.6752050079835057E7 2.21091313389793E7 0.37287724018096924 -12 5.836805631933808E7 4.053336922268195E7 0.26721835136413574 -13 2379.500035457313 237949.99645426875 0.09964542835950851 -14 9509.000141695142 237724.9964576215 0.19929152727127075 -15 28513.501133024693 316816.6540775039 0.19622325897216797 -16 76018.00113275647 475112.49292027217 0.19716811180114746 -17 190022.5 760090.0 0.0 -18 456027.0181208849 1266741.6163308772 0.36979854106903076 -19 1064031.4818796515 2171492.8941231607 0.6258862018585205 -20 2432036.0362401605 3800056.19337475 0.15469980239868164 +10 12160045 12160045 0 +11 26752050.07983506 22109131.3389793 0.3728772401809692 +12 58368056.31933808 40533369.22268195 0.2672183513641357 +13 2379.500035457313 237949.9964542688 0.09964542835950851 +14 9509.000141695142 237724.9964576215 0.1992915272712708 +15 28513.50113302469 316816.6540775039 0.196223258972168 +16 76018.00113275647 475112.4929202722 0.1971681118011475 +17 190022.5 760090 0 +18 456027.0181208849 1266741.616330877 0.3697985410690308 +19 1064031.481879652 2171492.894123161 0.6258862018585205 +20 2432036.03624016 3800056.19337475 0.1546998023986816 21 5472040.355040431 6755605.734517992 0.6610661745071411 -22 1.2160045E7 1.2160045E7 0.0 -23 2.6752050079835057E7 2.21091313389793E7 0.37287724018096924 -24 5.836805631933808E7 4.053336922268195E7 0.26721835136413574 +22 12160045 12160045 0 +23 26752050.07983506 22109131.3389793 0.3728772401809692 +24 58368056.31933808 40533369.22268195 0.2672183513641357 -- !sql_test_Integer_Float_3 -- \N \N \N \N @@ -12889,9 +12889,9 @@ 7 1520049.0218 1520040.9782 8 3040050.6745 3040039.3255 9 6080053.0141 6080036.9859 -10 1.21600563248E7 1.21600336752E7 -11 2.43200610086E7 2.43200289914E7 -12 4.8640067634E7 4.8640022366E7 +10 12160056.3248 12160033.6752 +11 24320061.0086 24320028.9914 +12 48640067.634 48640022.366 13 23795.5244 23794.4756 14 47545.7416 47544.2584 15 95046.0368 95043.9632 @@ -12901,9 +12901,9 @@ 19 1520049.0218 1520040.9782 20 3040050.6745 3040039.3255 21 6080053.0141 6080036.9859 -22 1.21600563248E7 1.21600336752E7 -23 2.43200610086E7 2.43200289914E7 -24 4.8640067634E7 4.8640022366E7 +22 12160056.3248 12160033.6752 +23 24320061.0086 24320028.9914 +24 48640067.634 48640022.366 -- !sql_test_Integer_Double_notn_0 -- 1 23795.5244 23794.4756 @@ -12915,9 +12915,9 @@ 7 1520049.0218 1520040.9782 8 3040050.6745 3040039.3255 9 6080053.0141 6080036.9859 -10 1.21600563248E7 1.21600336752E7 -11 2.43200610086E7 2.43200289914E7 -12 4.8640067634E7 4.8640022366E7 +10 12160056.3248 12160033.6752 +11 24320061.0086 24320028.9914 +12 48640067.634 48640022.366 13 23795.5244 23794.4756 14 47545.7416 47544.2584 15 95046.0368 95043.9632 @@ -12927,62 +12927,62 @@ 19 1520049.0218 1520040.9782 20 3040050.6745 3040039.3255 21 6080053.0141 6080036.9859 -22 1.21600563248E7 1.21600336752E7 -23 2.43200610086E7 2.43200289914E7 -24 4.8640067634E7 4.8640022366E7 +22 12160056.3248 12160033.6752 +23 24320061.0086 24320028.9914 +24 48640067.634 48640022.366 -- !sql_test_Integer_Double_1 -- \N \N \N \N 1 12478.098 45375.66742944317 0.3500000000010317 -2 35259.372 64111.380798273996 0.2823999999976312 +2 35259.372 64111.380798274 0.2823999999976312 3 98542.65599999999 91671.48919753087 0.5072000000051458 -4 275394.2095 131146.91877717205 1.3313999999928248 -5 771871.395 187122.10733628753 0.21799999997407316 -6 2169776.466 266234.06193078327 0.17679999999886498 -7 6113316.981 377951.4147893978 1.6682000000682118 -8 1.72507353525E7 535737.9504802185 5.393499999946707 -9 4.87260886345E7 758668.4718184201 3.7812000006727544 -10 1.37710077616E8 1073753.6203729867 7.025600000262454 -11 3.89329872387E8 1519186.2498906837 4.000399998065632 -12 1.10091877853E9 2148981.399664222 9.045999999267067 +4 275394.2095 131146.918777172 1.331399999992825 +5 771871.395 187122.1073362875 0.2179999999740732 +6 2169776.466 266234.0619307833 0.176799999998865 +7 6113316.981 377951.4147893978 1.668200000068212 +8 17250735.3525 535737.9504802185 5.393499999946707 +9 48726088.6345 758668.4718184201 3.781200000672754 +10 137710077.616 1073753.620372987 7.025600000262454 +11 389329872.387 1519186.249890684 4.000399998065632 +12 1100918778.53 2148981.399664222 9.045999999267067 13 12478.098 45375.66742944317 0.3500000000010317 -14 35259.372 64111.380798273996 0.2823999999976312 +14 35259.372 64111.380798274 0.2823999999976312 15 98542.65599999999 91671.48919753087 0.5072000000051458 -16 275394.2095 131146.91877717205 1.3313999999928248 -17 771871.395 187122.10733628753 0.21799999997407316 -18 2169776.466 266234.06193078327 0.17679999999886498 -19 6113316.981 377951.4147893978 1.6682000000682118 -20 1.72507353525E7 535737.9504802185 5.393499999946707 -21 4.87260886345E7 758668.4718184201 3.7812000006727544 -22 1.37710077616E8 1073753.6203729867 7.025600000262454 -23 3.89329872387E8 1519186.2498906837 4.000399998065632 -24 1.10091877853E9 2148981.399664222 9.045999999267067 +16 275394.2095 131146.918777172 1.331399999992825 +17 771871.395 187122.1073362875 0.2179999999740732 +18 2169776.466 266234.0619307833 0.176799999998865 +19 6113316.981 377951.4147893978 1.668200000068212 +20 17250735.3525 535737.9504802185 5.393499999946707 +21 48726088.6345 758668.4718184201 3.781200000672754 +22 137710077.616 1073753.620372987 7.025600000262454 +23 389329872.387 1519186.249890684 4.000399998065632 +24 1100918778.53 2148981.399664222 9.045999999267067 -- !sql_test_Integer_Double_notn_1 -- 1 12478.098 45375.66742944317 0.3500000000010317 -2 35259.372 64111.380798273996 0.2823999999976312 +2 35259.372 64111.380798274 0.2823999999976312 3 98542.65599999999 91671.48919753087 0.5072000000051458 -4 275394.2095 131146.91877717205 1.3313999999928248 -5 771871.395 187122.10733628753 0.21799999997407316 -6 2169776.466 266234.06193078327 0.17679999999886498 -7 6113316.981 377951.4147893978 1.6682000000682118 -8 1.72507353525E7 535737.9504802185 5.393499999946707 -9 4.87260886345E7 758668.4718184201 3.7812000006727544 -10 1.37710077616E8 1073753.6203729867 7.025600000262454 -11 3.89329872387E8 1519186.2498906837 4.000399998065632 -12 1.10091877853E9 2148981.399664222 9.045999999267067 +4 275394.2095 131146.918777172 1.331399999992825 +5 771871.395 187122.1073362875 0.2179999999740732 +6 2169776.466 266234.0619307833 0.176799999998865 +7 6113316.981 377951.4147893978 1.668200000068212 +8 17250735.3525 535737.9504802185 5.393499999946707 +9 48726088.6345 758668.4718184201 3.781200000672754 +10 137710077.616 1073753.620372987 7.025600000262454 +11 389329872.387 1519186.249890684 4.000399998065632 +12 1100918778.53 2148981.399664222 9.045999999267067 13 12478.098 45375.66742944317 0.3500000000010317 -14 35259.372 64111.380798273996 0.2823999999976312 +14 35259.372 64111.380798274 0.2823999999976312 15 98542.65599999999 91671.48919753087 0.5072000000051458 -16 275394.2095 131146.91877717205 1.3313999999928248 -17 771871.395 187122.10733628753 0.21799999997407316 -18 2169776.466 266234.06193078327 0.17679999999886498 -19 6113316.981 377951.4147893978 1.6682000000682118 -20 1.72507353525E7 535737.9504802185 5.393499999946707 -21 4.87260886345E7 758668.4718184201 3.7812000006727544 -22 1.37710077616E8 1073753.6203729867 7.025600000262454 -23 3.89329872387E8 1519186.2498906837 4.000399998065632 -24 1.10091877853E9 2148981.399664222 9.045999999267067 +16 275394.2095 131146.918777172 1.331399999992825 +17 771871.395 187122.1073362875 0.2179999999740732 +18 2169776.466 266234.0619307833 0.176799999998865 +19 6113316.981 377951.4147893978 1.668200000068212 +20 17250735.3525 535737.9504802185 5.393499999946707 +21 48726088.6345 758668.4718184201 3.781200000672754 +22 137710077.616 1073753.620372987 7.025600000262454 +23 389329872.387 1519186.249890684 4.000399998065632 +24 1100918778.53 2148981.399664222 9.045999999267067 -- !sql_test_Integer_Double_3 -- \N \N \N \N @@ -13039,109 +13039,109 @@ -- !sql_test_Integer_DecimalV2_0 -- \N \N \N -1 23819.395000000 23770.605000000 -2 47579.484000000 47510.516000000 -3 95093.756000000 94996.244000000 -4 190113.943000000 189976.057000000 -5 380142.494000000 379947.506000000 -6 760182.874000000 759907.126000000 -7 1520239.980000000 1519850.020000000 +1 23819.395200000 23770.604800000 +2 47579.483700000 47510.516300000 +3 95093.755800000 94996.244200000 +4 190113.942900000 189976.057100000 +5 380142.494200000 379947.505800000 +6 760182.873600000 759907.126400000 +7 1520239.979800000 1519850.020200000 8 3040320.741000000 3039769.259000000 -9 6080434.955000000 6079655.045000000 +9 6080434.955300000 6079655.044700000 10 12160596.479000000 12159493.521000000 -11 24320824.908000000 24319265.092000000 -12 48641147.957000000 48638942.043000000 -13 23819.395000000 23770.605000000 -14 47579.484000000 47510.516000000 -15 95093.756000000 94996.244000000 -16 190113.943000000 189976.057000000 -17 380142.494000000 379947.506000000 -18 760182.874000000 759907.126000000 -19 1520239.980000000 1519850.020000000 +11 24320824.908400000 24319265.091600000 +12 48641147.956500000 48638942.043500000 +13 23819.395200000 23770.604800000 +14 47579.483700000 47510.516300000 +15 95093.755800000 94996.244200000 +16 190113.942900000 189976.057100000 +17 380142.494200000 379947.505800000 +18 760182.873600000 759907.126400000 +19 1520239.979800000 1519850.020200000 20 3040320.741000000 3039769.259000000 -21 6080434.955000000 6079655.045000000 +21 6080434.955300000 6079655.044700000 22 12160596.479000000 12159493.521000000 -23 24320824.908000000 24319265.092000000 -24 48641147.957000000 48638942.043000000 +23 24320824.908400000 24319265.091600000 +24 48641147.956500000 48638942.043500000 -- !sql_test_Integer_DecimalV2_notn_0 -- -1 23819.395000000 23770.605000000 -2 47579.484000000 47510.516000000 -3 95093.756000000 94996.244000000 -4 190113.943000000 189976.057000000 -5 380142.494000000 379947.506000000 -6 760182.874000000 759907.126000000 -7 1520239.980000000 1519850.020000000 +1 23819.395200000 23770.604800000 +2 47579.483700000 47510.516300000 +3 95093.755800000 94996.244200000 +4 190113.942900000 189976.057100000 +5 380142.494200000 379947.505800000 +6 760182.873600000 759907.126400000 +7 1520239.979800000 1519850.020200000 8 3040320.741000000 3039769.259000000 -9 6080434.955000000 6079655.045000000 +9 6080434.955300000 6079655.044700000 10 12160596.479000000 12159493.521000000 -11 24320824.908000000 24319265.092000000 -12 48641147.957000000 48638942.043000000 -13 23819.395000000 23770.605000000 -14 47579.484000000 47510.516000000 -15 95093.756000000 94996.244000000 -16 190113.943000000 189976.057000000 -17 380142.494000000 379947.506000000 -18 760182.874000000 759907.126000000 -19 1520239.980000000 1519850.020000000 +11 24320824.908400000 24319265.091600000 +12 48641147.956500000 48638942.043500000 +13 23819.395200000 23770.604800000 +14 47579.483700000 47510.516300000 +15 95093.755800000 94996.244200000 +16 190113.942900000 189976.057100000 +17 380142.494200000 379947.505800000 +18 760182.873600000 759907.126400000 +19 1520239.979800000 1519850.020200000 20 3040320.741000000 3039769.259000000 -21 6080434.955000000 6079655.045000000 +21 6080434.955300000 6079655.044700000 22 12160596.479000000 12159493.521000000 -23 24320824.908000000 24319265.092000000 -24 48641147.957000000 48638942.043000000 +23 24320824.908400000 24319265.091600000 +24 48641147.956500000 48638942.043500000 -- !sql_test_Integer_DecimalV2_1 -- \N \N \N \N -1 580479.025000000 975.404796065 9.875000000 -2 1639541.780000000 1378.755364807 26.048000000 -3 4634014.020000000 1949.401099352 19.556000000 -4 13102272.435000000 2756.552514396 38.092000000 -5 37052107.230000000 3898.137321271 13.388000000 -6 104790444.330000000 5512.605712462 83.512000000 -7 296378374.100000000 7795.902143810 175.900000000 +1 580483.784000000 975.396799370 9.680000000 +2 1639527.516500000 1378.767359651 26.461400000 +3 4633995.011000000 1949.409095943 19.945800000 +4 13102253.430500000 2756.556512708 38.367600000 +5 37052183.239000000 3898.129324616 12.608400000 +6 104790140.312000000 5512.621705678 85.716800000 +7 296378070.091000000 7795.910140435 177.459000000 8 838265048.345000000 11025.001722631 0.475000000 -9 2370943947.975000000 15591.658011822 256.595000000 +9 2370945771.988500000 15591.646016864 251.917700000 10 6706009456.555000000 22049.878599185 484.529000000 -11 18967397655.860000000 31183.222892957 173.836000000 -12 53647878113.065000000 44099.674783332 744.257000000 -13 580479.025000000 975.404796065 9.875000000 -14 1639541.780000000 1378.755364807 26.048000000 -15 4634014.020000000 1949.401099352 19.556000000 -16 13102272.435000000 2756.552514396 38.092000000 -17 37052107.230000000 3898.137321271 13.388000000 -18 104790444.330000000 5512.605712462 83.512000000 -19 296378374.100000000 7795.902143810 175.900000000 +11 18967407383.878000000 31183.206899682 161.362800000 +12 53647853793.042500000 44099.694774907 766.306500000 +13 580483.784000000 975.396799370 9.680000000 +14 1639527.516500000 1378.767359651 26.461400000 +15 4633995.011000000 1949.409095943 19.945800000 +16 13102253.430500000 2756.556512708 38.367600000 +17 37052183.239000000 3898.129324616 12.608400000 +18 104790140.312000000 5512.621705678 85.716800000 +19 296378070.091000000 7795.910140435 177.459000000 20 838265048.345000000 11025.001722631 0.475000000 -21 2370943947.975000000 15591.658011822 256.595000000 +21 2370945771.988500000 15591.646016864 251.917700000 22 6706009456.555000000 22049.878599185 484.529000000 -23 18967397655.860000000 31183.222892957 173.836000000 -24 53647878113.065000000 44099.674783332 744.257000000 +23 18967407383.878000000 31183.206899682 161.362800000 +24 53647853793.042500000 44099.694774907 766.306500000 -- !sql_test_Integer_DecimalV2_notn_1 -- -1 580479.025000000 975.404796065 9.875000000 -2 1639541.780000000 1378.755364807 26.048000000 -3 4634014.020000000 1949.401099352 19.556000000 -4 13102272.435000000 2756.552514396 38.092000000 -5 37052107.230000000 3898.137321271 13.388000000 -6 104790444.330000000 5512.605712462 83.512000000 -7 296378374.100000000 7795.902143810 175.900000000 +1 580483.784000000 975.396799370 9.680000000 +2 1639527.516500000 1378.767359651 26.461400000 +3 4633995.011000000 1949.409095943 19.945800000 +4 13102253.430500000 2756.556512708 38.367600000 +5 37052183.239000000 3898.129324616 12.608400000 +6 104790140.312000000 5512.621705678 85.716800000 +7 296378070.091000000 7795.910140435 177.459000000 8 838265048.345000000 11025.001722631 0.475000000 -9 2370943947.975000000 15591.658011822 256.595000000 +9 2370945771.988500000 15591.646016864 251.917700000 10 6706009456.555000000 22049.878599185 484.529000000 -11 18967397655.860000000 31183.222892957 173.836000000 -12 53647878113.065000000 44099.674783332 744.257000000 -13 580479.025000000 975.404796065 9.875000000 -14 1639541.780000000 1378.755364807 26.048000000 -15 4634014.020000000 1949.401099352 19.556000000 -16 13102272.435000000 2756.552514396 38.092000000 -17 37052107.230000000 3898.137321271 13.388000000 -18 104790444.330000000 5512.605712462 83.512000000 -19 296378374.100000000 7795.902143810 175.900000000 +11 18967407383.878000000 31183.206899682 161.362800000 +12 53647853793.042500000 44099.694774907 766.306500000 +13 580483.784000000 975.396799370 9.680000000 +14 1639527.516500000 1378.767359651 26.461400000 +15 4633995.011000000 1949.409095943 19.945800000 +16 13102253.430500000 2756.556512708 38.367600000 +17 37052183.239000000 3898.129324616 12.608400000 +18 104790140.312000000 5512.621705678 85.716800000 +19 296378070.091000000 7795.910140435 177.459000000 20 838265048.345000000 11025.001722631 0.475000000 -21 2370943947.975000000 15591.658011822 256.595000000 +21 2370945771.988500000 15591.646016864 251.917700000 22 6706009456.555000000 22049.878599185 484.529000000 -23 18967397655.860000000 31183.222892957 173.836000000 -24 53647878113.065000000 44099.674783332 744.257000000 +23 18967407383.878000000 31183.206899682 161.362800000 +24 53647853793.042500000 44099.694774907 766.306500000 -- !sql_test_Integer_DecimalV2_2 -- \N \N @@ -13586,13 +13586,13 @@ 15 95353.359 94736.641 16 190481.033 189608.967 17 380661.608 379428.392 -18 760916.989 759173.011 +18 760916.9889999999 759173.0110000001 19 1521278.161 1518811.839 20 3041788.94 3038301.06 21 6082511.294 6077578.706 -22 1.216353286E7 1.215655714E7 -23 2.4324977574E7 2.4315112426E7 -24 4.864702071E7 4.863306929E7 +22 12163532.86 12156557.14 +23 24324977.574 24315112.426 +24 48647020.71 48633069.29 -- !sql_test_Integer_Char_notn_0 -- 1 \N \N @@ -13612,13 +13612,13 @@ 15 95353.359 94736.641 16 190481.033 189608.967 17 380661.608 379428.392 -18 760916.989 759173.011 +18 760916.9889999999 759173.0110000001 19 1521278.161 1518811.839 20 3041788.94 3038301.06 21 6082511.294 6077578.706 -22 1.216353286E7 1.215655714E7 -23 2.4324977574E7 2.4315112426E7 -24 4.864702071E7 4.863306929E7 +22 12163532.86 12156557.14 +23 24324977.574 24315112.426 +24 48647020.71 48633069.29 -- !sql_test_Integer_Char_1 -- \N \N \N \N @@ -13634,18 +13634,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3671306.755 154.22356746106334 34.49400000000196 -14 1.036927923E7 218.00232927086486 0.5080000000012888 -15 2.9307981154999997E7 308.22839612270116 70.42800000000602 -16 8.2865891485E7 435.85003887320454 370.6449999999933 -17 2.3433878735999998E8 616.3478255228606 214.4720000000325 -18 6.62750879505E8 871.6222337667103 542.5809999999715 -19 1.8744602122450001E9 1232.6411555344355 790.6479999999283 -20 5.3016560773E9 1743.2050414578482 357.5799999999049 -21 1.499517850323E10 2465.2555615834935 630.2900000003228 -22 4.2412534553700005E10 3486.391368919624 1365.0399999995561 -23 1.1996042164582999E11 4930.497748234492 2455.180000001901 -24 3.3929884830695E11 6972.773380774143 5394.879999999746 +13 3671306.755 154.2235674610633 34.49400000000196 +14 10369279.23 218.0023292708649 0.5080000000012888 +15 29307981.155 308.2283961227012 70.42800000000602 +16 82865891.485 435.8500388732045 370.6449999999933 +17 234338787.36 616.3478255228606 214.4720000000325 +18 662750879.505 871.6222337667103 542.5809999999715 +19 1874460212.245 1232.641155534435 790.6479999999283 +20 5301656077.3 1743.205041457848 357.5799999999049 +21 14995178503.23 2465.255561583494 630.2900000003228 +22 42412534553.7 3486.391368919624 1365.039999999556 +23 119960421645.83 4930.497748234492 2455.180000001901 +24 339298848306.95 6972.773380774143 5394.879999999746 -- !sql_test_Integer_Char_notn_1 -- 1 \N \N \N @@ -13660,18 +13660,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3671306.755 154.22356746106334 34.49400000000196 -14 1.036927923E7 218.00232927086486 0.5080000000012888 -15 2.9307981154999997E7 308.22839612270116 70.42800000000602 -16 8.2865891485E7 435.85003887320454 370.6449999999933 -17 2.3433878735999998E8 616.3478255228606 214.4720000000325 -18 6.62750879505E8 871.6222337667103 542.5809999999715 -19 1.8744602122450001E9 1232.6411555344355 790.6479999999283 -20 5.3016560773E9 1743.2050414578482 357.5799999999049 -21 1.499517850323E10 2465.2555615834935 630.2900000003228 -22 4.2412534553700005E10 3486.391368919624 1365.0399999995561 -23 1.1996042164582999E11 4930.497748234492 2455.180000001901 -24 3.3929884830695E11 6972.773380774143 5394.879999999746 +13 3671306.755 154.2235674610633 34.49400000000196 +14 10369279.23 218.0023292708649 0.5080000000012888 +15 29307981.155 308.2283961227012 70.42800000000602 +16 82865891.485 435.8500388732045 370.6449999999933 +17 234338787.36 616.3478255228606 214.4720000000325 +18 662750879.505 871.6222337667103 542.5809999999715 +19 1874460212.245 1232.641155534435 790.6479999999283 +20 5301656077.3 1743.205041457848 357.5799999999049 +21 14995178503.23 2465.255561583494 630.2900000003228 +22 42412534553.7 3486.391368919624 1365.039999999556 +23 119960421645.83 4930.497748234492 2455.180000001901 +24 339298848306.95 6972.773380774143 5394.879999999746 -- !sql_test_Integer_Char_3 -- \N \N \N \N @@ -13742,16 +13742,16 @@ 12 \N \N 13 26114.121 21475.879 14 50823.082 44266.918 -15 99679.741 90410.259 +15 99679.74099999999 90410.25900000001 16 196598.688 183491.312 17 389312.73 370777.27 18 773151.137 746938.863 19 1538579.585 1501510.415 20 3066256.654 3013833.346 21 6117113.731 6042976.269 -22 1.2212467999E7 1.2107622001E7 -23 2.4394182243E7 2.4245907757E7 -24 4.8744890843E7 4.8535199157E7 +22 12212467.999 12107622.001 +23 24394182.243 24245907.757 +24 48744890.843 48535199.157 -- !sql_test_Integer_Varchar_notn_0 -- 1 \N \N @@ -13768,16 +13768,16 @@ 12 \N \N 13 26114.121 21475.879 14 50823.082 44266.918 -15 99679.741 90410.259 +15 99679.74099999999 90410.25900000001 16 196598.688 183491.312 17 389312.73 370777.27 18 773151.137 746938.863 19 1538579.585 1501510.415 20 3066256.654 3013833.346 21 6117113.731 6042976.269 -22 1.2212467999E7 1.2107622001E7 -23 2.4394182243E7 2.4245907757E7 -24 4.8744890843E7 4.8535199157E7 +22 12212467.999 12107622.001 +23 24394182.243 24245907.757 +24 48744890.843 48535199.157 -- !sql_test_Integer_Varchar_1 -- \N \N \N \N @@ -13793,18 +13793,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.5183484195E7 10.260352952691989 603.789999999999 -14 1.5585640869E8 14.50390807795534 1651.8520000000017 -15 4.4050895834499997E8 20.507079036347445 2350.1800000000003 -16 1.24549563596E9 28.99817629401949 6541.735999999997 -17 3.52215444785E9 41.007344840645985 68.0700000000179 -18 9.961253896165E9 57.99153480541215 12995.190999999964 -19 2.8173403256324997E10 82.01127783546274 209.0300000000716 -20 7.968460768443E10 115.98066264723317 25704.790000000157 -21 2.25379552572895E11 164.02085628450567 773.1160000000382 -22 6.374660268749551E11 231.96011735230942 50332.23099999921 -23 1.803021085935935E12 328.04086065083374 3029.2959999992745 -24 5.099706521582935E12 463.9196329414796 96419.69100000302 +13 55183484.195 10.26035295269199 603.7899999999991 +14 155856408.69 14.50390807795534 1651.852000000002 +15 440508958.345 20.50707903634745 2350.18 +16 1245495635.96 28.99817629401949 6541.735999999997 +17 3522154447.85 41.00734484064598 68.0700000000179 +18 9961253896.165001 57.99153480541215 12995.19099999996 +19 28173403256.325 82.01127783546274 209.0300000000716 +20 79684607684.42999 115.9806626472332 25704.79000000016 +21 225379552572.895 164.0208562845057 773.1160000000382 +22 637466026874.9551 231.9601173523094 50332.23099999921 +23 1803021085935.935 328.0408606508337 3029.295999999274 +24 5099706521582.935 463.9196329414796 96419.69100000302 -- !sql_test_Integer_Varchar_notn_1 -- 1 \N \N \N @@ -13819,18 +13819,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.5183484195E7 10.260352952691989 603.789999999999 -14 1.5585640869E8 14.50390807795534 1651.8520000000017 -15 4.4050895834499997E8 20.507079036347445 2350.1800000000003 -16 1.24549563596E9 28.99817629401949 6541.735999999997 -17 3.52215444785E9 41.007344840645985 68.0700000000179 -18 9.961253896165E9 57.99153480541215 12995.190999999964 -19 2.8173403256324997E10 82.01127783546274 209.0300000000716 -20 7.968460768443E10 115.98066264723317 25704.790000000157 -21 2.25379552572895E11 164.02085628450567 773.1160000000382 -22 6.374660268749551E11 231.96011735230942 50332.23099999921 -23 1.803021085935935E12 328.04086065083374 3029.2959999992745 -24 5.099706521582935E12 463.9196329414796 96419.69100000302 +13 55183484.195 10.26035295269199 603.7899999999991 +14 155856408.69 14.50390807795534 1651.852000000002 +15 440508958.345 20.50707903634745 2350.18 +16 1245495635.96 28.99817629401949 6541.735999999997 +17 3522154447.85 41.00734484064598 68.0700000000179 +18 9961253896.165001 57.99153480541215 12995.19099999996 +19 28173403256.325 82.01127783546274 209.0300000000716 +20 79684607684.42999 115.9806626472332 25704.79000000016 +21 225379552572.895 164.0208562845057 773.1160000000382 +22 637466026874.9551 231.9601173523094 50332.23099999921 +23 1803021085935.935 328.0408606508337 3029.295999999274 +24 5099706521582.935 463.9196329414796 96419.69100000302 -- !sql_test_Integer_Varchar_3 -- \N \N \N \N @@ -13900,17 +13900,17 @@ 11 \N \N 12 \N \N 13 34399.017 13190.983 -14 62533.793 32556.207000000002 -15 116237.013 73852.987 +14 62533.793 32556.207 +15 116237.013 73852.98699999999 16 220011.255 160078.745 17 422421.012 337668.988 -18 819971.842 700118.158 +18 819971.8419999999 700118.1580000001 19 1604793.017 1435296.983 20 3159895.851 2920194.149 21 6249539.031 5910550.969 -22 1.2399745285E7 1.1920344715E7 -23 2.4659032059E7 2.3981057941E7 -24 4.9119444861E7 4.8160645139E7 +22 12399745.285 11920344.715 +23 24659032.059 23981057.941 +24 49119444.861 48160645.139 -- !sql_test_Integer_String_notn_0 -- 1 \N \N @@ -13926,17 +13926,17 @@ 11 \N \N 12 \N \N 13 34399.017 13190.983 -14 62533.793 32556.207000000002 -15 116237.013 73852.987 +14 62533.793 32556.207 +15 116237.013 73852.98699999999 16 220011.255 160078.745 17 422421.012 337668.988 -18 819971.842 700118.158 +18 819971.8419999999 700118.1580000001 19 1604793.017 1435296.983 20 3159895.851 2920194.149 21 6249539.031 5910550.969 -22 1.2399745285E7 1.1920344715E7 -23 2.4659032059E7 2.3981057941E7 -24 4.9119444861E7 4.8160645139E7 +22 12399745.285 11920344.715 +23 24659032.059 23981057.941 +24 49119444.861 48160645.139 -- !sql_test_Integer_String_1 -- \N \N \N \N @@ -13952,18 +13952,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.52322584515E8 2.2439609442346238 2586.9660000000003 -14 7.12642163185E8 3.1720366009457868 2578.621000000001 -15 2.0141948755849998E9 4.484944398627917 10276.948000000004 -16 5.694936931475E9 6.341966989201687 10247.469999999994 -17 1.610479148054E10 8.968399385954488 41036.90399999998 -18 4.554709662789E10 12.682880903352125 40922.89600000004 -19 1.2882079950076501E11 17.936053890204885 79328.71099999988 -20 3.64351980328295E11 25.365234995285935 43773.72500000012 -21 1.0305313357113949E12 35.87173521172554 147753.91500000042 -22 2.914766252112825E12 50.730206682899855 175030.74999999983 -23 8.244180529297655E12 71.74328445381745 251963.8109999994 -24 2.3318030812033742E13 101.46028181681096 220659.0390000025 +13 252322584.515 2.243960944234624 2586.966 +14 712642163.1849999 3.172036600945787 2578.621000000001 +15 2014194875.585 4.484944398627917 10276.948 +16 5694936931.475 6.341966989201687 10247.46999999999 +17 16104791480.54 8.968399385954488 41036.90399999998 +18 45547096627.89 12.68288090335212 40922.89600000004 +19 128820799500.765 17.93605389020489 79328.71099999988 +20 364351980328.295 25.36523499528593 43773.72500000012 +21 1030531335711.395 35.87173521172554 147753.9150000004 +22 2914766252112.825 50.73020668289985 175030.7499999998 +23 8244180529297.655 71.74328445381745 251963.8109999994 +24 23318030812033.74 101.460281816811 220659.0390000025 -- !sql_test_Integer_String_notn_1 -- 1 \N \N \N @@ -13978,18 +13978,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.52322584515E8 2.2439609442346238 2586.9660000000003 -14 7.12642163185E8 3.1720366009457868 2578.621000000001 -15 2.0141948755849998E9 4.484944398627917 10276.948000000004 -16 5.694936931475E9 6.341966989201687 10247.469999999994 -17 1.610479148054E10 8.968399385954488 41036.90399999998 -18 4.554709662789E10 12.682880903352125 40922.89600000004 -19 1.2882079950076501E11 17.936053890204885 79328.71099999988 -20 3.64351980328295E11 25.365234995285935 43773.72500000012 -21 1.0305313357113949E12 35.87173521172554 147753.91500000042 -22 2.914766252112825E12 50.730206682899855 175030.74999999983 -23 8.244180529297655E12 71.74328445381745 251963.8109999994 -24 2.3318030812033742E13 101.46028181681096 220659.0390000025 +13 252322584.515 2.243960944234624 2586.966 +14 712642163.1849999 3.172036600945787 2578.621000000001 +15 2014194875.585 4.484944398627917 10276.948 +16 5694936931.475 6.341966989201687 10247.46999999999 +17 16104791480.54 8.968399385954488 41036.90399999998 +18 45547096627.89 12.68288090335212 40922.89600000004 +19 128820799500.765 17.93605389020489 79328.71099999988 +20 364351980328.295 25.36523499528593 43773.72500000012 +21 1030531335711.395 35.87173521172554 147753.9150000004 +22 2914766252112.825 50.73020668289985 175030.7499999998 +23 8244180529297.655 71.74328445381745 251963.8109999994 +24 23318030812033.74 101.460281816811 220659.0390000025 -- !sql_test_Integer_String_3 -- \N \N \N \N @@ -14099,55 +14099,55 @@ -- !sql_test_Integer_Date_1 -- \N \N \N \N -1 478762562295 0.0011826363830242897 23795 +1 478762562295 0.00118263638302429 23795 2 956619758590 0.002363036101545593 47545 3 1912334198635 0.004723835421365175 95045 4 3823763173680 0.009445433826447155 190045 -5 7646621313725 0.018888630167385633 380045 +5 7646621313725 0.01888863016738563 380045 6 15292337973770 0.03777502191070056 760045 -7 30583772053815 0.0755478035200954 1520045 -8 61166641733860 0.15109336298430423 3040045 -9 122332384133905 0.30218447440344975 6080045 +7 30583772053815 0.07554780352009539 1520045 +8 61166641733860 0.1510933629843042 3040045 +9 122332384133905 0.3021844744034498 6080045 10 244663875013950 0.604366682223087 12160045 -11 489326868933995 1.2087310678249457 4199734 +11 489326868933995 1.208731067824946 4199734 12 978652881094040 2.417459778953726 8399421 -13 478762562295 0.0011826363830242897 23795 +13 478762562295 0.00118263638302429 23795 14 956619758590 0.002363036101545593 47545 15 1912334198635 0.004723835421365175 95045 16 3823763173680 0.009445433826447155 190045 -17 7646621313725 0.018888630167385633 380045 +17 7646621313725 0.01888863016738563 380045 18 15292337973770 0.03777502191070056 760045 -19 30583772053815 0.0755478035200954 1520045 -20 61166641733860 0.15109336298430423 3040045 -21 122332384133905 0.30218447440344975 6080045 +19 30583772053815 0.07554780352009539 1520045 +20 61166641733860 0.1510933629843042 3040045 +21 122332384133905 0.3021844744034498 6080045 22 244663875013950 0.604366682223087 12160045 -23 489326868933995 1.2087310678249457 4199734 +23 489326868933995 1.208731067824946 4199734 24 978652881094040 2.417459778953726 8399421 -- !sql_test_Integer_Date_notn_1 -- -1 478762562295 0.0011826363830242897 23795 +1 478762562295 0.00118263638302429 23795 2 956619758590 0.002363036101545593 47545 3 1912334198635 0.004723835421365175 95045 4 3823763173680 0.009445433826447155 190045 -5 7646621313725 0.018888630167385633 380045 +5 7646621313725 0.01888863016738563 380045 6 15292337973770 0.03777502191070056 760045 -7 30583772053815 0.0755478035200954 1520045 -8 61166641733860 0.15109336298430423 3040045 -9 122332384133905 0.30218447440344975 6080045 +7 30583772053815 0.07554780352009539 1520045 +8 61166641733860 0.1510933629843042 3040045 +9 122332384133905 0.3021844744034498 6080045 10 244663875013950 0.604366682223087 12160045 -11 489326868933995 1.2087310678249457 4199734 +11 489326868933995 1.208731067824946 4199734 12 978652881094040 2.417459778953726 8399421 -13 478762562295 0.0011826363830242897 23795 +13 478762562295 0.00118263638302429 23795 14 956619758590 0.002363036101545593 47545 15 1912334198635 0.004723835421365175 95045 16 3823763173680 0.009445433826447155 190045 -17 7646621313725 0.018888630167385633 380045 +17 7646621313725 0.01888863016738563 380045 18 15292337973770 0.03777502191070056 760045 -19 30583772053815 0.0755478035200954 1520045 -20 61166641733860 0.15109336298430423 3040045 -21 122332384133905 0.30218447440344975 6080045 +19 30583772053815 0.07554780352009539 1520045 +20 61166641733860 0.1510933629843042 3040045 +21 122332384133905 0.3021844744034498 6080045 22 244663875013950 0.604366682223087 12160045 -23 489326868933995 1.2087310678249457 4199734 +23 489326868933995 1.208731067824946 4199734 24 978652881094040 2.417459778953726 8399421 -- !sql_test_Integer_Date_3 -- @@ -14311,56 +14311,56 @@ -- !sql_test_Integer_DateTime_1 -- \N \N \N \N -1 478762562532973795 1.1826363824364483E-9 23795 -2 956619759545749590 2.3630360991847065E-9 47545 -3 1912334201505644135 4.723835414274129E-9 95045 -4 3823763181339573680 9.445433807526528E-9 190045 -5 7646621332881168225 1.88886301200662E-8 380045 -6 -3154406053952268846 3.777502179710311E-8 760045 -7 -6309715986278285917 7.554780325497997E-8 1520045 -8 5826409758087297012 1.5109336237822785E-7 3040045 -9 -6794823829939054907 3.0218447303960043E-7 6080045 -10 4856203282795969942 6.043666791919885E-7 12160045 -11 -8735218356370378137 1.2087310611559412E-6 24320045 -12 975451078326894392 2.4174597644020936E-6 48640045 -13 478762562532973795 1.1826363824364483E-9 23795 -14 956619759545749590 2.3630360991847065E-9 47545 -15 1912334201505644135 4.723835414274129E-9 95045 -16 3823763181339573680 9.445433807526528E-9 190045 -17 7646621332881168225 1.88886301200662E-8 380045 -18 -3154406053952268846 3.777502179710311E-8 760045 -19 -6309715986278285917 7.554780325497997E-8 1520045 -20 5826409758087297012 1.5109336237822785E-7 3040045 -21 -6794823829939054907 3.0218447303960043E-7 6080045 -22 4856203282795969942 6.043666791919885E-7 12160045 -23 -8735218356370378137 1.2087310611559412E-6 24320045 -24 975451078326894392 2.4174597644020936E-6 48640045 +1 478762562532973795 1.182636382436448e-09 23795 +2 956619759545749590 2.363036099184707e-09 47545 +3 1912334201505644135 4.723835414274129e-09 95045 +4 3823763181339573680 9.445433807526528e-09 190045 +5 7646621332881168225 1.88886301200662e-08 380045 +6 -3154406053952268846 3.777502179710311e-08 760045 +7 -6309715986278285917 7.554780325497997e-08 1520045 +8 5826409758087297012 1.510933623782279e-07 3040045 +9 -6794823829939054907 3.021844730396004e-07 6080045 +10 4856203282795969942 6.043666791919885e-07 12160045 +11 -8735218356370378137 1.208731061155941e-06 24320045 +12 975451078326894392 2.417459764402094e-06 48640045 +13 478762562532973795 1.182636382436448e-09 23795 +14 956619759545749590 2.363036099184707e-09 47545 +15 1912334201505644135 4.723835414274129e-09 95045 +16 3823763181339573680 9.445433807526528e-09 190045 +17 7646621332881168225 1.88886301200662e-08 380045 +18 -3154406053952268846 3.777502179710311e-08 760045 +19 -6309715986278285917 7.554780325497997e-08 1520045 +20 5826409758087297012 1.510933623782279e-07 3040045 +21 -6794823829939054907 3.021844730396004e-07 6080045 +22 4856203282795969942 6.043666791919885e-07 12160045 +23 -8735218356370378137 1.208731061155941e-06 24320045 +24 975451078326894392 2.417459764402094e-06 48640045 -- !sql_test_Integer_DateTime_notn_1 -- -1 478762562532973795 1.1826363824364483E-9 23795 -2 956619759545749590 2.3630360991847065E-9 47545 -3 1912334201505644135 4.723835414274129E-9 95045 -4 3823763181339573680 9.445433807526528E-9 190045 -5 7646621332881168225 1.88886301200662E-8 380045 -6 -3154406053952268846 3.777502179710311E-8 760045 -7 -6309715986278285917 7.554780325497997E-8 1520045 -8 5826409758087297012 1.5109336237822785E-7 3040045 -9 -6794823829939054907 3.0218447303960043E-7 6080045 -10 4856203282795969942 6.043666791919885E-7 12160045 -11 -8735218356370378137 1.2087310611559412E-6 24320045 -12 975451078326894392 2.4174597644020936E-6 48640045 -13 478762562532973795 1.1826363824364483E-9 23795 -14 956619759545749590 2.3630360991847065E-9 47545 -15 1912334201505644135 4.723835414274129E-9 95045 -16 3823763181339573680 9.445433807526528E-9 190045 -17 7646621332881168225 1.88886301200662E-8 380045 -18 -3154406053952268846 3.777502179710311E-8 760045 -19 -6309715986278285917 7.554780325497997E-8 1520045 -20 5826409758087297012 1.5109336237822785E-7 3040045 -21 -6794823829939054907 3.0218447303960043E-7 6080045 -22 4856203282795969942 6.043666791919885E-7 12160045 -23 -8735218356370378137 1.2087310611559412E-6 24320045 -24 975451078326894392 2.4174597644020936E-6 48640045 +1 478762562532973795 1.182636382436448e-09 23795 +2 956619759545749590 2.363036099184707e-09 47545 +3 1912334201505644135 4.723835414274129e-09 95045 +4 3823763181339573680 9.445433807526528e-09 190045 +5 7646621332881168225 1.88886301200662e-08 380045 +6 -3154406053952268846 3.777502179710311e-08 760045 +7 -6309715986278285917 7.554780325497997e-08 1520045 +8 5826409758087297012 1.510933623782279e-07 3040045 +9 -6794823829939054907 3.021844730396004e-07 6080045 +10 4856203282795969942 6.043666791919885e-07 12160045 +11 -8735218356370378137 1.208731061155941e-06 24320045 +12 975451078326894392 2.417459764402094e-06 48640045 +13 478762562532973795 1.182636382436448e-09 23795 +14 956619759545749590 2.363036099184707e-09 47545 +15 1912334201505644135 4.723835414274129e-09 95045 +16 3823763181339573680 9.445433807526528e-09 190045 +17 7646621332881168225 1.88886301200662e-08 380045 +18 -3154406053952268846 3.777502179710311e-08 760045 +19 -6309715986278285917 7.554780325497997e-08 1520045 +20 5826409758087297012 1.510933623782279e-07 3040045 +21 -6794823829939054907 3.021844730396004e-07 6080045 +22 4856203282795969942 6.043666791919885e-07 12160045 +23 -8735218356370378137 1.208731061155941e-06 24320045 +24 975451078326894392 2.417459764402094e-06 48640045 -- !sql_test_Integer_DateTime_3 -- \N \N \N \N @@ -14523,55 +14523,55 @@ -- !sql_test_Integer_DateV2_1 -- \N \N \N \N -1 478762562295 0.0011826363830242897 23795 +1 478762562295 0.00118263638302429 23795 2 956619758590 0.002363036101545593 47545 3 1912334198635 0.004723835421365175 95045 4 3823763173680 0.009445433826447155 190045 -5 7646621313725 0.018888630167385633 380045 +5 7646621313725 0.01888863016738563 380045 6 15292337973770 0.03777502191070056 760045 -7 30583772053815 0.0755478035200954 1520045 -8 61166641733860 0.15109336298430423 3040045 -9 122332384133905 0.30218447440344975 6080045 +7 30583772053815 0.07554780352009539 1520045 +8 61166641733860 0.1510933629843042 3040045 +9 122332384133905 0.3021844744034498 6080045 10 244663875013950 0.604366682223087 12160045 -11 489326868933995 1.2087310678249457 4199734 +11 489326868933995 1.208731067824946 4199734 12 978652881094040 2.417459778953726 8399421 -13 478762562295 0.0011826363830242897 23795 +13 478762562295 0.00118263638302429 23795 14 956619758590 0.002363036101545593 47545 15 1912334198635 0.004723835421365175 95045 16 3823763173680 0.009445433826447155 190045 -17 7646621313725 0.018888630167385633 380045 +17 7646621313725 0.01888863016738563 380045 18 15292337973770 0.03777502191070056 760045 -19 30583772053815 0.0755478035200954 1520045 -20 61166641733860 0.15109336298430423 3040045 -21 122332384133905 0.30218447440344975 6080045 +19 30583772053815 0.07554780352009539 1520045 +20 61166641733860 0.1510933629843042 3040045 +21 122332384133905 0.3021844744034498 6080045 22 244663875013950 0.604366682223087 12160045 -23 489326868933995 1.2087310678249457 4199734 +23 489326868933995 1.208731067824946 4199734 24 978652881094040 2.417459778953726 8399421 -- !sql_test_Integer_DateV2_notn_1 -- -1 478762562295 0.0011826363830242897 23795 +1 478762562295 0.00118263638302429 23795 2 956619758590 0.002363036101545593 47545 3 1912334198635 0.004723835421365175 95045 4 3823763173680 0.009445433826447155 190045 -5 7646621313725 0.018888630167385633 380045 +5 7646621313725 0.01888863016738563 380045 6 15292337973770 0.03777502191070056 760045 -7 30583772053815 0.0755478035200954 1520045 -8 61166641733860 0.15109336298430423 3040045 -9 122332384133905 0.30218447440344975 6080045 +7 30583772053815 0.07554780352009539 1520045 +8 61166641733860 0.1510933629843042 3040045 +9 122332384133905 0.3021844744034498 6080045 10 244663875013950 0.604366682223087 12160045 -11 489326868933995 1.2087310678249457 4199734 +11 489326868933995 1.208731067824946 4199734 12 978652881094040 2.417459778953726 8399421 -13 478762562295 0.0011826363830242897 23795 +13 478762562295 0.00118263638302429 23795 14 956619758590 0.002363036101545593 47545 15 1912334198635 0.004723835421365175 95045 16 3823763173680 0.009445433826447155 190045 -17 7646621313725 0.018888630167385633 380045 +17 7646621313725 0.01888863016738563 380045 18 15292337973770 0.03777502191070056 760045 -19 30583772053815 0.0755478035200954 1520045 -20 61166641733860 0.15109336298430423 3040045 -21 122332384133905 0.30218447440344975 6080045 +19 30583772053815 0.07554780352009539 1520045 +20 61166641733860 0.1510933629843042 3040045 +21 122332384133905 0.3021844744034498 6080045 22 244663875013950 0.604366682223087 12160045 -23 489326868933995 1.2087310678249457 4199734 +23 489326868933995 1.208731067824946 4199734 24 978652881094040 2.417459778953726 8399421 -- !sql_test_Integer_DateV2_3 -- @@ -14735,56 +14735,56 @@ -- !sql_test_Integer_DateTimeV2_1 -- \N \N \N \N -1 478762562532973795 1.1826363824364483E-9 23795 -2 956619759545749590 2.3630360991847065E-9 47545 -3 1912334201505644135 4.723835414274129E-9 95045 -4 3823763181339573680 9.445433807526528E-9 190045 -5 7646621332881168225 1.88886301200662E-8 380045 -6 -3154406053952268846 3.777502179710311E-8 760045 -7 -6309715986278285917 7.554780325497997E-8 1520045 -8 5826409758087297012 1.5109336237822785E-7 3040045 -9 -6794823829939054907 3.0218447303960043E-7 6080045 -10 4856203282795969942 6.043666791919885E-7 12160045 -11 -8735218356370378137 1.2087310611559412E-6 24320045 -12 975451078326894392 2.4174597644020936E-6 48640045 -13 478762562532973795 1.1826363824364483E-9 23795 -14 956619759545749590 2.3630360991847065E-9 47545 -15 1912334201505644135 4.723835414274129E-9 95045 -16 3823763181339573680 9.445433807526528E-9 190045 -17 7646621332881168225 1.88886301200662E-8 380045 -18 -3154406053952268846 3.777502179710311E-8 760045 -19 -6309715986278285917 7.554780325497997E-8 1520045 -20 5826409758087297012 1.5109336237822785E-7 3040045 -21 -6794823829939054907 3.0218447303960043E-7 6080045 -22 4856203282795969942 6.043666791919885E-7 12160045 -23 -8735218356370378137 1.2087310611559412E-6 24320045 -24 975451078326894392 2.4174597644020936E-6 48640045 +1 478762562532973795 1.182636382436448e-09 23795 +2 956619759545749590 2.363036099184707e-09 47545 +3 1912334201505644135 4.723835414274129e-09 95045 +4 3823763181339573680 9.445433807526528e-09 190045 +5 7646621332881168225 1.88886301200662e-08 380045 +6 -3154406053952268846 3.777502179710311e-08 760045 +7 -6309715986278285917 7.554780325497997e-08 1520045 +8 5826409758087297012 1.510933623782279e-07 3040045 +9 -6794823829939054907 3.021844730396004e-07 6080045 +10 4856203282795969942 6.043666791919885e-07 12160045 +11 -8735218356370378137 1.208731061155941e-06 24320045 +12 975451078326894392 2.417459764402094e-06 48640045 +13 478762562532973795 1.182636382436448e-09 23795 +14 956619759545749590 2.363036099184707e-09 47545 +15 1912334201505644135 4.723835414274129e-09 95045 +16 3823763181339573680 9.445433807526528e-09 190045 +17 7646621332881168225 1.88886301200662e-08 380045 +18 -3154406053952268846 3.777502179710311e-08 760045 +19 -6309715986278285917 7.554780325497997e-08 1520045 +20 5826409758087297012 1.510933623782279e-07 3040045 +21 -6794823829939054907 3.021844730396004e-07 6080045 +22 4856203282795969942 6.043666791919885e-07 12160045 +23 -8735218356370378137 1.208731061155941e-06 24320045 +24 975451078326894392 2.417459764402094e-06 48640045 -- !sql_test_Integer_DateTimeV2_notn_1 -- -1 478762562532973795 1.1826363824364483E-9 23795 -2 956619759545749590 2.3630360991847065E-9 47545 -3 1912334201505644135 4.723835414274129E-9 95045 -4 3823763181339573680 9.445433807526528E-9 190045 -5 7646621332881168225 1.88886301200662E-8 380045 -6 -3154406053952268846 3.777502179710311E-8 760045 -7 -6309715986278285917 7.554780325497997E-8 1520045 -8 5826409758087297012 1.5109336237822785E-7 3040045 -9 -6794823829939054907 3.0218447303960043E-7 6080045 -10 4856203282795969942 6.043666791919885E-7 12160045 -11 -8735218356370378137 1.2087310611559412E-6 24320045 -12 975451078326894392 2.4174597644020936E-6 48640045 -13 478762562532973795 1.1826363824364483E-9 23795 -14 956619759545749590 2.3630360991847065E-9 47545 -15 1912334201505644135 4.723835414274129E-9 95045 -16 3823763181339573680 9.445433807526528E-9 190045 -17 7646621332881168225 1.88886301200662E-8 380045 -18 -3154406053952268846 3.777502179710311E-8 760045 -19 -6309715986278285917 7.554780325497997E-8 1520045 -20 5826409758087297012 1.5109336237822785E-7 3040045 -21 -6794823829939054907 3.0218447303960043E-7 6080045 -22 4856203282795969942 6.043666791919885E-7 12160045 -23 -8735218356370378137 1.2087310611559412E-6 24320045 -24 975451078326894392 2.4174597644020936E-6 48640045 +1 478762562532973795 1.182636382436448e-09 23795 +2 956619759545749590 2.363036099184707e-09 47545 +3 1912334201505644135 4.723835414274129e-09 95045 +4 3823763181339573680 9.445433807526528e-09 190045 +5 7646621332881168225 1.88886301200662e-08 380045 +6 -3154406053952268846 3.777502179710311e-08 760045 +7 -6309715986278285917 7.554780325497997e-08 1520045 +8 5826409758087297012 1.510933623782279e-07 3040045 +9 -6794823829939054907 3.021844730396004e-07 6080045 +10 4856203282795969942 6.043666791919885e-07 12160045 +11 -8735218356370378137 1.208731061155941e-06 24320045 +12 975451078326894392 2.417459764402094e-06 48640045 +13 478762562532973795 1.182636382436448e-09 23795 +14 956619759545749590 2.363036099184707e-09 47545 +15 1912334201505644135 4.723835414274129e-09 95045 +16 3823763181339573680 9.445433807526528e-09 190045 +17 7646621332881168225 1.88886301200662e-08 380045 +18 -3154406053952268846 3.777502179710311e-08 760045 +19 -6309715986278285917 7.554780325497997e-08 1520045 +20 5826409758087297012 1.510933623782279e-07 3040045 +21 -6794823829939054907 3.021844730396004e-07 6080045 +22 4856203282795969942 6.043666791919885e-07 12160045 +23 -8735218356370378137 1.208731061155941e-06 24320045 +24 975451078326894392 2.417459764402094e-06 48640045 -- !sql_test_Integer_DateTimeV2_3 -- \N \N \N \N @@ -14954,11 +14954,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 3040045 3040045.0 0 -9 6080045 6080045.0 0 -10 12160045 1.2160045E7 0 -11 24320045 2.4320045E7 0 -12 48640045 4.8640045E7 0 +8 3040045 3040045 0 +9 6080045 6080045 0 +10 12160045 12160045 0 +11 24320045 24320045 0 +12 48640045 48640045 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -14966,11 +14966,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 3040045 3040045.0 0 -21 6080045 6080045.0 0 -22 12160045 1.2160045E7 0 -23 24320045 2.4320045E7 0 -24 48640045 4.8640045E7 0 +20 3040045 3040045 0 +21 6080045 6080045 0 +22 12160045 12160045 0 +23 24320045 24320045 0 +24 48640045 48640045 0 -- !sql_test_Integer_Boolean_notn_1 -- 1 0 \N \N @@ -14980,11 +14980,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 3040045 3040045.0 0 -9 6080045 6080045.0 0 -10 12160045 1.2160045E7 0 -11 24320045 2.4320045E7 0 -12 48640045 4.8640045E7 0 +8 3040045 3040045 0 +9 6080045 6080045 0 +10 12160045 12160045 0 +11 24320045 24320045 0 +12 48640045 48640045 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -14992,11 +14992,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 3040045 3040045.0 0 -21 6080045 6080045.0 0 -22 12160045 1.2160045E7 0 -23 24320045 2.4320045E7 0 -24 48640045 4.8640045E7 0 +20 3040045 3040045 0 +21 6080045 6080045 0 +22 12160045 12160045 0 +23 24320045 24320045 0 +24 48640045 48640045 0 -- !sql_test_Integer_Boolean_3 -- \N \N \N \N @@ -15159,56 +15159,56 @@ -- !sql_test_BigInt_TinyInt_1 -- \N \N \N \N -1 5354529 5354529.0 0 +1 5354529 5354529 0 2 21396558 5349139.5 1 -3 64157337 7128593.0 0 -4 171043116 1.069019475E7 3 -5 427553895 1.71021558E7 4 -6 1026064674 2.85017965E7 3 -7 2394075453 4.885868271428572E7 5 -8 5472086232 8.5501347375E7 3 -9 12312097011 1.5200119766666666E8 6 -10 27360107790 2.736010779E8 9 -11 60192118569 4.974555253636364E8 4 -12 131328129348 9.1200089825E8 3 -13 5354529 5354529.0 0 +3 64157337 7128593 0 +4 171043116 10690194.75 3 +5 427553895 17102155.8 4 +6 1026064674 28501796.5 3 +7 2394075453 48858682.71428572 5 +8 5472086232 85501347.375 3 +9 12312097011 152001197.6666667 6 +10 27360107790 273601077.9 9 +11 60192118569 497455525.3636364 4 +12 131328129348 912000898.25 3 +13 5354529 5354529 0 14 21396558 5349139.5 1 -15 64157337 7128593.0 0 -16 171043116 1.069019475E7 3 -17 427553895 1.71021558E7 4 -18 1026064674 2.85017965E7 3 -19 2394075453 4.885868271428572E7 5 -20 5472086232 8.5501347375E7 3 -21 12312097011 1.5200119766666666E8 6 -22 27360107790 2.736010779E8 9 -23 60192118569 4.974555253636364E8 4 -24 131328129348 9.1200089825E8 3 +15 64157337 7128593 0 +16 171043116 10690194.75 3 +17 427553895 17102155.8 4 +18 1026064674 28501796.5 3 +19 2394075453 48858682.71428572 5 +20 5472086232 85501347.375 3 +21 12312097011 152001197.6666667 6 +22 27360107790 273601077.9 9 +23 60192118569 497455525.3636364 4 +24 131328129348 912000898.25 3 -- !sql_test_BigInt_TinyInt_notn_1 -- -1 5354529 5354529.0 0 +1 5354529 5354529 0 2 21396558 5349139.5 1 -3 64157337 7128593.0 0 -4 171043116 1.069019475E7 3 -5 427553895 1.71021558E7 4 -6 1026064674 2.85017965E7 3 -7 2394075453 4.885868271428572E7 5 -8 5472086232 8.5501347375E7 3 -9 12312097011 1.5200119766666666E8 6 -10 27360107790 2.736010779E8 9 -11 60192118569 4.974555253636364E8 4 -12 131328129348 9.1200089825E8 3 -13 5354529 5354529.0 0 +3 64157337 7128593 0 +4 171043116 10690194.75 3 +5 427553895 17102155.8 4 +6 1026064674 28501796.5 3 +7 2394075453 48858682.71428572 5 +8 5472086232 85501347.375 3 +9 12312097011 152001197.6666667 6 +10 27360107790 273601077.9 9 +11 60192118569 497455525.3636364 4 +12 131328129348 912000898.25 3 +13 5354529 5354529 0 14 21396558 5349139.5 1 -15 64157337 7128593.0 0 -16 171043116 1.069019475E7 3 -17 427553895 1.71021558E7 4 -18 1026064674 2.85017965E7 3 -19 2394075453 4.885868271428572E7 5 -20 5472086232 8.5501347375E7 3 -21 12312097011 1.5200119766666666E8 6 -22 27360107790 2.736010779E8 9 -23 60192118569 4.974555253636364E8 4 -24 131328129348 9.1200089825E8 3 +15 64157337 7128593 0 +16 171043116 10690194.75 3 +17 427553895 17102155.8 4 +18 1026064674 28501796.5 3 +19 2394075453 48858682.71428572 5 +20 5472086232 85501347.375 3 +21 12312097011 152001197.6666667 6 +22 27360107790 273601077.9 9 +23 60192118569 497455525.3636364 4 +24 131328129348 912000898.25 3 -- !sql_test_BigInt_TinyInt_2 -- \N \N @@ -15689,56 +15689,56 @@ -- !sql_test_BigInt_Integer_1 -- \N \N \N \N -1 127411017555 225.02748476570707 654 +1 127411017555 225.0274847657071 654 2 508649675055 225.0137553896309 654 3 2032611365055 225.0068809511284 654 -4 8126472245055 225.00344129022074 654 -5 32497944005055 225.00172084884684 654 -6 129975887525055 225.00086047536658 654 +4 8126472245055 225.0034412902207 654 +5 32497944005055 225.0017208488468 654 +6 129975887525055 225.0008604753666 654 7 519871774565055 225.0004302504202 654 -8 2079423548645055 225.00021512839447 654 -9 8317567096805055 225.00010756499336 654 -10 33270014193125055 225.00005378269572 654 -11 133079548385765055 225.00002689139762 654 -12 532317176771045055 225.00001344571123 654 -13 127411017555 225.02748476570707 654 +8 2079423548645055 225.0002151283945 654 +9 8317567096805055 225.0001075649934 654 +10 33270014193125055 225.0000537826957 654 +11 133079548385765055 225.0000268913976 654 +12 532317176771045055 225.0000134457112 654 +13 127411017555 225.0274847657071 654 14 508649675055 225.0137553896309 654 15 2032611365055 225.0068809511284 654 -16 8126472245055 225.00344129022074 654 -17 32497944005055 225.00172084884684 654 -18 129975887525055 225.00086047536658 654 +16 8126472245055 225.0034412902207 654 +17 32497944005055 225.0017208488468 654 +18 129975887525055 225.0008604753666 654 19 519871774565055 225.0004302504202 654 -20 2079423548645055 225.00021512839447 654 -21 8317567096805055 225.00010756499336 654 -22 33270014193125055 225.00005378269572 654 -23 133079548385765055 225.00002689139762 654 -24 532317176771045055 225.00001344571123 654 +20 2079423548645055 225.0002151283945 654 +21 8317567096805055 225.0001075649934 654 +22 33270014193125055 225.0000537826957 654 +23 133079548385765055 225.0000268913976 654 +24 532317176771045055 225.0000134457112 654 -- !sql_test_BigInt_Integer_notn_1 -- -1 127411017555 225.02748476570707 654 +1 127411017555 225.0274847657071 654 2 508649675055 225.0137553896309 654 3 2032611365055 225.0068809511284 654 -4 8126472245055 225.00344129022074 654 -5 32497944005055 225.00172084884684 654 -6 129975887525055 225.00086047536658 654 +4 8126472245055 225.0034412902207 654 +5 32497944005055 225.0017208488468 654 +6 129975887525055 225.0008604753666 654 7 519871774565055 225.0004302504202 654 -8 2079423548645055 225.00021512839447 654 -9 8317567096805055 225.00010756499336 654 -10 33270014193125055 225.00005378269572 654 -11 133079548385765055 225.00002689139762 654 -12 532317176771045055 225.00001344571123 654 -13 127411017555 225.02748476570707 654 +8 2079423548645055 225.0002151283945 654 +9 8317567096805055 225.0001075649934 654 +10 33270014193125055 225.0000537826957 654 +11 133079548385765055 225.0000268913976 654 +12 532317176771045055 225.0000134457112 654 +13 127411017555 225.0274847657071 654 14 508649675055 225.0137553896309 654 15 2032611365055 225.0068809511284 654 -16 8126472245055 225.00344129022074 654 -17 32497944005055 225.00172084884684 654 -18 129975887525055 225.00086047536658 654 +16 8126472245055 225.0034412902207 654 +17 32497944005055 225.0017208488468 654 +18 129975887525055 225.0008604753666 654 19 519871774565055 225.0004302504202 654 -20 2079423548645055 225.00021512839447 654 -21 8317567096805055 225.00010756499336 654 -22 33270014193125055 225.00005378269572 654 -23 133079548385765055 225.00002689139762 654 -24 532317176771045055 225.00001344571123 654 +20 2079423548645055 225.0002151283945 654 +21 8317567096805055 225.0001075649934 654 +22 33270014193125055 225.0000537826957 654 +23 133079548385765055 225.0000268913976 654 +24 532317176771045055 225.0000134457112 654 -- !sql_test_BigInt_Integer_2 -- \N \N @@ -15954,56 +15954,56 @@ -- !sql_test_BigInt_BigInt_1 -- \N \N \N \N -1 28670980811841 1.0 0 -2 114453173561841 1.0 0 -3 457351543436841 1.0 0 -4 1828484220686841 1.0 0 -5 7312093325186841 1.0 0 -6 29244686534186841 1.0 0 -7 116971372952186841 1.0 0 -8 467870745788186841 1.0 0 -9 1871453491460186841 1.0 0 -10 7485754982804186841 1.0 0 -11 -6950586181926916391 1.0 0 -12 9090907488610877145 1.0 0 -13 28670980811841 1.0 0 -14 114453173561841 1.0 0 -15 457351543436841 1.0 0 -16 1828484220686841 1.0 0 -17 7312093325186841 1.0 0 -18 29244686534186841 1.0 0 -19 116971372952186841 1.0 0 -20 467870745788186841 1.0 0 -21 1871453491460186841 1.0 0 -22 7485754982804186841 1.0 0 -23 -6950586181926916391 1.0 0 -24 9090907488610877145 1.0 0 +1 28670980811841 1 0 +2 114453173561841 1 0 +3 457351543436841 1 0 +4 1828484220686841 1 0 +5 7312093325186841 1 0 +6 29244686534186841 1 0 +7 116971372952186841 1 0 +8 467870745788186841 1 0 +9 1871453491460186841 1 0 +10 7485754982804186841 1 0 +11 -6950586181926916391 1 0 +12 9090907488610877145 1 0 +13 28670980811841 1 0 +14 114453173561841 1 0 +15 457351543436841 1 0 +16 1828484220686841 1 0 +17 7312093325186841 1 0 +18 29244686534186841 1 0 +19 116971372952186841 1 0 +20 467870745788186841 1 0 +21 1871453491460186841 1 0 +22 7485754982804186841 1 0 +23 -6950586181926916391 1 0 +24 9090907488610877145 1 0 -- !sql_test_BigInt_BigInt_notn_1 -- -1 28670980811841 1.0 0 -2 114453173561841 1.0 0 -3 457351543436841 1.0 0 -4 1828484220686841 1.0 0 -5 7312093325186841 1.0 0 -6 29244686534186841 1.0 0 -7 116971372952186841 1.0 0 -8 467870745788186841 1.0 0 -9 1871453491460186841 1.0 0 -10 7485754982804186841 1.0 0 -11 -6950586181926916391 1.0 0 -12 9090907488610877145 1.0 0 -13 28670980811841 1.0 0 -14 114453173561841 1.0 0 -15 457351543436841 1.0 0 -16 1828484220686841 1.0 0 -17 7312093325186841 1.0 0 -18 29244686534186841 1.0 0 -19 116971372952186841 1.0 0 -20 467870745788186841 1.0 0 -21 1871453491460186841 1.0 0 -22 7485754982804186841 1.0 0 -23 -6950586181926916391 1.0 0 -24 9090907488610877145 1.0 0 +1 28670980811841 1 0 +2 114453173561841 1 0 +3 457351543436841 1 0 +4 1828484220686841 1 0 +5 7312093325186841 1 0 +6 29244686534186841 1 0 +7 116971372952186841 1 0 +8 467870745788186841 1 0 +9 1871453491460186841 1 0 +10 7485754982804186841 1 0 +11 -6950586181926916391 1 0 +12 9090907488610877145 1 0 +13 28670980811841 1 0 +14 114453173561841 1 0 +15 457351543436841 1 0 +16 1828484220686841 1 0 +17 7312093325186841 1 0 +18 29244686534186841 1 0 +19 116971372952186841 1 0 +20 467870745788186841 1 0 +21 1871453491460186841 1 0 +22 7485754982804186841 1 0 +23 -6950586181926916391 1 0 +24 9090907488610877145 1 0 -- !sql_test_BigInt_BigInt_2 -- \N \N @@ -16221,53 +16221,53 @@ \N \N \N \N 1 573419964281205 0.04999996965187762 5354529 2 2289064166624955 0.04999998481064565 10698279 -3 9147032258812455 0.049999992401493755 21385779 -4 36569687193187455 0.049999996199788885 42760779 +3 9147032258812455 0.04999999240149375 21385779 +4 36569687193187455 0.04999999619978888 42760779 5 146241872061937455 0.04999999809965485 85510779 6 584893741799437455 0.04999999904976752 171010779 -7 2339427481274437455 0.049999999524868784 342010779 +7 2339427481274437455 0.04999999952486878 342010779 8 9357414960224437455 0.04999999976243064 684010779 9 37429069918124437455 0.04999999988121439 1368010779 10 149715099833924437455 0.04999999994060696 2736010779 -11 598858039665524437455 0.049999999970303424 5472010779 +11 598858039665524437455 0.04999999997030342 5472010779 12 2395427439328724437455 0.04999999998515169 10944010779 13 573419964281205 0.04999996965187762 5354529 14 2289064166624955 0.04999998481064565 10698279 -15 9147032258812455 0.049999992401493755 21385779 -16 36569687193187455 0.049999996199788885 42760779 +15 9147032258812455 0.04999999240149375 21385779 +16 36569687193187455 0.04999999619978888 42760779 17 146241872061937455 0.04999999809965485 85510779 18 584893741799437455 0.04999999904976752 171010779 -19 2339427481274437455 0.049999999524868784 342010779 +19 2339427481274437455 0.04999999952486878 342010779 20 9357414960224437455 0.04999999976243064 684010779 21 37429069918124437455 0.04999999988121439 1368010779 22 149715099833924437455 0.04999999994060696 2736010779 -23 598858039665524437455 0.049999999970303424 5472010779 +23 598858039665524437455 0.04999999997030342 5472010779 24 2395427439328724437455 0.04999999998515169 10944010779 -- !sql_test_BigInt_LargeInt_notn_1 -- 1 573419964281205 0.04999996965187762 5354529 2 2289064166624955 0.04999998481064565 10698279 -3 9147032258812455 0.049999992401493755 21385779 -4 36569687193187455 0.049999996199788885 42760779 +3 9147032258812455 0.04999999240149375 21385779 +4 36569687193187455 0.04999999619978888 42760779 5 146241872061937455 0.04999999809965485 85510779 6 584893741799437455 0.04999999904976752 171010779 -7 2339427481274437455 0.049999999524868784 342010779 +7 2339427481274437455 0.04999999952486878 342010779 8 9357414960224437455 0.04999999976243064 684010779 9 37429069918124437455 0.04999999988121439 1368010779 10 149715099833924437455 0.04999999994060696 2736010779 -11 598858039665524437455 0.049999999970303424 5472010779 +11 598858039665524437455 0.04999999997030342 5472010779 12 2395427439328724437455 0.04999999998515169 10944010779 13 573419964281205 0.04999996965187762 5354529 14 2289064166624955 0.04999998481064565 10698279 -15 9147032258812455 0.049999992401493755 21385779 -16 36569687193187455 0.049999996199788885 42760779 +15 9147032258812455 0.04999999240149375 21385779 +16 36569687193187455 0.04999999619978888 42760779 17 146241872061937455 0.04999999809965485 85510779 18 584893741799437455 0.04999999904976752 171010779 -19 2339427481274437455 0.049999999524868784 342010779 +19 2339427481274437455 0.04999999952486878 342010779 20 9357414960224437455 0.04999999976243064 684010779 21 37429069918124437455 0.04999999988121439 1368010779 22 149715099833924437455 0.04999999994060696 2736010779 -23 598858039665524437455 0.049999999970303424 5472010779 +23 598858039665524437455 0.04999999997030342 5472010779 24 2395427439328724437455 0.04999999998515169 10944010779 -- !sql_test_BigInt_LargeInt_3 -- @@ -16378,56 +16378,56 @@ -- !sql_test_BigInt_Float_0 -- \N \N \N -1 5354529.1000000015 5354528.8999999985 -2 1.0698279200000003E7 1.0698278799999997E7 -3 2.1385779300000012E7 2.1385778699999988E7 -4 4.2760779400000006E7 4.2760778599999994E7 -5 8.55107795E7 8.55107785E7 -6 1.7101077960000002E8 1.7101077839999998E8 -7 3.420107797E8 3.420107783E8 -8 6.840107798E8 6.840107782E8 -9 1.3680107799E9 1.3680107781E9 -10 2.73601078E9 2.736010778E9 -11 5.4720107801E9 5.4720107779E9 -12 1.09440107802E10 1.09440107778E10 -13 5354529.1000000015 5354528.8999999985 -14 1.0698279200000003E7 1.0698278799999997E7 -15 2.1385779300000012E7 2.1385778699999988E7 -16 4.2760779400000006E7 4.2760778599999994E7 -17 8.55107795E7 8.55107785E7 -18 1.7101077960000002E8 1.7101077839999998E8 -19 3.420107797E8 3.420107783E8 -20 6.840107798E8 6.840107782E8 -21 1.3680107799E9 1.3680107781E9 -22 2.73601078E9 2.736010778E9 -23 5.4720107801E9 5.4720107779E9 -24 1.09440107802E10 1.09440107778E10 +1 5354529.100000001 5354528.899999999 +2 10698279.2 10698278.8 +3 21385779.30000001 21385778.69999999 +4 42760779.40000001 42760778.59999999 +5 85510779.5 85510778.5 +6 171010779.6 171010778.4 +7 342010779.7 342010778.3 +8 684010779.8 684010778.2 +9 1368010779.9 1368010778.1 +10 2736010780 2736010778 +11 5472010780.1 5472010777.9 +12 10944010780.2 10944010777.8 +13 5354529.100000001 5354528.899999999 +14 10698279.2 10698278.8 +15 21385779.30000001 21385778.69999999 +16 42760779.40000001 42760778.59999999 +17 85510779.5 85510778.5 +18 171010779.6 171010778.4 +19 342010779.7 342010778.3 +20 684010779.8 684010778.2 +21 1368010779.9 1368010778.1 +22 2736010780 2736010778 +23 5472010780.1 5472010777.9 +24 10944010780.2 10944010777.8 -- !sql_test_BigInt_Float_notn_0 -- -1 5354529.1000000015 5354528.8999999985 -2 1.0698279200000003E7 1.0698278799999997E7 -3 2.1385779300000012E7 2.1385778699999988E7 -4 4.2760779400000006E7 4.2760778599999994E7 -5 8.55107795E7 8.55107785E7 -6 1.7101077960000002E8 1.7101077839999998E8 -7 3.420107797E8 3.420107783E8 -8 6.840107798E8 6.840107782E8 -9 1.3680107799E9 1.3680107781E9 -10 2.73601078E9 2.736010778E9 -11 5.4720107801E9 5.4720107779E9 -12 1.09440107802E10 1.09440107778E10 -13 5354529.1000000015 5354528.8999999985 -14 1.0698279200000003E7 1.0698278799999997E7 -15 2.1385779300000012E7 2.1385778699999988E7 -16 4.2760779400000006E7 4.2760778599999994E7 -17 8.55107795E7 8.55107785E7 -18 1.7101077960000002E8 1.7101077839999998E8 -19 3.420107797E8 3.420107783E8 -20 6.840107798E8 6.840107782E8 -21 1.3680107799E9 1.3680107781E9 -22 2.73601078E9 2.736010778E9 -23 5.4720107801E9 5.4720107779E9 -24 1.09440107802E10 1.09440107778E10 +1 5354529.100000001 5354528.899999999 +2 10698279.2 10698278.8 +3 21385779.30000001 21385778.69999999 +4 42760779.40000001 42760778.59999999 +5 85510779.5 85510778.5 +6 171010779.6 171010778.4 +7 342010779.7 342010778.3 +8 684010779.8 684010778.2 +9 1368010779.9 1368010778.1 +10 2736010780 2736010778 +11 5472010780.1 5472010777.9 +12 10944010780.2 10944010777.8 +13 5354529.100000001 5354528.899999999 +14 10698279.2 10698278.8 +15 21385779.30000001 21385778.69999999 +16 42760779.40000001 42760778.59999999 +17 85510779.5 85510778.5 +18 171010779.6 171010778.4 +19 342010779.7 342010778.3 +20 684010779.8 684010778.2 +21 1368010779.9 1368010778.1 +22 2736010780 2736010778 +23 5472010780.1 5472010777.9 +24 10944010780.2 10944010777.8 -- !sql_test_BigInt_Float_3 -- \N \N \N \N @@ -16485,108 +16485,108 @@ -- !sql_test_BigInt_Double_0 -- \N \N \N 1 5354529.5244 5354528.4756 -2 1.06982797416E7 1.06982782584E7 -3 2.13857800368E7 2.13857779632E7 -4 4.27607804491E7 4.27607775509E7 -5 8.5510781031E7 8.5510776969E7 -6 1.710107818548E8 1.710107761452E8 -7 3.420107830218E8 3.420107749782E8 -8 6.840107846745E8 6.840107733255E8 -9 1.3680107870141E9 1.3680107709859E9 -10 2.7360107903248E9 2.7360107676752E9 -11 5.4720107950086E9 5.4720107629914E9 -12 1.0944010801634E10 1.0944010756366E10 +2 10698279.7416 10698278.2584 +3 21385780.0368 21385777.9632 +4 42760780.4491 42760777.5509 +5 85510781.031 85510776.969 +6 171010781.8548 171010776.1452 +7 342010783.0218 342010774.9782 +8 684010784.6745 684010773.3255 +9 1368010787.0141 1368010770.9859 +10 2736010790.3248 2736010767.6752 +11 5472010795.0086 5472010762.9914 +12 10944010801.634 10944010756.366 13 5354529.5244 5354528.4756 -14 1.06982797416E7 1.06982782584E7 -15 2.13857800368E7 2.13857779632E7 -16 4.27607804491E7 4.27607775509E7 -17 8.5510781031E7 8.5510776969E7 -18 1.710107818548E8 1.710107761452E8 -19 3.420107830218E8 3.420107749782E8 -20 6.840107846745E8 6.840107733255E8 -21 1.3680107870141E9 1.3680107709859E9 -22 2.7360107903248E9 2.7360107676752E9 -23 5.4720107950086E9 5.4720107629914E9 -24 1.0944010801634E10 1.0944010756366E10 +14 10698279.7416 10698278.2584 +15 21385780.0368 21385777.9632 +16 42760780.4491 42760777.5509 +17 85510781.031 85510776.969 +18 171010781.8548 171010776.1452 +19 342010783.0218 342010774.9782 +20 684010784.6745 684010773.3255 +21 1368010787.0141 1368010770.9859 +22 2736010790.3248 2736010767.6752 +23 5472010795.0086 5472010762.9914 +24 10944010801.634 10944010756.366 -- !sql_test_BigInt_Double_notn_0 -- 1 5354529.5244 5354528.4756 -2 1.06982797416E7 1.06982782584E7 -3 2.13857800368E7 2.13857779632E7 -4 4.27607804491E7 4.27607775509E7 -5 8.5510781031E7 8.5510776969E7 -6 1.710107818548E8 1.710107761452E8 -7 3.420107830218E8 3.420107749782E8 -8 6.840107846745E8 6.840107733255E8 -9 1.3680107870141E9 1.3680107709859E9 -10 2.7360107903248E9 2.7360107676752E9 -11 5.4720107950086E9 5.4720107629914E9 -12 1.0944010801634E10 1.0944010756366E10 +2 10698279.7416 10698278.2584 +3 21385780.0368 21385777.9632 +4 42760780.4491 42760777.5509 +5 85510781.031 85510776.969 +6 171010781.8548 171010776.1452 +7 342010783.0218 342010774.9782 +8 684010784.6745 684010773.3255 +9 1368010787.0141 1368010770.9859 +10 2736010790.3248 2736010767.6752 +11 5472010795.0086 5472010762.9914 +12 10944010801.634 10944010756.366 13 5354529.5244 5354528.4756 -14 1.06982797416E7 1.06982782584E7 -15 2.13857800368E7 2.13857779632E7 -16 4.27607804491E7 4.27607775509E7 -17 8.5510781031E7 8.5510776969E7 -18 1.710107818548E8 1.710107761452E8 -19 3.420107830218E8 3.420107749782E8 -20 6.840107846745E8 6.840107733255E8 -21 1.3680107870141E9 1.3680107709859E9 -22 2.7360107903248E9 2.7360107676752E9 -23 5.4720107950086E9 5.4720107629914E9 -24 1.0944010801634E10 1.0944010756366E10 +14 10698279.7416 10698278.2584 +15 21385780.0368 21385777.9632 +16 42760780.4491 42760777.5509 +17 85510781.031 85510776.969 +18 171010781.8548 171010776.1452 +19 342010783.0218 342010774.9782 +20 684010784.6745 684010773.3255 +21 1368010787.0141 1368010770.9859 +22 2736010790.3248 2736010767.6752 +23 5472010795.0086 5472010762.9914 +24 10944010801.634 10944010756.366 -- !sql_test_BigInt_Double_1 -- \N \N \N \N -1 2807915.0075999997 1.0210772311212815E7 0.16320000023216608 -2 7933843.7064000005 1.4425942556634303E7 0.4127999994669871 -3 2.21727756672E7 2.062671585648148E7 0.8880000011578368 -4 6.1964644848900005E7 2.9508508039472774E7 0.05719999838553669 -5 1.7367239214900002E8 4.2102796159527324E7 0.323999994166412 -6 4.882015718892E8 5.990289302227827E7 0.06359999974461861 -7 1.3754989509822E9 8.503923094136953E7 3.786000015347698 -8 3.8814191654355E9 1.2054115411049432E8 0.6269999880090502 -9 1.0963375183983898E10 1.7070048776531366E8 6.133300151369909 -10 3.09847748700192E10 2.4159462233328626E8 3.7744000590521765 -11 8.75992317566994E10 3.418169470784453E8 1.2557995647670168 -12 2.4770673997188602E11 4.835208438190333E8 18.537999835090133 -13 2807915.0075999997 1.0210772311212815E7 0.16320000023216608 -14 7933843.7064000005 1.4425942556634303E7 0.4127999994669871 -15 2.21727756672E7 2.062671585648148E7 0.8880000011578368 -16 6.1964644848900005E7 2.9508508039472774E7 0.05719999838553669 -17 1.7367239214900002E8 4.2102796159527324E7 0.323999994166412 -18 4.882015718892E8 5.990289302227827E7 0.06359999974461861 -19 1.3754989509822E9 8.503923094136953E7 3.786000015347698 -20 3.8814191654355E9 1.2054115411049432E8 0.6269999880090502 -21 1.0963375183983898E10 1.7070048776531366E8 6.133300151369909 -22 3.09847748700192E10 2.4159462233328626E8 3.7744000590521765 -23 8.75992317566994E10 3.418169470784453E8 1.2557995647670168 -24 2.4770673997188602E11 4.835208438190333E8 18.537999835090133 +1 2807915.0076 10210772.31121282 0.1632000002321661 +2 7933843.7064 14425942.5566343 0.4127999994669871 +3 22172775.6672 20626715.85648148 0.8880000011578368 +4 61964644.84890001 29508508.03947277 0.05719999838553669 +5 173672392.149 42102796.15952732 0.323999994166412 +6 488201571.8892 59902893.02227827 0.06359999974461861 +7 1375498950.9822 85039230.94136953 3.786000015347698 +8 3881419165.4355 120541154.1104943 0.6269999880090502 +9 10963375183.9839 170700487.7653137 6.133300151369909 +10 30984774870.0192 241594622.3332863 3.774400059052176 +11 87599231756.6994 341816947.0784453 1.255799564767017 +12 247706739971.886 483520843.8190333 18.53799983509013 +13 2807915.0076 10210772.31121282 0.1632000002321661 +14 7933843.7064 14425942.5566343 0.4127999994669871 +15 22172775.6672 20626715.85648148 0.8880000011578368 +16 61964644.84890001 29508508.03947277 0.05719999838553669 +17 173672392.149 42102796.15952732 0.323999994166412 +18 488201571.8892 59902893.02227827 0.06359999974461861 +19 1375498950.9822 85039230.94136953 3.786000015347698 +20 3881419165.4355 120541154.1104943 0.6269999880090502 +21 10963375183.9839 170700487.7653137 6.133300151369909 +22 30984774870.0192 241594622.3332863 3.774400059052176 +23 87599231756.6994 341816947.0784453 1.255799564767017 +24 247706739971.886 483520843.8190333 18.53799983509013 -- !sql_test_BigInt_Double_notn_1 -- -1 2807915.0075999997 1.0210772311212815E7 0.16320000023216608 -2 7933843.7064000005 1.4425942556634303E7 0.4127999994669871 -3 2.21727756672E7 2.062671585648148E7 0.8880000011578368 -4 6.1964644848900005E7 2.9508508039472774E7 0.05719999838553669 -5 1.7367239214900002E8 4.2102796159527324E7 0.323999994166412 -6 4.882015718892E8 5.990289302227827E7 0.06359999974461861 -7 1.3754989509822E9 8.503923094136953E7 3.786000015347698 -8 3.8814191654355E9 1.2054115411049432E8 0.6269999880090502 -9 1.0963375183983898E10 1.7070048776531366E8 6.133300151369909 -10 3.09847748700192E10 2.4159462233328626E8 3.7744000590521765 -11 8.75992317566994E10 3.418169470784453E8 1.2557995647670168 -12 2.4770673997188602E11 4.835208438190333E8 18.537999835090133 -13 2807915.0075999997 1.0210772311212815E7 0.16320000023216608 -14 7933843.7064000005 1.4425942556634303E7 0.4127999994669871 -15 2.21727756672E7 2.062671585648148E7 0.8880000011578368 -16 6.1964644848900005E7 2.9508508039472774E7 0.05719999838553669 -17 1.7367239214900002E8 4.2102796159527324E7 0.323999994166412 -18 4.882015718892E8 5.990289302227827E7 0.06359999974461861 -19 1.3754989509822E9 8.503923094136953E7 3.786000015347698 -20 3.8814191654355E9 1.2054115411049432E8 0.6269999880090502 -21 1.0963375183983898E10 1.7070048776531366E8 6.133300151369909 -22 3.09847748700192E10 2.4159462233328626E8 3.7744000590521765 -23 8.75992317566994E10 3.418169470784453E8 1.2557995647670168 -24 2.4770673997188602E11 4.835208438190333E8 18.537999835090133 +1 2807915.0076 10210772.31121282 0.1632000002321661 +2 7933843.7064 14425942.5566343 0.4127999994669871 +3 22172775.6672 20626715.85648148 0.8880000011578368 +4 61964644.84890001 29508508.03947277 0.05719999838553669 +5 173672392.149 42102796.15952732 0.323999994166412 +6 488201571.8892 59902893.02227827 0.06359999974461861 +7 1375498950.9822 85039230.94136953 3.786000015347698 +8 3881419165.4355 120541154.1104943 0.6269999880090502 +9 10963375183.9839 170700487.7653137 6.133300151369909 +10 30984774870.0192 241594622.3332863 3.774400059052176 +11 87599231756.6994 341816947.0784453 1.255799564767017 +12 247706739971.886 483520843.8190333 18.53799983509013 +13 2807915.0076 10210772.31121282 0.1632000002321661 +14 7933843.7064 14425942.5566343 0.4127999994669871 +15 22172775.6672 20626715.85648148 0.8880000011578368 +16 61964644.84890001 29508508.03947277 0.05719999838553669 +17 173672392.149 42102796.15952732 0.323999994166412 +18 488201571.8892 59902893.02227827 0.06359999974461861 +19 1375498950.9822 85039230.94136953 3.786000015347698 +20 3881419165.4355 120541154.1104943 0.6269999880090502 +21 10963375183.9839 170700487.7653137 6.133300151369909 +22 30984774870.0192 241594622.3332863 3.774400059052176 +23 87599231756.6994 341816947.0784453 1.255799564767017 +24 247706739971.886 483520843.8190333 18.53799983509013 -- !sql_test_BigInt_Double_3 -- \N \N \N \N @@ -17345,17 +17345,17 @@ 11 \N \N 12 \N \N 13 5354683.289 5354374.711 -14 1.0698497094E7 1.0698060906E7 -15 2.1386087359E7 2.1385470641E7 -16 4.2761215033E7 4.2760342967E7 -17 8.5511395608E7 8.5510162392E7 -18 1.71011650989E8 1.71009907011E8 -19 3.42012012161E8 3.42009545839E8 -20 6.8401252294E8 6.8400903506E8 -21 1.368013245294E9 1.368008312706E9 -22 2.73601426686E9 2.73600729114E9 -23 5.472015711574E9 5.472005846426E9 -24 1.094401775471E10 1.094400380329E10 +14 10698497.094 10698060.906 +15 21386087.359 21385470.641 +16 42761215.033 42760342.967 +17 85511395.608 85510162.392 +18 171011650.989 171009907.011 +19 342012012.161 342009545.839 +20 684012522.9400001 684009035.0599999 +21 1368013245.294 1368008312.706 +22 2736014266.86 2736007291.14 +23 5472015711.574 5472005846.426 +24 10944017754.71 10944003803.29 -- !sql_test_BigInt_Char_notn_0 -- 1 \N \N @@ -17371,17 +17371,17 @@ 11 \N \N 12 \N \N 13 5354683.289 5354374.711 -14 1.0698497094E7 1.0698060906E7 -15 2.1386087359E7 2.1385470641E7 -16 4.2761215033E7 4.2760342967E7 -17 8.5511395608E7 8.5510162392E7 -18 1.71011650989E8 1.71009907011E8 -19 3.42012012161E8 3.42009545839E8 -20 6.8401252294E8 6.8400903506E8 -21 1.368013245294E9 1.368008312706E9 -22 2.73601426686E9 2.73600729114E9 -23 5.472015711574E9 5.472005846426E9 -24 1.094401775471E10 1.094400380329E10 +14 10698497.094 10698060.906 +15 21386087.359 21385470.641 +16 42761215.033 42760342.967 +17 85511395.608 85510162.392 +18 171011650.989 171009907.011 +19 342012012.161 342009545.839 +20 684012522.9400001 684009035.0599999 +21 1368013245.294 1368008312.706 +22 2736014266.86 2736007291.14 +23 5472015711.574 5472005846.426 +24 10944017754.71 10944003803.29 -- !sql_test_BigInt_Char_1 -- \N \N \N \N @@ -17397,18 +17397,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 8.261449248809999E8 34704.54147735743 83.54400000044188 -14 2.333230460226E9 49053.52279292415 114.01800000028999 -15 6.594497426660999E9 69353.51003213787 157.27300000135614 -16 1.8645110749707E10 98067.7586329475 330.78899999848375 -17 5.2726630417631996E10 138679.32138408846 198.1680000073154 -18 1.49119518169431E11 196115.75260697096 656.2649999935788 -19 4.21754354242419E11 277344.7903396231 974.6159999838565 -20 1.19287375792926E12 392221.5093409177 888.2599999785966 -21 3.373916776183026E12 554682.7665314841 1890.4920000726452 -22 9.54282255564294E12 784438.2455144415 856.3199999001181 -23 2.6991098096215145E13 1109362.1259407362 621.2120004277986 -24 7.63422454311781E13 1568874.1044280797 728.4599999429247 +13 826144924.8809999 34704.54147735743 83.54400000044188 +14 2333230460.226 49053.52279292415 114.01800000029 +15 6594497426.660999 69353.51003213787 157.2730000013561 +16 18645110749.707 98067.7586329475 330.7889999984837 +17 52726630417.632 138679.3213840885 198.1680000073154 +18 149119518169.431 196115.752606971 656.2649999935788 +19 421754354242.419 277344.7903396231 974.6159999838565 +20 1192873757929.26 392221.5093409177 888.2599999785966 +21 3373916776183.026 554682.7665314841 1890.492000072645 +22 9542822555642.939 784438.2455144415 856.3199999001181 +23 26991098096215.14 1109362.125940736 621.2120004277986 +24 76342245431178.09 1568874.10442808 728.4599999429247 -- !sql_test_BigInt_Char_notn_1 -- 1 \N \N \N @@ -17423,18 +17423,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 8.261449248809999E8 34704.54147735743 83.54400000044188 -14 2.333230460226E9 49053.52279292415 114.01800000028999 -15 6.594497426660999E9 69353.51003213787 157.27300000135614 -16 1.8645110749707E10 98067.7586329475 330.78899999848375 -17 5.2726630417631996E10 138679.32138408846 198.1680000073154 -18 1.49119518169431E11 196115.75260697096 656.2649999935788 -19 4.21754354242419E11 277344.7903396231 974.6159999838565 -20 1.19287375792926E12 392221.5093409177 888.2599999785966 -21 3.373916776183026E12 554682.7665314841 1890.4920000726452 -22 9.54282255564294E12 784438.2455144415 856.3199999001181 -23 2.6991098096215145E13 1109362.1259407362 621.2120004277986 -24 7.63422454311781E13 1568874.1044280797 728.4599999429247 +13 826144924.8809999 34704.54147735743 83.54400000044188 +14 2333230460.226 49053.52279292415 114.01800000029 +15 6594497426.660999 69353.51003213787 157.2730000013561 +16 18645110749.707 98067.7586329475 330.7889999984837 +17 52726630417.632 138679.3213840885 198.1680000073154 +18 149119518169.431 196115.752606971 656.2649999935788 +19 421754354242.419 277344.7903396231 974.6159999838565 +20 1192873757929.26 392221.5093409177 888.2599999785966 +21 3373916776183.026 554682.7665314841 1890.492000072645 +22 9542822555642.939 784438.2455144415 856.3199999001181 +23 26991098096215.14 1109362.125940736 621.2120004277986 +24 76342245431178.09 1568874.10442808 728.4599999429247 -- !sql_test_BigInt_Char_3 -- \N \N \N \N @@ -17504,17 +17504,17 @@ 11 \N \N 12 \N \N 13 5356848.121 5352209.879 -14 1.0701557082E7 1.0695000918E7 -15 2.1390413741E7 2.1381144259E7 -16 4.2767332688E7 4.2754225312E7 -17 8.552004673E7 8.550151127E7 -18 1.71023885137E8 1.70997672863E8 -19 3.42029313585E8 3.41992244415E8 -20 6.84036990654E8 6.83984567346E8 -21 1.368047847731E9 1.367973710269E9 -22 2.736063201999E9 2.735958356001E9 -23 5.472084916243E9 5.471936641757E9 -24 1.0944115624843E10 1.0943905933157E10 +14 10701557.082 10695000.918 +15 21390413.741 21381144.259 +16 42767332.688 42754225.312 +17 85520046.73 85501511.27 +18 171023885.137 170997672.863 +19 342029313.585 341992244.415 +20 684036990.654 683984567.346 +21 1368047847.731 1367973710.269 +22 2736063201.999 2735958356.001 +23 5472084916.243 5471936641.757 +24 10944115624.843 10943905933.157 -- !sql_test_BigInt_Varchar_notn_0 -- 1 \N \N @@ -17530,17 +17530,17 @@ 11 \N \N 12 \N \N 13 5356848.121 5352209.879 -14 1.0701557082E7 1.0695000918E7 -15 2.1390413741E7 2.1381144259E7 -16 4.2767332688E7 4.2754225312E7 -17 8.552004673E7 8.550151127E7 -18 1.71023885137E8 1.70997672863E8 -19 3.42029313585E8 3.41992244415E8 -20 6.84036990654E8 6.83984567346E8 -21 1.368047847731E9 1.367973710269E9 -22 2.736063201999E9 2.735958356001E9 -23 5.472084916243E9 5.471936641757E9 -24 1.0944115624843E10 1.0943905933157E10 +14 10701557.082 10695000.918 +15 21390413.741 21381144.259 +16 42767332.688 42754225.312 +17 85520046.73 85501511.27 +18 171023885.137 170997672.863 +19 342029313.585 341992244.415 +20 684036990.654 683984567.346 +21 1368047847.731 1367973710.269 +22 2736063201.999 2735958356.001 +23 5472084916.243 5471936641.757 +24 10944115624.843 10943905933.157 -- !sql_test_BigInt_Varchar_1 -- \N \N \N \N @@ -17556,18 +17556,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.2417800649009E10 2308.8614177526742 1997.7319999997817 -14 3.5069835820878E10 3263.5788244467344 1897.4340000003917 -15 9.9117546748239E10 4614.233891386811 1084.0260000000671 -16 2.80240804202952E11 6524.689457294885 4518.487999999335 -17 7.924908118616699E11 9226.723156587428 6702.020000004028 -18 2.241290698050723E12 13048.145231504905 1903.4239999918354 -19 6.339027854291715E12 18452.572798365865 10616.58000001611 -20 1.7929053871418465E13 26095.67404636121 17667.870000035695 -21 5.0710423571851445E13 36904.71030691609 26330.176000008592 -22 1.4342989033150622E14 52191.038879710024 2038.190999820763 -23 4.056797928213423E14 73809.2024679148 15010.412999836743 -24 1.1474340359253418E15 104381.92364956235 96840.81700068049 +13 12417800649.009 2308.861417752674 1997.731999999782 +14 35069835820.878 3263.578824446734 1897.434000000392 +15 99117546748.239 4614.233891386811 1084.026000000067 +16 280240804202.952 6524.689457294885 4518.487999999335 +17 792490811861.6699 9226.723156587428 6702.020000004028 +18 2241290698050.723 13048.1452315049 1903.423999991835 +19 6339027854291.715 18452.57279836587 10616.58000001611 +20 17929053871418.46 26095.67404636121 17667.87000003569 +21 50710423571851.45 36904.71030691609 26330.17600000859 +22 143429890331506.2 52191.03887971002 2038.190999820763 +23 405679792821342.3 73809.2024679148 15010.41299983674 +24 1147434035925342 104381.9236495623 96840.81700068049 -- !sql_test_BigInt_Varchar_notn_1 -- 1 \N \N \N @@ -17582,18 +17582,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.2417800649009E10 2308.8614177526742 1997.7319999997817 -14 3.5069835820878E10 3263.5788244467344 1897.4340000003917 -15 9.9117546748239E10 4614.233891386811 1084.0260000000671 -16 2.80240804202952E11 6524.689457294885 4518.487999999335 -17 7.924908118616699E11 9226.723156587428 6702.020000004028 -18 2.241290698050723E12 13048.145231504905 1903.4239999918354 -19 6.339027854291715E12 18452.572798365865 10616.58000001611 -20 1.7929053871418465E13 26095.67404636121 17667.870000035695 -21 5.0710423571851445E13 36904.71030691609 26330.176000008592 -22 1.4342989033150622E14 52191.038879710024 2038.190999820763 -23 4.056797928213423E14 73809.2024679148 15010.412999836743 -24 1.1474340359253418E15 104381.92364956235 96840.81700068049 +13 12417800649.009 2308.861417752674 1997.731999999782 +14 35069835820.878 3263.578824446734 1897.434000000392 +15 99117546748.239 4614.233891386811 1084.026000000067 +16 280240804202.952 6524.689457294885 4518.487999999335 +17 792490811861.6699 9226.723156587428 6702.020000004028 +18 2241290698050.723 13048.1452315049 1903.423999991835 +19 6339027854291.715 18452.57279836587 10616.58000001611 +20 17929053871418.46 26095.67404636121 17667.87000003569 +21 50710423571851.45 36904.71030691609 26330.17600000859 +22 143429890331506.2 52191.03887971002 2038.190999820763 +23 405679792821342.3 73809.2024679148 15010.41299983674 +24 1147434035925342 104381.9236495623 96840.81700068049 -- !sql_test_BigInt_Varchar_3 -- \N \N \N \N @@ -17663,17 +17663,17 @@ 11 \N \N 12 \N \N 13 5365133.017 5343924.983 -14 1.0713267793E7 1.0683290207E7 -15 2.1406971013E7 2.1364586987E7 -16 4.2790745255E7 4.2730812745E7 -17 8.5553155012E7 8.5468402988E7 -18 1.71070705842E8 1.70950852158E8 -19 3.42095527017E8 3.41926030983E8 -20 6.84130629851E8 6.83890928149E8 -21 1.368180273031E9 1.367841284969E9 -22 2.736250479285E9 2.735771078715E9 -23 5.472349766059E9 5.471671791941E9 -24 1.0944490178861E10 1.0943531379139E10 +14 10713267.793 10683290.207 +15 21406971.013 21364586.987 +16 42790745.255 42730812.745 +17 85553155.01199999 85468402.98800001 +18 171070705.842 170950852.158 +19 342095527.017 341926030.983 +20 684130629.851 683890928.149 +21 1368180273.031 1367841284.969 +22 2736250479.285 2735771078.715 +23 5472349766.059 5471671791.941 +24 10944490178.861 10943531379.139 -- !sql_test_BigInt_String_notn_0 -- 1 \N \N @@ -17689,17 +17689,17 @@ 11 \N \N 12 \N \N 13 5365133.017 5343924.983 -14 1.0713267793E7 1.0683290207E7 -15 2.1406971013E7 2.1364586987E7 -16 4.2790745255E7 4.2730812745E7 -17 8.5553155012E7 8.5468402988E7 -18 1.71070705842E8 1.70950852158E8 -19 3.42095527017E8 3.41926030983E8 -20 6.84130629851E8 6.83890928149E8 -21 1.368180273031E9 1.367841284969E9 -22 2.736250479285E9 2.735771078715E9 -23 5.472349766059E9 5.471671791941E9 -24 1.0944490178861E10 1.0943531379139E10 +14 10713267.793 10683290.207 +15 21406971.013 21364586.987 +16 42790745.255 42730812.745 +17 85553155.01199999 85468402.98800001 +18 171070705.842 170950852.158 +19 342095527.017 341926030.983 +20 684130629.851 683890928.149 +21 1368180273.031 1367841284.969 +22 2736250479.285 2735771078.715 +23 5472349766.059 5471671791.941 +24 10944490178.861 10943531379.139 -- !sql_test_BigInt_String_1 -- \N \N \N \N @@ -17715,18 +17715,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.6779516542993E10 504.95288719359843 10104.432000000088 -14 1.60354289387247E11 713.7518678121714 11269.591000000239 -15 4.5320770658312695E11 1009.143350374502 3037.8830000009984 -16 1.281380407512645E12 1426.9643971193598 28899.369999998547 -17 3.623605797033348E12 2017.905295099501 38362.79599999507 -18 1.0248135933429918E13 2853.659116560823 39498.7740000088 -19 2.8984735312875246E13 4035.619842290823 52530.404999971346 -20 8.197927395632292E13 5707.183330721615 21972.343000027904 -21 2.3186966138416012E14 8071.144281181207 24454.799000095838 -22 6.55822563489372E14 11414.299232059737 71726.00999996014 -23 1.854940840789509E15 16142.240931386115 81672.6219998647 -24 5.246557246235101E15 22828.56477298812 270752.0920005634 +13 56779516542.993 504.9528871935984 10104.43200000009 +14 160354289387.247 713.7518678121714 11269.59100000024 +15 453207706583.127 1009.143350374502 3037.883000000998 +16 1281380407512.645 1426.96439711936 28899.36999999855 +17 3623605797033.348 2017.905295099501 38362.79599999507 +18 10248135933429.92 2853.659116560823 39498.7740000088 +19 28984735312875.25 4035.619842290823 52530.40499997135 +20 81979273956322.92 5707.183330721615 21972.3430000279 +21 231869661384160.1 8071.144281181207 24454.79900009584 +22 655822563489372 11414.29923205974 71726.00999996014 +23 1854940840789509 16142.24093138612 81672.6219998647 +24 5246557246235101 22828.56477298812 270752.0920005634 -- !sql_test_BigInt_String_notn_1 -- 1 \N \N \N @@ -17741,18 +17741,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.6779516542993E10 504.95288719359843 10104.432000000088 -14 1.60354289387247E11 713.7518678121714 11269.591000000239 -15 4.5320770658312695E11 1009.143350374502 3037.8830000009984 -16 1.281380407512645E12 1426.9643971193598 28899.369999998547 -17 3.623605797033348E12 2017.905295099501 38362.79599999507 -18 1.0248135933429918E13 2853.659116560823 39498.7740000088 -19 2.8984735312875246E13 4035.619842290823 52530.404999971346 -20 8.197927395632292E13 5707.183330721615 21972.343000027904 -21 2.3186966138416012E14 8071.144281181207 24454.799000095838 -22 6.55822563489372E14 11414.299232059737 71726.00999996014 -23 1.854940840789509E15 16142.240931386115 81672.6219998647 -24 5.246557246235101E15 22828.56477298812 270752.0920005634 +13 56779516542.993 504.9528871935984 10104.43200000009 +14 160354289387.247 713.7518678121714 11269.59100000024 +15 453207706583.127 1009.143350374502 3037.883000000998 +16 1281380407512.645 1426.96439711936 28899.36999999855 +17 3623605797033.348 2017.905295099501 38362.79599999507 +18 10248135933429.92 2853.659116560823 39498.7740000088 +19 28984735312875.25 4035.619842290823 52530.40499997135 +20 81979273956322.92 5707.183330721615 21972.3430000279 +21 231869661384160.1 8071.144281181207 24454.79900009584 +22 655822563489372 11414.29923205974 71726.00999996014 +23 1854940840789509 16142.24093138612 81672.6219998647 +24 5246557246235101 22828.56477298812 270752.0920005634 -- !sql_test_BigInt_String_3 -- \N \N \N \N @@ -17864,52 +17864,52 @@ \N \N \N \N 1 107734735193229 0.2661256906643693 5354529 2 215252604360258 0.5317156273300471 10698279 -3 430288353371037 1.0628954742878376 1265476 -4 860359872756816 2.1252551154296673 2520171 +3 430288353371037 1.062895474287838 1265476 +4 860359872756816 2.125255115429667 2520171 5 1720502954267595 4.24997429213921 5029559 6 3440789202778374 8.499412434383453 10048331 -7 6881361870789153 16.998288296495677 20085867 +7 6881361870789153 16.99828829649568 20085867 8 13762507548799932 33.99603917594104 20040615 9 27524799588810711 67.99153924524718 19950076 -10 55049385036821490 135.98253600466396 19768929 +10 55049385036821490 135.982536004664 19768929 11 110098558668832269 271.9645227650805 19406498 12 220196911404843048 543.9284827690544 18681363 13 107734735193229 0.2661256906643693 5354529 14 215252604360258 0.5317156273300471 10698279 -15 430288353371037 1.0628954742878376 1265476 -16 860359872756816 2.1252551154296673 2520171 +15 430288353371037 1.062895474287838 1265476 +16 860359872756816 2.125255115429667 2520171 17 1720502954267595 4.24997429213921 5029559 18 3440789202778374 8.499412434383453 10048331 -19 6881361870789153 16.998288296495677 20085867 +19 6881361870789153 16.99828829649568 20085867 20 13762507548799932 33.99603917594104 20040615 21 27524799588810711 67.99153924524718 19950076 -22 55049385036821490 135.98253600466396 19768929 +22 55049385036821490 135.982536004664 19768929 23 110098558668832269 271.9645227650805 19406498 24 220196911404843048 543.9284827690544 18681363 -- !sql_test_BigInt_Date_notn_1 -- 1 107734735193229 0.2661256906643693 5354529 2 215252604360258 0.5317156273300471 10698279 -3 430288353371037 1.0628954742878376 1265476 -4 860359872756816 2.1252551154296673 2520171 +3 430288353371037 1.062895474287838 1265476 +4 860359872756816 2.125255115429667 2520171 5 1720502954267595 4.24997429213921 5029559 6 3440789202778374 8.499412434383453 10048331 -7 6881361870789153 16.998288296495677 20085867 +7 6881361870789153 16.99828829649568 20085867 8 13762507548799932 33.99603917594104 20040615 9 27524799588810711 67.99153924524718 19950076 -10 55049385036821490 135.98253600466396 19768929 +10 55049385036821490 135.982536004664 19768929 11 110098558668832269 271.9645227650805 19406498 12 220196911404843048 543.9284827690544 18681363 13 107734735193229 0.2661256906643693 5354529 14 215252604360258 0.5317156273300471 10698279 -15 430288353371037 1.0628954742878376 1265476 -16 860359872756816 2.1252551154296673 2520171 +15 430288353371037 1.062895474287838 1265476 +16 860359872756816 2.125255115429667 2520171 17 1720502954267595 4.24997429213921 5029559 18 3440789202778374 8.499412434383453 10048331 -19 6881361870789153 16.998288296495677 20085867 +19 6881361870789153 16.99828829649568 20085867 20 13762507548799932 33.99603917594104 20040615 21 27524799588810711 67.99153924524718 19950076 -22 55049385036821490 135.98253600466396 19768929 +22 55049385036821490 135.982536004664 19768929 23 110098558668832269 271.9645227650805 19406498 24 220196911404843048 543.9284827690544 18681363 @@ -18127,56 +18127,56 @@ -- !sql_test_BigInt_DateTime_1 -- \N \N \N \N -1 -2945729195477665167 2.661256905320888E-7 5354529 -2 -6108324309199814934 5.31715626798815E-7 10698279 -3 6013240321631995969 1.0628954726923032E-6 21385779 -4 -6637096984102489136 2.125255111172461E-6 42760779 -5 4955759722777515207 4.249974281492256E-6 85510779 -6 -8751928658133958018 8.49941240882393E-6 171010779 -7 726355443845320085 1.699828823684459E-5 342010779 -8 1236525017748445996 3.399603903957373E-5 684010779 -9 2257555063750819139 6.799153893838094E-5 1368010779 -10 4300996963035686746 1.359825353226666E-4 2736010779 -11 8390644387053543281 2.7196452126455433E-4 5472010779 -12 -1871277576836173944 5.43928479494937E-4 10944010779 -13 -2945729195477665167 2.661256905320888E-7 5354529 -14 -6108324309199814934 5.31715626798815E-7 10698279 -15 6013240321631995969 1.0628954726923032E-6 21385779 -16 -6637096984102489136 2.125255111172461E-6 42760779 -17 4955759722777515207 4.249974281492256E-6 85510779 -18 -8751928658133958018 8.49941240882393E-6 171010779 -19 726355443845320085 1.699828823684459E-5 342010779 -20 1236525017748445996 3.399603903957373E-5 684010779 -21 2257555063750819139 6.799153893838094E-5 1368010779 -22 4300996963035686746 1.359825353226666E-4 2736010779 -23 8390644387053543281 2.7196452126455433E-4 5472010779 -24 -1871277576836173944 5.43928479494937E-4 10944010779 +1 -2945729195477665167 2.661256905320888e-07 5354529 +2 -6108324309199814934 5.31715626798815e-07 10698279 +3 6013240321631995969 1.062895472692303e-06 21385779 +4 -6637096984102489136 2.125255111172461e-06 42760779 +5 4955759722777515207 4.249974281492256e-06 85510779 +6 -8751928658133958018 8.49941240882393e-06 171010779 +7 726355443845320085 1.699828823684459e-05 342010779 +8 1236525017748445996 3.399603903957373e-05 684010779 +9 2257555063750819139 6.799153893838094e-05 1368010779 +10 4300996963035686746 0.0001359825353226666 2736010779 +11 8390644387053543281 0.0002719645212645543 5472010779 +12 -1871277576836173944 0.000543928479494937 10944010779 +13 -2945729195477665167 2.661256905320888e-07 5354529 +14 -6108324309199814934 5.31715626798815e-07 10698279 +15 6013240321631995969 1.062895472692303e-06 21385779 +16 -6637096984102489136 2.125255111172461e-06 42760779 +17 4955759722777515207 4.249974281492256e-06 85510779 +18 -8751928658133958018 8.49941240882393e-06 171010779 +19 726355443845320085 1.699828823684459e-05 342010779 +20 1236525017748445996 3.399603903957373e-05 684010779 +21 2257555063750819139 6.799153893838094e-05 1368010779 +22 4300996963035686746 0.0001359825353226666 2736010779 +23 8390644387053543281 0.0002719645212645543 5472010779 +24 -1871277576836173944 0.000543928479494937 10944010779 -- !sql_test_BigInt_DateTime_notn_1 -- -1 -2945729195477665167 2.661256905320888E-7 5354529 -2 -6108324309199814934 5.31715626798815E-7 10698279 -3 6013240321631995969 1.0628954726923032E-6 21385779 -4 -6637096984102489136 2.125255111172461E-6 42760779 -5 4955759722777515207 4.249974281492256E-6 85510779 -6 -8751928658133958018 8.49941240882393E-6 171010779 -7 726355443845320085 1.699828823684459E-5 342010779 -8 1236525017748445996 3.399603903957373E-5 684010779 -9 2257555063750819139 6.799153893838094E-5 1368010779 -10 4300996963035686746 1.359825353226666E-4 2736010779 -11 8390644387053543281 2.7196452126455433E-4 5472010779 -12 -1871277576836173944 5.43928479494937E-4 10944010779 -13 -2945729195477665167 2.661256905320888E-7 5354529 -14 -6108324309199814934 5.31715626798815E-7 10698279 -15 6013240321631995969 1.0628954726923032E-6 21385779 -16 -6637096984102489136 2.125255111172461E-6 42760779 -17 4955759722777515207 4.249974281492256E-6 85510779 -18 -8751928658133958018 8.49941240882393E-6 171010779 -19 726355443845320085 1.699828823684459E-5 342010779 -20 1236525017748445996 3.399603903957373E-5 684010779 -21 2257555063750819139 6.799153893838094E-5 1368010779 -22 4300996963035686746 1.359825353226666E-4 2736010779 -23 8390644387053543281 2.7196452126455433E-4 5472010779 -24 -1871277576836173944 5.43928479494937E-4 10944010779 +1 -2945729195477665167 2.661256905320888e-07 5354529 +2 -6108324309199814934 5.31715626798815e-07 10698279 +3 6013240321631995969 1.062895472692303e-06 21385779 +4 -6637096984102489136 2.125255111172461e-06 42760779 +5 4955759722777515207 4.249974281492256e-06 85510779 +6 -8751928658133958018 8.49941240882393e-06 171010779 +7 726355443845320085 1.699828823684459e-05 342010779 +8 1236525017748445996 3.399603903957373e-05 684010779 +9 2257555063750819139 6.799153893838094e-05 1368010779 +10 4300996963035686746 0.0001359825353226666 2736010779 +11 8390644387053543281 0.0002719645212645543 5472010779 +12 -1871277576836173944 0.000543928479494937 10944010779 +13 -2945729195477665167 2.661256905320888e-07 5354529 +14 -6108324309199814934 5.31715626798815e-07 10698279 +15 6013240321631995969 1.062895472692303e-06 21385779 +16 -6637096984102489136 2.125255111172461e-06 42760779 +17 4955759722777515207 4.249974281492256e-06 85510779 +18 -8751928658133958018 8.49941240882393e-06 171010779 +19 726355443845320085 1.699828823684459e-05 342010779 +20 1236525017748445996 3.399603903957373e-05 684010779 +21 2257555063750819139 6.799153893838094e-05 1368010779 +22 4300996963035686746 0.0001359825353226666 2736010779 +23 8390644387053543281 0.0002719645212645543 5472010779 +24 -1871277576836173944 0.000543928479494937 10944010779 -- !sql_test_BigInt_DateTime_2 -- \N \N @@ -18394,52 +18394,52 @@ \N \N \N \N 1 107734735193229 0.2661256906643693 5354529 2 215252604360258 0.5317156273300471 10698279 -3 430288353371037 1.0628954742878376 1265476 -4 860359872756816 2.1252551154296673 2520171 +3 430288353371037 1.062895474287838 1265476 +4 860359872756816 2.125255115429667 2520171 5 1720502954267595 4.24997429213921 5029559 6 3440789202778374 8.499412434383453 10048331 -7 6881361870789153 16.998288296495677 20085867 +7 6881361870789153 16.99828829649568 20085867 8 13762507548799932 33.99603917594104 20040615 9 27524799588810711 67.99153924524718 19950076 -10 55049385036821490 135.98253600466396 19768929 +10 55049385036821490 135.982536004664 19768929 11 110098558668832269 271.9645227650805 19406498 12 220196911404843048 543.9284827690544 18681363 13 107734735193229 0.2661256906643693 5354529 14 215252604360258 0.5317156273300471 10698279 -15 430288353371037 1.0628954742878376 1265476 -16 860359872756816 2.1252551154296673 2520171 +15 430288353371037 1.062895474287838 1265476 +16 860359872756816 2.125255115429667 2520171 17 1720502954267595 4.24997429213921 5029559 18 3440789202778374 8.499412434383453 10048331 -19 6881361870789153 16.998288296495677 20085867 +19 6881361870789153 16.99828829649568 20085867 20 13762507548799932 33.99603917594104 20040615 21 27524799588810711 67.99153924524718 19950076 -22 55049385036821490 135.98253600466396 19768929 +22 55049385036821490 135.982536004664 19768929 23 110098558668832269 271.9645227650805 19406498 24 220196911404843048 543.9284827690544 18681363 -- !sql_test_BigInt_DateV2_notn_1 -- 1 107734735193229 0.2661256906643693 5354529 2 215252604360258 0.5317156273300471 10698279 -3 430288353371037 1.0628954742878376 1265476 -4 860359872756816 2.1252551154296673 2520171 +3 430288353371037 1.062895474287838 1265476 +4 860359872756816 2.125255115429667 2520171 5 1720502954267595 4.24997429213921 5029559 6 3440789202778374 8.499412434383453 10048331 -7 6881361870789153 16.998288296495677 20085867 +7 6881361870789153 16.99828829649568 20085867 8 13762507548799932 33.99603917594104 20040615 9 27524799588810711 67.99153924524718 19950076 -10 55049385036821490 135.98253600466396 19768929 +10 55049385036821490 135.982536004664 19768929 11 110098558668832269 271.9645227650805 19406498 12 220196911404843048 543.9284827690544 18681363 13 107734735193229 0.2661256906643693 5354529 14 215252604360258 0.5317156273300471 10698279 -15 430288353371037 1.0628954742878376 1265476 -16 860359872756816 2.1252551154296673 2520171 +15 430288353371037 1.062895474287838 1265476 +16 860359872756816 2.125255115429667 2520171 17 1720502954267595 4.24997429213921 5029559 18 3440789202778374 8.499412434383453 10048331 -19 6881361870789153 16.998288296495677 20085867 +19 6881361870789153 16.99828829649568 20085867 20 13762507548799932 33.99603917594104 20040615 21 27524799588810711 67.99153924524718 19950076 -22 55049385036821490 135.98253600466396 19768929 +22 55049385036821490 135.982536004664 19768929 23 110098558668832269 271.9645227650805 19406498 24 220196911404843048 543.9284827690544 18681363 @@ -18657,56 +18657,56 @@ -- !sql_test_BigInt_DateTimeV2_1 -- \N \N \N \N -1 -2945729195477665167 2.661256905320888E-7 5354529 -2 -6108324309199814934 5.31715626798815E-7 10698279 -3 6013240321631995969 1.0628954726923032E-6 21385779 -4 -6637096984102489136 2.125255111172461E-6 42760779 -5 4955759722777515207 4.249974281492256E-6 85510779 -6 -8751928658133958018 8.49941240882393E-6 171010779 -7 726355443845320085 1.699828823684459E-5 342010779 -8 1236525017748445996 3.399603903957373E-5 684010779 -9 2257555063750819139 6.799153893838094E-5 1368010779 -10 4300996963035686746 1.359825353226666E-4 2736010779 -11 8390644387053543281 2.7196452126455433E-4 5472010779 -12 -1871277576836173944 5.43928479494937E-4 10944010779 -13 -2945729195477665167 2.661256905320888E-7 5354529 -14 -6108324309199814934 5.31715626798815E-7 10698279 -15 6013240321631995969 1.0628954726923032E-6 21385779 -16 -6637096984102489136 2.125255111172461E-6 42760779 -17 4955759722777515207 4.249974281492256E-6 85510779 -18 -8751928658133958018 8.49941240882393E-6 171010779 -19 726355443845320085 1.699828823684459E-5 342010779 -20 1236525017748445996 3.399603903957373E-5 684010779 -21 2257555063750819139 6.799153893838094E-5 1368010779 -22 4300996963035686746 1.359825353226666E-4 2736010779 -23 8390644387053543281 2.7196452126455433E-4 5472010779 -24 -1871277576836173944 5.43928479494937E-4 10944010779 +1 -2945729195477665167 2.661256905320888e-07 5354529 +2 -6108324309199814934 5.31715626798815e-07 10698279 +3 6013240321631995969 1.062895472692303e-06 21385779 +4 -6637096984102489136 2.125255111172461e-06 42760779 +5 4955759722777515207 4.249974281492256e-06 85510779 +6 -8751928658133958018 8.49941240882393e-06 171010779 +7 726355443845320085 1.699828823684459e-05 342010779 +8 1236525017748445996 3.399603903957373e-05 684010779 +9 2257555063750819139 6.799153893838094e-05 1368010779 +10 4300996963035686746 0.0001359825353226666 2736010779 +11 8390644387053543281 0.0002719645212645543 5472010779 +12 -1871277576836173944 0.000543928479494937 10944010779 +13 -2945729195477665167 2.661256905320888e-07 5354529 +14 -6108324309199814934 5.31715626798815e-07 10698279 +15 6013240321631995969 1.062895472692303e-06 21385779 +16 -6637096984102489136 2.125255111172461e-06 42760779 +17 4955759722777515207 4.249974281492256e-06 85510779 +18 -8751928658133958018 8.49941240882393e-06 171010779 +19 726355443845320085 1.699828823684459e-05 342010779 +20 1236525017748445996 3.399603903957373e-05 684010779 +21 2257555063750819139 6.799153893838094e-05 1368010779 +22 4300996963035686746 0.0001359825353226666 2736010779 +23 8390644387053543281 0.0002719645212645543 5472010779 +24 -1871277576836173944 0.000543928479494937 10944010779 -- !sql_test_BigInt_DateTimeV2_notn_1 -- -1 -2945729195477665167 2.661256905320888E-7 5354529 -2 -6108324309199814934 5.31715626798815E-7 10698279 -3 6013240321631995969 1.0628954726923032E-6 21385779 -4 -6637096984102489136 2.125255111172461E-6 42760779 -5 4955759722777515207 4.249974281492256E-6 85510779 -6 -8751928658133958018 8.49941240882393E-6 171010779 -7 726355443845320085 1.699828823684459E-5 342010779 -8 1236525017748445996 3.399603903957373E-5 684010779 -9 2257555063750819139 6.799153893838094E-5 1368010779 -10 4300996963035686746 1.359825353226666E-4 2736010779 -11 8390644387053543281 2.7196452126455433E-4 5472010779 -12 -1871277576836173944 5.43928479494937E-4 10944010779 -13 -2945729195477665167 2.661256905320888E-7 5354529 -14 -6108324309199814934 5.31715626798815E-7 10698279 -15 6013240321631995969 1.0628954726923032E-6 21385779 -16 -6637096984102489136 2.125255111172461E-6 42760779 -17 4955759722777515207 4.249974281492256E-6 85510779 -18 -8751928658133958018 8.49941240882393E-6 171010779 -19 726355443845320085 1.699828823684459E-5 342010779 -20 1236525017748445996 3.399603903957373E-5 684010779 -21 2257555063750819139 6.799153893838094E-5 1368010779 -22 4300996963035686746 1.359825353226666E-4 2736010779 -23 8390644387053543281 2.7196452126455433E-4 5472010779 -24 -1871277576836173944 5.43928479494937E-4 10944010779 +1 -2945729195477665167 2.661256905320888e-07 5354529 +2 -6108324309199814934 5.31715626798815e-07 10698279 +3 6013240321631995969 1.062895472692303e-06 21385779 +4 -6637096984102489136 2.125255111172461e-06 42760779 +5 4955759722777515207 4.249974281492256e-06 85510779 +6 -8751928658133958018 8.49941240882393e-06 171010779 +7 726355443845320085 1.699828823684459e-05 342010779 +8 1236525017748445996 3.399603903957373e-05 684010779 +9 2257555063750819139 6.799153893838094e-05 1368010779 +10 4300996963035686746 0.0001359825353226666 2736010779 +11 8390644387053543281 0.0002719645212645543 5472010779 +12 -1871277576836173944 0.000543928479494937 10944010779 +13 -2945729195477665167 2.661256905320888e-07 5354529 +14 -6108324309199814934 5.31715626798815e-07 10698279 +15 6013240321631995969 1.062895472692303e-06 21385779 +16 -6637096984102489136 2.125255111172461e-06 42760779 +17 4955759722777515207 4.249974281492256e-06 85510779 +18 -8751928658133958018 8.49941240882393e-06 171010779 +19 726355443845320085 1.699828823684459e-05 342010779 +20 1236525017748445996 3.399603903957373e-05 684010779 +21 2257555063750819139 6.799153893838094e-05 1368010779 +22 4300996963035686746 0.0001359825353226666 2736010779 +23 8390644387053543281 0.0002719645212645543 5472010779 +24 -1871277576836173944 0.000543928479494937 10944010779 -- !sql_test_BigInt_DateTimeV2_2 -- \N \N @@ -18929,11 +18929,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 684010779 6.84010779E8 0 -9 1368010779 1.368010779E9 0 -10 2736010779 2.736010779E9 0 -11 5472010779 5.472010779E9 0 -12 10944010779 1.0944010779E10 0 +8 684010779 684010779 0 +9 1368010779 1368010779 0 +10 2736010779 2736010779 0 +11 5472010779 5472010779 0 +12 10944010779 10944010779 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -18941,11 +18941,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 684010779 6.84010779E8 0 -21 1368010779 1.368010779E9 0 -22 2736010779 2.736010779E9 0 -23 5472010779 5.472010779E9 0 -24 10944010779 1.0944010779E10 0 +20 684010779 684010779 0 +21 1368010779 1368010779 0 +22 2736010779 2736010779 0 +23 5472010779 5472010779 0 +24 10944010779 10944010779 0 -- !sql_test_BigInt_Boolean_notn_1 -- 1 0 \N \N @@ -18955,11 +18955,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 684010779 6.84010779E8 0 -9 1368010779 1.368010779E9 0 -10 2736010779 2.736010779E9 0 -11 5472010779 5.472010779E9 0 -12 10944010779 1.0944010779E10 0 +8 684010779 684010779 0 +9 1368010779 1368010779 0 +10 2736010779 2736010779 0 +11 5472010779 5472010779 0 +12 10944010779 10944010779 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -18967,11 +18967,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 684010779 6.84010779E8 0 -21 1368010779 1.368010779E9 0 -22 2736010779 2.736010779E9 0 -23 5472010779 5.472010779E9 0 -24 10944010779 1.0944010779E10 0 +20 684010779 684010779 0 +21 1368010779 1368010779 0 +22 2736010779 2736010779 0 +23 5472010779 5472010779 0 +24 10944010779 10944010779 0 -- !sql_test_BigInt_Boolean_2 -- \N \N @@ -19187,56 +19187,56 @@ -- !sql_test_LargeInt_TinyInt_1 -- \N \N \N \N -1 107090645 1.07090645E8 0 -2 427931290 1.069828225E8 1 -3 1283146935 1.4257188166666666E8 2 -4 3420862580 2.1380391125E8 1 -5 8551078225 3.42043129E8 0 -6 20521293870 5.700359408333334E8 5 -7 47881509515 9.771736635714285E8 4 -8 109441725160 1.710026955625E9 5 -9 246241940805 3.0400239605555553E9 5 -10 547202156450 5.4720215645E9 5 -11 1203842372095 9.949110513181818E9 2 -12 2626562587740 1.8240017970416668E10 5 -13 107090645 1.07090645E8 0 -14 427931290 1.069828225E8 1 -15 1283146935 1.4257188166666666E8 2 -16 3420862580 2.1380391125E8 1 -17 8551078225 3.42043129E8 0 -18 20521293870 5.700359408333334E8 5 -19 47881509515 9.771736635714285E8 4 -20 109441725160 1.710026955625E9 5 -21 246241940805 3.0400239605555553E9 5 -22 547202156450 5.4720215645E9 5 -23 1203842372095 9.949110513181818E9 2 -24 2626562587740 1.8240017970416668E10 5 +1 107090645 107090645 0 +2 427931290 106982822.5 1 +3 1283146935 142571881.6666667 2 +4 3420862580 213803911.25 1 +5 8551078225 342043129 0 +6 20521293870 570035940.8333334 5 +7 47881509515 977173663.5714285 4 +8 109441725160 1710026955.625 5 +9 246241940805 3040023960.555555 5 +10 547202156450 5472021564.5 5 +11 1203842372095 9949110513.181818 2 +12 2626562587740 18240017970.41667 5 +13 107090645 107090645 0 +14 427931290 106982822.5 1 +15 1283146935 142571881.6666667 2 +16 3420862580 213803911.25 1 +17 8551078225 342043129 0 +18 20521293870 570035940.8333334 5 +19 47881509515 977173663.5714285 4 +20 109441725160 1710026955.625 5 +21 246241940805 3040023960.555555 5 +22 547202156450 5472021564.5 5 +23 1203842372095 9949110513.181818 2 +24 2626562587740 18240017970.41667 5 -- !sql_test_LargeInt_TinyInt_notn_1 -- -1 107090645 1.07090645E8 0 -2 427931290 1.069828225E8 1 -3 1283146935 1.4257188166666666E8 2 -4 3420862580 2.1380391125E8 1 -5 8551078225 3.42043129E8 0 -6 20521293870 5.700359408333334E8 5 -7 47881509515 9.771736635714285E8 4 -8 109441725160 1.710026955625E9 5 -9 246241940805 3.0400239605555553E9 5 -10 547202156450 5.4720215645E9 5 -11 1203842372095 9.949110513181818E9 2 -12 2626562587740 1.8240017970416668E10 5 -13 107090645 1.07090645E8 0 -14 427931290 1.069828225E8 1 -15 1283146935 1.4257188166666666E8 2 -16 3420862580 2.1380391125E8 1 -17 8551078225 3.42043129E8 0 -18 20521293870 5.700359408333334E8 5 -19 47881509515 9.771736635714285E8 4 -20 109441725160 1.710026955625E9 5 -21 246241940805 3.0400239605555553E9 5 -22 547202156450 5.4720215645E9 5 -23 1203842372095 9.949110513181818E9 2 -24 2626562587740 1.8240017970416668E10 5 +1 107090645 107090645 0 +2 427931290 106982822.5 1 +3 1283146935 142571881.6666667 2 +4 3420862580 213803911.25 1 +5 8551078225 342043129 0 +6 20521293870 570035940.8333334 5 +7 47881509515 977173663.5714285 4 +8 109441725160 1710026955.625 5 +9 246241940805 3040023960.555555 5 +10 547202156450 5472021564.5 5 +11 1203842372095 9949110513.181818 2 +12 2626562587740 18240017970.41667 5 +13 107090645 107090645 0 +14 427931290 106982822.5 1 +15 1283146935 142571881.6666667 2 +16 3420862580 213803911.25 1 +17 8551078225 342043129 0 +18 20521293870 570035940.8333334 5 +19 47881509515 977173663.5714285 4 +20 109441725160 1710026955.625 5 +21 246241940805 3040023960.555555 5 +22 547202156450 5472021564.5 5 +23 1203842372095 9949110513.181818 2 +24 2626562587740 18240017970.41667 5 -- !sql_test_LargeInt_TinyInt_2 -- \N \N @@ -19452,56 +19452,56 @@ -- !sql_test_LargeInt_SmallInt_1 -- \N \N \N \N -1 1070906450 1.07090645E7 5 -2 4279312900 1.069828225E7 5 -3 17108625800 1.0692891125E7 5 -4 68417251600 1.06901955625E7 45 -5 273634503200 1.068884778125E7 125 -6 1094469006400 1.0688173890625E7 285 -7 4377738012800 1.06878369453125E7 605 -8 17510676025600 1.068766847265625E7 605 -9 70042152051200 1.0687584236328125E7 605 -10 280167504102400 1.0687542118164062E7 605 -11 1120667808204800 1.0687521059082031E7 605 -12 4482666816409600 1.0687510529541016E7 10845 -13 1070906450 1.07090645E7 5 -14 4279312900 1.069828225E7 5 -15 17108625800 1.0692891125E7 5 -16 68417251600 1.06901955625E7 45 -17 273634503200 1.068884778125E7 125 -18 1094469006400 1.0688173890625E7 285 -19 4377738012800 1.06878369453125E7 605 -20 17510676025600 1.068766847265625E7 605 -21 70042152051200 1.0687584236328125E7 605 -22 280167504102400 1.0687542118164062E7 605 -23 1120667808204800 1.0687521059082031E7 605 -24 4482666816409600 1.0687510529541016E7 10845 +1 1070906450 10709064.5 5 +2 4279312900 10698282.25 5 +3 17108625800 10692891.125 5 +4 68417251600 10690195.5625 45 +5 273634503200 10688847.78125 125 +6 1094469006400 10688173.890625 285 +7 4377738012800 10687836.9453125 605 +8 17510676025600 10687668.47265625 605 +9 70042152051200 10687584.23632812 605 +10 280167504102400 10687542.11816406 605 +11 1120667808204800 10687521.05908203 605 +12 4482666816409600 10687510.52954102 10845 +13 1070906450 10709064.5 5 +14 4279312900 10698282.25 5 +15 17108625800 10692891.125 5 +16 68417251600 10690195.5625 45 +17 273634503200 10688847.78125 125 +18 1094469006400 10688173.890625 285 +19 4377738012800 10687836.9453125 605 +20 17510676025600 10687668.47265625 605 +21 70042152051200 10687584.23632812 605 +22 280167504102400 10687542.11816406 605 +23 1120667808204800 10687521.05908203 605 +24 4482666816409600 10687510.52954102 10845 -- !sql_test_LargeInt_SmallInt_notn_1 -- -1 1070906450 1.07090645E7 5 -2 4279312900 1.069828225E7 5 -3 17108625800 1.0692891125E7 5 -4 68417251600 1.06901955625E7 45 -5 273634503200 1.068884778125E7 125 -6 1094469006400 1.0688173890625E7 285 -7 4377738012800 1.06878369453125E7 605 -8 17510676025600 1.068766847265625E7 605 -9 70042152051200 1.0687584236328125E7 605 -10 280167504102400 1.0687542118164062E7 605 -11 1120667808204800 1.0687521059082031E7 605 -12 4482666816409600 1.0687510529541016E7 10845 -13 1070906450 1.07090645E7 5 -14 4279312900 1.069828225E7 5 -15 17108625800 1.0692891125E7 5 -16 68417251600 1.06901955625E7 45 -17 273634503200 1.068884778125E7 125 -18 1094469006400 1.0688173890625E7 285 -19 4377738012800 1.06878369453125E7 605 -20 17510676025600 1.068766847265625E7 605 -21 70042152051200 1.0687584236328125E7 605 -22 280167504102400 1.0687542118164062E7 605 -23 1120667808204800 1.0687521059082031E7 605 -24 4482666816409600 1.0687510529541016E7 10845 +1 1070906450 10709064.5 5 +2 4279312900 10698282.25 5 +3 17108625800 10692891.125 5 +4 68417251600 10690195.5625 45 +5 273634503200 10688847.78125 125 +6 1094469006400 10688173.890625 285 +7 4377738012800 10687836.9453125 605 +8 17510676025600 10687668.47265625 605 +9 70042152051200 10687584.23632812 605 +10 280167504102400 10687542.11816406 605 +11 1120667808204800 10687521.05908203 605 +12 4482666816409600 10687510.52954102 10845 +13 1070906450 10709064.5 5 +14 4279312900 10698282.25 5 +15 17108625800 10692891.125 5 +16 68417251600 10690195.5625 45 +17 273634503200 10688847.78125 125 +18 1094469006400 10688173.890625 285 +19 4377738012800 10687836.9453125 605 +20 17510676025600 10687668.47265625 605 +21 70042152051200 10687584.23632812 605 +22 280167504102400 10687542.11816406 605 +23 1120667808204800 10687521.05908203 605 +24 4482666816409600 10687510.52954102 10845 -- !sql_test_LargeInt_SmallInt_2 -- \N \N @@ -19719,7 +19719,7 @@ \N \N \N \N 1 2548221897775 4500.552426980458 13145 2 10172996591525 4500.276474918498 13145 -3 40652233479025 4500.1383029091485 13145 +3 40652233479025 4500.138302909148 13145 4 162529457254025 4500.069167828672 13145 5 649958904804025 4500.034588009315 13145 6 2599517799904025 4500.017295028584 13145 @@ -19731,7 +19731,7 @@ 12 10646343538582504025 4500.000270250573 13145 13 2548221897775 4500.552426980458 13145 14 10172996591525 4500.276474918498 13145 -15 40652233479025 4500.1383029091485 13145 +15 40652233479025 4500.138302909148 13145 16 162529457254025 4500.069167828672 13145 17 649958904804025 4500.034588009315 13145 18 2599517799904025 4500.017295028584 13145 @@ -19745,7 +19745,7 @@ -- !sql_test_LargeInt_Integer_notn_1 -- 1 2548221897775 4500.552426980458 13145 2 10172996591525 4500.276474918498 13145 -3 40652233479025 4500.1383029091485 13145 +3 40652233479025 4500.138302909148 13145 4 162529457254025 4500.069167828672 13145 5 649958904804025 4500.034588009315 13145 6 2599517799904025 4500.017295028584 13145 @@ -19757,7 +19757,7 @@ 12 10646343538582504025 4500.000270250573 13145 13 2548221897775 4500.552426980458 13145 14 10172996591525 4500.276474918498 13145 -15 40652233479025 4500.1383029091485 13145 +15 40652233479025 4500.138302909148 13145 16 162529457254025 4500.069167828672 13145 17 649958904804025 4500.034588009315 13145 18 2599517799904025 4500.017295028584 13145 @@ -19983,54 +19983,54 @@ -- !sql_test_LargeInt_BigInt_1 -- \N \N \N \N 1 573419964281205 20.00001213925632 65 -2 2289064166624955 20.000006075743585 65 +2 2289064166624955 20.00000607574358 65 3 9147032258812455 20.00000303940296 65 -4 36569687193187455 20.000001520084563 65 -5 146241872061937455 20.000000760138086 65 +4 36569687193187455 20.00000152008456 65 +5 146241872061937455 20.00000076013809 65 6 584893741799437455 20.000000380093 65 7 2339427481274437455 20.00000019005249 65 -8 9357414960224437455 20.000000095027744 65 -9 37429069918124437455 20.000000047514245 65 -10 149715099833924437455 20.000000023757217 65 -11 598858039665524437455 20.000000011878633 65 +8 9357414960224437455 20.00000009502774 65 +9 37429069918124437455 20.00000004751424 65 +10 149715099833924437455 20.00000002375722 65 +11 598858039665524437455 20.00000001187863 65 12 2395427439328724437455 20.00000000593932 65 13 573419964281205 20.00001213925632 65 -14 2289064166624955 20.000006075743585 65 +14 2289064166624955 20.00000607574358 65 15 9147032258812455 20.00000303940296 65 -16 36569687193187455 20.000001520084563 65 -17 146241872061937455 20.000000760138086 65 +16 36569687193187455 20.00000152008456 65 +17 146241872061937455 20.00000076013809 65 18 584893741799437455 20.000000380093 65 19 2339427481274437455 20.00000019005249 65 -20 9357414960224437455 20.000000095027744 65 -21 37429069918124437455 20.000000047514245 65 -22 149715099833924437455 20.000000023757217 65 -23 598858039665524437455 20.000000011878633 65 +20 9357414960224437455 20.00000009502774 65 +21 37429069918124437455 20.00000004751424 65 +22 149715099833924437455 20.00000002375722 65 +23 598858039665524437455 20.00000001187863 65 24 2395427439328724437455 20.00000000593932 65 -- !sql_test_LargeInt_BigInt_notn_1 -- 1 573419964281205 20.00001213925632 65 -2 2289064166624955 20.000006075743585 65 +2 2289064166624955 20.00000607574358 65 3 9147032258812455 20.00000303940296 65 -4 36569687193187455 20.000001520084563 65 -5 146241872061937455 20.000000760138086 65 +4 36569687193187455 20.00000152008456 65 +5 146241872061937455 20.00000076013809 65 6 584893741799437455 20.000000380093 65 7 2339427481274437455 20.00000019005249 65 -8 9357414960224437455 20.000000095027744 65 -9 37429069918124437455 20.000000047514245 65 -10 149715099833924437455 20.000000023757217 65 -11 598858039665524437455 20.000000011878633 65 +8 9357414960224437455 20.00000009502774 65 +9 37429069918124437455 20.00000004751424 65 +10 149715099833924437455 20.00000002375722 65 +11 598858039665524437455 20.00000001187863 65 12 2395427439328724437455 20.00000000593932 65 13 573419964281205 20.00001213925632 65 -14 2289064166624955 20.000006075743585 65 +14 2289064166624955 20.00000607574358 65 15 9147032258812455 20.00000303940296 65 -16 36569687193187455 20.000001520084563 65 -17 146241872061937455 20.000000760138086 65 +16 36569687193187455 20.00000152008456 65 +17 146241872061937455 20.00000076013809 65 18 584893741799437455 20.000000380093 65 19 2339427481274437455 20.00000019005249 65 -20 9357414960224437455 20.000000095027744 65 -21 37429069918124437455 20.000000047514245 65 -22 149715099833924437455 20.000000023757217 65 -23 598858039665524437455 20.000000011878633 65 +20 9357414960224437455 20.00000009502774 65 +21 37429069918124437455 20.00000004751424 65 +22 149715099833924437455 20.00000002375722 65 +23 598858039665524437455 20.00000001187863 65 24 2395427439328724437455 20.00000000593932 65 -- !sql_test_LargeInt_BigInt_2 -- @@ -20247,56 +20247,56 @@ -- !sql_test_LargeInt_LargeInt_1 -- \N \N \N \N -1 11468406246516025 1.0 0 -2 45781297240266025 1.0 0 -3 182940672977766025 1.0 0 -4 731393799452766025 1.0 0 -5 2924837552402766025 1.0 0 -6 11697875058302766025 1.0 0 -7 46788550070102766025 1.0 0 -8 187148300093702766025 1.0 0 -9 748581400140902766025 1.0 0 -10 2994302000235302766025 1.0 0 -11 11977160800424102766025 1.0 0 -12 47908548800801702766025 1.0 0 -13 11468406246516025 1.0 0 -14 45781297240266025 1.0 0 -15 182940672977766025 1.0 0 -16 731393799452766025 1.0 0 -17 2924837552402766025 1.0 0 -18 11697875058302766025 1.0 0 -19 46788550070102766025 1.0 0 -20 187148300093702766025 1.0 0 -21 748581400140902766025 1.0 0 -22 2994302000235302766025 1.0 0 -23 11977160800424102766025 1.0 0 -24 47908548800801702766025 1.0 0 +1 11468406246516025 1 0 +2 45781297240266025 1 0 +3 182940672977766025 1 0 +4 731393799452766025 1 0 +5 2924837552402766025 1 0 +6 11697875058302766025 1 0 +7 46788550070102766025 1 0 +8 187148300093702766025 1 0 +9 748581400140902766025 1 0 +10 2994302000235302766025 1 0 +11 11977160800424102766025 1 0 +12 47908548800801702766025 1 0 +13 11468406246516025 1 0 +14 45781297240266025 1 0 +15 182940672977766025 1 0 +16 731393799452766025 1 0 +17 2924837552402766025 1 0 +18 11697875058302766025 1 0 +19 46788550070102766025 1 0 +20 187148300093702766025 1 0 +21 748581400140902766025 1 0 +22 2994302000235302766025 1 0 +23 11977160800424102766025 1 0 +24 47908548800801702766025 1 0 -- !sql_test_LargeInt_LargeInt_notn_1 -- -1 11468406246516025 1.0 0 -2 45781297240266025 1.0 0 -3 182940672977766025 1.0 0 -4 731393799452766025 1.0 0 -5 2924837552402766025 1.0 0 -6 11697875058302766025 1.0 0 -7 46788550070102766025 1.0 0 -8 187148300093702766025 1.0 0 -9 748581400140902766025 1.0 0 -10 2994302000235302766025 1.0 0 -11 11977160800424102766025 1.0 0 -12 47908548800801702766025 1.0 0 -13 11468406246516025 1.0 0 -14 45781297240266025 1.0 0 -15 182940672977766025 1.0 0 -16 731393799452766025 1.0 0 -17 2924837552402766025 1.0 0 -18 11697875058302766025 1.0 0 -19 46788550070102766025 1.0 0 -20 187148300093702766025 1.0 0 -21 748581400140902766025 1.0 0 -22 2994302000235302766025 1.0 0 -23 11977160800424102766025 1.0 0 -24 47908548800801702766025 1.0 0 +1 11468406246516025 1 0 +2 45781297240266025 1 0 +3 182940672977766025 1 0 +4 731393799452766025 1 0 +5 2924837552402766025 1 0 +6 11697875058302766025 1 0 +7 46788550070102766025 1 0 +8 187148300093702766025 1 0 +9 748581400140902766025 1 0 +10 2994302000235302766025 1 0 +11 11977160800424102766025 1 0 +12 47908548800801702766025 1 0 +13 11468406246516025 1 0 +14 45781297240266025 1 0 +15 182940672977766025 1 0 +16 731393799452766025 1 0 +17 2924837552402766025 1 0 +18 11697875058302766025 1 0 +19 46788550070102766025 1 0 +20 187148300093702766025 1 0 +21 748581400140902766025 1 0 +22 2994302000235302766025 1 0 +23 11977160800424102766025 1 0 +24 47908548800801702766025 1 0 -- !sql_test_LargeInt_LargeInt_2 -- \N \N @@ -20459,56 +20459,56 @@ -- !sql_test_LargeInt_Float_0 -- \N \N \N -1 1.070906451E8 1.070906449E8 -2 2.139656452E8 2.139656448E8 -3 4.277156453E8 4.277156447E8 -4 8.552156454E8 8.552156446E8 -5 1.7102156455E9 1.7102156445E9 -6 3.4202156456E9 3.4202156444E9 -7 6.8402156457E9 6.8402156443E9 -8 1.36802156458E10 1.36802156442E10 -9 2.73602156459E10 2.73602156441E10 -10 5.4720215646E10 5.4720215644E10 -11 1.094402156461E11 1.094402156439E11 -12 2.188802156462E11 2.188802156438E11 -13 1.070906451E8 1.070906449E8 -14 2.139656452E8 2.139656448E8 -15 4.277156453E8 4.277156447E8 -16 8.552156454E8 8.552156446E8 -17 1.7102156455E9 1.7102156445E9 -18 3.4202156456E9 3.4202156444E9 -19 6.8402156457E9 6.8402156443E9 -20 1.36802156458E10 1.36802156442E10 -21 2.73602156459E10 2.73602156441E10 -22 5.4720215646E10 5.4720215644E10 -23 1.094402156461E11 1.094402156439E11 -24 2.188802156462E11 2.188802156438E11 +1 107090645.1 107090644.9 +2 213965645.2 213965644.8 +3 427715645.3 427715644.7 +4 855215645.4 855215644.6 +5 1710215645.5 1710215644.5 +6 3420215645.6 3420215644.4 +7 6840215645.7 6840215644.3 +8 13680215645.8 13680215644.2 +9 27360215645.9 27360215644.1 +10 54720215646 54720215644 +11 109440215646.1 109440215643.9 +12 218880215646.2 218880215643.8 +13 107090645.1 107090644.9 +14 213965645.2 213965644.8 +15 427715645.3 427715644.7 +16 855215645.4 855215644.6 +17 1710215645.5 1710215644.5 +18 3420215645.6 3420215644.4 +19 6840215645.7 6840215644.3 +20 13680215645.8 13680215644.2 +21 27360215645.9 27360215644.1 +22 54720215646 54720215644 +23 109440215646.1 109440215643.9 +24 218880215646.2 218880215643.8 -- !sql_test_LargeInt_Float_notn_0 -- -1 1.070906451E8 1.070906449E8 -2 2.139656452E8 2.139656448E8 -3 4.277156453E8 4.277156447E8 -4 8.552156454E8 8.552156446E8 -5 1.7102156455E9 1.7102156445E9 -6 3.4202156456E9 3.4202156444E9 -7 6.8402156457E9 6.8402156443E9 -8 1.36802156458E10 1.36802156442E10 -9 2.73602156459E10 2.73602156441E10 -10 5.4720215646E10 5.4720215644E10 -11 1.094402156461E11 1.094402156439E11 -12 2.188802156462E11 2.188802156438E11 -13 1.070906451E8 1.070906449E8 -14 2.139656452E8 2.139656448E8 -15 4.277156453E8 4.277156447E8 -16 8.552156454E8 8.552156446E8 -17 1.7102156455E9 1.7102156445E9 -18 3.4202156456E9 3.4202156444E9 -19 6.8402156457E9 6.8402156443E9 -20 1.36802156458E10 1.36802156442E10 -21 2.73602156459E10 2.73602156441E10 -22 5.4720215646E10 5.4720215644E10 -23 1.094402156461E11 1.094402156439E11 -24 2.188802156462E11 2.188802156438E11 +1 107090645.1 107090644.9 +2 213965645.2 213965644.8 +3 427715645.3 427715644.7 +4 855215645.4 855215644.6 +5 1710215645.5 1710215644.5 +6 3420215645.6 3420215644.4 +7 6840215645.7 6840215644.3 +8 13680215645.8 13680215644.2 +9 27360215645.9 27360215644.1 +10 54720215646 54720215644 +11 109440215646.1 109440215643.9 +12 218880215646.2 218880215643.8 +13 107090645.1 107090644.9 +14 213965645.2 213965644.8 +15 427715645.3 427715644.7 +16 855215645.4 855215644.6 +17 1710215645.5 1710215644.5 +18 3420215645.6 3420215644.4 +19 6840215645.7 6840215644.3 +20 13680215645.8 13680215644.2 +21 27360215645.9 27360215644.1 +22 54720215646 54720215644 +23 109440215646.1 109440215643.9 +24 218880215646.2 218880215643.8 -- !sql_test_LargeInt_Float_3 -- \N \N \N \N @@ -20565,109 +20565,109 @@ -- !sql_test_LargeInt_Double_0 -- \N \N \N -1 1.070906455244E8 1.070906444756E8 -2 2.139656457416E8 2.139656442584E8 -3 4.277156460368E8 4.277156439632E8 -4 8.552156464491E8 8.552156435509E8 -5 1.710215647031E9 1.710215642969E9 -6 3.4202156478548E9 3.4202156421452E9 -7 6.8402156490218E9 6.8402156409782E9 -8 1.36802156506745E10 1.36802156393255E10 -9 2.73602156530141E10 2.73602156369859E10 -10 5.47202156563248E10 5.47202156336752E10 -11 1.094402156610086E11 1.094402156289914E11 -12 2.18880215667634E11 2.18880215622366E11 -13 1.070906455244E8 1.070906444756E8 -14 2.139656457416E8 2.139656442584E8 -15 4.277156460368E8 4.277156439632E8 -16 8.552156464491E8 8.552156435509E8 -17 1.710215647031E9 1.710215642969E9 -18 3.4202156478548E9 3.4202156421452E9 -19 6.8402156490218E9 6.8402156409782E9 -20 1.36802156506745E10 1.36802156393255E10 -21 2.73602156530141E10 2.73602156369859E10 -22 5.47202156563248E10 5.47202156336752E10 -23 1.094402156610086E11 1.094402156289914E11 -24 2.18880215667634E11 2.18880215622366E11 +1 107090645.5244 107090644.4756 +2 213965645.7416 213965644.2584 +3 427715646.0368 427715643.9632 +4 855215646.4491 855215643.5509 +5 1710215647.031 1710215642.969 +6 3420215647.8548 3420215642.1452 +7 6840215649.0218 6840215640.9782 +8 13680215650.6745 13680215639.3255 +9 27360215653.0141 27360215636.9859 +10 54720215656.3248 54720215633.6752 +11 109440215661.0086 109440215628.9914 +12 218880215667.634 218880215622.366 +13 107090645.5244 107090644.4756 +14 213965645.7416 213965644.2584 +15 427715646.0368 427715643.9632 +16 855215646.4491 855215643.5509 +17 1710215647.031 1710215642.969 +18 3420215647.8548 3420215642.1452 +19 6840215649.0218 6840215640.9782 +20 13680215650.6745 13680215639.3255 +21 27360215653.0141 27360215636.9859 +22 54720215656.3248 54720215633.6752 +23 109440215661.0086 109440215628.9914 +24 218880215667.634 218880215622.366 -- !sql_test_LargeInt_Double_notn_0 -- -1 1.070906455244E8 1.070906444756E8 -2 2.139656457416E8 2.139656442584E8 -3 4.277156460368E8 4.277156439632E8 -4 8.552156464491E8 8.552156435509E8 -5 1.710215647031E9 1.710215642969E9 -6 3.4202156478548E9 3.4202156421452E9 -7 6.8402156490218E9 6.8402156409782E9 -8 1.36802156506745E10 1.36802156393255E10 -9 2.73602156530141E10 2.73602156369859E10 -10 5.47202156563248E10 5.47202156336752E10 -11 1.094402156610086E11 1.094402156289914E11 -12 2.18880215667634E11 2.18880215622366E11 -13 1.070906455244E8 1.070906444756E8 -14 2.139656457416E8 2.139656442584E8 -15 4.277156460368E8 4.277156439632E8 -16 8.552156464491E8 8.552156435509E8 -17 1.710215647031E9 1.710215642969E9 -18 3.4202156478548E9 3.4202156421452E9 -19 6.8402156490218E9 6.8402156409782E9 -20 1.36802156506745E10 1.36802156393255E10 -21 2.73602156530141E10 2.73602156369859E10 -22 5.47202156563248E10 5.47202156336752E10 -23 1.094402156610086E11 1.094402156289914E11 -24 2.18880215667634E11 2.18880215622366E11 +1 107090645.5244 107090644.4756 +2 213965645.7416 213965644.2584 +3 427715646.0368 427715643.9632 +4 855215646.4491 855215643.5509 +5 1710215647.031 1710215642.969 +6 3420215647.8548 3420215642.1452 +7 6840215649.0218 6840215640.9782 +8 13680215650.6745 13680215639.3255 +9 27360215653.0141 27360215636.9859 +10 54720215656.3248 54720215633.6752 +11 109440215661.0086 109440215628.9914 +12 218880215667.634 218880215622.366 +13 107090645.5244 107090644.4756 +14 213965645.7416 213965644.2584 +15 427715646.0368 427715643.9632 +16 855215646.4491 855215643.5509 +17 1710215647.031 1710215642.969 +18 3420215647.8548 3420215642.1452 +19 6840215649.0218 6840215640.9782 +20 13680215650.6745 13680215639.3255 +21 27360215653.0141 27360215636.9859 +22 54720215656.3248 54720215633.6752 +23 109440215661.0086 109440215628.9914 +24 218880215667.634 218880215622.366 -- !sql_test_LargeInt_Double_1 -- \N \N \N \N -1 5.6158334238E7 2.042155701754386E8 0.09200000464332447 -2 1.5867692233200002E8 2.88518938781014E8 0.5791999893397382 -3 4.43455580736E8 4.1253437982253087E8 0.8528000231567412 -4 1.2392929911695E9 5.90170205644883E8 0.9344999677107313 -5 3.4734479749950004E9 8.420559551944854E8 0.3949998833282353 -6 9.764031623346E9 1.1980578832142358E9 0.611599994892372 -7 2.7509979281060997E10 1.7007846349893084E9 3.9788003069539624 -8 7.76283836775525E10 2.41082309366464E9 3.771499760181003 -9 2.1926750420059448E11 3.414009763416978E9 3.3417030273981965 -10 6.19695498136496E11 4.83189245240534E9 4.590401181043532 -11 1.751984636174547E12 6.836338945629224E9 10.07299129534033 -12 4.95413480090893E12 9.670416879252453E9 5.713996701802657 -13 5.6158334238E7 2.042155701754386E8 0.09200000464332447 -14 1.5867692233200002E8 2.88518938781014E8 0.5791999893397382 -15 4.43455580736E8 4.1253437982253087E8 0.8528000231567412 -16 1.2392929911695E9 5.90170205644883E8 0.9344999677107313 -17 3.4734479749950004E9 8.420559551944854E8 0.3949998833282353 -18 9.764031623346E9 1.1980578832142358E9 0.611599994892372 -19 2.7509979281060997E10 1.7007846349893084E9 3.9788003069539624 -20 7.76283836775525E10 2.41082309366464E9 3.771499760181003 -21 2.1926750420059448E11 3.414009763416978E9 3.3417030273981965 -22 6.19695498136496E11 4.83189245240534E9 4.590401181043532 -23 1.751984636174547E12 6.836338945629224E9 10.07299129534033 -24 4.95413480090893E12 9.670416879252453E9 5.713996701802657 +1 56158334.238 204215570.1754386 0.09200000464332447 +2 158676922.332 288518938.781014 0.5791999893397382 +3 443455580.736 412534379.8225309 0.8528000231567412 +4 1239292991.1695 590170205.644883 0.9344999677107313 +5 3473447974.995 842055955.1944854 0.3949998833282353 +6 9764031623.346001 1198057883.214236 0.611599994892372 +7 27509979281.061 1700784634.989308 3.978800306953962 +8 77628383677.55251 2410823093.66464 3.771499760181003 +9 219267504200.5945 3414009763.416978 3.341703027398196 +10 619695498136.496 4831892452.40534 4.590401181043532 +11 1751984636174.547 6836338945.629224 10.07299129534033 +12 4954134800908.93 9670416879.252453 5.713996701802657 +13 56158334.238 204215570.1754386 0.09200000464332447 +14 158676922.332 288518938.781014 0.5791999893397382 +15 443455580.736 412534379.8225309 0.8528000231567412 +16 1239292991.1695 590170205.644883 0.9344999677107313 +17 3473447974.995 842055955.1944854 0.3949998833282353 +18 9764031623.346001 1198057883.214236 0.611599994892372 +19 27509979281.061 1700784634.989308 3.978800306953962 +20 77628383677.55251 2410823093.66464 3.771499760181003 +21 219267504200.5945 3414009763.416978 3.341703027398196 +22 619695498136.496 4831892452.40534 4.590401181043532 +23 1751984636174.547 6836338945.629224 10.07299129534033 +24 4954134800908.93 9670416879.252453 5.713996701802657 -- !sql_test_LargeInt_Double_notn_1 -- -1 5.6158334238E7 2.042155701754386E8 0.09200000464332447 -2 1.5867692233200002E8 2.88518938781014E8 0.5791999893397382 -3 4.43455580736E8 4.1253437982253087E8 0.8528000231567412 -4 1.2392929911695E9 5.90170205644883E8 0.9344999677107313 -5 3.4734479749950004E9 8.420559551944854E8 0.3949998833282353 -6 9.764031623346E9 1.1980578832142358E9 0.611599994892372 -7 2.7509979281060997E10 1.7007846349893084E9 3.9788003069539624 -8 7.76283836775525E10 2.41082309366464E9 3.771499760181003 -9 2.1926750420059448E11 3.414009763416978E9 3.3417030273981965 -10 6.19695498136496E11 4.83189245240534E9 4.590401181043532 -11 1.751984636174547E12 6.836338945629224E9 10.07299129534033 -12 4.95413480090893E12 9.670416879252453E9 5.713996701802657 -13 5.6158334238E7 2.042155701754386E8 0.09200000464332447 -14 1.5867692233200002E8 2.88518938781014E8 0.5791999893397382 -15 4.43455580736E8 4.1253437982253087E8 0.8528000231567412 -16 1.2392929911695E9 5.90170205644883E8 0.9344999677107313 -17 3.4734479749950004E9 8.420559551944854E8 0.3949998833282353 -18 9.764031623346E9 1.1980578832142358E9 0.611599994892372 -19 2.7509979281060997E10 1.7007846349893084E9 3.9788003069539624 -20 7.76283836775525E10 2.41082309366464E9 3.771499760181003 -21 2.1926750420059448E11 3.414009763416978E9 3.3417030273981965 -22 6.19695498136496E11 4.83189245240534E9 4.590401181043532 -23 1.751984636174547E12 6.836338945629224E9 10.07299129534033 -24 4.95413480090893E12 9.670416879252453E9 5.713996701802657 +1 56158334.238 204215570.1754386 0.09200000464332447 +2 158676922.332 288518938.781014 0.5791999893397382 +3 443455580.736 412534379.8225309 0.8528000231567412 +4 1239292991.1695 590170205.644883 0.9344999677107313 +5 3473447974.995 842055955.1944854 0.3949998833282353 +6 9764031623.346001 1198057883.214236 0.611599994892372 +7 27509979281.061 1700784634.989308 3.978800306953962 +8 77628383677.55251 2410823093.66464 3.771499760181003 +9 219267504200.5945 3414009763.416978 3.341703027398196 +10 619695498136.496 4831892452.40534 4.590401181043532 +11 1751984636174.547 6836338945.629224 10.07299129534033 +12 4954134800908.93 9670416879.252453 5.713996701802657 +13 56158334.238 204215570.1754386 0.09200000464332447 +14 158676922.332 288518938.781014 0.5791999893397382 +15 443455580.736 412534379.8225309 0.8528000231567412 +16 1239292991.1695 590170205.644883 0.9344999677107313 +17 3473447974.995 842055955.1944854 0.3949998833282353 +18 9764031623.346001 1198057883.214236 0.611599994892372 +19 27509979281.061 1700784634.989308 3.978800306953962 +20 77628383677.55251 2410823093.66464 3.771499760181003 +21 219267504200.5945 3414009763.416978 3.341703027398196 +22 619695498136.496 4831892452.40534 4.590401181043532 +23 1751984636174.547 6836338945.629224 10.07299129534033 +24 4954134800908.93 9670416879.252453 5.713996701802657 -- !sql_test_LargeInt_Double_3 -- \N \N \N \N @@ -21425,18 +21425,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07090799289E8 1.07090490711E8 -14 2.13965863094E8 2.13965426906E8 -15 4.27715953359E8 4.27715336641E8 -16 8.55216081033E8 8.55215208967E8 -17 1.710216261608E9 1.710215028392E9 -18 3.420216516989E9 3.420214773011E9 -19 6.840216878161E9 6.840214411839E9 -20 1.368021738894E10 1.368021390106E10 -21 2.7360218111294E10 2.7360213178706E10 -22 5.472021913286E10 5.472021215714E10 -23 1.09440220577574E11 1.09440210712426E11 -24 2.1888022262071E11 2.1888020866929E11 +13 107090799.289 107090490.711 +14 213965863.094 213965426.906 +15 427715953.359 427715336.641 +16 855216081.033 855215208.967 +17 1710216261.608 1710215028.392 +18 3420216516.989 3420214773.011 +19 6840216878.161 6840214411.839 +20 13680217388.94 13680213901.06 +21 27360218111.294 27360213178.706 +22 54720219132.86 54720212157.14 +23 109440220577.574 109440210712.426 +24 218880222620.71 218880208669.29 -- !sql_test_LargeInt_Char_notn_0 -- 1 \N \N @@ -21451,18 +21451,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07090799289E8 1.07090490711E8 -14 2.13965863094E8 2.13965426906E8 -15 4.27715953359E8 4.27715336641E8 -16 8.55216081033E8 8.55215208967E8 -17 1.710216261608E9 1.710215028392E9 -18 3.420216516989E9 3.420214773011E9 -19 6.840216878161E9 6.840214411839E9 -20 1.368021738894E10 1.368021390106E10 -21 2.7360218111294E10 2.7360213178706E10 -22 5.472021913286E10 5.472021215714E10 -23 1.09440220577574E11 1.09440210712426E11 -24 2.1888022262071E11 2.1888020866929E11 +13 107090799.289 107090490.711 +14 213965863.094 213965426.906 +15 427715953.359 427715336.641 +16 855216081.033 855215208.967 +17 1710216261.608 1710215028.392 +18 3420216516.989 3420214773.011 +19 6840216878.161 6840214411.839 +20 13680217388.94 13680213901.06 +21 27360218111.294 27360213178.706 +22 54720219132.86 54720212157.14 +23 109440220577.574 109440210712.426 +24 218880222620.71 218880208669.29 -- !sql_test_LargeInt_Char_1 -- \N \N \N \N @@ -21478,18 +21478,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.6522908526404999E10 694091.2508344731 38.70100000883781 -14 4.666462338063E10 981070.7538951095 164.4200000057998 -15 1.31889968576555E11 1387070.411436021 126.87000002712296 -16 3.7290224333628503E11 1961355.321730236 140.2849999696747 -17 1.0545326484321599E12 2773586.533097203 328.7120001463086 -18 2.9823904200679053E12 3922315.126681644 110.46499987157631 -19 8.435087165003846E12 5546895.859502531 1059.9049996771282 -20 2.38574752719413E13 7844430.224090278 390.79999957193195 -21 6.7478335683969625E13 1.1093655356985016E7 880.4300014529053 -22 1.9085645133956972E14 1.56887649289249E7 3239.9599980023613 -23 5.398219622449202E14 2.2187242531992424E7 2624.092008555972 -24 1.526844909076983E15 3.137748209787964E7 682.7799988584939 +13 16522908526.405 694091.2508344731 38.70100000883781 +14 46664623380.63 981070.7538951095 164.4200000057998 +15 131889968576.555 1387070.411436021 126.870000027123 +16 372902243336.285 1961355.321730236 140.2849999696747 +17 1054532648432.16 2773586.533097203 328.7120001463086 +18 2982390420067.905 3922315.126681644 110.4649998715763 +19 8435087165003.846 5546895.859502531 1059.904999677128 +20 23857475271941.3 7844430.224090278 390.7999995719319 +21 67478335683969.62 11093655.35698502 880.4300014529053 +22 190856451339569.7 15688764.9289249 3239.959998002361 +23 539821962244920.2 22187242.53199242 2624.092008555972 +24 1526844909076983 31377482.09787964 682.7799988584939 -- !sql_test_LargeInt_Char_notn_1 -- 1 \N \N \N @@ -21504,18 +21504,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.6522908526404999E10 694091.2508344731 38.70100000883781 -14 4.666462338063E10 981070.7538951095 164.4200000057998 -15 1.31889968576555E11 1387070.411436021 126.87000002712296 -16 3.7290224333628503E11 1961355.321730236 140.2849999696747 -17 1.0545326484321599E12 2773586.533097203 328.7120001463086 -18 2.9823904200679053E12 3922315.126681644 110.46499987157631 -19 8.435087165003846E12 5546895.859502531 1059.9049996771282 -20 2.38574752719413E13 7844430.224090278 390.79999957193195 -21 6.7478335683969625E13 1.1093655356985016E7 880.4300014529053 -22 1.9085645133956972E14 1.56887649289249E7 3239.9599980023613 -23 5.398219622449202E14 2.2187242531992424E7 2624.092008555972 -24 1.526844909076983E15 3.137748209787964E7 682.7799988584939 +13 16522908526.405 694091.2508344731 38.70100000883781 +14 46664623380.63 981070.7538951095 164.4200000057998 +15 131889968576.555 1387070.411436021 126.870000027123 +16 372902243336.285 1961355.321730236 140.2849999696747 +17 1054532648432.16 2773586.533097203 328.7120001463086 +18 2982390420067.905 3922315.126681644 110.4649998715763 +19 8435087165003.846 5546895.859502531 1059.904999677128 +20 23857475271941.3 7844430.224090278 390.7999995719319 +21 67478335683969.62 11093655.35698502 880.4300014529053 +22 190856451339569.7 15688764.9289249 3239.959998002361 +23 539821962244920.2 22187242.53199242 2624.092008555972 +24 1526844909076983 31377482.09787964 682.7799988584939 -- !sql_test_LargeInt_Char_3 -- \N \N \N \N @@ -21584,18 +21584,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07092964121E8 1.07088325879E8 -14 2.13968923082E8 2.13962366918E8 -15 4.27720279741E8 4.27711010259E8 -16 8.55222198688E8 8.55209091312E8 -17 1.71022491273E9 1.71020637727E9 -18 3.420228751137E9 3.420202538863E9 -19 6.840234179585E9 6.840197110415E9 -20 1.3680241856654E10 1.3680189433346E10 -21 2.7360252713731E10 2.7360178576269E10 -22 5.4720268067999E10 5.4720163222001E10 -23 1.09440289782243E11 1.09440141507757E11 -24 2.18880320490843E11 2.18880110799157E11 +13 107092964.121 107088325.879 +14 213968923.082 213962366.918 +15 427720279.741 427711010.259 +16 855222198.688 855209091.312 +17 1710224912.73 1710206377.27 +18 3420228751.137 3420202538.863 +19 6840234179.585 6840197110.415 +20 13680241856.654 13680189433.346 +21 27360252713.731 27360178576.269 +22 54720268067.999 54720163222.001 +23 109440289782.243 109440141507.757 +24 218880320490.843 218880110799.157 -- !sql_test_LargeInt_Varchar_notn_0 -- 1 \N \N @@ -21610,18 +21610,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07092964121E8 1.07088325879E8 -14 2.13968923082E8 2.13962366918E8 -15 4.27720279741E8 4.27711010259E8 -16 8.55222198688E8 8.55209091312E8 -17 1.71022491273E9 1.71020637727E9 -18 3.420228751137E9 3.420202538863E9 -19 6.840234179585E9 6.840197110415E9 -20 1.3680241856654E10 1.3680189433346E10 -21 2.7360252713731E10 2.7360178576269E10 -22 5.4720268067999E10 5.4720163222001E10 -23 1.09440289782243E11 1.09440141507757E11 -24 2.18880320490843E11 2.18880110799157E11 +13 107092964.121 107088325.879 +14 213968923.082 213962366.918 +15 427720279.741 427711010.259 +16 855222198.688 855209091.312 +17 1710224912.73 1710206377.27 +18 3420228751.137 3420202538.863 +19 6840234179.585 6840197110.415 +20 13680241856.654 13680189433.346 +21 27360252713.731 27360178576.269 +22 54720268067.999 54720163222.001 +23 109440289782.243 109440141507.757 +24 218880320490.843 218880110799.157 -- !sql_test_LargeInt_Varchar_1 -- \N \N \N \N @@ -21637,18 +21637,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.48356163723045E11 46177.25638291404 594.5829999956322 -14 7.0139692949289E11 65271.596317602794 1954.778000007836 -15 1.982351236222945E12 92284.69185225236 3206.556000001343 -16 5.60481651004876E12 130493.7990639774 5236.8159999867075 -17 1.584981683963585E13 184534.47014533225 4357.18000008056 -18 4.482581481291337E13 260962.90958960674 11921.205999836708 -19 1.2678055829058231E14 369051.4594742747 8516.165000322224 -20 3.585810791321268E14 521913.4834070372 12670.898000713914 -21 1.0142084738464965E15 738094.2078918213 7706.286000171851 -22 2.8685978100376195E15 1043820.7788341143 40828.81999641526 -23 8.113595861245767E15 1476184.0502350484 3724.2879967348417 -24 2.2948680725321812E16 2087638.4736112047 49656.16601360985 +13 248356163723.045 46177.25638291404 594.5829999956322 +14 701396929492.89 65271.59631760279 1954.778000007836 +15 1982351236222.945 92284.69185225236 3206.556000001343 +16 5604816510048.76 130493.7990639774 5236.815999986708 +17 15849816839635.85 184534.4701453322 4357.18000008056 +18 44825814812913.37 260962.9095896067 11921.20599983671 +19 126780558290582.3 369051.4594742747 8516.165000322224 +20 358581079132126.8 521913.4834070372 12670.89800071391 +21 1014208473846496 738094.2078918213 7706.286000171851 +22 2868597810037620 1043820.778834114 40828.81999641526 +23 8113595861245767 1476184.050235048 3724.287996734842 +24 2.294868072532181e+16 2087638.473611205 49656.16601360985 -- !sql_test_LargeInt_Varchar_notn_1 -- 1 \N \N \N @@ -21663,18 +21663,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.48356163723045E11 46177.25638291404 594.5829999956322 -14 7.0139692949289E11 65271.596317602794 1954.778000007836 -15 1.982351236222945E12 92284.69185225236 3206.556000001343 -16 5.60481651004876E12 130493.7990639774 5236.8159999867075 -17 1.584981683963585E13 184534.47014533225 4357.18000008056 -18 4.482581481291337E13 260962.90958960674 11921.205999836708 -19 1.2678055829058231E14 369051.4594742747 8516.165000322224 -20 3.585810791321268E14 521913.4834070372 12670.898000713914 -21 1.0142084738464965E15 738094.2078918213 7706.286000171851 -22 2.8685978100376195E15 1043820.7788341143 40828.81999641526 -23 8.113595861245767E15 1476184.0502350484 3724.2879967348417 -24 2.2948680725321812E16 2087638.4736112047 49656.16601360985 +13 248356163723.045 46177.25638291404 594.5829999956322 +14 701396929492.89 65271.59631760279 1954.778000007836 +15 1982351236222.945 92284.69185225236 3206.556000001343 +16 5604816510048.76 130493.7990639774 5236.815999986708 +17 15849816839635.85 184534.4701453322 4357.18000008056 +18 44825814812913.37 260962.9095896067 11921.20599983671 +19 126780558290582.3 369051.4594742747 8516.165000322224 +20 358581079132126.8 521913.4834070372 12670.89800071391 +21 1014208473846496 738094.2078918213 7706.286000171851 +22 2868597810037620 1043820.778834114 40828.81999641526 +23 8113595861245767 1476184.050235048 3724.287996734842 +24 2.294868072532181e+16 2087638.473611205 49656.16601360985 -- !sql_test_LargeInt_Varchar_3 -- \N \N \N \N @@ -21743,18 +21743,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07101249017E8 1.07080040983E8 -14 2.13980633793E8 2.13950656207E8 -15 4.27736837013E8 4.27694452987E8 -16 8.55245611255E8 8.55185678745E8 -17 1.710258021012E9 1.710173268988E9 -18 3.420275571842E9 3.420155718158E9 -19 6.840300393017E9 6.840130896983E9 -20 1.3680335495851E10 1.3680095794149E10 -21 2.7360385139031E10 2.7360046150969E10 -22 5.4720455345285E10 5.4719975944715E10 -23 1.09440554632059E11 1.09439876657941E11 -24 2.18880695044861E11 2.18879736245139E11 +13 107101249.017 107080040.983 +14 213980633.793 213950656.207 +15 427736837.013 427694452.987 +16 855245611.255 855185678.745 +17 1710258021.012 1710173268.988 +18 3420275571.842 3420155718.158 +19 6840300393.017 6840130896.983 +20 13680335495.851 13680095794.149 +21 27360385139.031 27360046150.969 +22 54720455345.285 54719975944.715 +23 109440554632.059 109439876657.941 +24 218880695044.861 218879736245.139 -- !sql_test_LargeInt_String_notn_0 -- 1 \N \N @@ -21769,18 +21769,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07101249017E8 1.07080040983E8 -14 2.13980633793E8 2.13950656207E8 -15 4.27736837013E8 4.27694452987E8 -16 8.55245611255E8 8.55185678745E8 -17 1.710258021012E9 1.710173268988E9 -18 3.420275571842E9 3.420155718158E9 -19 6.840300393017E9 6.840130896983E9 -20 1.3680335495851E10 1.3680095794149E10 -21 2.7360385139031E10 2.7360046150969E10 -22 5.4720455345285E10 5.4719975944715E10 -23 1.09440554632059E11 1.09439876657941E11 -24 2.18880695044861E11 2.18879736245139E11 +13 107101249.017 107080040.983 +14 213980633.793 213950656.207 +15 427736837.013 427694452.987 +16 855245611.255 855185678.745 +17 1710258021.012 1710173268.988 +18 3420275571.842 3420155718.158 +19 6840300393.017 6840130896.983 +20 13680335495.851 13680095794.149 +21 27360385139.031 27360046150.969 +22 54720455345.285 54719975944.715 +23 109440554632.059 109439876657.941 +24 218880695044.861 218879736245.139 -- !sql_test_LargeInt_String_1 -- \N \N \N \N @@ -21796,18 +21796,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.135591020120965E12 10099.063873624495 677.3170000017635 -14 3.207086762016485E12 14275.04169281676 624.9250000047778 -15 9.064155509143385E12 20182.870074683327 18438.63400001997 -16 2.5627610098059477E13 28539.290111493745 8693.55499997093 -17 7.247211869510775E13 40358.10743587669 4552.703999901336 -18 2.049627225638431E14 57073.18341587231 10991.53400017607 -19 5.79694711766126E14 80712.39761279605 33696.89599942684 -20 1.6395854869167638E15 114143.66715677305 79959.3070005581 -21 4.637393238700315E15 161422.88600711845 150172.91800191678 -22 1.311645128536796E16 228285.9849123667 236083.77499920272 -23 3.7098816837824336E16 322844.81881947 277569.20399729395 -24 1.04931144955863024E17 456571.2955953486 141708.3690112682 +13 1135591020120.965 10099.06387362449 677.3170000017635 +14 3207086762016.485 14275.04169281676 624.9250000047778 +15 9064155509143.385 20182.87007468333 18438.63400001997 +16 25627610098059.48 28539.29011149374 8693.554999970929 +17 72472118695107.75 40358.10743587669 4552.703999901336 +18 204962722563843.1 57073.18341587231 10991.53400017607 +19 579694711766126 80712.39761279605 33696.89599942684 +20 1639585486916764 114143.6671567731 79959.3070005581 +21 4637393238700315 161422.8860071184 150172.9180019168 +22 1.311645128536796e+16 228285.9849123667 236083.7749992027 +23 3.709881683782434e+16 322844.81881947 277569.203997294 +24 1.04931144955863e+17 456571.2955953486 141708.3690112682 -- !sql_test_LargeInt_String_notn_1 -- 1 \N \N \N @@ -21822,18 +21822,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.135591020120965E12 10099.063873624495 677.3170000017635 -14 3.207086762016485E12 14275.04169281676 624.9250000047778 -15 9.064155509143385E12 20182.870074683327 18438.63400001997 -16 2.5627610098059477E13 28539.290111493745 8693.55499997093 -17 7.247211869510775E13 40358.10743587669 4552.703999901336 -18 2.049627225638431E14 57073.18341587231 10991.53400017607 -19 5.79694711766126E14 80712.39761279605 33696.89599942684 -20 1.6395854869167638E15 114143.66715677305 79959.3070005581 -21 4.637393238700315E15 161422.88600711845 150172.91800191678 -22 1.311645128536796E16 228285.9849123667 236083.77499920272 -23 3.7098816837824336E16 322844.81881947 277569.20399729395 -24 1.04931144955863024E17 456571.2955953486 141708.3690112682 +13 1135591020120.965 10099.06387362449 677.3170000017635 +14 3207086762016.485 14275.04169281676 624.9250000047778 +15 9064155509143.385 20182.87007468333 18438.63400001997 +16 25627610098059.48 28539.29011149374 8693.554999970929 +17 72472118695107.75 40358.10743587669 4552.703999901336 +18 204962722563843.1 57073.18341587231 10991.53400017607 +19 579694711766126 80712.39761279605 33696.89599942684 +20 1639585486916764 114143.6671567731 79959.3070005581 +21 4637393238700315 161422.8860071184 150172.9180019168 +22 1.311645128536796e+16 228285.9849123667 236083.7749992027 +23 3.709881683782434e+16 322844.81881947 277569.203997294 +24 1.04931144955863e+17 456571.2955953486 141708.3690112682 -- !sql_test_LargeInt_String_3 -- \N \N \N \N @@ -21944,55 +21944,55 @@ -- !sql_test_LargeInt_Date_1 -- \N \N \N \N 1 2154696011684145 5.322517043855358 6489140 -2 4305053395024790 10.634315777168752 12762625 +2 4305053395024790 10.63431577716875 12762625 3 8605768375240435 21.2579127163244 5189282 4 17207198762956080 42.50510553916084 10162877 5 34410060393171725 84.99948907335153 20110025 -6 68815785363387370 169.98825191823624 19883931 +6 68815785363387370 169.9882519182362 19883931 7 137627238723603015 339.9657691604805 19431572 8 275250152283818660 679.9207867493877 18526513 -9 550495993084034305 1359.8307881355101 16715714 -10 1100987702044249950 2719.6507233238453 13092755 +9 550495993084034305 1359.83078813551 16715714 +10 1100987702044249950 2719.650723323845 13092755 11 2201971174684465595 5439.290458532177 5844116 -12 4403938229404681240 10878.569658611656 11461709 +12 4403938229404681240 10878.56965861166 11461709 13 2154696011684145 5.322517043855358 6489140 -14 4305053395024790 10.634315777168752 12762625 +14 4305053395024790 10.63431577716875 12762625 15 8605768375240435 21.2579127163244 5189282 16 17207198762956080 42.50510553916084 10162877 17 34410060393171725 84.99948907335153 20110025 -18 68815785363387370 169.98825191823624 19883931 +18 68815785363387370 169.9882519182362 19883931 19 137627238723603015 339.9657691604805 19431572 20 275250152283818660 679.9207867493877 18526513 -21 550495993084034305 1359.8307881355101 16715714 -22 1100987702044249950 2719.6507233238453 13092755 +21 550495993084034305 1359.83078813551 16715714 +22 1100987702044249950 2719.650723323845 13092755 23 2201971174684465595 5439.290458532177 5844116 -24 4403938229404681240 10878.569658611656 11461709 +24 4403938229404681240 10878.56965861166 11461709 -- !sql_test_LargeInt_Date_notn_1 -- 1 2154696011684145 5.322517043855358 6489140 -2 4305053395024790 10.634315777168752 12762625 +2 4305053395024790 10.63431577716875 12762625 3 8605768375240435 21.2579127163244 5189282 4 17207198762956080 42.50510553916084 10162877 5 34410060393171725 84.99948907335153 20110025 -6 68815785363387370 169.98825191823624 19883931 +6 68815785363387370 169.9882519182362 19883931 7 137627238723603015 339.9657691604805 19431572 8 275250152283818660 679.9207867493877 18526513 -9 550495993084034305 1359.8307881355101 16715714 -10 1100987702044249950 2719.6507233238453 13092755 +9 550495993084034305 1359.83078813551 16715714 +10 1100987702044249950 2719.650723323845 13092755 11 2201971174684465595 5439.290458532177 5844116 -12 4403938229404681240 10878.569658611656 11461709 +12 4403938229404681240 10878.56965861166 11461709 13 2154696011684145 5.322517043855358 6489140 -14 4305053395024790 10.634315777168752 12762625 +14 4305053395024790 10.63431577716875 12762625 15 8605768375240435 21.2579127163244 5189282 16 17207198762956080 42.50510553916084 10162877 17 34410060393171725 84.99948907335153 20110025 -18 68815785363387370 169.98825191823624 19883931 +18 68815785363387370 169.9882519182362 19883931 19 137627238723603015 339.9657691604805 19431572 20 275250152283818660 679.9207867493877 18526513 -21 550495993084034305 1359.8307881355101 16715714 -22 1100987702044249950 2719.6507233238453 13092755 +21 550495993084034305 1359.83078813551 16715714 +22 1100987702044249950 2719.650723323845 13092755 23 2201971174684465595 5439.290458532177 5844116 -24 4403938229404681240 10878.569658611656 11461709 +24 4403938229404681240 10878.56965861166 11461709 -- !sql_test_LargeInt_Date_2 -- \N \N @@ -22208,56 +22208,56 @@ -- !sql_test_LargeInt_DateTime_1 -- \N \N \N \N -1 2154696012755158540645 5.322517041209746E-6 107090645 -2 4305053399325927395790 1.063431576654411E-5 213965645 -3 8605768388158730625935 2.1257912684413712E-5 427715645 -4 17207198797424691356080 4.250510545401671E-5 855215645 -5 34410060479375144586225 8.499948886041244E-5 1710215645 -6 68815785570330937816370 1.6998825140704575E-4 3420215645 -7 137627239206570121046515 3.399657679674588E-4 6840215645 -8 275250153387921504276660 6.799207840220415E-4 13680215645 -9 550495995568588127506805 0.0013598307819981854 27360215645 +1 2154696012755158540645 5.322517041209746e-06 107090645 +2 4305053399325927395790 1.063431576654411e-05 213965645 +3 8605768388158730625935 2.125791268441371e-05 427715645 +4 17207198797424691356080 4.250510545401671e-05 855215645 +5 34410060479375144586225 8.499948886041244e-05 1710215645 +6 68815785570330937816370 0.0001699882514070457 3420215645 +7 137627239206570121046515 0.0003399657679674588 6840215645 +8 275250153387921504276660 0.0006799207840220415 13680215645 +9 550495995568588127506805 0.001359830781998185 27360215645 10 1100987707566066910736950 0.002719650709683899 54720215645 11 2201971186833533373967095 0.005439290428521653 109440215645 -12 4403938255913701917197240 0.010878569593129305 218880215645 -13 2154696012755158540645 5.322517041209746E-6 107090645 -14 4305053399325927395790 1.063431576654411E-5 213965645 -15 8605768388158730625935 2.1257912684413712E-5 427715645 -16 17207198797424691356080 4.250510545401671E-5 855215645 -17 34410060479375144586225 8.499948886041244E-5 1710215645 -18 68815785570330937816370 1.6998825140704575E-4 3420215645 -19 137627239206570121046515 3.399657679674588E-4 6840215645 -20 275250153387921504276660 6.799207840220415E-4 13680215645 -21 550495995568588127506805 0.0013598307819981854 27360215645 +12 4403938255913701917197240 0.01087856959312931 218880215645 +13 2154696012755158540645 5.322517041209746e-06 107090645 +14 4305053399325927395790 1.063431576654411e-05 213965645 +15 8605768388158730625935 2.125791268441371e-05 427715645 +16 17207198797424691356080 4.250510545401671e-05 855215645 +17 34410060479375144586225 8.499948886041244e-05 1710215645 +18 68815785570330937816370 0.0001699882514070457 3420215645 +19 137627239206570121046515 0.0003399657679674588 6840215645 +20 275250153387921504276660 0.0006799207840220415 13680215645 +21 550495995568588127506805 0.001359830781998185 27360215645 22 1100987707566066910736950 0.002719650709683899 54720215645 23 2201971186833533373967095 0.005439290428521653 109440215645 -24 4403938255913701917197240 0.010878569593129305 218880215645 +24 4403938255913701917197240 0.01087856959312931 218880215645 -- !sql_test_LargeInt_DateTime_notn_1 -- -1 2154696012755158540645 5.322517041209746E-6 107090645 -2 4305053399325927395790 1.063431576654411E-5 213965645 -3 8605768388158730625935 2.1257912684413712E-5 427715645 -4 17207198797424691356080 4.250510545401671E-5 855215645 -5 34410060479375144586225 8.499948886041244E-5 1710215645 -6 68815785570330937816370 1.6998825140704575E-4 3420215645 -7 137627239206570121046515 3.399657679674588E-4 6840215645 -8 275250153387921504276660 6.799207840220415E-4 13680215645 -9 550495995568588127506805 0.0013598307819981854 27360215645 +1 2154696012755158540645 5.322517041209746e-06 107090645 +2 4305053399325927395790 1.063431576654411e-05 213965645 +3 8605768388158730625935 2.125791268441371e-05 427715645 +4 17207198797424691356080 4.250510545401671e-05 855215645 +5 34410060479375144586225 8.499948886041244e-05 1710215645 +6 68815785570330937816370 0.0001699882514070457 3420215645 +7 137627239206570121046515 0.0003399657679674588 6840215645 +8 275250153387921504276660 0.0006799207840220415 13680215645 +9 550495995568588127506805 0.001359830781998185 27360215645 10 1100987707566066910736950 0.002719650709683899 54720215645 11 2201971186833533373967095 0.005439290428521653 109440215645 -12 4403938255913701917197240 0.010878569593129305 218880215645 -13 2154696012755158540645 5.322517041209746E-6 107090645 -14 4305053399325927395790 1.063431576654411E-5 213965645 -15 8605768388158730625935 2.1257912684413712E-5 427715645 -16 17207198797424691356080 4.250510545401671E-5 855215645 -17 34410060479375144586225 8.499948886041244E-5 1710215645 -18 68815785570330937816370 1.6998825140704575E-4 3420215645 -19 137627239206570121046515 3.399657679674588E-4 6840215645 -20 275250153387921504276660 6.799207840220415E-4 13680215645 -21 550495995568588127506805 0.0013598307819981854 27360215645 +12 4403938255913701917197240 0.01087856959312931 218880215645 +13 2154696012755158540645 5.322517041209746e-06 107090645 +14 4305053399325927395790 1.063431576654411e-05 213965645 +15 8605768388158730625935 2.125791268441371e-05 427715645 +16 17207198797424691356080 4.250510545401671e-05 855215645 +17 34410060479375144586225 8.499948886041244e-05 1710215645 +18 68815785570330937816370 0.0001699882514070457 3420215645 +19 137627239206570121046515 0.0003399657679674588 6840215645 +20 275250153387921504276660 0.0006799207840220415 13680215645 +21 550495995568588127506805 0.001359830781998185 27360215645 22 1100987707566066910736950 0.002719650709683899 54720215645 23 2201971186833533373967095 0.005439290428521653 109440215645 -24 4403938255913701917197240 0.010878569593129305 218880215645 +24 4403938255913701917197240 0.01087856959312931 218880215645 -- !sql_test_LargeInt_DateTime_2 -- \N \N @@ -22474,55 +22474,55 @@ -- !sql_test_LargeInt_DateV2_1 -- \N \N \N \N 1 2154696011684145 5.322517043855358 6489140 -2 4305053395024790 10.634315777168752 12762625 +2 4305053395024790 10.63431577716875 12762625 3 8605768375240435 21.2579127163244 5189282 4 17207198762956080 42.50510553916084 10162877 5 34410060393171725 84.99948907335153 20110025 -6 68815785363387370 169.98825191823624 19883931 +6 68815785363387370 169.9882519182362 19883931 7 137627238723603015 339.9657691604805 19431572 8 275250152283818660 679.9207867493877 18526513 -9 550495993084034305 1359.8307881355101 16715714 -10 1100987702044249950 2719.6507233238453 13092755 +9 550495993084034305 1359.83078813551 16715714 +10 1100987702044249950 2719.650723323845 13092755 11 2201971174684465595 5439.290458532177 5844116 -12 4403938229404681240 10878.569658611656 11461709 +12 4403938229404681240 10878.56965861166 11461709 13 2154696011684145 5.322517043855358 6489140 -14 4305053395024790 10.634315777168752 12762625 +14 4305053395024790 10.63431577716875 12762625 15 8605768375240435 21.2579127163244 5189282 16 17207198762956080 42.50510553916084 10162877 17 34410060393171725 84.99948907335153 20110025 -18 68815785363387370 169.98825191823624 19883931 +18 68815785363387370 169.9882519182362 19883931 19 137627238723603015 339.9657691604805 19431572 20 275250152283818660 679.9207867493877 18526513 -21 550495993084034305 1359.8307881355101 16715714 -22 1100987702044249950 2719.6507233238453 13092755 +21 550495993084034305 1359.83078813551 16715714 +22 1100987702044249950 2719.650723323845 13092755 23 2201971174684465595 5439.290458532177 5844116 -24 4403938229404681240 10878.569658611656 11461709 +24 4403938229404681240 10878.56965861166 11461709 -- !sql_test_LargeInt_DateV2_notn_1 -- 1 2154696011684145 5.322517043855358 6489140 -2 4305053395024790 10.634315777168752 12762625 +2 4305053395024790 10.63431577716875 12762625 3 8605768375240435 21.2579127163244 5189282 4 17207198762956080 42.50510553916084 10162877 5 34410060393171725 84.99948907335153 20110025 -6 68815785363387370 169.98825191823624 19883931 +6 68815785363387370 169.9882519182362 19883931 7 137627238723603015 339.9657691604805 19431572 8 275250152283818660 679.9207867493877 18526513 -9 550495993084034305 1359.8307881355101 16715714 -10 1100987702044249950 2719.6507233238453 13092755 +9 550495993084034305 1359.83078813551 16715714 +10 1100987702044249950 2719.650723323845 13092755 11 2201971174684465595 5439.290458532177 5844116 -12 4403938229404681240 10878.569658611656 11461709 +12 4403938229404681240 10878.56965861166 11461709 13 2154696011684145 5.322517043855358 6489140 -14 4305053395024790 10.634315777168752 12762625 +14 4305053395024790 10.63431577716875 12762625 15 8605768375240435 21.2579127163244 5189282 16 17207198762956080 42.50510553916084 10162877 17 34410060393171725 84.99948907335153 20110025 -18 68815785363387370 169.98825191823624 19883931 +18 68815785363387370 169.9882519182362 19883931 19 137627238723603015 339.9657691604805 19431572 20 275250152283818660 679.9207867493877 18526513 -21 550495993084034305 1359.8307881355101 16715714 -22 1100987702044249950 2719.6507233238453 13092755 +21 550495993084034305 1359.83078813551 16715714 +22 1100987702044249950 2719.650723323845 13092755 23 2201971174684465595 5439.290458532177 5844116 -24 4403938229404681240 10878.569658611656 11461709 +24 4403938229404681240 10878.56965861166 11461709 -- !sql_test_LargeInt_DateV2_2 -- \N \N @@ -22738,56 +22738,56 @@ -- !sql_test_LargeInt_DateTimeV2_1 -- \N \N \N \N -1 2154696012755158540645 5.322517041209746E-6 107090645 -2 4305053399325927395790 1.063431576654411E-5 213965645 -3 8605768388158730625935 2.1257912684413712E-5 427715645 -4 17207198797424691356080 4.250510545401671E-5 855215645 -5 34410060479375144586225 8.499948886041244E-5 1710215645 -6 68815785570330937816370 1.6998825140704575E-4 3420215645 -7 137627239206570121046515 3.399657679674588E-4 6840215645 -8 275250153387921504276660 6.799207840220415E-4 13680215645 -9 550495995568588127506805 0.0013598307819981854 27360215645 +1 2154696012755158540645 5.322517041209746e-06 107090645 +2 4305053399325927395790 1.063431576654411e-05 213965645 +3 8605768388158730625935 2.125791268441371e-05 427715645 +4 17207198797424691356080 4.250510545401671e-05 855215645 +5 34410060479375144586225 8.499948886041244e-05 1710215645 +6 68815785570330937816370 0.0001699882514070457 3420215645 +7 137627239206570121046515 0.0003399657679674588 6840215645 +8 275250153387921504276660 0.0006799207840220415 13680215645 +9 550495995568588127506805 0.001359830781998185 27360215645 10 1100987707566066910736950 0.002719650709683899 54720215645 11 2201971186833533373967095 0.005439290428521653 109440215645 -12 4403938255913701917197240 0.010878569593129305 218880215645 -13 2154696012755158540645 5.322517041209746E-6 107090645 -14 4305053399325927395790 1.063431576654411E-5 213965645 -15 8605768388158730625935 2.1257912684413712E-5 427715645 -16 17207198797424691356080 4.250510545401671E-5 855215645 -17 34410060479375144586225 8.499948886041244E-5 1710215645 -18 68815785570330937816370 1.6998825140704575E-4 3420215645 -19 137627239206570121046515 3.399657679674588E-4 6840215645 -20 275250153387921504276660 6.799207840220415E-4 13680215645 -21 550495995568588127506805 0.0013598307819981854 27360215645 +12 4403938255913701917197240 0.01087856959312931 218880215645 +13 2154696012755158540645 5.322517041209746e-06 107090645 +14 4305053399325927395790 1.063431576654411e-05 213965645 +15 8605768388158730625935 2.125791268441371e-05 427715645 +16 17207198797424691356080 4.250510545401671e-05 855215645 +17 34410060479375144586225 8.499948886041244e-05 1710215645 +18 68815785570330937816370 0.0001699882514070457 3420215645 +19 137627239206570121046515 0.0003399657679674588 6840215645 +20 275250153387921504276660 0.0006799207840220415 13680215645 +21 550495995568588127506805 0.001359830781998185 27360215645 22 1100987707566066910736950 0.002719650709683899 54720215645 23 2201971186833533373967095 0.005439290428521653 109440215645 -24 4403938255913701917197240 0.010878569593129305 218880215645 +24 4403938255913701917197240 0.01087856959312931 218880215645 -- !sql_test_LargeInt_DateTimeV2_notn_1 -- -1 2154696012755158540645 5.322517041209746E-6 107090645 -2 4305053399325927395790 1.063431576654411E-5 213965645 -3 8605768388158730625935 2.1257912684413712E-5 427715645 -4 17207198797424691356080 4.250510545401671E-5 855215645 -5 34410060479375144586225 8.499948886041244E-5 1710215645 -6 68815785570330937816370 1.6998825140704575E-4 3420215645 -7 137627239206570121046515 3.399657679674588E-4 6840215645 -8 275250153387921504276660 6.799207840220415E-4 13680215645 -9 550495995568588127506805 0.0013598307819981854 27360215645 +1 2154696012755158540645 5.322517041209746e-06 107090645 +2 4305053399325927395790 1.063431576654411e-05 213965645 +3 8605768388158730625935 2.125791268441371e-05 427715645 +4 17207198797424691356080 4.250510545401671e-05 855215645 +5 34410060479375144586225 8.499948886041244e-05 1710215645 +6 68815785570330937816370 0.0001699882514070457 3420215645 +7 137627239206570121046515 0.0003399657679674588 6840215645 +8 275250153387921504276660 0.0006799207840220415 13680215645 +9 550495995568588127506805 0.001359830781998185 27360215645 10 1100987707566066910736950 0.002719650709683899 54720215645 11 2201971186833533373967095 0.005439290428521653 109440215645 -12 4403938255913701917197240 0.010878569593129305 218880215645 -13 2154696012755158540645 5.322517041209746E-6 107090645 -14 4305053399325927395790 1.063431576654411E-5 213965645 -15 8605768388158730625935 2.1257912684413712E-5 427715645 -16 17207198797424691356080 4.250510545401671E-5 855215645 -17 34410060479375144586225 8.499948886041244E-5 1710215645 -18 68815785570330937816370 1.6998825140704575E-4 3420215645 -19 137627239206570121046515 3.399657679674588E-4 6840215645 -20 275250153387921504276660 6.799207840220415E-4 13680215645 -21 550495995568588127506805 0.0013598307819981854 27360215645 +12 4403938255913701917197240 0.01087856959312931 218880215645 +13 2154696012755158540645 5.322517041209746e-06 107090645 +14 4305053399325927395790 1.063431576654411e-05 213965645 +15 8605768388158730625935 2.125791268441371e-05 427715645 +16 17207198797424691356080 4.250510545401671e-05 855215645 +17 34410060479375144586225 8.499948886041244e-05 1710215645 +18 68815785570330937816370 0.0001699882514070457 3420215645 +19 137627239206570121046515 0.0003399657679674588 6840215645 +20 275250153387921504276660 0.0006799207840220415 13680215645 +21 550495995568588127506805 0.001359830781998185 27360215645 22 1100987707566066910736950 0.002719650709683899 54720215645 23 2201971186833533373967095 0.005439290428521653 109440215645 -24 4403938255913701917197240 0.010878569593129305 218880215645 +24 4403938255913701917197240 0.01087856959312931 218880215645 -- !sql_test_LargeInt_DateTimeV2_2 -- \N \N @@ -23010,11 +23010,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 13680215645 1.3680215645E10 0 -9 27360215645 2.7360215645E10 0 -10 54720215645 5.4720215645E10 0 -11 109440215645 1.09440215645E11 0 -12 218880215645 2.18880215645E11 0 +8 13680215645 13680215645 0 +9 27360215645 27360215645 0 +10 54720215645 54720215645 0 +11 109440215645 109440215645 0 +12 218880215645 218880215645 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -23022,11 +23022,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 13680215645 1.3680215645E10 0 -21 27360215645 2.7360215645E10 0 -22 54720215645 5.4720215645E10 0 -23 109440215645 1.09440215645E11 0 -24 218880215645 2.18880215645E11 0 +20 13680215645 13680215645 0 +21 27360215645 27360215645 0 +22 54720215645 54720215645 0 +23 109440215645 109440215645 0 +24 218880215645 218880215645 0 -- !sql_test_LargeInt_Boolean_notn_1 -- 1 0 \N \N @@ -23036,11 +23036,11 @@ 5 0 \N \N 6 0 \N \N 7 0 \N \N -8 13680215645 1.3680215645E10 0 -9 27360215645 2.7360215645E10 0 -10 54720215645 5.4720215645E10 0 -11 109440215645 1.09440215645E11 0 -12 218880215645 2.18880215645E11 0 +8 13680215645 13680215645 0 +9 27360215645 27360215645 0 +10 54720215645 54720215645 0 +11 109440215645 109440215645 0 +12 218880215645 218880215645 0 13 0 \N \N 14 0 \N \N 15 0 \N \N @@ -23048,11 +23048,11 @@ 17 0 \N \N 18 0 \N \N 19 0 \N \N -20 13680215645 1.3680215645E10 0 -21 27360215645 2.7360215645E10 0 -22 54720215645 5.4720215645E10 0 -23 109440215645 1.09440215645E11 0 -24 218880215645 2.18880215645E11 0 +20 13680215645 13680215645 0 +21 27360215645 27360215645 0 +22 54720215645 54720215645 0 +23 109440215645 109440215645 0 +24 218880215645 218880215645 0 -- !sql_test_LargeInt_Boolean_2 -- \N \N diff --git a/regression-test/data/nereids_arith_p0/string.out b/regression-test/data/nereids_arith_p0/string.out index 832ccef67f5ede..de75a46feede4f 100644 --- a/regression-test/data/nereids_arith_p0/string.out +++ b/regression-test/data/nereids_arith_p0/string.out @@ -17,7 +17,7 @@ 14 220.094 216.094 15 311.359 305.359 16 440.033 432.033 -17 621.608 611.608 +17 621.6079999999999 611.6079999999999 18 877.989 865.989 19 1240.161 1226.161 20 1751.94 1735.94 @@ -43,7 +43,7 @@ 14 220.094 216.094 15 311.359 305.359 16 440.033 432.033 -17 621.608 611.608 +17 621.6079999999999 611.6079999999999 18 877.989 865.989 19 1240.161 1226.161 20 1751.94 1735.94 @@ -66,18 +66,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 154.289 154.289 0.28899999999998727 +13 154.289 154.289 0.2889999999999873 14 436.188 109.047 0.09399999999999409 -15 925.077 102.78633333333333 2.3589999999999804 +15 925.077 102.7863333333333 2.35899999999998 16 1744.132 109.00825 0.03300000000001546 -17 3083.04 123.32159999999999 1.6079999999999472 -18 5231.934 145.3315 1.9890000000000327 -19 8632.127 176.16585714285716 1.1610000000000582 +17 3083.04 123.3216 1.607999999999947 +18 5231.934 145.3315 1.989000000000033 +19 8632.127 176.1658571428572 1.161000000000058 20 13951.52 217.9925 7.940000000000055 -21 22196.646 274.03266666666667 0.29399999999986903 +21 22196.646 274.0326666666667 0.293999999999869 22 34878.6 348.786 7.860000000000127 -23 54258.314 448.41581818181817 4.573999999999614 -24 83708.52 581.3091666666667 3.7100000000000364 +23 54258.314 448.4158181818182 4.573999999999614 +24 83708.52 581.3091666666667 3.710000000000036 -- !sql_test_Char_TinyInt_notn_1 -- 1 \N \N \N @@ -92,18 +92,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 154.289 154.289 0.28899999999998727 +13 154.289 154.289 0.2889999999999873 14 436.188 109.047 0.09399999999999409 -15 925.077 102.78633333333333 2.3589999999999804 +15 925.077 102.7863333333333 2.35899999999998 16 1744.132 109.00825 0.03300000000001546 -17 3083.04 123.32159999999999 1.6079999999999472 -18 5231.934 145.3315 1.9890000000000327 -19 8632.127 176.16585714285716 1.1610000000000582 +17 3083.04 123.3216 1.607999999999947 +18 5231.934 145.3315 1.989000000000033 +19 8632.127 176.1658571428572 1.161000000000058 20 13951.52 217.9925 7.940000000000055 -21 22196.646 274.03266666666667 0.29399999999986903 +21 22196.646 274.0326666666667 0.293999999999869 22 34878.6 348.786 7.860000000000127 -23 54258.314 448.41581818181817 4.573999999999614 -24 83708.52 581.3091666666667 3.7100000000000364 +23 54258.314 448.4158181818182 4.573999999999614 +24 83708.52 581.3091666666667 3.710000000000036 -- !sql_test_Char_TinyInt_2 -- \N \N @@ -229,12 +229,12 @@ 14 238.094 198.094 15 348.359 268.359 16 516.033 356.033 -17 776.608 456.60799999999995 +17 776.6079999999999 456.6079999999999 18 1191.989 551.989 19 1873.161 593.1610000000001 -20 3023.94 463.94000000000005 +20 3023.94 463.9400000000001 21 5026.294 -93.70600000000013 -22 8607.86 -1632.1399999999999 +22 8607.860000000001 -1632.14 23 15172.574 -5307.426 24 27455.71 -13504.29 @@ -255,12 +255,12 @@ 14 238.094 198.094 15 348.359 268.359 16 516.033 356.033 -17 776.608 456.60799999999995 +17 776.6079999999999 456.6079999999999 18 1191.989 551.989 19 1873.161 593.1610000000001 -20 3023.94 463.94000000000005 +20 3023.94 463.9400000000001 21 5026.294 -93.70600000000013 -22 8607.86 -1632.1399999999999 +22 8607.860000000001 -1632.14 23 15172.574 -5307.426 24 27455.71 -13504.29 @@ -278,18 +278,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1542.8899999999999 15.428899999999999 4.288999999999987 -14 4361.88 10.9047 18.093999999999994 -15 12334.359999999999 7.708975 28.35899999999998 -16 34882.64 5.4504125000000005 36.033000000000015 -17 98657.28 3.8537999999999997 136.60799999999995 -18 279036.48 2.7249656250000003 231.98900000000003 +13 1542.89 15.4289 4.288999999999987 +14 4361.88 10.9047 18.09399999999999 +15 12334.36 7.708975 28.35899999999998 +16 34882.64 5.450412500000001 36.03300000000002 +17 98657.28 3.8538 136.6079999999999 +18 279036.48 2.724965625 231.989 19 789223.04 1.9268140625 593.1610000000001 -20 2232243.2 1.362453125 463.94000000000005 +20 2232243.2 1.362453125 463.9400000000001 21 6313712.64 0.9633960937499999 2466.294 -22 1.78578432E7 0.68122265625 3487.86 -23 5.050955776E7 0.48169667968749996 4932.574 -24 1.428625408E8 0.34061083984375 6975.71 +22 17857843.2 0.68122265625 3487.86 +23 50509557.76 0.4816966796875 4932.574 +24 142862540.8 0.34061083984375 6975.71 -- !sql_test_Char_SmallInt_notn_1 -- 1 \N \N \N @@ -304,18 +304,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1542.8899999999999 15.428899999999999 4.288999999999987 -14 4361.88 10.9047 18.093999999999994 -15 12334.359999999999 7.708975 28.35899999999998 -16 34882.64 5.4504125000000005 36.033000000000015 -17 98657.28 3.8537999999999997 136.60799999999995 -18 279036.48 2.7249656250000003 231.98900000000003 +13 1542.89 15.4289 4.288999999999987 +14 4361.88 10.9047 18.09399999999999 +15 12334.36 7.708975 28.35899999999998 +16 34882.64 5.450412500000001 36.03300000000002 +17 98657.28 3.8538 136.6079999999999 +18 279036.48 2.724965625 231.989 19 789223.04 1.9268140625 593.1610000000001 -20 2232243.2 1.362453125 463.94000000000005 +20 2232243.2 1.362453125 463.9400000000001 21 6313712.64 0.9633960937499999 2466.294 -22 1.78578432E7 0.68122265625 3487.86 -23 5.050955776E7 0.48169667968749996 4932.574 -24 1.428625408E8 0.34061083984375 6975.71 +22 17857843.2 0.68122265625 3487.86 +23 50509557.76 0.4816966796875 4932.574 +24 142862540.8 0.34061083984375 6975.71 -- !sql_test_Char_SmallInt_2 -- \N \N @@ -442,13 +442,13 @@ 15 95353.359 -94736.641 16 190481.033 -189608.967 17 380661.608 -379428.392 -18 760916.989 -759173.011 +18 760916.9889999999 -759173.0110000001 19 1521278.161 -1518811.839 20 3041788.94 -3038301.06 21 6082511.294 -6077578.706 -22 1.216353286E7 -1.215655714E7 -23 2.4324977574E7 -2.4315112426E7 -24 4.864702071E7 -4.863306929E7 +22 12163532.86 -12156557.14 +23 24324977.574 -24315112.426 +24 48647020.71 -48633069.29 -- !sql_test_Char_Integer_notn_0 -- 1 \N \N @@ -468,13 +468,13 @@ 15 95353.359 -94736.641 16 190481.033 -189608.967 17 380661.608 -379428.392 -18 760916.989 -759173.011 +18 760916.9889999999 -759173.0110000001 19 1521278.161 -1518811.839 20 3041788.94 -3038301.06 21 6082511.294 -6077578.706 -22 1.216353286E7 -1.215655714E7 -23 2.4324977574E7 -2.4315112426E7 -24 4.864702071E7 -4.863306929E7 +22 12163532.86 -12156557.14 +23 24324977.574 -24315112.426 +24 48647020.71 -48633069.29 -- !sql_test_Char_Integer_1 -- \N \N \N \N @@ -491,17 +491,17 @@ 11 \N \N \N 12 \N \N \N 13 3671306.755 0.006484093296911115 154.289 -14 1.036927923E7 0.004587106951309286 218.094 -15 2.9307981154999997E7 0.003244347414382661 308.359 -16 8.2865891485E7 0.002294367123575995 436.033 -17 2.3433878735999998E8 0.0016224604980989092 616.608 -18 6.62750879505E8 0.0011472860159595813 871.989 -19 1.8744602122450001E9 8.112661138321563E-4 1233.161 -20 5.3016560773E9 5.73655982066055E-4 1743.94 -21 1.499517850323E10 4.0563745827539103E-4 2466.294 -22 4.2412534553700005E10 2.868295306472961E-4 3487.86 -23 1.1996042164582999E11 2.0281927932287952E-4 4932.574 -24 3.3929884830695E11 1.4341495777810237E-4 6975.71 +14 10369279.23 0.004587106951309286 218.094 +15 29307981.155 0.003244347414382661 308.359 +16 82865891.485 0.002294367123575995 436.033 +17 234338787.36 0.001622460498098909 616.6079999999999 +18 662750879.505 0.001147286015959581 871.989 +19 1874460212.245 0.0008112661138321563 1233.161 +20 5301656077.3 0.000573655982066055 1743.94 +21 14995178503.23 0.000405637458275391 2466.294 +22 42412534553.7 0.0002868295306472961 3487.86 +23 119960421645.83 0.0002028192793228795 4932.574 +24 339298848306.95 0.0001434149577781024 6975.71 -- !sql_test_Char_Integer_notn_1 -- 1 \N \N \N @@ -517,17 +517,17 @@ 11 \N \N \N 12 \N \N \N 13 3671306.755 0.006484093296911115 154.289 -14 1.036927923E7 0.004587106951309286 218.094 -15 2.9307981154999997E7 0.003244347414382661 308.359 -16 8.2865891485E7 0.002294367123575995 436.033 -17 2.3433878735999998E8 0.0016224604980989092 616.608 -18 6.62750879505E8 0.0011472860159595813 871.989 -19 1.8744602122450001E9 8.112661138321563E-4 1233.161 -20 5.3016560773E9 5.73655982066055E-4 1743.94 -21 1.499517850323E10 4.0563745827539103E-4 2466.294 -22 4.2412534553700005E10 2.868295306472961E-4 3487.86 -23 1.1996042164582999E11 2.0281927932287952E-4 4932.574 -24 3.3929884830695E11 1.4341495777810237E-4 6975.71 +14 10369279.23 0.004587106951309286 218.094 +15 29307981.155 0.003244347414382661 308.359 +16 82865891.485 0.002294367123575995 436.033 +17 234338787.36 0.001622460498098909 616.6079999999999 +18 662750879.505 0.001147286015959581 871.989 +19 1874460212.245 0.0008112661138321563 1233.161 +20 5301656077.3 0.000573655982066055 1743.94 +21 14995178503.23 0.000405637458275391 2466.294 +22 42412534553.7 0.0002868295306472961 3487.86 +23 119960421645.83 0.0002028192793228795 4932.574 +24 339298848306.95 0.0001434149577781024 6975.71 -- !sql_test_Char_Integer_2 -- \N \N @@ -650,17 +650,17 @@ 11 \N \N 12 \N \N 13 5354683.289 -5354374.711 -14 1.0698497094E7 -1.0698060906E7 -15 2.1386087359E7 -2.1385470641E7 -16 4.2761215033E7 -4.2760342967E7 -17 8.5511395608E7 -8.5510162392E7 -18 1.71011650989E8 -1.71009907011E8 -19 3.42012012161E8 -3.42009545839E8 -20 6.8401252294E8 -6.8400903506E8 -21 1.368013245294E9 -1.368008312706E9 -22 2.73601426686E9 -2.73600729114E9 -23 5.472015711574E9 -5.472005846426E9 -24 1.094401775471E10 -1.094400380329E10 +14 10698497.094 -10698060.906 +15 21386087.359 -21385470.641 +16 42761215.033 -42760342.967 +17 85511395.608 -85510162.392 +18 171011650.989 -171009907.011 +19 342012012.161 -342009545.839 +20 684012522.9400001 -684009035.0599999 +21 1368013245.294 -1368008312.706 +22 2736014266.86 -2736007291.14 +23 5472015711.574 -5472005846.426 +24 10944017754.71 -10944003803.29 -- !sql_test_Char_BigInt_notn_0 -- 1 \N \N @@ -676,17 +676,17 @@ 11 \N \N 12 \N \N 13 5354683.289 -5354374.711 -14 1.0698497094E7 -1.0698060906E7 -15 2.1386087359E7 -2.1385470641E7 -16 4.2761215033E7 -4.2760342967E7 -17 8.5511395608E7 -8.5510162392E7 -18 1.71011650989E8 -1.71009907011E8 -19 3.42012012161E8 -3.42009545839E8 -20 6.8401252294E8 -6.8400903506E8 -21 1.368013245294E9 -1.368008312706E9 -22 2.73601426686E9 -2.73600729114E9 -23 5.472015711574E9 -5.472005846426E9 -24 1.094401775471E10 -1.094400380329E10 +14 10698497.094 -10698060.906 +15 21386087.359 -21385470.641 +16 42761215.033 -42760342.967 +17 85511395.608 -85510162.392 +18 171011650.989 -171009907.011 +19 342012012.161 -342009545.839 +20 684012522.9400001 -684009035.0599999 +21 1368013245.294 -1368008312.706 +22 2736014266.86 -2736007291.14 +23 5472015711.574 -5472005846.426 +24 10944017754.71 -10944003803.29 -- !sql_test_Char_BigInt_1 -- \N \N \N \N @@ -702,18 +702,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 8.261449248809999E8 2.8814672588382655E-5 154.289 -14 2.333230460226E9 2.0385895712759032E-5 218.094 -15 6.594497426660999E9 1.4418880883413225E-5 308.359 -16 1.8645110749707E10 1.0197031256142457E-5 436.033 -17 5.2726630417631996E10 7.210880396727528E-6 616.608 -18 1.49119518169431E11 5.099029459423725E-6 871.989 -19 4.21754354242419E11 3.605620277833407E-6 1233.161 -20 1.19287375792926E12 2.549579704795851E-6 1743.94 -21 3.373916776183026E12 1.8028322860166585E-6 2466.294 -22 9.54282255564294E12 1.2747976092677522E-6 3487.86 -23 2.6991098096215145E13 9.01418911477623E-7 4932.574 -24 7.63422454311781E13 6.373997742569292E-7 6975.71 +13 826144924.8809999 2.881467258838266e-05 154.289 +14 2333230460.226 2.038589571275903e-05 218.094 +15 6594497426.660999 1.441888088341322e-05 308.359 +16 18645110749.707 1.019703125614246e-05 436.033 +17 52726630417.632 7.210880396727528e-06 616.6079999999999 +18 149119518169.431 5.099029459423725e-06 871.989 +19 421754354242.419 3.605620277833407e-06 1233.161 +20 1192873757929.26 2.549579704795851e-06 1743.94 +21 3373916776183.026 1.802832286016659e-06 2466.294 +22 9542822555642.939 1.274797609267752e-06 3487.86 +23 26991098096215.14 9.01418911477623e-07 4932.574 +24 76342245431178.09 6.373997742569292e-07 6975.71 -- !sql_test_Char_BigInt_notn_1 -- 1 \N \N \N @@ -728,18 +728,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 8.261449248809999E8 2.8814672588382655E-5 154.289 -14 2.333230460226E9 2.0385895712759032E-5 218.094 -15 6.594497426660999E9 1.4418880883413225E-5 308.359 -16 1.8645110749707E10 1.0197031256142457E-5 436.033 -17 5.2726630417631996E10 7.210880396727528E-6 616.608 -18 1.49119518169431E11 5.099029459423725E-6 871.989 -19 4.21754354242419E11 3.605620277833407E-6 1233.161 -20 1.19287375792926E12 2.549579704795851E-6 1743.94 -21 3.373916776183026E12 1.8028322860166585E-6 2466.294 -22 9.54282255564294E12 1.2747976092677522E-6 3487.86 -23 2.6991098096215145E13 9.01418911477623E-7 4932.574 -24 7.63422454311781E13 6.373997742569292E-7 6975.71 +13 826144924.8809999 2.881467258838266e-05 154.289 +14 2333230460.226 2.038589571275903e-05 218.094 +15 6594497426.660999 1.441888088341322e-05 308.359 +16 18645110749.707 1.019703125614246e-05 436.033 +17 52726630417.632 7.210880396727528e-06 616.6079999999999 +18 149119518169.431 5.099029459423725e-06 871.989 +19 421754354242.419 3.605620277833407e-06 1233.161 +20 1192873757929.26 2.549579704795851e-06 1743.94 +21 3373916776183.026 1.802832286016659e-06 2466.294 +22 9542822555642.939 1.274797609267752e-06 3487.86 +23 26991098096215.14 9.01418911477623e-07 4932.574 +24 76342245431178.09 6.373997742569292e-07 6975.71 -- !sql_test_Char_BigInt_2 -- \N \N @@ -861,18 +861,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07090799289E8 -1.07090490711E8 -14 2.13965863094E8 -2.13965426906E8 -15 4.27715953359E8 -4.27715336641E8 -16 8.55216081033E8 -8.55215208967E8 -17 1.710216261608E9 -1.710215028392E9 -18 3.420216516989E9 -3.420214773011E9 -19 6.840216878161E9 -6.840214411839E9 -20 1.368021738894E10 -1.368021390106E10 -21 2.7360218111294E10 -2.7360213178706E10 -22 5.472021913286E10 -5.472021215714E10 -23 1.09440220577574E11 -1.09440210712426E11 -24 2.1888022262071E11 -2.1888020866929E11 +13 107090799.289 -107090490.711 +14 213965863.094 -213965426.906 +15 427715953.359 -427715336.641 +16 855216081.033 -855215208.967 +17 1710216261.608 -1710215028.392 +18 3420216516.989 -3420214773.011 +19 6840216878.161 -6840214411.839 +20 13680217388.94 -13680213901.06 +21 27360218111.294 -27360213178.706 +22 54720219132.86 -54720212157.14 +23 109440220577.574 -109440210712.426 +24 218880222620.71 -218880208669.29 -- !sql_test_Char_LargeInt_notn_0 -- 1 \N \N @@ -887,18 +887,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07090799289E8 -1.07090490711E8 -14 2.13965863094E8 -2.13965426906E8 -15 4.27715953359E8 -4.27715336641E8 -16 8.55216081033E8 -8.55215208967E8 -17 1.710216261608E9 -1.710215028392E9 -18 3.420216516989E9 -3.420214773011E9 -19 6.840216878161E9 -6.840214411839E9 -20 1.368021738894E10 -1.368021390106E10 -21 2.7360218111294E10 -2.7360213178706E10 -22 5.472021913286E10 -5.472021215714E10 -23 1.09440220577574E11 -1.09440210712426E11 -24 2.1888022262071E11 -2.1888020866929E11 +13 107090799.289 -107090490.711 +14 213965863.094 -213965426.906 +15 427715953.359 -427715336.641 +16 855216081.033 -855215208.967 +17 1710216261.608 -1710215028.392 +18 3420216516.989 -3420214773.011 +19 6840216878.161 -6840214411.839 +20 13680217388.94 -13680213901.06 +21 27360218111.294 -27360213178.706 +22 54720219132.86 -54720212157.14 +23 109440220577.574 -109440210712.426 +24 218880222620.71 -218880208669.29 -- !sql_test_Char_LargeInt_1 -- \N \N \N \N @@ -914,18 +914,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.6522908526404999E10 1.4407327549479227E-6 154.289 -14 4.666462338063E10 1.0192944759893579E-6 218.094 -15 1.31889968576555E11 7.209439346087047E-7 308.359 -16 3.7290224333628503E11 5.098515240562514E-7 436.033 -17 1.0545326484321599E12 3.6054400613321483E-7 616.608 -18 2.9823904200679053E12 2.549514681259228E-7 871.989 -19 8.435087165003846E12 1.8028101217852761E-7 1233.161 -20 2.38574752719413E13 1.2747898463409055E-7 1743.94 -21 6.7478335683969625E13 9.014161408668239E-8 2466.294 -22 1.9085645133956972E14 6.37398803876735E-8 3487.86 -23 5.398219622449202E14 4.507094554711209E-8 4932.574 -24 1.526844909076983E15 3.186998870338216E-8 6975.71 +13 16522908526.405 1.440732754947923e-06 154.289 +14 46664623380.63 1.019294475989358e-06 218.094 +15 131889968576.555 7.209439346087047e-07 308.359 +16 372902243336.285 5.098515240562514e-07 436.033 +17 1054532648432.16 3.605440061332148e-07 616.6079999999999 +18 2982390420067.905 2.549514681259228e-07 871.989 +19 8435087165003.846 1.802810121785276e-07 1233.161 +20 23857475271941.3 1.274789846340906e-07 1743.94 +21 67478335683969.62 9.014161408668239e-08 2466.294 +22 190856451339569.7 6.37398803876735e-08 3487.86 +23 539821962244920.2 4.507094554711209e-08 4932.574 +24 1526844909076983 3.186998870338216e-08 6975.71 -- !sql_test_Char_LargeInt_notn_1 -- 1 \N \N \N @@ -940,18 +940,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.6522908526404999E10 1.4407327549479227E-6 154.289 -14 4.666462338063E10 1.0192944759893579E-6 218.094 -15 1.31889968576555E11 7.209439346087047E-7 308.359 -16 3.7290224333628503E11 5.098515240562514E-7 436.033 -17 1.0545326484321599E12 3.6054400613321483E-7 616.608 -18 2.9823904200679053E12 2.549514681259228E-7 871.989 -19 8.435087165003846E12 1.8028101217852761E-7 1233.161 -20 2.38574752719413E13 1.2747898463409055E-7 1743.94 -21 6.7478335683969625E13 9.014161408668239E-8 2466.294 -22 1.9085645133956972E14 6.37398803876735E-8 3487.86 -23 5.398219622449202E14 4.507094554711209E-8 4932.574 -24 1.526844909076983E15 3.186998870338216E-8 6975.71 +13 16522908526.405 1.440732754947923e-06 154.289 +14 46664623380.63 1.019294475989358e-06 218.094 +15 131889968576.555 7.209439346087047e-07 308.359 +16 372902243336.285 5.098515240562514e-07 436.033 +17 1054532648432.16 3.605440061332148e-07 616.6079999999999 +18 2982390420067.905 2.549514681259228e-07 871.989 +19 8435087165003.846 1.802810121785276e-07 1233.161 +20 23857475271941.3 1.274789846340906e-07 1743.94 +21 67478335683969.62 9.014161408668239e-08 2466.294 +22 190856451339569.7 6.37398803876735e-08 3487.86 +23 539821962244920.2 4.507094554711209e-08 4932.574 +24 1526844909076983 3.186998870338216e-08 6975.71 -- !sql_test_Char_LargeInt_2 -- \N \N @@ -1073,17 +1073,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.3890000014901 154.18899999850987 -14 218.29400000298023 217.89399999701976 -15 308.6590000119209 308.05899998807905 -16 436.4330000059605 435.63299999403955 -17 617.108 616.108 +13 154.3890000014901 154.1889999985099 +14 218.2940000029802 217.8939999970198 +15 308.6590000119209 308.0589999880791 +16 436.4330000059605 435.6329999940396 +17 617.1079999999999 616.1079999999999 18 872.5890000238419 871.3889999761582 -19 1233.8609999880791 1232.461000011921 -20 1744.740000011921 1743.1399999880791 -21 2467.193999976158 2465.3940000238417 +19 1233.860999988079 1232.461000011921 +20 1744.740000011921 1743.139999988079 +21 2467.193999976158 2465.394000023842 22 3488.86 3486.86 -23 4933.6740000238415 4931.473999976158 +23 4933.674000023841 4931.473999976158 24 6976.910000047684 6974.509999952316 -- !sql_test_Char_Float_notn_0 -- @@ -1099,17 +1099,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.3890000014901 154.18899999850987 -14 218.29400000298023 217.89399999701976 -15 308.6590000119209 308.05899998807905 -16 436.4330000059605 435.63299999403955 -17 617.108 616.108 +13 154.3890000014901 154.1889999985099 +14 218.2940000029802 217.8939999970198 +15 308.6590000119209 308.0589999880791 +16 436.4330000059605 435.6329999940396 +17 617.1079999999999 616.1079999999999 18 872.5890000238419 871.3889999761582 -19 1233.8609999880791 1232.461000011921 -20 1744.740000011921 1743.1399999880791 -21 2467.193999976158 2465.3940000238417 +19 1233.860999988079 1232.461000011921 +20 1744.740000011921 1743.139999988079 +21 2467.193999976158 2465.394000023842 22 3488.86 3486.86 -23 4933.6740000238415 4931.473999976158 +23 4933.674000023841 4931.473999976158 24 6976.910000047684 6974.509999952316 -- !sql_test_Char_Float_1 -- @@ -1126,17 +1126,17 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 15.428900229908525 1542.8899770091475 0.08899770224093118 -14 43.618800649970765 1090.469983750731 0.09399675154685383 -15 92.50770367592573 1027.8632924897156 0.2589877572059436 -16 174.4132025989592 1090.0824837565053 0.032993503093734944 -17 308.304 1233.216 0.10799999999994725 -18 523.1934207898379 1453.3149422504528 0.18896535778048928 -19 863.2126852995754 1761.6586014294387 0.4610209927559481 -20 1395.1520207893848 2179.9249675165865 0.7399740242958615 -21 2219.664541198969 2740.326739260534 0.29406532669054286 +13 15.42890022990852 1542.889977009148 0.08899770224093118 +14 43.61880064997077 1090.469983750731 0.09399675154685383 +15 92.50770367592573 1027.863292489716 0.2589877572059436 +16 174.4132025989592 1090.082483756505 0.03299350309373494 +17 308.304 1233.216 0.1079999999999472 +18 523.1934207898379 1453.314942250453 0.1889653577804893 +19 863.2126852995754 1761.658601429439 0.4610209927559481 +20 1395.152020789385 2179.924967516587 0.7399740242958615 +21 2219.664541198969 2740.326739260534 0.2940653266905429 22 3487.86 3487.86 0.8600000000001273 -23 5425.831517601728 4484.1580846266725 0.17389309310874523 +23 5425.831517601728 4484.158084626672 0.1738930931087452 24 8370.852332627774 5813.091435675166 0.1097228145599729 -- !sql_test_Char_Float_notn_1 -- @@ -1152,17 +1152,17 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 15.428900229908525 1542.8899770091475 0.08899770224093118 -14 43.618800649970765 1090.469983750731 0.09399675154685383 -15 92.50770367592573 1027.8632924897156 0.2589877572059436 -16 174.4132025989592 1090.0824837565053 0.032993503093734944 -17 308.304 1233.216 0.10799999999994725 -18 523.1934207898379 1453.3149422504528 0.18896535778048928 -19 863.2126852995754 1761.6586014294387 0.4610209927559481 -20 1395.1520207893848 2179.9249675165865 0.7399740242958615 -21 2219.664541198969 2740.326739260534 0.29406532669054286 +13 15.42890022990852 1542.889977009148 0.08899770224093118 +14 43.61880064997077 1090.469983750731 0.09399675154685383 +15 92.50770367592573 1027.863292489716 0.2589877572059436 +16 174.4132025989592 1090.082483756505 0.03299350309373494 +17 308.304 1233.216 0.1079999999999472 +18 523.1934207898379 1453.314942250453 0.1889653577804893 +19 863.2126852995754 1761.658601429439 0.4610209927559481 +20 1395.152020789385 2179.924967516587 0.7399740242958615 +21 2219.664541198969 2740.326739260534 0.2940653266905429 22 3487.86 3487.86 0.8600000000001273 -23 5425.831517601728 4484.1580846266725 0.17389309310874523 +23 5425.831517601728 4484.158084626672 0.1738930931087452 24 8370.852332627774 5813.091435675166 0.1097228145599729 -- !sql_test_Char_Float_2 -- @@ -1285,17 +1285,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.8134 153.76459999999997 +13 154.8134 153.7646 14 218.8356 217.3524 -15 309.3958 307.32219999999995 +15 309.3958 307.3222 16 437.4821 434.5839 17 618.6389999999999 614.577 18 874.8438 869.1342000000001 19 1237.1828 1229.1392 -20 1749.6145000000001 1738.2655 -21 2474.3080999999997 2458.2799 -22 3499.1848 3476.5352000000003 -23 4948.5826 4916.5653999999995 +20 1749.6145 1738.2655 +21 2474.3081 2458.2799 +22 3499.1848 3476.5352 +23 4948.5826 4916.565399999999 24 6998.344 6953.076 -- !sql_test_Char_Double_notn_0 -- @@ -1311,17 +1311,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 154.8134 153.76459999999997 +13 154.8134 153.7646 14 218.8356 217.3524 -15 309.3958 307.32219999999995 +15 309.3958 307.3222 16 437.4821 434.5839 17 618.6389999999999 614.577 18 874.8438 869.1342000000001 19 1237.1828 1229.1392 -20 1749.6145000000001 1738.2655 -21 2474.3080999999997 2458.2799 -22 3499.1848 3476.5352000000003 -23 4948.5826 4916.5653999999995 +20 1749.6145 1738.2655 +21 2474.3081 2458.2799 +22 3499.1848 3476.5352 +23 4948.5826 4916.565399999999 24 6998.344 6953.076 -- !sql_test_Char_Double_1 -- @@ -1338,17 +1338,17 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 80.90915159999999 294.2200610221205 0.11539999999999395 +13 80.90915159999999 294.2200610221205 0.115399999999994 14 161.7385104 294.0857605177993 0.06359999999998323 -15 319.70661119999994 297.41415895061726 0.4293999999999971 +15 319.7066111999999 297.4141589506173 0.4293999999999971 16 631.8554203 300.8991788006349 1.302999999999999 -17 1252.330848 303.59822747415063 1.2149999999999053 -18 2489.3541972000003 305.44661622530475 1.2750000000000314 -19 4959.5269098 306.61917549356014 2.4902000000001134 +17 1252.330848 303.5982274741506 1.214999999999905 +18 2489.3541972 305.4466162253048 1.275000000000031 +19 4959.5269098 306.6191754935601 2.490200000000113 20 9895.98753 307.3292801127853 1.868500000000024 -21 19765.126745399997 307.74435058209906 5.965300000000141 -22 39499.316928 307.9842469624188 11.146400000000202 -23 78963.6041364 308.1202603600564 1.9251999999992222 +21 19765.1267454 307.7443505820991 5.965300000000141 +22 39499.316928 307.9842469624188 11.1464000000002 +23 78963.6041364 308.1202603600564 1.925199999999222 24 157888.22014 308.1960766987718 4.437999999999931 -- !sql_test_Char_Double_notn_1 -- @@ -1364,17 +1364,17 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 80.90915159999999 294.2200610221205 0.11539999999999395 +13 80.90915159999999 294.2200610221205 0.115399999999994 14 161.7385104 294.0857605177993 0.06359999999998323 -15 319.70661119999994 297.41415895061726 0.4293999999999971 +15 319.7066111999999 297.4141589506173 0.4293999999999971 16 631.8554203 300.8991788006349 1.302999999999999 -17 1252.330848 303.59822747415063 1.2149999999999053 -18 2489.3541972000003 305.44661622530475 1.2750000000000314 -19 4959.5269098 306.61917549356014 2.4902000000001134 +17 1252.330848 303.5982274741506 1.214999999999905 +18 2489.3541972 305.4466162253048 1.275000000000031 +19 4959.5269098 306.6191754935601 2.490200000000113 20 9895.98753 307.3292801127853 1.868500000000024 -21 19765.126745399997 307.74435058209906 5.965300000000141 -22 39499.316928 307.9842469624188 11.146400000000202 -23 78963.6041364 308.1202603600564 1.9251999999992222 +21 19765.1267454 307.7443505820991 5.965300000000141 +22 39499.316928 307.9842469624188 11.1464000000002 +23 78963.6041364 308.1202603600564 1.925199999999222 24 157888.22014 308.1960766987718 4.437999999999931 -- !sql_test_Char_Double_2 -- @@ -1497,18 +1497,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 178.684 129.89399999999998 -14 252.578 183.60999999999999 -15 357.115 259.60299999999995 -16 504.976 367.09000000000003 -17 714.102 519.1139999999999 -18 1009.863 734.115 -19 1428.141 1038.181 -20 2019.681 1468.199 -21 2856.249 2076.339 -22 4039.339 2936.3810000000003 -23 5712.482 4152.665999999999 -24 8078.667 5872.753 +13 178.684200000 129.893800000 +14 252.577700000 183.610300000 +15 357.114800000 259.603200000 +16 504.975900000 367.090100000 +17 714.102200000 519.113800000 +18 1009.862600000 734.115400000 +19 1428.140800000 1038.181200000 +20 2019.681000000 1468.199000000 +21 2856.249300000 2076.338700000 +22 4039.339000000 2936.381000000 +23 5712.482400000 4152.665600000 +24 8078.666500000 5872.753500000 -- !sql_test_Char_DecimalV2_notn_0 -- 1 \N \N @@ -1523,18 +1523,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 178.684 129.89399999999998 -14 252.578 183.60999999999999 -15 357.115 259.60299999999995 -16 504.976 367.09000000000003 -17 714.102 519.1139999999999 -18 1009.863 734.115 -19 1428.141 1038.181 -20 2019.681 1468.199 -21 2856.249 2076.339 -22 4039.339 2936.3810000000003 -23 5712.482 4152.665999999999 -24 8078.667 5872.753 +13 178.684200000 129.893800000 +14 252.577700000 183.610300000 +15 357.114800000 259.603200000 +16 504.975900000 367.090100000 +17 714.102200000 519.113800000 +18 1009.862600000 734.115400000 +19 1428.140800000 1038.181200000 +20 2019.681000000 1468.199000000 +21 2856.249300000 2076.338700000 +22 4039.339000000 2936.381000000 +23 5712.482400000 4152.665600000 +24 8078.666500000 5872.753500000 -- !sql_test_Char_DecimalV2_1 -- \N \N \N \N @@ -1550,18 +1550,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3763.880155 6.324615699938511 7.91899999999999 -14 7520.753496 6.32449831806055 11.189999999999984 -15 15034.351404 6.324534416276971 15.822999999999979 -16 30061.423119 6.324543463440814 22.37500000000003 -17 60115.580352 6.324573819927379 31.64399999999995 -18 120224.611386 6.324535445406676 44.74500000000006 -19 240441.73178 6.324551236024209 63.28100000000012 -20 480875.75954 6.324558190475845 89.49400000000014 -21 961743.6767699999 6.324560526214563 126.56399999999996 -22 1923481.5449400002 6.324556329434121 178.98599999999988 -23 3846953.9231919996 6.324558794114177 253.12599999999952 -24 7693908.174470001 6.324552997079668 357.9679999999994 +13 3763.911012800 6.324563848625959 7.917800000 +14 7520.688067800 6.324553339693827 11.191800000 +15 15034.289732200 6.324560359998195 15.824200000 +16 30061.379515700 6.324552637037317 22.375600000 +17 60115.703673600 6.324560845670819 31.642800000 +18 120224.262590400 6.324553794199905 44.747400000 +19 240441.485147800 6.324557723415452 63.282200000 +20 480875.759540000 6.324558190475845 89.494000000 +21 961744.416658200 6.324555660610331 126.562200000 +22 1923481.544940000 6.324556329434121 178.986000000 +23 3846955.896221600 6.324555550369761 253.123600000 +24 7693904.686615000 6.324555864170527 357.971000000 -- !sql_test_Char_DecimalV2_notn_1 -- 1 \N \N \N @@ -1576,18 +1576,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3763.880155 6.324615699938511 7.91899999999999 -14 7520.753496 6.32449831806055 11.189999999999984 -15 15034.351404 6.324534416276971 15.822999999999979 -16 30061.423119 6.324543463440814 22.37500000000003 -17 60115.580352 6.324573819927379 31.64399999999995 -18 120224.611386 6.324535445406676 44.74500000000006 -19 240441.73178 6.324551236024209 63.28100000000012 -20 480875.75954 6.324558190475845 89.49400000000014 -21 961743.6767699999 6.324560526214563 126.56399999999996 -22 1923481.5449400002 6.324556329434121 178.98599999999988 -23 3846953.9231919996 6.324558794114177 253.12599999999952 -24 7693908.174470001 6.324552997079668 357.9679999999994 +13 3763.911012800 6.324563848625959 7.917800000 +14 7520.688067800 6.324553339693827 11.191800000 +15 15034.289732200 6.324560359998195 15.824200000 +16 30061.379515700 6.324552637037317 22.375600000 +17 60115.703673600 6.324560845670819 31.642800000 +18 120224.262590400 6.324553794199905 44.747400000 +19 240441.485147800 6.324557723415452 63.282200000 +20 480875.759540000 6.324558190475845 89.494000000 +21 961744.416658200 6.324555660610331 126.562200000 +22 1923481.544940000 6.324556329434121 178.986000000 +23 3846955.896221600 6.324555550369761 253.123600000 +24 7693904.686615000 6.324555864170527 357.971000000 -- !sql_test_Char_DecimalV2_2 -- \N \N @@ -1711,14 +1711,14 @@ 12 \N \N 13 299.633 8.944999999999993 14 374.549 61.63899999999998 -15 475.92499999999995 140.79299999999998 +15 475.925 140.793 16 614.71 257.356 -17 806.396 426.81999999999994 +17 806.396 426.8199999999999 18 1072.888 671.09 -19 1445.171 1021.1510000000001 -20 1967.0610000000001 1520.819 +19 1445.171 1021.151 +20 1967.061 1520.819 21 2700.526 2232.062 -22 3733.203 3242.5170000000003 +22 3733.203 3242.517 23 5189.027999999999 4676.12 24 7243.275 6708.145 @@ -1737,14 +1737,14 @@ 12 \N \N 13 299.633 8.944999999999993 14 374.549 61.63899999999998 -15 475.92499999999995 140.79299999999998 +15 475.925 140.793 16 614.71 257.356 -17 806.396 426.81999999999994 +17 806.396 426.8199999999999 18 1072.888 671.09 -19 1445.171 1021.1510000000001 -20 1967.0610000000001 1520.819 +19 1445.171 1021.151 +20 1967.061 1520.819 21 2700.526 2232.062 -22 3733.203 3242.5170000000003 +22 3733.203 3242.517 23 5189.027999999999 4676.12 24 7243.275 6708.145 @@ -1763,17 +1763,17 @@ 11 \N \N \N 12 \N \N \N 13 22424.980416 1.061543648172611 8.944999999999993 -14 34121.89677 1.3939727078073565 61.63899999999998 -15 51670.484194 1.8402241504839882 140.79299999999998 -16 77909.068341 2.440342069768353 78.67900000000003 -17 117024.79910399999 3.248930385482749 47.243999999999915 +14 34121.89677 1.393972707807356 61.63899999999998 +15 51670.484194 1.840224150483988 140.793 +16 77909.06834100001 2.440342069768353 78.67900000000003 +17 117024.799104 3.248930385482749 47.24399999999991 18 175181.718111 4.34043474581755 68.39300000000003 19 261442.46361 5.816522805528042 173.1110000000001 -20 389109.63674000005 7.816117711914163 182.093 -21 577684.976208 10.529278663888794 123.97399999999988 -22 855722.03598 14.216260500605276 53.05800000000028 -23 1264978.332596 19.233757321001036 59.94799999999947 -24 1866455.8461499999 26.071085530618728 19.020000000000095 +20 389109.63674 7.816117711914163 182.093 +21 577684.976208 10.52927866388879 123.9739999999999 +22 855722.03598 14.21626050060528 53.05800000000028 +23 1264978.332596 19.23375732100104 59.94799999999947 +24 1866455.84615 26.07108553061873 19.0200000000001 -- !sql_test_Char_Decimal32V3_notn_1 -- 1 \N \N \N @@ -1789,17 +1789,17 @@ 11 \N \N \N 12 \N \N \N 13 22424.980416 1.061543648172611 8.944999999999993 -14 34121.89677 1.3939727078073565 61.63899999999998 -15 51670.484194 1.8402241504839882 140.79299999999998 -16 77909.068341 2.440342069768353 78.67900000000003 -17 117024.79910399999 3.248930385482749 47.243999999999915 +14 34121.89677 1.393972707807356 61.63899999999998 +15 51670.484194 1.840224150483988 140.793 +16 77909.06834100001 2.440342069768353 78.67900000000003 +17 117024.799104 3.248930385482749 47.24399999999991 18 175181.718111 4.34043474581755 68.39300000000003 19 261442.46361 5.816522805528042 173.1110000000001 -20 389109.63674000005 7.816117711914163 182.093 -21 577684.976208 10.529278663888794 123.97399999999988 -22 855722.03598 14.216260500605276 53.05800000000028 -23 1264978.332596 19.233757321001036 59.94799999999947 -24 1866455.8461499999 26.071085530618728 19.020000000000095 +20 389109.63674 7.816117711914163 182.093 +21 577684.976208 10.52927866388879 123.9739999999999 +22 855722.03598 14.21626050060528 53.05800000000028 +23 1264978.332596 19.23375732100104 59.94799999999947 +24 1866455.84615 26.07108553061873 19.0200000000001 -- !sql_test_Char_Decimal32V3_2 -- \N \N @@ -1921,15 +1921,15 @@ 10 \N \N 11 \N \N 12 \N \N -13 14721.634660000002 -14413.05666 -14 15896.55077 -15460.362770000002 +13 14721.63466 -14413.05666 +14 15896.55077 -15460.36277 15 17097.92688 -16481.20888 16 18336.71199 -17464.64599 -17 19628.3981 -18395.182099999998 +17 19628.3981 -18395.1821 18 20994.89021 -19250.91221 19 22467.17332 -20000.85132 20 24089.06343 -20601.18343 -21 25922.52854 -20989.940540000003 +21 25922.52854 -20989.94054 22 28055.20565 -21079.48565 23 30611.03076 -20745.88276 24 33765.27787 -19813.85787 @@ -1947,15 +1947,15 @@ 10 \N \N 11 \N \N 12 \N \N -13 14721.634660000002 -14413.05666 -14 15896.55077 -15460.362770000002 +13 14721.63466 -14413.05666 +14 15896.55077 -15460.36277 15 17097.92688 -16481.20888 16 18336.71199 -17464.64599 -17 19628.3981 -18395.182099999998 +17 19628.3981 -18395.1821 18 20994.89021 -19250.91221 19 22467.17332 -20000.85132 20 24089.06343 -20601.18343 -21 25922.52854 -20989.940540000003 +21 25922.52854 -20989.94054 22 28055.20565 -21079.48565 23 30611.03076 -20745.88276 24 33765.27787 -19813.85787 @@ -1974,18 +1974,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2247581.1945357397 0.010591428500502814 154.289 -14 3419377.35079638 0.013910425190399653 218.094 -15 5177214.361908919 0.018366106990003128 308.359 -16 7805286.762046671 0.024358461499900903 436.033 -17 1.1722821869980797E7 0.03243292697619252 616.608 -18 1.754694850320669E7 0.04333316507893347 871.989 -19 2.6184955866543524E7 0.05807479912020697 1233.161 -20 3.89685545545142E7 0.07804566421229207 1743.94 -21 5.784997050859476E7 0.10514449775790824 2466.294 -22 8.5687462198809E7 0.1419713814300488 3487.86 -23 1.2666088817450024E8 0.19208997044104295 4932.574 -24 1.868762564864377E8 0.26038904523770506 6975.71 +13 2247581.19453574 0.01059142850050281 154.289 +14 3419377.35079638 0.01391042519039965 218.094 +15 5177214.361908919 0.01836610699000313 308.359 +16 7805286.762046671 0.0243584614999009 436.033 +17 11722821.8699808 0.03243292697619252 616.6079999999999 +18 17546948.50320669 0.04333316507893347 871.989 +19 26184955.86654352 0.05807479912020697 1233.161 +20 38968554.5545142 0.07804566421229207 1743.94 +21 57849970.50859476 0.1051444977579082 2466.294 +22 85687462.198809 0.1419713814300488 3487.86 +23 126660888.1745002 0.192089970441043 4932.574 +24 186876256.4864377 0.2603890452377051 6975.71 -- !sql_test_Char_Decimal64V3_notn_1 -- 1 \N \N \N @@ -2000,18 +2000,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2247581.1945357397 0.010591428500502814 154.289 -14 3419377.35079638 0.013910425190399653 218.094 -15 5177214.361908919 0.018366106990003128 308.359 -16 7805286.762046671 0.024358461499900903 436.033 -17 1.1722821869980797E7 0.03243292697619252 616.608 -18 1.754694850320669E7 0.04333316507893347 871.989 -19 2.6184955866543524E7 0.05807479912020697 1233.161 -20 3.89685545545142E7 0.07804566421229207 1743.94 -21 5.784997050859476E7 0.10514449775790824 2466.294 -22 8.5687462198809E7 0.1419713814300488 3487.86 -23 1.2666088817450024E8 0.19208997044104295 4932.574 -24 1.868762564864377E8 0.26038904523770506 6975.71 +13 2247581.19453574 0.01059142850050281 154.289 +14 3419377.35079638 0.01391042519039965 218.094 +15 5177214.361908919 0.01836610699000313 308.359 +16 7805286.762046671 0.0243584614999009 436.033 +17 11722821.8699808 0.03243292697619252 616.6079999999999 +18 17546948.50320669 0.04333316507893347 871.989 +19 26184955.86654352 0.05807479912020697 1233.161 +20 38968554.5545142 0.07804566421229207 1743.94 +21 57849970.50859476 0.1051444977579082 2466.294 +22 85687462.198809 0.1419713814300488 3487.86 +23 126660888.1745002 0.192089970441043 4932.574 +24 186876256.4864377 0.2603890452377051 6975.71 -- !sql_test_Char_Decimal64V3_2 -- \N \N @@ -2133,18 +2133,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.45679165634677E8 -1.4567885705667698E8 -14 1.5679034055078802E8 -1.56789904362788E8 -15 1.67901541926899E8 -1.67900925208899E8 -16 1.7901278071201E8 -1.7901190864601E8 -17 1.90124072398121E8 -1.9012283918212098E8 -18 2.01235438890232E8 -2.01233694912232E8 -19 2.12346911173343E8 -2.1234444485134298E8 -20 2.23458533063454E8 -2.23455045183454E8 -21 2.34570366528565E8 -2.34565433940565E8 -22 2.4568249920567602E8 -2.45675523485676E8 -23 2.56795055030787E8 -2.56785189882787E8 -24 2.67908209277898E8 -2.67894257857898E8 +13 145679165.634677 -145678857.056677 +14 156790340.550788 -156789904.362788 +15 167901541.926899 -167900925.208899 +16 179012780.71201 -179011908.64601 +17 190124072.398121 -190122839.182121 +18 201235438.890232 -201233694.912232 +19 212346911.173343 -212344444.851343 +20 223458533.063454 -223455045.183454 +21 234570366.528565 -234565433.940565 +22 245682499.205676 -245675523.485676 +23 256795055.030787 -256785189.882787 +24 267908209.277898 -267894257.857898 -- !sql_test_Char_Decimal128V3_notn_0 -- 1 \N \N @@ -2159,18 +2159,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.45679165634677E8 -1.4567885705667698E8 -14 1.5679034055078802E8 -1.56789904362788E8 -15 1.67901541926899E8 -1.67900925208899E8 -16 1.7901278071201E8 -1.7901190864601E8 -17 1.90124072398121E8 -1.9012283918212098E8 -18 2.01235438890232E8 -2.01233694912232E8 -19 2.12346911173343E8 -2.1234444485134298E8 -20 2.23458533063454E8 -2.23455045183454E8 -21 2.34570366528565E8 -2.34565433940565E8 -22 2.4568249920567602E8 -2.45675523485676E8 -23 2.56795055030787E8 -2.56785189882787E8 -24 2.67908209277898E8 -2.67894257857898E8 +13 145679165.634677 -145678857.056677 +14 156790340.550788 -156789904.362788 +15 167901541.926899 -167900925.208899 +16 179012780.71201 -179011908.64601 +17 190124072.398121 -190122839.182121 +18 201235438.890232 -201233694.912232 +19 212346911.173343 -212344444.851343 +20 223458533.063454 -223455045.183454 +21 234570366.528565 -234565433.940565 +22 245682499.205676 -245675523.485676 +23 256795055.030787 -256785189.882787 +24 267908209.277898 -267894257.857898 -- !sql_test_Char_Decimal128V3_1 -- \N \N \N \N @@ -2186,18 +2186,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.2476668981513157E10 1.0591024648972434E-6 154.289 -14 3.419498496709072E10 1.3909932372181646E-6 218.094 -15 5.177385648176376E10 1.8365499374088881E-6 308.359 -16 7.805528968742278E10 2.4357705653308882E-6 436.033 -17 1.1723164382783492E11 3.2431979391363426E-6 616.608 -18 1.754743287576384E11 4.333196892698764E-6 871.989 -19 2.618564086433789E11 5.807327992464816E-6 1233.161 -20 3.8969523282395636E11 7.80437241061635E-6 1743.94 -21 5.785134049411062E11 1.0514200781665932E-5 2466.294 -22 8.568939965121295E11 1.419681714321335E-5 3487.86 -23 1.2666362814871636E12 1.9208581517110574E-5 4932.574 -24 1.8688013140119219E12 2.603836461332324E-5 6975.71 +13 22476668981.51316 1.059102464897243e-06 154.289 +14 34194984967.09072 1.390993237218165e-06 218.094 +15 51773856481.76376 1.836549937408888e-06 308.359 +16 78055289687.42278 2.435770565330888e-06 436.033 +17 117231643827.8349 3.243197939136343e-06 616.6079999999999 +18 175474328757.6384 4.333196892698764e-06 871.989 +19 261856408643.3789 5.807327992464816e-06 1233.161 +20 389695232823.9564 7.804372410616349e-06 1743.94 +21 578513404941.1062 1.051420078166593e-05 2466.294 +22 856893996512.1295 1.419681714321335e-05 3487.86 +23 1266636281487.164 1.920858151711057e-05 4932.574 +24 1868801314011.922 2.603836461332324e-05 6975.71 -- !sql_test_Char_Decimal128V3_notn_1 -- 1 \N \N \N @@ -2212,18 +2212,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.2476668981513157E10 1.0591024648972434E-6 154.289 -14 3.419498496709072E10 1.3909932372181646E-6 218.094 -15 5.177385648176376E10 1.8365499374088881E-6 308.359 -16 7.805528968742278E10 2.4357705653308882E-6 436.033 -17 1.1723164382783492E11 3.2431979391363426E-6 616.608 -18 1.754743287576384E11 4.333196892698764E-6 871.989 -19 2.618564086433789E11 5.807327992464816E-6 1233.161 -20 3.8969523282395636E11 7.80437241061635E-6 1743.94 -21 5.785134049411062E11 1.0514200781665932E-5 2466.294 -22 8.568939965121295E11 1.419681714321335E-5 3487.86 -23 1.2666362814871636E12 1.9208581517110574E-5 4932.574 -24 1.8688013140119219E12 2.603836461332324E-5 6975.71 +13 22476668981.51316 1.059102464897243e-06 154.289 +14 34194984967.09072 1.390993237218165e-06 218.094 +15 51773856481.76376 1.836549937408888e-06 308.359 +16 78055289687.42278 2.435770565330888e-06 436.033 +17 117231643827.8349 3.243197939136343e-06 616.6079999999999 +18 175474328757.6384 4.333196892698764e-06 871.989 +19 261856408643.3789 5.807327992464816e-06 1233.161 +20 389695232823.9564 7.804372410616349e-06 1743.94 +21 578513404941.1062 1.051420078166593e-05 2466.294 +22 856893996512.1295 1.419681714321335e-05 3487.86 +23 1266636281487.164 1.920858151711057e-05 4932.574 +24 1868801314011.922 2.603836461332324e-05 6975.71 -- !sql_test_Char_Decimal128V3_2 -- \N \N @@ -2345,18 +2345,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 308.578 0.0 -14 436.188 0.0 -15 616.718 0.0 -16 872.066 0.0 -17 1233.216 0.0 -18 1743.978 0.0 -19 2466.322 0.0 -20 3487.88 0.0 -21 4932.588 0.0 -22 6975.72 0.0 -23 9865.148 0.0 -24 13951.42 0.0 +13 308.578 0 +14 436.188 0 +15 616.718 0 +16 872.066 0 +17 1233.216 0 +18 1743.978 0 +19 2466.322 0 +20 3487.88 0 +21 4932.588 0 +22 6975.72 0 +23 9865.147999999999 0 +24 13951.42 0 -- !sql_test_Char_Char_notn_0 -- 1 \N \N @@ -2371,18 +2371,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 308.578 0.0 -14 436.188 0.0 -15 616.718 0.0 -16 872.066 0.0 -17 1233.216 0.0 -18 1743.978 0.0 -19 2466.322 0.0 -20 3487.88 0.0 -21 4932.588 0.0 -22 6975.72 0.0 -23 9865.148 0.0 -24 13951.42 0.0 +13 308.578 0 +14 436.188 0 +15 616.718 0 +16 872.066 0 +17 1233.216 0 +18 1743.978 0 +19 2466.322 0 +20 3487.88 0 +21 4932.588 0 +22 6975.72 0 +23 9865.147999999999 0 +24 13951.42 0 -- !sql_test_Char_Char_1 -- \N \N \N \N @@ -2398,18 +2398,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 23805.095520999996 1.0 0.0 -14 47564.992836 1.0 0.0 -15 95085.27288099998 1.0 0.0 -16 190124.777089 1.0 0.0 -17 380205.4256639999 1.0 0.0 -18 760364.8161210001 1.0 0.0 -19 1520686.0519210002 1.0 0.0 -20 3041326.7236 1.0 0.0 -21 6082606.094435999 1.0 0.0 -22 1.2165167379600001E7 1.0 0.0 -23 2.4330286265475996E7 1.0 0.0 -24 4.86605300041E7 1.0 0.0 +13 23805.095521 1 0 +14 47564.992836 1 0 +15 95085.27288099998 1 0 +16 190124.777089 1 0 +17 380205.4256639999 1 0 +18 760364.8161210001 1 0 +19 1520686.051921 1 0 +20 3041326.7236 1 0 +21 6082606.094435999 1 0 +22 12165167.3796 1 0 +23 24330286.265476 1 0 +24 48660530.0041 1 0 -- !sql_test_Char_Char_notn_1 -- 1 \N \N \N @@ -2424,18 +2424,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 23805.095520999996 1.0 0.0 -14 47564.992836 1.0 0.0 -15 95085.27288099998 1.0 0.0 -16 190124.777089 1.0 0.0 -17 380205.4256639999 1.0 0.0 -18 760364.8161210001 1.0 0.0 -19 1520686.0519210002 1.0 0.0 -20 3041326.7236 1.0 0.0 -21 6082606.094435999 1.0 0.0 -22 1.2165167379600001E7 1.0 0.0 -23 2.4330286265475996E7 1.0 0.0 -24 4.86605300041E7 1.0 0.0 +13 23805.095521 1 0 +14 47564.992836 1 0 +15 95085.27288099998 1 0 +16 190124.777089 1 0 +17 380205.4256639999 1 0 +18 760364.8161210001 1 0 +19 1520686.051921 1 0 +20 3041326.7236 1 0 +21 6082606.094435999 1 0 +22 12165167.3796 1 0 +23 24330286.265476 1 0 +24 48660530.0041 1 0 -- !sql_test_Char_Char_2 -- \N \N @@ -2557,16 +2557,16 @@ 10 \N \N 11 \N \N 12 \N \N -13 2473.41 -2164.8320000000003 +13 2473.41 -2164.832 14 3496.176 -3059.988 15 4943.1 -4326.382 -16 6989.7210000000005 -6117.655 -17 9884.338 -8651.122 -18 13978.126 -12234.148000000001 +16 6989.721 -6117.655 +17 9884.338 -8651.121999999999 +18 13978.126 -12234.148 19 19767.746 -17301.424 -20 27955.593999999997 -24467.714 +20 27955.594 -24467.714 21 39535.025 -34602.437 -22 55910.859000000004 -48935.139 +22 55910.859 -48935.139 23 79069.817 -69204.66900000001 24 111821.553 -97870.13299999999 @@ -2583,16 +2583,16 @@ 10 \N \N 11 \N \N 12 \N \N -13 2473.41 -2164.8320000000003 +13 2473.41 -2164.832 14 3496.176 -3059.988 15 4943.1 -4326.382 -16 6989.7210000000005 -6117.655 -17 9884.338 -8651.122 -18 13978.126 -12234.148000000001 +16 6989.721 -6117.655 +17 9884.338 -8651.121999999999 +18 13978.126 -12234.148 19 19767.746 -17301.424 -20 27955.593999999997 -24467.714 +20 27955.594 -24467.714 21 39535.025 -34602.437 -22 55910.859000000004 -48935.139 +22 55910.859 -48935.139 23 79069.817 -69204.66900000001 24 111821.553 -97870.13299999999 @@ -2610,18 +2610,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 357814.859969 0.0665290858044923 154.289 +13 357814.859969 0.06652908580449229 154.289 14 714930.0157079999 0.06653097756553986 218.094 -15 1429164.100019 0.0665320888481147 308.359 -16 2857624.2397040003 0.06653246233265911 436.033 -17 5714556.45984 0.06653279713586822 616.608 -18 1.1428407296493001E7 0.06653287692628271 871.989 -19 2.2856127373185E7 0.0665329706599851 1233.161 -20 4.571155187676E7 0.06653300093157037 1743.94 -21 9.142238885291399E7 0.06653300324740008 2466.294 -22 1.8284408129214E8 0.06653301158905464 3487.86 -23 3.65687437253482E8 0.06653301094565925 4932.574 -24 7.313741954735299E8 0.06653301457073506 6975.71 +15 1429164.100019 0.06653208884811471 308.359 +16 2857624.239704 0.06653246233265911 436.033 +17 5714556.45984 0.06653279713586822 616.6079999999999 +18 11428407.296493 0.06653287692628271 871.989 +19 22856127.373185 0.06653297065998511 1233.161 +20 45711551.87676 0.06653300093157037 1743.94 +21 91422388.85291399 0.06653300324740008 2466.294 +22 182844081.29214 0.06653301158905464 3487.86 +23 365687437.253482 0.06653301094565925 4932.574 +24 731374195.4735299 0.06653301457073506 6975.71 -- !sql_test_Char_Varchar_notn_1 -- 1 \N \N \N @@ -2636,18 +2636,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 357814.859969 0.0665290858044923 154.289 +13 357814.859969 0.06652908580449229 154.289 14 714930.0157079999 0.06653097756553986 218.094 -15 1429164.100019 0.0665320888481147 308.359 -16 2857624.2397040003 0.06653246233265911 436.033 -17 5714556.45984 0.06653279713586822 616.608 -18 1.1428407296493001E7 0.06653287692628271 871.989 -19 2.2856127373185E7 0.0665329706599851 1233.161 -20 4.571155187676E7 0.06653300093157037 1743.94 -21 9.142238885291399E7 0.06653300324740008 2466.294 -22 1.8284408129214E8 0.06653301158905464 3487.86 -23 3.65687437253482E8 0.06653301094565925 4932.574 -24 7.313741954735299E8 0.06653301457073506 6975.71 +15 1429164.100019 0.06653208884811471 308.359 +16 2857624.239704 0.06653246233265911 436.033 +17 5714556.45984 0.06653279713586822 616.6079999999999 +18 11428407.296493 0.06653287692628271 871.989 +19 22856127.373185 0.06653297065998511 1233.161 +20 45711551.87676 0.06653300093157037 1743.94 +21 91422388.85291399 0.06653300324740008 2466.294 +22 182844081.29214 0.06653301158905464 3487.86 +23 365687437.253482 0.06653301094565925 4932.574 +24 731374195.4735299 0.06653301457073506 6975.71 -- !sql_test_Char_Varchar_2 -- \N \N @@ -2770,17 +2770,17 @@ 11 \N \N 12 \N \N 13 10758.306 -10449.728 -14 15206.886999999999 -14770.699 +14 15206.887 -14770.699 15 21500.372 -20883.654 16 30402.288 -29530.222 17 42992.62 -41759.404 -18 60798.831 -59054.852999999996 +18 60798.831 -59054.853 19 85981.17800000001 -83514.856 20 121594.791 -118106.911 -21 171960.32499999998 -167027.737 -22 243188.145 -236212.42500000002 -23 343919.63300000003 -334054.485 -24 486375.571 -472424.15099999995 +21 171960.325 -167027.737 +22 243188.145 -236212.425 +23 343919.633 -334054.485 +24 486375.571 -472424.151 -- !sql_test_Char_String_notn_0 -- 1 \N \N @@ -2796,17 +2796,17 @@ 11 \N \N 12 \N \N 13 10758.306 -10449.728 -14 15206.886999999999 -14770.699 +14 15206.887 -14770.699 15 21500.372 -20883.654 16 30402.288 -29530.222 17 42992.62 -41759.404 -18 60798.831 -59054.852999999996 +18 60798.831 -59054.853 19 85981.17800000001 -83514.856 20 121594.791 -118106.911 -21 171960.32499999998 -167027.737 -22 243188.145 -236212.42500000002 -23 343919.63300000003 -334054.485 -24 486375.571 -472424.15099999995 +21 171960.325 -167027.737 +22 243188.145 -236212.425 +23 343919.633 -334054.485 +24 486375.571 -472424.151 -- !sql_test_Char_String_1 -- \N \N \N \N @@ -2822,18 +2822,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1636083.1789129998 0.01455005211704206 154.289 -14 3268965.820542 0.014550471142005897 218.094 +13 1636083.178913 0.01455005211704206 154.289 +14 3268965.820542 0.0145504711420059 218.094 15 6534747.936666999 0.01455071776333848 308.359 -16 1.3066276066415E7 0.014550800558828588 436.033 -17 2.6129388007296E7 0.014550873734885669 616.608 -18 5.2255547028738E7 0.014550891902496716 871.989 -19 1.0450794939173701E8 0.014550912736990648 1233.161 -20 2.0901269309294E8 0.014550918791557017 1743.94 -21 4.1802211169111395E8 0.014550919495212195 2466.294 -22 8.360410360401001E8 0.014550921372496492 3487.86 -23 1.672078753559866E9 0.014550921249179602 4932.574 -24 3.34415440437631E9 0.014550922032912313 6975.71 +16 13066276.066415 0.01455080055882859 436.033 +17 26129388.007296 0.01455087373488567 616.6079999999999 +18 52255547.028738 0.01455089190249672 871.989 +19 104507949.391737 0.01455091273699065 1233.161 +20 209012693.09294 0.01455091879155702 1743.94 +21 418022111.6911139 0.01455091949521219 2466.294 +22 836041036.0401001 0.01455092137249649 3487.86 +23 1672078753.559866 0.0145509212491796 4932.574 +24 3344154404.37631 0.01455092203291231 6975.71 -- !sql_test_Char_String_notn_1 -- 1 \N \N \N @@ -2848,18 +2848,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1636083.1789129998 0.01455005211704206 154.289 -14 3268965.820542 0.014550471142005897 218.094 +13 1636083.178913 0.01455005211704206 154.289 +14 3268965.820542 0.0145504711420059 218.094 15 6534747.936666999 0.01455071776333848 308.359 -16 1.3066276066415E7 0.014550800558828588 436.033 -17 2.6129388007296E7 0.014550873734885669 616.608 -18 5.2255547028738E7 0.014550891902496716 871.989 -19 1.0450794939173701E8 0.014550912736990648 1233.161 -20 2.0901269309294E8 0.014550918791557017 1743.94 -21 4.1802211169111395E8 0.014550919495212195 2466.294 -22 8.360410360401001E8 0.014550921372496492 3487.86 -23 1.672078753559866E9 0.014550921249179602 4932.574 -24 3.34415440437631E9 0.014550922032912313 6975.71 +16 13066276.066415 0.01455080055882859 436.033 +17 26129388.007296 0.01455087373488567 616.6079999999999 +18 52255547.028738 0.01455089190249672 871.989 +19 104507949.391737 0.01455091273699065 1233.161 +20 209012693.09294 0.01455091879155702 1743.94 +21 418022111.6911139 0.01455091949521219 2466.294 +22 836041036.0401001 0.01455092137249649 3487.86 +23 1672078753.559866 0.0145509212491796 4932.574 +24 3344154404.37631 0.01455092203291231 6975.71 -- !sql_test_Char_String_2 -- \N \N @@ -2981,18 +2981,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120455289E7 -2.0120146711E7 -14 2.0120520094E7 -2.0120083906E7 -15 2.0120611359E7 -2.0119994641E7 -16 2.0120740033E7 -2.0119867967E7 -17 2.0120921608E7 -2.0119688392E7 -18 2.0121177989E7 -2.0119434011E7 -19 2.0121540161E7 -2.0119073839E7 -20 2.012205194E7 -2.011856406E7 -21 2.0122775294E7 -2.0117842706E7 -22 2.012379786E7 -2.011682214E7 -23 2.0125243574E7 -2.0115378426E7 -24 2.012728771E7 -2.011333629E7 +13 20120455.289 -20120146.711 +14 20120520.094 -20120083.906 +15 20120611.359 -20119994.641 +16 20120740.033 -20119867.967 +17 20120921.608 -20119688.392 +18 20121177.989 -20119434.011 +19 20121540.161 -20119073.839 +20 20122051.94 -20118564.06 +21 20122775.294 -20117842.706 +22 20123797.86 -20116822.14 +23 20125243.574 -20115378.426 +24 20127287.71 -20113336.29 -- !sql_test_Char_Date_notn_0 -- 1 \N \N @@ -3007,18 +3007,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120455289E7 -2.0120146711E7 -14 2.0120520094E7 -2.0120083906E7 -15 2.0120611359E7 -2.0119994641E7 -16 2.0120740033E7 -2.0119867967E7 -17 2.0120921608E7 -2.0119688392E7 -18 2.0121177989E7 -2.0119434011E7 -19 2.0121540161E7 -2.0119073839E7 -20 2.012205194E7 -2.011856406E7 -21 2.0122775294E7 -2.0117842706E7 -22 2.012379786E7 -2.011682214E7 -23 2.0125243574E7 -2.0115378426E7 -24 2.012728771E7 -2.011333629E7 +13 20120455.289 -20120146.711 +14 20120520.094 -20120083.906 +15 20120611.359 -20119994.641 +16 20120740.033 -20119867.967 +17 20120921.608 -20119688.392 +18 20121177.989 -20119434.011 +19 20121540.161 -20119073.839 +20 20122051.94 -20118564.06 +21 20122775.294 -20117842.706 +22 20123797.86 -20116822.14 +23 20125243.574 -20115378.426 +24 20127287.71 -20113336.29 -- !sql_test_Char_Date_1 -- \N \N \N \N @@ -3034,18 +3034,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341120989E9 7.668324643851003E-6 154.289 -14 4.388117144388E9 1.0839499327594586E-5 218.094 -15 6.204276512776999E9 1.532576323527533E-5 308.359 -16 8.773116514032E9 2.1671292839312965E-5 436.033 -17 1.2406341025439999E10 3.064605630978258E-5 616.608 -18 1.7544685508634E10 4.3338754390713544E-5 871.989 -19 2.4811577900427002E10 6.12893729703031E-5 1233.161 -20 3.5088609933520004E10 8.667561152642395E-5 1743.94 -21 4.9622597364846E10 1.2257734212730033E-4 2466.294 -22 7.01768244366E10 1.7335021180091162E-4 3487.86 -23 9.924492291051399E10 2.4515396407143007E-4 4932.574 -24 1.4035346162152E11 3.4669989212890933E-4 6975.71 +13 3104341120.989 7.668324643851003e-06 154.289 +14 4388117144.388 1.083949932759459e-05 218.094 +15 6204276512.776999 1.532576323527533e-05 308.359 +16 8773116514.032 2.167129283931297e-05 436.033 +17 12406341025.44 3.064605630978258e-05 616.6079999999999 +18 17544685508.634 4.333875439071354e-05 871.989 +19 24811577900.427 6.12893729703031e-05 1233.161 +20 35088609933.52 8.667561152642395e-05 1743.94 +21 49622597364.846 0.0001225773421273003 2466.294 +22 70176824436.60001 0.0001733502118009116 3487.86 +23 99244922910.51399 0.0002451539640714301 4932.574 +24 140353461621.52 0.0003466998921289093 6975.71 -- !sql_test_Char_Date_notn_1 -- 1 \N \N \N @@ -3060,18 +3060,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341120989E9 7.668324643851003E-6 154.289 -14 4.388117144388E9 1.0839499327594586E-5 218.094 -15 6.204276512776999E9 1.532576323527533E-5 308.359 -16 8.773116514032E9 2.1671292839312965E-5 436.033 -17 1.2406341025439999E10 3.064605630978258E-5 616.608 -18 1.7544685508634E10 4.3338754390713544E-5 871.989 -19 2.4811577900427002E10 6.12893729703031E-5 1233.161 -20 3.5088609933520004E10 8.667561152642395E-5 1743.94 -21 4.9622597364846E10 1.2257734212730033E-4 2466.294 -22 7.01768244366E10 1.7335021180091162E-4 3487.86 -23 9.924492291051399E10 2.4515396407143007E-4 4932.574 -24 1.4035346162152E11 3.4669989212890933E-4 6975.71 +13 3104341120.989 7.668324643851003e-06 154.289 +14 4388117144.388 1.083949932759459e-05 218.094 +15 6204276512.776999 1.532576323527533e-05 308.359 +16 8773116514.032 2.167129283931297e-05 436.033 +17 12406341025.44 3.064605630978258e-05 616.6079999999999 +18 17544685508.634 4.333875439071354e-05 871.989 +19 24811577900.427 6.12893729703031e-05 1233.161 +20 35088609933.52 8.667561152642395e-05 1743.94 +21 49622597364.846 0.0001225773421273003 2466.294 +22 70176824436.60001 0.0001733502118009116 3487.86 +23 99244922910.51399 0.0002451539640714301 4932.574 +24 140353461621.52 0.0003466998921289093 6975.71 -- !sql_test_Char_Date_2 -- \N \N @@ -3193,18 +3193,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101015529E13 -2.012030100984671E13 -14 2.0120302020320094E13 -2.0120302019883906E13 -15 2.012030303051136E13 -2.012030302989464E13 -16 2.012030404074003E13 -2.012030403986797E13 -17 2.012030505102161E13 -2.012030504978839E13 -18 2.012030606137799E13 -2.012030605963401E13 -19 2.012030707184016E13 -2.012030706937384E13 -20 2.012030808245194E13 -2.012030807896406E13 -21 2.0120309093275293E13 -2.0120309088342707E13 -22 2.012031010439786E13 -2.012031009742214E13 -23 2.0120311115943574E13 -2.0120311106078426E13 -24 2.012031212808771E13 -2.012031211413629E13 +13 20120301010155.29 -20120301009846.71 +14 20120302020320.09 -20120302019883.91 +15 20120303030511.36 -20120303029894.64 +16 20120304040740.03 -20120304039867.97 +17 20120305051021.61 -20120305049788.39 +18 20120306061377.99 -20120306059634.01 +19 20120307071840.16 -20120307069373.84 +20 20120308082451.94 -20120308078964.06 +21 20120309093275.29 -20120309088342.71 +22 20120310104397.86 -20120310097422.14 +23 20120311115943.57 -20120311106078.43 +24 20120312128087.71 -20120312114136.29 -- !sql_test_Char_DateTime_notn_0 -- 1 \N \N @@ -3219,18 +3219,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101015529E13 -2.012030100984671E13 -14 2.0120302020320094E13 -2.0120302019883906E13 -15 2.012030303051136E13 -2.012030302989464E13 -16 2.012030404074003E13 -2.012030403986797E13 -17 2.012030505102161E13 -2.012030504978839E13 -18 2.012030606137799E13 -2.012030605963401E13 -19 2.012030707184016E13 -2.012030706937384E13 -20 2.012030808245194E13 -2.012030807896406E13 -21 2.0120309093275293E13 -2.0120309088342707E13 -22 2.012031010439786E13 -2.012031009742214E13 -23 2.0120311115943574E13 -2.0120311106078426E13 -24 2.012031212808771E13 -2.012031211413629E13 +13 20120301010155.29 -20120301009846.71 +14 20120302020320.09 -20120302019883.91 +15 20120303030511.36 -20120303029894.64 +16 20120304040740.03 -20120304039867.97 +17 20120305051021.61 -20120305049788.39 +18 20120306061377.99 -20120306059634.01 +19 20120307071840.16 -20120307069373.84 +20 20120308082451.94 -20120308078964.06 +21 20120309093275.29 -20120309088342.71 +22 20120310104397.86 -20120310097422.14 +23 20120311115943.57 -20120311106078.43 +24 20120312128087.71 -20120312114136.29 -- !sql_test_Char_DateTime_1 -- \N \N \N \N @@ -3246,18 +3246,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341122532044E15 7.668324640039385E-12 154.289 -14 4.3881171487721255E15 1.0839499316764946E-11 218.094 -15 6.204276522090366E15 1.5325763212269516E-11 308.359 -16 8.773116531605874E15 2.16712927959021E-11 436.033 -17 1.2406341056520126E16 3.064605623300867E-11 616.608 -18 1.7544685561394568E16 4.3338754260384773E-11 871.989 -19 2.48115779874968E16 6.128937275522393E-11 1233.161 -20 3.5088610074269912E16 8.667561117874462E-11 1743.94 -21 4.9622597588807688E16 1.2257734157407194E-10 2466.294 -22 7.0176824788559952E16 1.7335021093150306E-10 3487.86 -23 9.9244923458083968E16 2.451539627188274E-10 4932.574 -24 1.40353462466362192E17 3.4669989004198756E-10 6975.71 +13 3104341122532044 7.668324640039385e-12 154.289 +14 4388117148772126 1.083949931676495e-11 218.094 +15 6204276522090366 1.532576321226952e-11 308.359 +16 8773116531605874 2.16712927959021e-11 436.033 +17 1.240634105652013e+16 3.064605623300867e-11 616.6079999999999 +18 1.754468556139457e+16 4.333875426038477e-11 871.989 +19 2.48115779874968e+16 6.128937275522393e-11 1233.161 +20 3.508861007426991e+16 8.667561117874462e-11 1743.94 +21 4.962259758880769e+16 1.225773415740719e-10 2466.294 +22 7.017682478855995e+16 1.733502109315031e-10 3487.86 +23 9.924492345808397e+16 2.451539627188274e-10 4932.574 +24 1.403534624663622e+17 3.466998900419876e-10 6975.71 -- !sql_test_Char_DateTime_notn_1 -- 1 \N \N \N @@ -3272,18 +3272,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341122532044E15 7.668324640039385E-12 154.289 -14 4.3881171487721255E15 1.0839499316764946E-11 218.094 -15 6.204276522090366E15 1.5325763212269516E-11 308.359 -16 8.773116531605874E15 2.16712927959021E-11 436.033 -17 1.2406341056520126E16 3.064605623300867E-11 616.608 -18 1.7544685561394568E16 4.3338754260384773E-11 871.989 -19 2.48115779874968E16 6.128937275522393E-11 1233.161 -20 3.5088610074269912E16 8.667561117874462E-11 1743.94 -21 4.9622597588807688E16 1.2257734157407194E-10 2466.294 -22 7.0176824788559952E16 1.7335021093150306E-10 3487.86 -23 9.9244923458083968E16 2.451539627188274E-10 4932.574 -24 1.40353462466362192E17 3.4669989004198756E-10 6975.71 +13 3104341122532044 7.668324640039385e-12 154.289 +14 4388117148772126 1.083949931676495e-11 218.094 +15 6204276522090366 1.532576321226952e-11 308.359 +16 8773116531605874 2.16712927959021e-11 436.033 +17 1.240634105652013e+16 3.064605623300867e-11 616.6079999999999 +18 1.754468556139457e+16 4.333875426038477e-11 871.989 +19 2.48115779874968e+16 6.128937275522393e-11 1233.161 +20 3.508861007426991e+16 8.667561117874462e-11 1743.94 +21 4.962259758880769e+16 1.225773415740719e-10 2466.294 +22 7.017682478855995e+16 1.733502109315031e-10 3487.86 +23 9.924492345808397e+16 2.451539627188274e-10 4932.574 +24 1.403534624663622e+17 3.466998900419876e-10 6975.71 -- !sql_test_Char_DateTime_2 -- \N \N @@ -3405,18 +3405,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120455289E7 -2.0120146711E7 -14 2.0120520094E7 -2.0120083906E7 -15 2.0120611359E7 -2.0119994641E7 -16 2.0120740033E7 -2.0119867967E7 -17 2.0120921608E7 -2.0119688392E7 -18 2.0121177989E7 -2.0119434011E7 -19 2.0121540161E7 -2.0119073839E7 -20 2.012205194E7 -2.011856406E7 -21 2.0122775294E7 -2.0117842706E7 -22 2.012379786E7 -2.011682214E7 -23 2.0125243574E7 -2.0115378426E7 -24 2.012728771E7 -2.011333629E7 +13 20120455.289 -20120146.711 +14 20120520.094 -20120083.906 +15 20120611.359 -20119994.641 +16 20120740.033 -20119867.967 +17 20120921.608 -20119688.392 +18 20121177.989 -20119434.011 +19 20121540.161 -20119073.839 +20 20122051.94 -20118564.06 +21 20122775.294 -20117842.706 +22 20123797.86 -20116822.14 +23 20125243.574 -20115378.426 +24 20127287.71 -20113336.29 -- !sql_test_Char_DateV2_notn_0 -- 1 \N \N @@ -3431,18 +3431,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120455289E7 -2.0120146711E7 -14 2.0120520094E7 -2.0120083906E7 -15 2.0120611359E7 -2.0119994641E7 -16 2.0120740033E7 -2.0119867967E7 -17 2.0120921608E7 -2.0119688392E7 -18 2.0121177989E7 -2.0119434011E7 -19 2.0121540161E7 -2.0119073839E7 -20 2.012205194E7 -2.011856406E7 -21 2.0122775294E7 -2.0117842706E7 -22 2.012379786E7 -2.011682214E7 -23 2.0125243574E7 -2.0115378426E7 -24 2.012728771E7 -2.011333629E7 +13 20120455.289 -20120146.711 +14 20120520.094 -20120083.906 +15 20120611.359 -20119994.641 +16 20120740.033 -20119867.967 +17 20120921.608 -20119688.392 +18 20121177.989 -20119434.011 +19 20121540.161 -20119073.839 +20 20122051.94 -20118564.06 +21 20122775.294 -20117842.706 +22 20123797.86 -20116822.14 +23 20125243.574 -20115378.426 +24 20127287.71 -20113336.29 -- !sql_test_Char_DateV2_1 -- \N \N \N \N @@ -3458,18 +3458,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341120989E9 7.668324643851003E-6 154.289 -14 4.388117144388E9 1.0839499327594586E-5 218.094 -15 6.204276512776999E9 1.532576323527533E-5 308.359 -16 8.773116514032E9 2.1671292839312965E-5 436.033 -17 1.2406341025439999E10 3.064605630978258E-5 616.608 -18 1.7544685508634E10 4.3338754390713544E-5 871.989 -19 2.4811577900427002E10 6.12893729703031E-5 1233.161 -20 3.5088609933520004E10 8.667561152642395E-5 1743.94 -21 4.9622597364846E10 1.2257734212730033E-4 2466.294 -22 7.01768244366E10 1.7335021180091162E-4 3487.86 -23 9.924492291051399E10 2.4515396407143007E-4 4932.574 -24 1.4035346162152E11 3.4669989212890933E-4 6975.71 +13 3104341120.989 7.668324643851003e-06 154.289 +14 4388117144.388 1.083949932759459e-05 218.094 +15 6204276512.776999 1.532576323527533e-05 308.359 +16 8773116514.032 2.167129283931297e-05 436.033 +17 12406341025.44 3.064605630978258e-05 616.6079999999999 +18 17544685508.634 4.333875439071354e-05 871.989 +19 24811577900.427 6.12893729703031e-05 1233.161 +20 35088609933.52 8.667561152642395e-05 1743.94 +21 49622597364.846 0.0001225773421273003 2466.294 +22 70176824436.60001 0.0001733502118009116 3487.86 +23 99244922910.51399 0.0002451539640714301 4932.574 +24 140353461621.52 0.0003466998921289093 6975.71 -- !sql_test_Char_DateV2_notn_1 -- 1 \N \N \N @@ -3484,18 +3484,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341120989E9 7.668324643851003E-6 154.289 -14 4.388117144388E9 1.0839499327594586E-5 218.094 -15 6.204276512776999E9 1.532576323527533E-5 308.359 -16 8.773116514032E9 2.1671292839312965E-5 436.033 -17 1.2406341025439999E10 3.064605630978258E-5 616.608 -18 1.7544685508634E10 4.3338754390713544E-5 871.989 -19 2.4811577900427002E10 6.12893729703031E-5 1233.161 -20 3.5088609933520004E10 8.667561152642395E-5 1743.94 -21 4.9622597364846E10 1.2257734212730033E-4 2466.294 -22 7.01768244366E10 1.7335021180091162E-4 3487.86 -23 9.924492291051399E10 2.4515396407143007E-4 4932.574 -24 1.4035346162152E11 3.4669989212890933E-4 6975.71 +13 3104341120.989 7.668324643851003e-06 154.289 +14 4388117144.388 1.083949932759459e-05 218.094 +15 6204276512.776999 1.532576323527533e-05 308.359 +16 8773116514.032 2.167129283931297e-05 436.033 +17 12406341025.44 3.064605630978258e-05 616.6079999999999 +18 17544685508.634 4.333875439071354e-05 871.989 +19 24811577900.427 6.12893729703031e-05 1233.161 +20 35088609933.52 8.667561152642395e-05 1743.94 +21 49622597364.846 0.0001225773421273003 2466.294 +22 70176824436.60001 0.0001733502118009116 3487.86 +23 99244922910.51399 0.0002451539640714301 4932.574 +24 140353461621.52 0.0003466998921289093 6975.71 -- !sql_test_Char_DateV2_2 -- \N \N @@ -3617,18 +3617,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101015529E13 -2.012030100984671E13 -14 2.0120302020320094E13 -2.0120302019883906E13 -15 2.012030303051136E13 -2.012030302989464E13 -16 2.012030404074003E13 -2.012030403986797E13 -17 2.012030505102161E13 -2.012030504978839E13 -18 2.012030606137799E13 -2.012030605963401E13 -19 2.012030707184016E13 -2.012030706937384E13 -20 2.012030808245194E13 -2.012030807896406E13 -21 2.0120309093275293E13 -2.0120309088342707E13 -22 2.012031010439786E13 -2.012031009742214E13 -23 2.0120311115943574E13 -2.0120311106078426E13 -24 2.012031212808771E13 -2.012031211413629E13 +13 20120301010155.29 -20120301009846.71 +14 20120302020320.09 -20120302019883.91 +15 20120303030511.36 -20120303029894.64 +16 20120304040740.03 -20120304039867.97 +17 20120305051021.61 -20120305049788.39 +18 20120306061377.99 -20120306059634.01 +19 20120307071840.16 -20120307069373.84 +20 20120308082451.94 -20120308078964.06 +21 20120309093275.29 -20120309088342.71 +22 20120310104397.86 -20120310097422.14 +23 20120311115943.57 -20120311106078.43 +24 20120312128087.71 -20120312114136.29 -- !sql_test_Char_DateTimeV2_notn_0 -- 1 \N \N @@ -3643,18 +3643,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101015529E13 -2.012030100984671E13 -14 2.0120302020320094E13 -2.0120302019883906E13 -15 2.012030303051136E13 -2.012030302989464E13 -16 2.012030404074003E13 -2.012030403986797E13 -17 2.012030505102161E13 -2.012030504978839E13 -18 2.012030606137799E13 -2.012030605963401E13 -19 2.012030707184016E13 -2.012030706937384E13 -20 2.012030808245194E13 -2.012030807896406E13 -21 2.0120309093275293E13 -2.0120309088342707E13 -22 2.012031010439786E13 -2.012031009742214E13 -23 2.0120311115943574E13 -2.0120311106078426E13 -24 2.012031212808771E13 -2.012031211413629E13 +13 20120301010155.29 -20120301009846.71 +14 20120302020320.09 -20120302019883.91 +15 20120303030511.36 -20120303029894.64 +16 20120304040740.03 -20120304039867.97 +17 20120305051021.61 -20120305049788.39 +18 20120306061377.99 -20120306059634.01 +19 20120307071840.16 -20120307069373.84 +20 20120308082451.94 -20120308078964.06 +21 20120309093275.29 -20120309088342.71 +22 20120310104397.86 -20120310097422.14 +23 20120311115943.57 -20120311106078.43 +24 20120312128087.71 -20120312114136.29 -- !sql_test_Char_DateTimeV2_1 -- \N \N \N \N @@ -3670,18 +3670,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341122532044E15 7.668324640039385E-12 154.289 -14 4.3881171487721255E15 1.0839499316764946E-11 218.094 -15 6.204276522090366E15 1.5325763212269516E-11 308.359 -16 8.773116531605874E15 2.16712927959021E-11 436.033 -17 1.2406341056520126E16 3.064605623300867E-11 616.608 -18 1.7544685561394568E16 4.3338754260384773E-11 871.989 -19 2.48115779874968E16 6.128937275522393E-11 1233.161 -20 3.5088610074269912E16 8.667561117874462E-11 1743.94 -21 4.9622597588807688E16 1.2257734157407194E-10 2466.294 -22 7.0176824788559952E16 1.7335021093150306E-10 3487.86 -23 9.9244923458083968E16 2.451539627188274E-10 4932.574 -24 1.40353462466362192E17 3.4669989004198756E-10 6975.71 +13 3104341122532044 7.668324640039385e-12 154.289 +14 4388117148772126 1.083949931676495e-11 218.094 +15 6204276522090366 1.532576321226952e-11 308.359 +16 8773116531605874 2.16712927959021e-11 436.033 +17 1.240634105652013e+16 3.064605623300867e-11 616.6079999999999 +18 1.754468556139457e+16 4.333875426038477e-11 871.989 +19 2.48115779874968e+16 6.128937275522393e-11 1233.161 +20 3.508861007426991e+16 8.667561117874462e-11 1743.94 +21 4.962259758880769e+16 1.225773415740719e-10 2466.294 +22 7.017682478855995e+16 1.733502109315031e-10 3487.86 +23 9.924492345808397e+16 2.451539627188274e-10 4932.574 +24 1.403534624663622e+17 3.466998900419876e-10 6975.71 -- !sql_test_Char_DateTimeV2_notn_1 -- 1 \N \N \N @@ -3696,18 +3696,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.104341122532044E15 7.668324640039385E-12 154.289 -14 4.3881171487721255E15 1.0839499316764946E-11 218.094 -15 6.204276522090366E15 1.5325763212269516E-11 308.359 -16 8.773116531605874E15 2.16712927959021E-11 436.033 -17 1.2406341056520126E16 3.064605623300867E-11 616.608 -18 1.7544685561394568E16 4.3338754260384773E-11 871.989 -19 2.48115779874968E16 6.128937275522393E-11 1233.161 -20 3.5088610074269912E16 8.667561117874462E-11 1743.94 -21 4.9622597588807688E16 1.2257734157407194E-10 2466.294 -22 7.0176824788559952E16 1.7335021093150306E-10 3487.86 -23 9.9244923458083968E16 2.451539627188274E-10 4932.574 -24 1.40353462466362192E17 3.4669989004198756E-10 6975.71 +13 3104341122532044 7.668324640039385e-12 154.289 +14 4388117148772126 1.083949931676495e-11 218.094 +15 6204276522090366 1.532576321226952e-11 308.359 +16 8773116531605874 2.16712927959021e-11 436.033 +17 1.240634105652013e+16 3.064605623300867e-11 616.6079999999999 +18 1.754468556139457e+16 4.333875426038477e-11 871.989 +19 2.48115779874968e+16 6.128937275522393e-11 1233.161 +20 3.508861007426991e+16 8.667561117874462e-11 1743.94 +21 4.962259758880769e+16 1.225773415740719e-10 2466.294 +22 7.017682478855995e+16 1.733502109315031e-10 3487.86 +23 9.924492345808397e+16 2.451539627188274e-10 4932.574 +24 1.403534624663622e+17 3.466998900419876e-10 6975.71 -- !sql_test_Char_DateTimeV2_2 -- \N \N @@ -3833,7 +3833,7 @@ 14 218.094 218.094 15 308.359 308.359 16 436.033 436.033 -17 616.608 616.608 +17 616.6079999999999 616.6079999999999 18 871.989 871.989 19 1233.161 1233.161 20 1744.94 1742.94 @@ -3859,7 +3859,7 @@ 14 218.094 218.094 15 308.359 308.359 16 436.033 436.033 -17 616.608 616.608 +17 616.6079999999999 616.6079999999999 18 871.989 871.989 19 1233.161 1233.161 20 1744.94 1742.94 @@ -3882,15 +3882,15 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 1743.94 1743.94 0.9400000000000546 -21 2466.294 2466.294 0.29399999999986903 +21 2466.294 2466.294 0.293999999999869 22 3487.86 3487.86 0.8600000000001273 23 4932.574 4932.574 0.5739999999996144 24 6975.71 6975.71 0.7100000000000364 @@ -3908,15 +3908,15 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 1743.94 1743.94 0.9400000000000546 -21 2466.294 2466.294 0.29399999999986903 +21 2466.294 2466.294 0.293999999999869 22 3487.86 3487.86 0.8600000000001273 23 4932.574 4932.574 0.5739999999996144 24 6975.71 6975.71 0.7100000000000364 @@ -4094,18 +4094,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2319.121 2319.121 0.12100000000009459 +13 2319.121 2319.121 0.1210000000000946 14 6556.164 1639.041 0.08199999999987995 -15 13904.223 1544.9136666666666 2.7409999999999854 -16 26214.752 1638.422 1.6880000000001019 -17 46338.649999999994 1853.5459999999998 2.7299999999995634 -18 78636.822 2184.356166666667 2.1370000000006257 +15 13904.223 1544.913666666667 2.740999999999985 +16 26214.752 1638.422 1.688000000000102 +17 46338.64999999999 1853.546 2.729999999999563 +18 78636.822 2184.356166666667 2.137000000000626 19 129742.095 2647.797857142857 5.584999999999127 20 209693.232 3276.45675 3.653999999998632 21 333618.579 4118.747888888889 6.730999999999767 -22 524229.99000000005 5242.2999 2.9990000000034343 +22 524229.99 5242.2999 2.999000000003434 23 815509.6730000001 6739.749363636364 8.243000000002212 -24 1258150.116 8737.153583333333 1.8429999999934807 +24 1258150.116 8737.153583333333 1.842999999993481 -- !sql_test_Varchar_TinyInt_notn_1 -- 1 \N \N \N @@ -4120,18 +4120,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2319.121 2319.121 0.12100000000009459 +13 2319.121 2319.121 0.1210000000000946 14 6556.164 1639.041 0.08199999999987995 -15 13904.223 1544.9136666666666 2.7409999999999854 -16 26214.752 1638.422 1.6880000000001019 -17 46338.649999999994 1853.5459999999998 2.7299999999995634 -18 78636.822 2184.356166666667 2.1370000000006257 +15 13904.223 1544.913666666667 2.740999999999985 +16 26214.752 1638.422 1.688000000000102 +17 46338.64999999999 1853.546 2.729999999999563 +18 78636.822 2184.356166666667 2.137000000000626 19 129742.095 2647.797857142857 5.584999999999127 20 209693.232 3276.45675 3.653999999998632 21 333618.579 4118.747888888889 6.730999999999767 -22 524229.99000000005 5242.2999 2.9990000000034343 +22 524229.99 5242.2999 2.999000000003434 23 815509.6730000001 6739.749363636364 8.243000000002212 -24 1258150.116 8737.153583333333 1.8429999999934807 +24 1258150.116 8737.153583333333 1.842999999993481 -- !sql_test_Varchar_TinyInt_2 -- \N \N @@ -4264,7 +4264,7 @@ 21 39628.731 34508.731 22 57542.999 47302.999 23 84377.243 63897.243 -24 125325.843 84365.843 +24 125325.843 84365.84299999999 -- !sql_test_Varchar_SmallInt_notn_0 -- 1 \N \N @@ -4290,7 +4290,7 @@ 21 39628.731 34508.731 22 57542.999 47302.999 23 84377.243 63897.243 -24 125325.843 84365.843 +24 125325.843 84365.84299999999 -- !sql_test_Varchar_SmallInt_1 -- \N \N \N \N @@ -4308,16 +4308,16 @@ 12 \N \N \N 13 23191.21 231.9121 9.121000000000095 14 65561.64 163.9041 18.08199999999988 -15 185389.64 115.868525 34.740999999999985 +15 185389.64 115.868525 34.74099999999999 16 524295.04 81.9211 73.6880000000001 -17 1482836.7999999998 57.923312499999994 147.72999999999956 -18 4193963.8400000003 40.956678125 306.1370000000006 -19 1.1862134399999999E7 28.9602890625 614.5849999999991 -20 3.3550917119999997E7 20.4778546875 611.6539999999986 -21 9.489595136E7 14.479973046875 1228.7309999999998 -22 2.6840575488000003E8 10.2388669921875 1222.9990000000034 -23 7.5916536832E8 7.23996513671875 2457.243000000002 -24 2.1472428646399999E9 5.119425927734374 2445.8429999999935 +17 1482836.8 57.92331249999999 147.7299999999996 +18 4193963.84 40.956678125 306.1370000000006 +19 11862134.4 28.9602890625 614.5849999999991 +20 33550917.12 20.4778546875 611.6539999999986 +21 94895951.36 14.479973046875 1228.731 +22 268405754.88 10.2388669921875 1222.999000000003 +23 759165368.3200001 7.23996513671875 2457.243000000002 +24 2147242864.64 5.119425927734374 2445.842999999993 -- !sql_test_Varchar_SmallInt_notn_1 -- 1 \N \N \N @@ -4334,16 +4334,16 @@ 12 \N \N \N 13 23191.21 231.9121 9.121000000000095 14 65561.64 163.9041 18.08199999999988 -15 185389.64 115.868525 34.740999999999985 +15 185389.64 115.868525 34.74099999999999 16 524295.04 81.9211 73.6880000000001 -17 1482836.7999999998 57.923312499999994 147.72999999999956 -18 4193963.8400000003 40.956678125 306.1370000000006 -19 1.1862134399999999E7 28.9602890625 614.5849999999991 -20 3.3550917119999997E7 20.4778546875 611.6539999999986 -21 9.489595136E7 14.479973046875 1228.7309999999998 -22 2.6840575488000003E8 10.2388669921875 1222.9990000000034 -23 7.5916536832E8 7.23996513671875 2457.243000000002 -24 2.1472428646399999E9 5.119425927734374 2445.8429999999935 +17 1482836.8 57.92331249999999 147.7299999999996 +18 4193963.84 40.956678125 306.1370000000006 +19 11862134.4 28.9602890625 614.5849999999991 +20 33550917.12 20.4778546875 611.6539999999986 +21 94895951.36 14.479973046875 1228.731 +22 268405754.88 10.2388669921875 1222.999000000003 +23 759165368.3200001 7.23996513671875 2457.243000000002 +24 2147242864.64 5.119425927734374 2445.842999999993 -- !sql_test_Varchar_SmallInt_2 -- \N \N @@ -4467,16 +4467,16 @@ 12 \N \N 13 26114.121 -21475.879 14 50823.082 -44266.918 -15 99679.741 -90410.259 +15 99679.74099999999 -90410.25900000001 16 196598.688 -183491.312 17 389312.73 -370777.27 18 773151.137 -746938.863 19 1538579.585 -1501510.415 20 3066256.654 -3013833.346 21 6117113.731 -6042976.269 -22 1.2212467999E7 -1.2107622001E7 -23 2.4394182243E7 -2.4245907757E7 -24 4.8744890843E7 -4.8535199157E7 +22 12212467.999 -12107622.001 +23 24394182.243 -24245907.757 +24 48744890.843 -48535199.157 -- !sql_test_Varchar_Integer_notn_0 -- 1 \N \N @@ -4493,16 +4493,16 @@ 12 \N \N 13 26114.121 -21475.879 14 50823.082 -44266.918 -15 99679.741 -90410.259 +15 99679.74099999999 -90410.25900000001 16 196598.688 -183491.312 17 389312.73 -370777.27 18 773151.137 -746938.863 19 1538579.585 -1501510.415 20 3066256.654 -3013833.346 21 6117113.731 -6042976.269 -22 1.2212467999E7 -1.2107622001E7 -23 2.4394182243E7 -2.4245907757E7 -24 4.8744890843E7 -4.8535199157E7 +22 12212467.999 -12107622.001 +23 24394182.243 -24245907.757 +24 48744890.843 -48535199.157 -- !sql_test_Varchar_Integer_1 -- \N \N \N \N @@ -4518,18 +4518,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.5183484195E7 0.09746253414582896 2319.121 -14 1.5585640869E8 0.06894693448312125 3278.082 -15 4.4050895834499997E8 0.04876364879793782 4634.741 -16 1.24549563596E9 0.0344849272540714 6553.688 -17 3.52215444785E9 0.024385875356865632 9267.73 -18 9.961253896165E9 0.017243896085100224 13106.137 -19 2.8173403256324997E10 0.01219344493090665 18534.585 -20 7.968460768443E10 0.008622126975094119 26211.654 -21 2.25379552572895E11 0.006096785632343182 37068.731 -22 6.374660268749551E11 0.004311085937593159 52422.999 -23 1.803021085935935E12 0.003048400732811144 74137.243 -24 5.099706521582935E12 0.0021555457648116897 104845.843 +13 55183484.195 0.09746253414582896 2319.121 +14 155856408.69 0.06894693448312125 3278.082 +15 440508958.345 0.04876364879793782 4634.741 +16 1245495635.96 0.0344849272540714 6553.688 +17 3522154447.85 0.02438587535686563 9267.73 +18 9961253896.165001 0.01724389608510022 13106.137 +19 28173403256.325 0.01219344493090665 18534.585 +20 79684607684.42999 0.008622126975094119 26211.654 +21 225379552572.895 0.006096785632343182 37068.731 +22 637466026874.9551 0.004311085937593159 52422.999 +23 1803021085935.935 0.003048400732811144 74137.243 +24 5099706521582.935 0.00215554576481169 104845.843 -- !sql_test_Varchar_Integer_notn_1 -- 1 \N \N \N @@ -4544,18 +4544,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.5183484195E7 0.09746253414582896 2319.121 -14 1.5585640869E8 0.06894693448312125 3278.082 -15 4.4050895834499997E8 0.04876364879793782 4634.741 -16 1.24549563596E9 0.0344849272540714 6553.688 -17 3.52215444785E9 0.024385875356865632 9267.73 -18 9.961253896165E9 0.017243896085100224 13106.137 -19 2.8173403256324997E10 0.01219344493090665 18534.585 -20 7.968460768443E10 0.008622126975094119 26211.654 -21 2.25379552572895E11 0.006096785632343182 37068.731 -22 6.374660268749551E11 0.004311085937593159 52422.999 -23 1.803021085935935E12 0.003048400732811144 74137.243 -24 5.099706521582935E12 0.0021555457648116897 104845.843 +13 55183484.195 0.09746253414582896 2319.121 +14 155856408.69 0.06894693448312125 3278.082 +15 440508958.345 0.04876364879793782 4634.741 +16 1245495635.96 0.0344849272540714 6553.688 +17 3522154447.85 0.02438587535686563 9267.73 +18 9961253896.165001 0.01724389608510022 13106.137 +19 28173403256.325 0.01219344493090665 18534.585 +20 79684607684.42999 0.008622126975094119 26211.654 +21 225379552572.895 0.006096785632343182 37068.731 +22 637466026874.9551 0.004311085937593159 52422.999 +23 1803021085935.935 0.003048400732811144 74137.243 +24 5099706521582.935 0.00215554576481169 104845.843 -- !sql_test_Varchar_Integer_2 -- \N \N @@ -4678,17 +4678,17 @@ 11 \N \N 12 \N \N 13 5356848.121 -5352209.879 -14 1.0701557082E7 -1.0695000918E7 -15 2.1390413741E7 -2.1381144259E7 -16 4.2767332688E7 -4.2754225312E7 -17 8.552004673E7 -8.550151127E7 -18 1.71023885137E8 -1.70997672863E8 -19 3.42029313585E8 -3.41992244415E8 -20 6.84036990654E8 -6.83984567346E8 -21 1.368047847731E9 -1.367973710269E9 -22 2.736063201999E9 -2.735958356001E9 -23 5.472084916243E9 -5.471936641757E9 -24 1.0944115624843E10 -1.0943905933157E10 +14 10701557.082 -10695000.918 +15 21390413.741 -21381144.259 +16 42767332.688 -42754225.312 +17 85520046.73 -85501511.27 +18 171023885.137 -170997672.863 +19 342029313.585 -341992244.415 +20 684036990.654 -683984567.346 +21 1368047847.731 -1367973710.269 +22 2736063201.999 -2735958356.001 +23 5472084916.243 -5471936641.757 +24 10944115624.843 -10943905933.157 -- !sql_test_Varchar_BigInt_notn_0 -- 1 \N \N @@ -4704,17 +4704,17 @@ 11 \N \N 12 \N \N 13 5356848.121 -5352209.879 -14 1.0701557082E7 -1.0695000918E7 -15 2.1390413741E7 -2.1381144259E7 -16 4.2767332688E7 -4.2754225312E7 -17 8.552004673E7 -8.550151127E7 -18 1.71023885137E8 -1.70997672863E8 -19 3.42029313585E8 -3.41992244415E8 -20 6.84036990654E8 -6.83984567346E8 -21 1.368047847731E9 -1.367973710269E9 -22 2.736063201999E9 -2.735958356001E9 -23 5.472084916243E9 -5.471936641757E9 -24 1.0944115624843E10 -1.0943905933157E10 +14 10701557.082 -10695000.918 +15 21390413.741 -21381144.259 +16 42767332.688 -42754225.312 +17 85520046.73 -85501511.27 +18 171023885.137 -170997672.863 +19 342029313.585 -341992244.415 +20 684036990.654 -683984567.346 +21 1368047847.731 -1367973710.269 +22 2736063201.999 -2735958356.001 +23 5472084916.243 -5471936641.757 +24 10944115624.843 -10943905933.157 -- !sql_test_Varchar_BigInt_1 -- \N \N \N \N @@ -4730,18 +4730,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.2417800649009E10 4.331139116064177E-4 2319.121 -14 3.5069835820878E10 3.064120874020952E-4 3278.082 -15 9.9117546748239E10 2.167207002372932E-4 4634.741 -16 2.80240804202952E11 1.5326399923630953E-4 6553.688 -17 7.924908118616699E11 1.0838083933254776E-4 9267.73 -18 2.241290698050723E12 7.66392450618566E-5 13106.137 -19 6.339027854291715E12 5.4192984952676005E-5 18534.585 -20 1.7929053871418465E13 3.83205276944912E-5 26211.654 -21 5.0710423571851445E13 2.7096812078554534E-5 37068.731 -22 1.4342989033150622E14 1.9160377364872948E-5 52422.999 -23 4.056797928213423E14 1.354844608210886E-5 74137.243 -24 1.1474340359253418E15 9.580202826662439E-6 104845.843 +13 12417800649.009 0.0004331139116064177 2319.121 +14 35069835820.878 0.0003064120874020952 3278.082 +15 99117546748.239 0.0002167207002372932 4634.741 +16 280240804202.952 0.0001532639992363095 6553.688 +17 792490811861.6699 0.0001083808393325478 9267.73 +18 2241290698050.723 7.66392450618566e-05 13106.137 +19 6339027854291.715 5.4192984952676e-05 18534.585 +20 17929053871418.46 3.83205276944912e-05 26211.654 +21 50710423571851.45 2.709681207855453e-05 37068.731 +22 143429890331506.2 1.916037736487295e-05 52422.999 +23 405679792821342.3 1.354844608210886e-05 74137.243 +24 1147434035925342 9.580202826662439e-06 104845.843 -- !sql_test_Varchar_BigInt_notn_1 -- 1 \N \N \N @@ -4756,18 +4756,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.2417800649009E10 4.331139116064177E-4 2319.121 -14 3.5069835820878E10 3.064120874020952E-4 3278.082 -15 9.9117546748239E10 2.167207002372932E-4 4634.741 -16 2.80240804202952E11 1.5326399923630953E-4 6553.688 -17 7.924908118616699E11 1.0838083933254776E-4 9267.73 -18 2.241290698050723E12 7.66392450618566E-5 13106.137 -19 6.339027854291715E12 5.4192984952676005E-5 18534.585 -20 1.7929053871418465E13 3.83205276944912E-5 26211.654 -21 5.0710423571851445E13 2.7096812078554534E-5 37068.731 -22 1.4342989033150622E14 1.9160377364872948E-5 52422.999 -23 4.056797928213423E14 1.354844608210886E-5 74137.243 -24 1.1474340359253418E15 9.580202826662439E-6 104845.843 +13 12417800649.009 0.0004331139116064177 2319.121 +14 35069835820.878 0.0003064120874020952 3278.082 +15 99117546748.239 0.0002167207002372932 4634.741 +16 280240804202.952 0.0001532639992363095 6553.688 +17 792490811861.6699 0.0001083808393325478 9267.73 +18 2241290698050.723 7.66392450618566e-05 13106.137 +19 6339027854291.715 5.4192984952676e-05 18534.585 +20 17929053871418.46 3.83205276944912e-05 26211.654 +21 50710423571851.45 2.709681207855453e-05 37068.731 +22 143429890331506.2 1.916037736487295e-05 52422.999 +23 405679792821342.3 1.354844608210886e-05 74137.243 +24 1147434035925342 9.580202826662439e-06 104845.843 -- !sql_test_Varchar_BigInt_2 -- \N \N @@ -4889,18 +4889,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07092964121E8 -1.07088325879E8 -14 2.13968923082E8 -2.13962366918E8 -15 4.27720279741E8 -4.27711010259E8 -16 8.55222198688E8 -8.55209091312E8 -17 1.71022491273E9 -1.71020637727E9 -18 3.420228751137E9 -3.420202538863E9 -19 6.840234179585E9 -6.840197110415E9 -20 1.3680241856654E10 -1.3680189433346E10 -21 2.7360252713731E10 -2.7360178576269E10 -22 5.4720268067999E10 -5.4720163222001E10 -23 1.09440289782243E11 -1.09440141507757E11 -24 2.18880320490843E11 -2.18880110799157E11 +13 107092964.121 -107088325.879 +14 213968923.082 -213962366.918 +15 427720279.741 -427711010.259 +16 855222198.688 -855209091.312 +17 1710224912.73 -1710206377.27 +18 3420228751.137 -3420202538.863 +19 6840234179.585 -6840197110.415 +20 13680241856.654 -13680189433.346 +21 27360252713.731 -27360178576.269 +22 54720268067.999 -54720163222.001 +23 109440289782.243 -109440141507.757 +24 218880320490.843 -218880110799.157 -- !sql_test_Varchar_LargeInt_notn_0 -- 1 \N \N @@ -4915,18 +4915,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07092964121E8 -1.07088325879E8 -14 2.13968923082E8 -2.13962366918E8 -15 4.27720279741E8 -4.27711010259E8 -16 8.55222198688E8 -8.55209091312E8 -17 1.71022491273E9 -1.71020637727E9 -18 3.420228751137E9 -3.420202538863E9 -19 6.840234179585E9 -6.840197110415E9 -20 1.3680241856654E10 -1.3680189433346E10 -21 2.7360252713731E10 -2.7360178576269E10 -22 5.4720268067999E10 -5.4720163222001E10 -23 1.09440289782243E11 -1.09440141507757E11 -24 2.18880320490843E11 -2.18880110799157E11 +13 107092964.121 -107088325.879 +14 213968923.082 -213962366.918 +15 427720279.741 -427711010.259 +16 855222198.688 -855209091.312 +17 1710224912.73 -1710206377.27 +18 3420228751.137 -3420202538.863 +19 6840234179.585 -6840197110.415 +20 13680241856.654 -13680189433.346 +21 27360252713.731 -27360178576.269 +22 54720268067.999 -54720163222.001 +23 109440289782.243 -109440141507.757 +24 218880320490.843 -218880110799.157 -- !sql_test_Varchar_LargeInt_1 -- \N \N \N \N @@ -4942,18 +4942,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.48356163723045E11 2.165568243612689E-5 2319.121 -14 7.0139692949289E11 1.5320599715902988E-5 3278.082 -15 1.982351236222945E12 1.0836033365111066E-5 4634.741 -16 5.60481651004876E12 7.663199379379923E-6 6553.688 -17 1.584981683963585E13 5.419041760666386E-6 9267.73 -18 4.482581481291337E13 3.83196218026773E-6 13106.137 -19 1.2678055829058231E14 2.709649221885021E-6 18534.585 -20 3.585810791321268E14 1.916026375620777E-6 26211.654 -21 1.0142084738464965E15 1.3548406007090153E-6 37068.731 -22 2.8685978100376195E15 9.580188671056544E-7 52422.999 -23 8.113595861245767E15 6.774223037031005E-7 74137.243 -24 2.2948680725321812E16 4.790101411908721E-7 104845.843 +13 248356163723.045 2.165568243612689e-05 2319.121 +14 701396929492.89 1.532059971590299e-05 3278.082 +15 1982351236222.945 1.083603336511107e-05 4634.741 +16 5604816510048.76 7.663199379379923e-06 6553.688 +17 15849816839635.85 5.419041760666386e-06 9267.73 +18 44825814812913.37 3.83196218026773e-06 13106.137 +19 126780558290582.3 2.709649221885021e-06 18534.585 +20 358581079132126.8 1.916026375620777e-06 26211.654 +21 1014208473846496 1.354840600709015e-06 37068.731 +22 2868597810037620 9.580188671056544e-07 52422.999 +23 8113595861245767 6.774223037031005e-07 74137.243 +24 2.294868072532181e+16 4.790101411908721e-07 104845.843 -- !sql_test_Varchar_LargeInt_notn_1 -- 1 \N \N \N @@ -4968,18 +4968,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.48356163723045E11 2.165568243612689E-5 2319.121 -14 7.0139692949289E11 1.5320599715902988E-5 3278.082 -15 1.982351236222945E12 1.0836033365111066E-5 4634.741 -16 5.60481651004876E12 7.663199379379923E-6 6553.688 -17 1.584981683963585E13 5.419041760666386E-6 9267.73 -18 4.482581481291337E13 3.83196218026773E-6 13106.137 -19 1.2678055829058231E14 2.709649221885021E-6 18534.585 -20 3.585810791321268E14 1.916026375620777E-6 26211.654 -21 1.0142084738464965E15 1.3548406007090153E-6 37068.731 -22 2.8685978100376195E15 9.580188671056544E-7 52422.999 -23 8.113595861245767E15 6.774223037031005E-7 74137.243 -24 2.2948680725321812E16 4.790101411908721E-7 104845.843 +13 248356163723.045 2.165568243612689e-05 2319.121 +14 701396929492.89 1.532059971590299e-05 3278.082 +15 1982351236222.945 1.083603336511107e-05 4634.741 +16 5604816510048.76 7.663199379379923e-06 6553.688 +17 15849816839635.85 5.419041760666386e-06 9267.73 +18 44825814812913.37 3.83196218026773e-06 13106.137 +19 126780558290582.3 2.709649221885021e-06 18534.585 +20 358581079132126.8 1.916026375620777e-06 26211.654 +21 1014208473846496 1.354840600709015e-06 37068.731 +22 2868597810037620 9.580188671056544e-07 52422.999 +23 8113595861245767 6.774223037031005e-07 74137.243 +24 2.294868072532181e+16 4.790101411908721e-07 104845.843 -- !sql_test_Varchar_LargeInt_2 -- \N \N @@ -5102,17 +5102,17 @@ 11 \N \N 12 \N \N 13 2319.22100000149 2319.02099999851 -14 3278.28200000298 3277.8819999970196 +14 3278.28200000298 3277.88199999702 15 4635.041000011921 4634.440999988079 16 6554.088000005961 6553.28799999404 17 9268.23 9267.23 -18 13106.737000023842 13105.536999976159 +18 13106.73700002384 13105.53699997616 19 18535.28499998808 18533.88500001192 -20 26212.45400001192 26210.853999988078 +20 26212.45400001192 26210.85399998808 21 37069.63099997616 37067.83100002384 22 52423.999 52421.999 23 74138.34300002384 74136.14299997616 -24 104847.04300004768 104844.64299995231 +24 104847.0430000477 104844.6429999523 -- !sql_test_Varchar_Float_notn_0 -- 1 \N \N @@ -5128,17 +5128,17 @@ 11 \N \N 12 \N \N 13 2319.22100000149 2319.02099999851 -14 3278.28200000298 3277.8819999970196 +14 3278.28200000298 3277.88199999702 15 4635.041000011921 4634.440999988079 16 6554.088000005961 6553.28799999404 17 9268.23 9267.23 -18 13106.737000023842 13105.536999976159 +18 13106.73700002384 13105.53699997616 19 18535.28499998808 18533.88500001192 -20 26212.45400001192 26210.853999988078 +20 26212.45400001192 26210.85399998808 21 37069.63099997616 37067.83100002384 22 52423.999 52421.999 23 74138.34300002384 74136.14299997616 -24 104847.04300004768 104844.64299995231 +24 104847.0430000477 104844.6429999523 -- !sql_test_Varchar_Float_1 -- \N \N \N \N @@ -5154,18 +5154,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 231.9121034557596 23191.20965442405 0.020965442717169935 -14 655.6164097694457 16390.409755763863 0.08195115399348651 -15 1390.4223552504181 15449.136052773156 0.040815833568558446 -16 2621.4752390630247 16384.219755856102 0.08790234375010186 -17 4633.865 18535.46 0.22999999999956344 -18 7863.6825124746565 21843.560798681545 0.3364792222982942 -19 12974.209279050528 26477.979022345866 0.6853156304350705 -20 20969.323512467265 32764.567011769905 0.45360942268234794 +13 231.9121034557596 23191.20965442405 0.02096544271716994 +14 655.6164097694457 16390.40975576386 0.08195115399348651 +15 1390.422355250418 15449.13605277316 0.04081583356855845 +16 2621.475239063025 16384.2197558561 0.08790234375010186 +17 4633.865 18535.46 0.2299999999995634 +18 7863.682512474657 21843.56079868154 0.3364792222982942 +19 12974.20927905053 26477.97902234587 0.6853156304350705 +20 20969.32351246726 32764.5670117699 0.4536094226823479 21 33361.85701621258 41187.47997998449 0.4319819746015128 22 52422.999 52422.999 0.9990000000034343 23 81550.96906756962 67397.49217556234 0.5413931303046411 -24 125815.01659943938 87371.53236150056 0.6388338260585442 +24 125815.0165994394 87371.53236150056 0.6388338260585442 -- !sql_test_Varchar_Float_notn_1 -- 1 \N \N \N @@ -5180,18 +5180,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 231.9121034557596 23191.20965442405 0.020965442717169935 -14 655.6164097694457 16390.409755763863 0.08195115399348651 -15 1390.4223552504181 15449.136052773156 0.040815833568558446 -16 2621.4752390630247 16384.219755856102 0.08790234375010186 -17 4633.865 18535.46 0.22999999999956344 -18 7863.6825124746565 21843.560798681545 0.3364792222982942 -19 12974.209279050528 26477.979022345866 0.6853156304350705 -20 20969.323512467265 32764.567011769905 0.45360942268234794 +13 231.9121034557596 23191.20965442405 0.02096544271716994 +14 655.6164097694457 16390.40975576386 0.08195115399348651 +15 1390.422355250418 15449.13605277316 0.04081583356855845 +16 2621.475239063025 16384.2197558561 0.08790234375010186 +17 4633.865 18535.46 0.2299999999995634 +18 7863.682512474657 21843.56079868154 0.3364792222982942 +19 12974.20927905053 26477.97902234587 0.6853156304350705 +20 20969.32351246726 32764.5670117699 0.4536094226823479 21 33361.85701621258 41187.47997998449 0.4319819746015128 22 52422.999 52422.999 0.9990000000034343 23 81550.96906756962 67397.49217556234 0.5413931303046411 -24 125815.01659943938 87371.53236150056 0.6388338260585442 +24 125815.0165994394 87371.53236150056 0.6388338260585442 -- !sql_test_Varchar_Float_2 -- \N \N @@ -5313,18 +5313,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2319.6454 2318.5966000000003 -14 3278.8235999999997 3277.3404 +13 2319.6454 2318.5966 +14 3278.8236 3277.3404 15 4635.7778 4633.7042 16 6555.1371 6552.2389 17 9269.761 9265.698999999999 -18 13108.9918 13103.282200000001 -19 18538.606799999998 18530.5632 -20 26217.3285 26205.979499999998 +18 13108.9918 13103.2822 +19 18538.6068 18530.5632 +20 26217.3285 26205.9795 21 37076.7451 37060.7169 -22 52434.323800000006 52411.6742 +22 52434.32380000001 52411.6742 23 74153.2516 74121.2344 -24 104868.477 104823.20899999999 +24 104868.477 104823.209 -- !sql_test_Varchar_Double_notn_0 -- 1 \N \N @@ -5339,18 +5339,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2319.6454 2318.5966000000003 -14 3278.8235999999997 3277.3404 +13 2319.6454 2318.5966 +14 3278.8236 3277.3404 15 4635.7778 4633.7042 16 6555.1371 6552.2389 17 9269.761 9265.698999999999 -18 13108.9918 13103.282200000001 -19 18538.606799999998 18530.5632 -20 26217.3285 26205.979499999998 +18 13108.9918 13103.2822 +19 18538.6068 18530.5632 +20 26217.3285 26205.9795 21 37076.7451 37060.7169 -22 52434.323800000006 52411.6742 +22 52434.32380000001 52411.6742 23 74153.2516 74121.2344 -24 104868.477 104823.20899999999 +24 104868.477 104823.209 -- !sql_test_Varchar_Double_1 -- \N \N \N \N @@ -5366,17 +5366,17 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1216.1470524 4422.427536231884 0.22420000000019513 -14 2431.0256112 4420.283171521035 0.20999999999971664 -15 4805.2994688 4470.2363040123455 0.24500000000023636 +13 1216.1470524 4422.427536231884 0.2242000000001951 +14 2431.0256112 4420.283171521035 0.2099999999997166 +15 4805.2994688 4470.236304012345 0.2450000000002364 16 9496.949280800001 4522.591953626389 0.8577999999998545 17 18822.75963 4563.13638601674 0.2769999999989312 -18 37415.399907600004 4590.912498248564 2.605000000000606 -19 74542.39395299999 4608.529762792779 2.1305999999999585 -20 148738.030623 4619.200634417129 1.1384999999981726 -21 297072.5171071 4625.439038694301 3.5185000000038684 +18 37415.3999076 4590.912498248564 2.605000000000606 +19 74542.39395299999 4608.529762792779 2.130599999999959 +20 148738.030623 4619.200634417129 1.138499999998173 +21 297072.5171071 4625.439038694301 3.518500000003868 22 593679.9790752 4629.044133229726 0.4998000000045657 -23 1186833.4682898002 4631.088477443374 1.4163999999963153 +23 1186833.4682898 4631.088477443374 1.416399999996315 24 2373080.810462 4632.22775470531 5.154999999991901 -- !sql_test_Varchar_Double_notn_1 -- @@ -5392,17 +5392,17 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1216.1470524 4422.427536231884 0.22420000000019513 -14 2431.0256112 4420.283171521035 0.20999999999971664 -15 4805.2994688 4470.2363040123455 0.24500000000023636 +13 1216.1470524 4422.427536231884 0.2242000000001951 +14 2431.0256112 4420.283171521035 0.2099999999997166 +15 4805.2994688 4470.236304012345 0.2450000000002364 16 9496.949280800001 4522.591953626389 0.8577999999998545 17 18822.75963 4563.13638601674 0.2769999999989312 -18 37415.399907600004 4590.912498248564 2.605000000000606 -19 74542.39395299999 4608.529762792779 2.1305999999999585 -20 148738.030623 4619.200634417129 1.1384999999981726 -21 297072.5171071 4625.439038694301 3.5185000000038684 +18 37415.3999076 4590.912498248564 2.605000000000606 +19 74542.39395299999 4608.529762792779 2.130599999999959 +20 148738.030623 4619.200634417129 1.138499999998173 +21 297072.5171071 4625.439038694301 3.518500000003868 22 593679.9790752 4629.044133229726 0.4998000000045657 -23 1186833.4682898002 4631.088477443374 1.4163999999963153 +23 1186833.4682898 4631.088477443374 1.416399999996315 24 2373080.810462 4632.22775470531 5.154999999991901 -- !sql_test_Varchar_Double_2 -- @@ -5525,18 +5525,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2343.516 2294.726 -14 3312.566 3243.598 -15 4683.497 4585.985 -16 6622.631 6484.745 -17 9365.224 9170.235999999999 -18 13244.011 12968.263 -19 18729.565 18339.605 -20 26487.394999999997 25935.913 -21 37458.686 36678.776 -22 52974.478 51871.520000000004 -23 74917.151 73357.335 -24 105948.79999999999 103742.886 +13 2343.516200000 2294.725800000 +14 3312.565700000 3243.598300000 +15 4683.496800000 4585.985200000 +16 6622.630900000 6484.745100000 +17 9365.224200000 9170.235800000 +18 13244.010600000 12968.263400000 +19 18729.564800000 18339.605200000 +20 26487.395000000 25935.913000000 +21 37458.686300000 36678.775700000 +22 52974.478000000 51871.520000000 +23 74917.151400000 73357.334600000 +24 105948.799500000 103742.886500000 -- !sql_test_Varchar_DecimalV2_notn_0 -- 1 \N \N @@ -5551,18 +5551,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2343.516 2294.726 -14 3312.566 3243.598 -15 4683.497 4585.985 -16 6622.631 6484.745 -17 9365.224 9170.235999999999 -18 13244.011 12968.263 -19 18729.565 18339.605 -20 26487.394999999997 25935.913 -21 37458.686 36678.776 -22 52974.478 51871.520000000004 -23 74917.151 73357.335 -24 105948.79999999999 103742.886 +13 2343.516200000 2294.725800000 +14 3312.565700000 3243.598300000 +15 4683.496800000 4585.985200000 +16 6622.630900000 6484.745100000 +17 9365.224200000 9170.235800000 +18 13244.010600000 12968.263400000 +19 18729.564800000 18339.605200000 +20 26487.395000000 25935.913000000 +21 37458.686300000 36678.775700000 +22 52974.478000000 51871.520000000 +23 74917.151400000 73357.334600000 +24 105948.799500000 103742.886500000 -- !sql_test_Varchar_DecimalV2_1 -- \N \N \N \N @@ -5578,18 +5578,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 56574.956795 95.06542324246773 1.596000000000135 -14 113041.379688 95.060955805591 2.1019999999997125 -15 225971.432196 95.0599105751087 2.920999999999964 -16 451830.911784 95.05951293097196 4.103000000000307 -17 903548.0686199999 95.05949084046198 5.799999999999585 -18 1806995.532738 95.0588000638264 8.10700000000108 -19 3613873.3833 95.05890347727973 11.485000000000099 -20 7227627.685613999 95.05896475315605 16.259000000000015 -21 1.4455136997104999E7 95.05899655088407 23.00600000000128 -22 2.8910183065521006E7 95.05892155458322 32.49399999999946 -23 5.7820228913644E7 95.05895951830216 45.98300000000074 -24 1.15640456457751E8 95.0588672087851 64.92799999998329 +13 56575.420619200 95.06464386436677 1.577000000 +14 113040.396263400 95.0617828133292 2.130500000 +15 225970.505247800 95.06030051809221 2.940000000 +16 451830.256415200 95.05965081248397 4.112500000 +17 903549.922166000 95.05929583503428 5.781000000 +18 1806990.290283200 95.0590758491836 8.145000000 +19 3613869.676383000 95.05900098369163 11.504000000 +20 7227627.685614000 95.05896475315605 16.259000000 +21 14455148.117724300 95.05892342019713 22.977500000 +22 28910183.065521000 95.05892155458322 32.494000000 +23 57820258.568541200 95.05891076439234 45.945000000 +24 115640404.034829500 95.05891030153954 64.975500000 -- !sql_test_Varchar_DecimalV2_notn_1 -- 1 \N \N \N @@ -5604,18 +5604,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 56574.956795 95.06542324246773 1.596000000000135 -14 113041.379688 95.060955805591 2.1019999999997125 -15 225971.432196 95.0599105751087 2.920999999999964 -16 451830.911784 95.05951293097196 4.103000000000307 -17 903548.0686199999 95.05949084046198 5.799999999999585 -18 1806995.532738 95.0588000638264 8.10700000000108 -19 3613873.3833 95.05890347727973 11.485000000000099 -20 7227627.685613999 95.05896475315605 16.259000000000015 -21 1.4455136997104999E7 95.05899655088407 23.00600000000128 -22 2.8910183065521006E7 95.05892155458322 32.49399999999946 -23 5.7820228913644E7 95.05895951830216 45.98300000000074 -24 1.15640456457751E8 95.0588672087851 64.92799999998329 +13 56575.420619200 95.06464386436677 1.577000000 +14 113040.396263400 95.0617828133292 2.130500000 +15 225970.505247800 95.06030051809221 2.940000000 +16 451830.256415200 95.05965081248397 4.112500000 +17 903549.922166000 95.05929583503428 5.781000000 +18 1806990.290283200 95.0590758491836 8.145000000 +19 3613869.676383000 95.05900098369163 11.504000000 +20 7227627.685614000 95.05896475315605 16.259000000 +21 14455148.117724300 95.05892342019713 22.977500000 +22 28910183.065521000 95.05892155458322 32.494000000 +23 57820258.568541200 95.05891076439234 45.945000000 +24 115640404.034829500 95.05891030153954 64.975500000 -- !sql_test_Varchar_DecimalV2_2 -- \N \N @@ -5741,14 +5741,14 @@ 14 3434.537 3121.627 15 4802.307 4467.175 16 6732.365 6375.011 -17 9457.518 9077.942 -18 13307.036 12905.238000000001 -19 18746.594999999998 18322.575 -20 26434.774999999998 25988.533 -21 37302.963 36834.498999999996 -22 52668.342000000004 52177.656 +17 9457.518 9077.941999999999 +18 13307.036 12905.238 +19 18746.595 18322.575 +20 26434.775 25988.533 +21 37302.963 36834.499 +22 52668.342 52177.656 23 74393.697 73880.789 -24 105113.408 104578.27799999999 +24 105113.408 104578.278 -- !sql_test_Varchar_Decimal32V3_notn_0 -- 1 \N \N @@ -5767,14 +5767,14 @@ 14 3434.537 3121.627 15 4802.307 4467.175 16 6732.365 6375.011 -17 9457.518 9077.942 -18 13307.036 12905.238000000001 -19 18746.594999999998 18322.575 -20 26434.774999999998 25988.533 -21 37302.963 36834.498999999996 -22 52668.342000000004 52177.656 +17 9457.518 9077.941999999999 +18 13307.036 12905.238 +19 18746.595 18322.575 +20 26434.775 25988.533 +21 37302.963 36834.499 +22 52668.342 52177.656 23 74393.697 73880.789 -24 105113.408 104578.27799999999 +24 105113.408 104578.278 -- !sql_test_Varchar_Decimal32V3_1 -- \N \N \N \N @@ -5790,18 +5790,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 337070.322624 15.95608349845883 138.96100000000018 -14 512872.31931000005 20.952235467067204 148.98199999999963 -15 776625.010406 27.659196973132975 110.45899999999992 -16 1170993.310776 36.67896819400371 121.31600000000037 -17 1758903.94124 48.832012561384275 157.90599999999904 -18 2633009.8171630003 65.23744269508559 47.70200000000057 -19 3929517.3658499997 87.42316400169803 89.71499999999992 -20 5848370.452134 117.47730603573845 106.49699999999754 -21 8682682.999592 158.2564764848526 60.074999999999875 -22 1.2861615843657E7 213.67228329318547 164.9400000000057 -23 1.9012792516322E7 289.0859296404033 22.036999999999978 -24 2.8053077982295E7 391.8518602956291 227.92799999999437 +13 337070.322624 15.95608349845883 138.9610000000002 +14 512872.31931 20.9522354670672 148.9819999999996 +15 776625.010406 27.65919697313297 110.4589999999999 +16 1170993.310776 36.67896819400371 121.3160000000004 +17 1758903.94124 48.83201256138427 157.905999999999 +18 2633009.817163 65.23744269508559 47.70200000000057 +19 3929517.36585 87.42316400169803 89.71499999999992 +20 5848370.452134 117.4773060357385 106.4969999999975 +21 8682682.999592001 158.2564764848526 60.07499999999987 +22 12861615.843657 213.6722832931855 164.9400000000057 +23 19012792.516322 289.0859296404033 22.03699999999998 +24 28053077.982295 391.8518602956291 227.9279999999944 -- !sql_test_Varchar_Decimal32V3_notn_1 -- 1 \N \N \N @@ -5816,18 +5816,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 337070.322624 15.95608349845883 138.96100000000018 -14 512872.31931000005 20.952235467067204 148.98199999999963 -15 776625.010406 27.659196973132975 110.45899999999992 -16 1170993.310776 36.67896819400371 121.31600000000037 -17 1758903.94124 48.832012561384275 157.90599999999904 -18 2633009.8171630003 65.23744269508559 47.70200000000057 -19 3929517.3658499997 87.42316400169803 89.71499999999992 -20 5848370.452134 117.47730603573845 106.49699999999754 -21 8682682.999592 158.2564764848526 60.074999999999875 -22 1.2861615843657E7 213.67228329318547 164.9400000000057 -23 1.9012792516322E7 289.0859296404033 22.036999999999978 -24 2.8053077982295E7 391.8518602956291 227.92799999999437 +13 337070.322624 15.95608349845883 138.9610000000002 +14 512872.31931 20.9522354670672 148.9819999999996 +15 776625.010406 27.65919697313297 110.4589999999999 +16 1170993.310776 36.67896819400371 121.3160000000004 +17 1758903.94124 48.83201256138427 157.905999999999 +18 2633009.817163 65.23744269508559 47.70200000000057 +19 3929517.36585 87.42316400169803 89.71499999999992 +20 5848370.452134 117.4773060357385 106.4969999999975 +21 8682682.999592001 158.2564764848526 60.07499999999987 +22 12861615.843657 213.6722832931855 164.9400000000057 +23 19012792.516322 289.0859296404033 22.03699999999998 +24 28053077.982295 391.8518602956291 227.9279999999944 -- !sql_test_Varchar_Decimal32V3_2 -- \N \N @@ -5949,18 +5949,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 16886.466660000002 -12248.22466 +13 16886.46666 -12248.22466 14 18956.53877 -12400.37477 -15 21424.308879999997 -12154.826879999999 -16 24454.366990000002 -11346.99099 -17 28279.520099999998 -9744.060099999999 +15 21424.30888 -12154.82688 +16 24454.36699 -11346.99099 +17 28279.5201 -9744.060099999999 18 33229.03821 -7016.764209999999 -19 39768.59732 -2699.4273200000025 +19 39768.59732 -2699.427320000003 20 48556.77743 3866.530569999999 -21 60524.965540000005 13612.496459999998 -22 76990.34465 27855.653350000004 +21 60524.96554 13612.49646 +22 76990.34465 27855.65335 23 99815.69976 48458.78624 -24 131635.41087 78056.27513 +24 131635.41087 78056.27512999999 -- !sql_test_Varchar_Decimal64V3_notn_0 -- 1 \N \N @@ -5975,18 +5975,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 16886.466660000002 -12248.22466 +13 16886.46666 -12248.22466 14 18956.53877 -12400.37477 -15 21424.308879999997 -12154.826879999999 -16 24454.366990000002 -11346.99099 -17 28279.520099999998 -9744.060099999999 +15 21424.30888 -12154.82688 +16 24454.36699 -11346.99099 +17 28279.5201 -9744.060099999999 18 33229.03821 -7016.764209999999 -19 39768.59732 -2699.4273200000025 +19 39768.59732 -2699.427320000003 20 48556.77743 3866.530569999999 -21 60524.965540000005 13612.496459999998 -22 76990.34465 27855.653350000004 +21 60524.96554 13612.49646 +22 76990.34465 27855.65335 23 99815.69976 48458.78624 -24 131635.41087 78056.27513 +24 131635.41087 78056.27512999999 -- !sql_test_Varchar_Decimal64V3_1 -- \N \N \N \N @@ -6002,18 +6002,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378343723436486E7 0.15919997054562923 2319.121 -14 5.139526692551514E7 0.20908192994303226 3278.082 -15 7.781529862571907E7 0.2760488556421382 4634.741 -16 1.1731546508861512E8 0.36611393364805545 6553.688 -17 1.7619613746347296E8 0.48747277090966834 9267.73 -18 2.6373350009572577E8 0.6513045441721373 13106.137 -19 3.935636062360872E8 0.8728724802774344 18534.585 -20 5.857026439344531E8 1.1730368857488114 3866.530569999999 -21 8.694928484361688E8 1.580335962994681 13612.496459999998 -22 1.2878939364426043E9 2.133848717189356 3288.307700000005 -23 1.9037299886811128E9 2.887137793867952 22780.32948 -24 2.808774826935864E9 3.9136817551062646 24477.139389999997 +13 33783437.23436486 0.1591999705456292 2319.121 +14 51395266.92551514 0.2090819299430323 3278.082 +15 77815298.62571907 0.2760488556421382 4634.741 +16 117315465.0886151 0.3661139336480554 6553.688 +17 176196137.463473 0.4874727709096683 9267.73 +18 263733500.0957258 0.6513045441721373 13106.137 +19 393563606.2360872 0.8728724802774344 18534.585 +20 585702643.9344531 1.173036885748811 3866.530569999999 +21 869492848.4361688 1.580335962994681 13612.49646 +22 1287893936.442604 2.133848717189356 3288.307700000005 +23 1903729988.681113 2.887137793867952 22780.32948 +24 2808774826.935864 3.913681755106265 24477.13939 -- !sql_test_Varchar_Decimal64V3_notn_1 -- 1 \N \N \N @@ -6028,18 +6028,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378343723436486E7 0.15919997054562923 2319.121 -14 5.139526692551514E7 0.20908192994303226 3278.082 -15 7.781529862571907E7 0.2760488556421382 4634.741 -16 1.1731546508861512E8 0.36611393364805545 6553.688 -17 1.7619613746347296E8 0.48747277090966834 9267.73 -18 2.6373350009572577E8 0.6513045441721373 13106.137 -19 3.935636062360872E8 0.8728724802774344 18534.585 -20 5.857026439344531E8 1.1730368857488114 3866.530569999999 -21 8.694928484361688E8 1.580335962994681 13612.496459999998 -22 1.2878939364426043E9 2.133848717189356 3288.307700000005 -23 1.9037299886811128E9 2.887137793867952 22780.32948 -24 2.808774826935864E9 3.9136817551062646 24477.139389999997 +13 33783437.23436486 0.1591999705456292 2319.121 +14 51395266.92551514 0.2090819299430323 3278.082 +15 77815298.62571907 0.2760488556421382 4634.741 +16 117315465.0886151 0.3661139336480554 6553.688 +17 176196137.463473 0.4874727709096683 9267.73 +18 263733500.0957258 0.6513045441721373 13106.137 +19 393563606.2360872 0.8728724802774344 18534.585 +20 585702643.9344531 1.173036885748811 3866.530569999999 +21 869492848.4361688 1.580335962994681 13612.49646 +22 1287893936.442604 2.133848717189356 3288.307700000005 +23 1903729988.681113 2.887137793867952 22780.32948 +24 2808774826.935864 3.913681755106265 24477.13939 -- !sql_test_Varchar_Decimal64V3_2 -- \N \N @@ -6161,18 +6161,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568133046667698E8 -1.45676692224677E8 -14 1.56793400538788E8 -1.5678684437478802E8 -15 1.67905868308899E8 -1.67896598826899E8 -16 1.7901889836701E8 -1.7900579099101E8 -17 1.9013272352012098E8 -1.90114188060121E8 -18 2.01247673038232E8 -2.01221460764232E8 -19 2.12364212597343E8 -2.1232714342734298E8 -20 2.2348300077745402E8 -2.23430577469454E8 -21 2.34604968965565E8 -2.3453083150356498E8 -22 2.4573143434467602E8 -2.45626588346676E8 -23 2.56864259699787E8 -2.56715985213787E8 -24 2.68006079410898E8 -2.67796387724898E8 +13 145681330.466677 -145676692.224677 +14 156793400.538788 -156786844.374788 +15 167905868.308899 -167896598.826899 +16 179018898.36701 -179005790.99101 +17 190132723.520121 -190114188.060121 +18 201247673.038232 -201221460.764232 +19 212364212.597343 -212327143.427343 +20 223483000.777454 -223430577.469454 +21 234604968.965565 -234530831.503565 +22 245731434.344676 -245626588.346676 +23 256864259.699787 -256715985.213787 +24 268006079.410898 -267796387.724898 -- !sql_test_Varchar_Decimal128V3_notn_0 -- 1 \N \N @@ -6187,18 +6187,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568133046667698E8 -1.45676692224677E8 -14 1.56793400538788E8 -1.5678684437478802E8 -15 1.67905868308899E8 -1.67896598826899E8 -16 1.7901889836701E8 -1.7900579099101E8 -17 1.9013272352012098E8 -1.90114188060121E8 -18 2.01247673038232E8 -2.01221460764232E8 -19 2.12364212597343E8 -2.1232714342734298E8 -20 2.2348300077745402E8 -2.23430577469454E8 -21 2.34604968965565E8 -2.3453083150356498E8 -22 2.4573143434467602E8 -2.45626588346676E8 -23 2.56864259699787E8 -2.56715985213787E8 -24 2.68006079410898E8 -2.67796387724898E8 +13 145681330.466677 -145676692.224677 +14 156793400.538788 -156786844.374788 +15 167905868.308899 -167896598.826899 +16 179018898.36701 -179005790.99101 +17 190132723.520121 -190114188.060121 +18 201247673.038232 -201221460.764232 +19 212364212.597343 -212327143.427343 +20 223483000.777454 -223430577.469454 +21 234604968.965565 -234530831.503565 +22 245731434.344676 -245626588.346676 +23 256864259.699787 -256715985.213787 +24 268006079.410898 -267796387.724898 -- !sql_test_Varchar_Decimal128V3_1 -- \N \N \N \N @@ -6214,18 +6214,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378472544709978E11 1.5919390024531627E-5 2319.121 -14 5.139708782033925E11 2.0907452259331278E-5 3278.082 -15 7.781787311677178E11 2.7603972296759323E-5 4634.741 -16 1.1731910551746917E12 3.661025730796123E-5 6553.688 -17 1.7620128549297778E12 4.874585285379375E-5 9267.73 -18 2.6374078029432124E12 6.512865658131501E-5 13106.137 -19 3.935739018502402E12 8.728496465523843E-5 18534.585 -20 5.857172040454939E12 1.1730077256913751E-4 26211.654 -21 8.695134395029927E12 1.580298538842345E-4 37068.731 -22 1.2879230566095363E13 2.13380047049439E-4 52422.999 -23 1.9037711708578574E13 2.8870753396083575E-4 74137.243 -24 2.8088330674166164E13 3.9136006058526575E-4 104845.843 +13 337847254470.9978 1.591939002453163e-05 2319.121 +14 513970878203.3925 2.090745225933128e-05 3278.082 +15 778178731167.7178 2.760397229675932e-05 4634.741 +16 1173191055174.692 3.661025730796123e-05 6553.688 +17 1762012854929.778 4.874585285379375e-05 9267.73 +18 2637407802943.212 6.512865658131501e-05 13106.137 +19 3935739018502.402 8.728496465523843e-05 18534.585 +20 5857172040454.939 0.0001173007725691375 26211.654 +21 8695134395029.927 0.0001580298538842345 37068.731 +22 12879230566095.36 0.000213380047049439 52422.999 +23 19037711708578.57 0.0002887075339608358 74137.243 +24 28088330674166.16 0.0003913600605852657 104845.843 -- !sql_test_Varchar_Decimal128V3_notn_1 -- 1 \N \N \N @@ -6240,18 +6240,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 3.378472544709978E11 1.5919390024531627E-5 2319.121 -14 5.139708782033925E11 2.0907452259331278E-5 3278.082 -15 7.781787311677178E11 2.7603972296759323E-5 4634.741 -16 1.1731910551746917E12 3.661025730796123E-5 6553.688 -17 1.7620128549297778E12 4.874585285379375E-5 9267.73 -18 2.6374078029432124E12 6.512865658131501E-5 13106.137 -19 3.935739018502402E12 8.728496465523843E-5 18534.585 -20 5.857172040454939E12 1.1730077256913751E-4 26211.654 -21 8.695134395029927E12 1.580298538842345E-4 37068.731 -22 1.2879230566095363E13 2.13380047049439E-4 52422.999 -23 1.9037711708578574E13 2.8870753396083575E-4 74137.243 -24 2.8088330674166164E13 3.9136006058526575E-4 104845.843 +13 337847254470.9978 1.591939002453163e-05 2319.121 +14 513970878203.3925 2.090745225933128e-05 3278.082 +15 778178731167.7178 2.760397229675932e-05 4634.741 +16 1173191055174.692 3.661025730796123e-05 6553.688 +17 1762012854929.778 4.874585285379375e-05 9267.73 +18 2637407802943.212 6.512865658131501e-05 13106.137 +19 3935739018502.402 8.728496465523843e-05 18534.585 +20 5857172040454.939 0.0001173007725691375 26211.654 +21 8695134395029.927 0.0001580298538842345 37068.731 +22 12879230566095.36 0.000213380047049439 52422.999 +23 19037711708578.57 0.0002887075339608358 74137.243 +24 28088330674166.16 0.0003913600605852657 104845.843 -- !sql_test_Varchar_Decimal128V3_2 -- \N \N @@ -6373,16 +6373,16 @@ 10 \N \N 11 \N \N 12 \N \N -13 2473.41 2164.8320000000003 +13 2473.41 2164.832 14 3496.176 3059.988 15 4943.1 4326.382 -16 6989.7210000000005 6117.655 -17 9884.338 8651.122 -18 13978.126 12234.148000000001 +16 6989.721 6117.655 +17 9884.338 8651.121999999999 +18 13978.126 12234.148 19 19767.746 17301.424 -20 27955.593999999997 24467.714 +20 27955.594 24467.714 21 39535.025 34602.437 -22 55910.859000000004 48935.139 +22 55910.859 48935.139 23 79069.817 69204.66900000001 24 111821.553 97870.13299999999 @@ -6399,16 +6399,16 @@ 10 \N \N 11 \N \N 12 \N \N -13 2473.41 2164.8320000000003 +13 2473.41 2164.832 14 3496.176 3059.988 15 4943.1 4326.382 -16 6989.7210000000005 6117.655 -17 9884.338 8651.122 -18 13978.126 12234.148000000001 +16 6989.721 6117.655 +17 9884.338 8651.121999999999 +18 13978.126 12234.148 19 19767.746 17301.424 -20 27955.593999999997 24467.714 +20 27955.594 24467.714 21 39535.025 34602.437 -22 55910.859000000004 48935.139 +22 55910.859 48935.139 23 79069.817 69204.66900000001 24 111821.553 97870.13299999999 @@ -6426,18 +6426,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 357814.859969 15.031019709765442 4.786000000000286 -14 714930.0157079999 15.030592313406146 6.671999999999969 -15 1429164.100019 15.030341258079059 9.356000000000279 -16 2857624.2397040003 15.030256884226652 13.19299999999987 -17 5714556.45984 15.030181249675646 18.610000000000355 -18 1.1428407296493001E7 15.03016322453609 26.302000000000135 -19 2.2856127373185E7 15.030142049578277 37.169999999998254 -20 4.571155187676E7 15.030135211073775 52.553999999997814 -21 9.142238885291399E7 15.030134687916364 74.32100000000173 -22 1.8284408129214E8 15.030132803495553 105.09900000000152 -23 3.65687437253482E8 15.030132948841722 148.633000000008 -24 7.313741954735299E8 15.03013212991939 210.19299999999294 +13 357814.859969 15.03101970976544 4.786000000000286 +14 714930.0157079999 15.03059231340615 6.671999999999969 +15 1429164.100019 15.03034125807906 9.356000000000279 +16 2857624.239704 15.03025688422665 13.19299999999987 +17 5714556.45984 15.03018124967565 18.61000000000035 +18 11428407.296493 15.03016322453609 26.30200000000013 +19 22856127.373185 15.03014204957828 37.16999999999825 +20 45711551.87676 15.03013521107377 52.55399999999781 +21 91422388.85291399 15.03013468791636 74.32100000000173 +22 182844081.29214 15.03013280349555 105.0990000000015 +23 365687437.253482 15.03013294884172 148.633000000008 +24 731374195.4735299 15.03013212991939 210.1929999999929 -- !sql_test_Varchar_Char_notn_1 -- 1 \N \N \N @@ -6452,18 +6452,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 357814.859969 15.031019709765442 4.786000000000286 -14 714930.0157079999 15.030592313406146 6.671999999999969 -15 1429164.100019 15.030341258079059 9.356000000000279 -16 2857624.2397040003 15.030256884226652 13.19299999999987 -17 5714556.45984 15.030181249675646 18.610000000000355 -18 1.1428407296493001E7 15.03016322453609 26.302000000000135 -19 2.2856127373185E7 15.030142049578277 37.169999999998254 -20 4.571155187676E7 15.030135211073775 52.553999999997814 -21 9.142238885291399E7 15.030134687916364 74.32100000000173 -22 1.8284408129214E8 15.030132803495553 105.09900000000152 -23 3.65687437253482E8 15.030132948841722 148.633000000008 -24 7.313741954735299E8 15.03013212991939 210.19299999999294 +13 357814.859969 15.03101970976544 4.786000000000286 +14 714930.0157079999 15.03059231340615 6.671999999999969 +15 1429164.100019 15.03034125807906 9.356000000000279 +16 2857624.239704 15.03025688422665 13.19299999999987 +17 5714556.45984 15.03018124967565 18.61000000000035 +18 11428407.296493 15.03016322453609 26.30200000000013 +19 22856127.373185 15.03014204957828 37.16999999999825 +20 45711551.87676 15.03013521107377 52.55399999999781 +21 91422388.85291399 15.03013468791636 74.32100000000173 +22 182844081.29214 15.03013280349555 105.0990000000015 +23 365687437.253482 15.03013294884172 148.633000000008 +24 731374195.4735299 15.03013212991939 210.1929999999929 -- !sql_test_Varchar_Char_2 -- \N \N @@ -6585,18 +6585,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 4638.242 0.0 -14 6556.164 0.0 -15 9269.482 0.0 -16 13107.376 0.0 -17 18535.46 0.0 -18 26212.274 0.0 -19 37069.17 0.0 -20 52423.308 0.0 -21 74137.462 0.0 -22 104845.998 0.0 -23 148274.486 0.0 -24 209691.686 0.0 +13 4638.242 0 +14 6556.164 0 +15 9269.482 0 +16 13107.376 0 +17 18535.46 0 +18 26212.274 0 +19 37069.17 0 +20 52423.308 0 +21 74137.462 0 +22 104845.998 0 +23 148274.486 0 +24 209691.686 0 -- !sql_test_Varchar_Varchar_notn_0 -- 1 \N \N @@ -6611,18 +6611,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 4638.242 0.0 -14 6556.164 0.0 -15 9269.482 0.0 -16 13107.376 0.0 -17 18535.46 0.0 -18 26212.274 0.0 -19 37069.17 0.0 -20 52423.308 0.0 -21 74137.462 0.0 -22 104845.998 0.0 -23 148274.486 0.0 -24 209691.686 0.0 +13 4638.242 0 +14 6556.164 0 +15 9269.482 0 +16 13107.376 0 +17 18535.46 0 +18 26212.274 0 +19 37069.17 0 +20 52423.308 0 +21 74137.462 0 +22 104845.998 0 +23 148274.486 0 +24 209691.686 0 -- !sql_test_Varchar_Varchar_1 -- \N \N \N \N @@ -6638,18 +6638,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5378322.212641001 1.0 0.0 -14 1.0745821598723998E7 1.0 0.0 -15 2.1480824137081E7 1.0 0.0 -16 4.2950826401344E7 1.0 0.0 -17 8.58908193529E7 1.0 0.0 -18 1.7177082706276903E8 1.0 0.0 -19 3.43530841122225E8 1.0 0.0 -20 6.870508054157159E8 1.0 0.0 -21 1.374090817950361E9 1.0 0.0 -22 2.748170824154001E9 1.0 0.0 -23 5.496330799641049E9 1.0 0.0 -24 1.0992650794380648E10 1.0 0.0 +13 5378322.212641001 1 0 +14 10745821.598724 1 0 +15 21480824.137081 1 0 +16 42950826.401344 1 0 +17 85890819.3529 1 0 +18 171770827.062769 1 0 +19 343530841.122225 1 0 +20 687050805.4157159 1 0 +21 1374090817.950361 1 0 +22 2748170824.154001 1 0 +23 5496330799.641049 1 0 +24 10992650794.38065 1 0 -- !sql_test_Varchar_Varchar_notn_1 -- 1 \N \N \N @@ -6664,18 +6664,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5378322.212641001 1.0 0.0 -14 1.0745821598723998E7 1.0 0.0 -15 2.1480824137081E7 1.0 0.0 -16 4.2950826401344E7 1.0 0.0 -17 8.58908193529E7 1.0 0.0 -18 1.7177082706276903E8 1.0 0.0 -19 3.43530841122225E8 1.0 0.0 -20 6.870508054157159E8 1.0 0.0 -21 1.374090817950361E9 1.0 0.0 -22 2.748170824154001E9 1.0 0.0 -23 5.496330799641049E9 1.0 0.0 -24 1.0992650794380648E10 1.0 0.0 +13 5378322.212641001 1 0 +14 10745821.598724 1 0 +15 21480824.137081 1 0 +16 42950826.401344 1 0 +17 85890819.3529 1 0 +18 171770827.062769 1 0 +19 343530841.122225 1 0 +20 687050805.4157159 1 0 +21 1374090817.950361 1 0 +22 2748170824.154001 1 0 +23 5496330799.641049 1 0 +24 10992650794.38065 1 0 -- !sql_test_Varchar_Varchar_2 -- \N \N @@ -6797,13 +6797,13 @@ 10 \N \N 11 \N \N 12 \N \N -13 12923.137999999999 -8284.896 +13 12923.138 -8284.896000000001 14 18266.875 -11710.711 -15 25826.754 -16557.271999999997 -16 36519.943 -23412.567000000003 +15 25826.754 -16557.272 +16 36519.943 -23412.567 17 51643.742 -33108.28200000001 -18 73032.97899999999 -46820.704999999994 -19 103282.60200000001 -66213.432 +18 73032.97899999999 -46820.70499999999 +19 103282.602 -66213.432 20 146062.505 -93639.197 21 206562.762 -132425.3 22 292123.284 -187277.286 @@ -6823,13 +6823,13 @@ 10 \N \N 11 \N \N 12 \N \N -13 12923.137999999999 -8284.896 +13 12923.138 -8284.896000000001 14 18266.875 -11710.711 -15 25826.754 -16557.271999999997 -16 36519.943 -23412.567000000003 +15 25826.754 -16557.272 +16 36519.943 -23412.567 17 51643.742 -33108.28200000001 -18 73032.97899999999 -46820.704999999994 -19 103282.60200000001 -66213.432 +18 73032.97899999999 -46820.70499999999 +19 103282.602 -66213.432 20 146062.505 -93639.197 21 206562.762 -132425.3 22 292123.284 -187277.286 @@ -6850,18 +6850,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.4591998509057E7 0.2187021201493736 2319.121 -14 4.9134492535026E7 0.2187021997034718 3278.082 -15 9.821949152363299E7 0.21870225353297018 4634.741 -16 1.9638948579844E8 0.21870227027034242 6553.688 -17 3.9272943769276E8 0.2187022695764764 9267.73 -18 7.85409401229354E8 0.21870228035710612 13106.137 -19 1.5707693246679451E9 0.21870228538798728 18534.585 -20 3.141489038017554E9 0.21870227688245616 26211.654 -21 6.28292864124466E9 0.21870227984606727 37068.731 -22 1.2565807800854715E10 0.21870228064184405 52422.999 -23 2.513156596693834E10 0.2187022809032955 74137.243 -24 5.0263082560627815E10 0.21870228076682735 104845.843 +13 24591998.509057 0.2187021201493736 2319.121 +14 49134492.535026 0.2187021997034718 3278.082 +15 98219491.52363299 0.2187022535329702 4634.741 +16 196389485.79844 0.2187022702703424 6553.688 +17 392729437.69276 0.2187022695764764 9267.73 +18 785409401.229354 0.2187022803571061 13106.137 +19 1570769324.667945 0.2187022853879873 18534.585 +20 3141489038.017554 0.2187022768824562 26211.654 +21 6282928641.24466 0.2187022798460673 37068.731 +22 12565807800.85472 0.218702280641844 52422.999 +23 25131565966.93834 0.2187022809032955 74137.243 +24 50263082560.62782 0.2187022807668274 104845.843 -- !sql_test_Varchar_String_notn_1 -- 1 \N \N \N @@ -6876,18 +6876,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.4591998509057E7 0.2187021201493736 2319.121 -14 4.9134492535026E7 0.2187021997034718 3278.082 -15 9.821949152363299E7 0.21870225353297018 4634.741 -16 1.9638948579844E8 0.21870227027034242 6553.688 -17 3.9272943769276E8 0.2187022695764764 9267.73 -18 7.85409401229354E8 0.21870228035710612 13106.137 -19 1.5707693246679451E9 0.21870228538798728 18534.585 -20 3.141489038017554E9 0.21870227688245616 26211.654 -21 6.28292864124466E9 0.21870227984606727 37068.731 -22 1.2565807800854715E10 0.21870228064184405 52422.999 -23 2.513156596693834E10 0.2187022809032955 74137.243 -24 5.0263082560627815E10 0.21870228076682735 104845.843 +13 24591998.509057 0.2187021201493736 2319.121 +14 49134492.535026 0.2187021997034718 3278.082 +15 98219491.52363299 0.2187022535329702 4634.741 +16 196389485.79844 0.2187022702703424 6553.688 +17 392729437.69276 0.2187022695764764 9267.73 +18 785409401.229354 0.2187022803571061 13106.137 +19 1570769324.667945 0.2187022853879873 18534.585 +20 3141489038.017554 0.2187022768824562 26211.654 +21 6282928641.24466 0.2187022798460673 37068.731 +22 12565807800.85472 0.218702280641844 52422.999 +23 25131565966.93834 0.2187022809032955 74137.243 +24 50263082560.62782 0.2187022807668274 104845.843 -- !sql_test_Varchar_String_2 -- \N \N @@ -7009,18 +7009,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0122620121E7 -2.0117981879E7 -14 2.0123580082E7 -2.0117023918E7 -15 2.0124937741E7 -2.0115668259E7 -16 2.0126857688E7 -2.0113750312E7 -17 2.012957273E7 -2.011103727E7 -18 2.0133412137E7 -2.0107199863E7 -19 2.0138841585E7 -2.0101772415E7 -20 2.0146519654E7 -2.0094096346E7 -21 2.0157377731E7 -2.0083240269E7 -22 2.0172732999E7 -2.0067887001E7 -23 2.0194448243E7 -2.0046173757E7 -24 2.0225157843E7 -2.0015466157E7 +13 20122620.121 -20117981.879 +14 20123580.082 -20117023.918 +15 20124937.741 -20115668.259 +16 20126857.688 -20113750.312 +17 20129572.73 -20111037.27 +18 20133412.137 -20107199.863 +19 20138841.585 -20101772.415 +20 20146519.654 -20094096.346 +21 20157377.731 -20083240.269 +22 20172732.999 -20067887.001 +23 20194448.243 -20046173.757 +24 20225157.843 -20015466.157 -- !sql_test_Varchar_Date_notn_0 -- 1 \N \N @@ -7035,18 +7035,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0122620121E7 -2.0117981879E7 -14 2.0123580082E7 -2.0117023918E7 -15 2.0124937741E7 -2.0115668259E7 -16 2.0126857688E7 -2.0113750312E7 -17 2.012957273E7 -2.011103727E7 -18 2.0133412137E7 -2.0107199863E7 -19 2.0138841585E7 -2.0101772415E7 -20 2.0146519654E7 -2.0094096346E7 -21 2.0157377731E7 -2.0083240269E7 -22 2.0172732999E7 -2.0067887001E7 -23 2.0194448243E7 -2.0046173757E7 -24 2.0225157843E7 -2.0015466157E7 +13 20122620.121 -20117981.879 +14 20123580.082 -20117023.918 +15 20124937.741 -20115668.259 +16 20126857.688 -20113750.312 +17 20129572.73 -20111037.27 +18 20133412.137 -20107199.863 +19 20138841.585 -20101772.415 +20 20146519.654 -20094096.346 +21 20157377.731 -20083240.269 +22 20172732.999 -20067887.001 +23 20194448.243 -20046173.757 +24 20225157.843 -20015466.157 -- !sql_test_Varchar_Date_1 -- \N \N \N \N @@ -7062,18 +7062,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412575421005E10 1.1526273886260449E-4 2319.121 -14 6.5955999820764E10 1.6292409527451427E-4 3278.082 -15 9.3252393246523E10 2.3035145146671002E-4 4634.741 -16 1.3186219488115201E11 3.2572509838817544E-4 6553.688 -17 1.8646955425765E11 4.606157809237981E-4 9267.73 -18 2.6369948691792203E11 6.513885524405046E-4 13106.137 -19 3.72921540317595E11 9.211879818732388E-4 18534.585 -20 5.2738655166943195E11 0.0013027461607446565 26211.654 -21 7.45834321957879E11 0.0018423539618601286 37068.731 -22 1.0547669910096901E12 0.002605476704881784 52422.999 -23 1.491664385842573E12 0.003684696672929161 74137.243 -24 2.1095310730630159E12 0.005210945188126307 104845.843 +13 46661412575.42101 0.0001152627388626045 2319.121 +14 65955999820.764 0.0001629240952745143 3278.082 +15 93252393246.52299 0.00023035145146671 4634.741 +16 131862194881.152 0.0003257250983881754 6553.688 +17 186469554257.65 0.0004606157809237981 9267.73 +18 263699486917.922 0.0006513885524405046 13106.137 +19 372921540317.595 0.0009211879818732388 18534.585 +20 527386551669.4319 0.001302746160744657 26211.654 +21 745834321957.879 0.001842353961860129 37068.731 +22 1054766991009.69 0.002605476704881784 52422.999 +23 1491664385842.573 0.003684696672929161 74137.243 +24 2109531073063.016 0.005210945188126307 104845.843 -- !sql_test_Varchar_Date_notn_1 -- 1 \N \N \N @@ -7088,18 +7088,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412575421005E10 1.1526273886260449E-4 2319.121 -14 6.5955999820764E10 1.6292409527451427E-4 3278.082 -15 9.3252393246523E10 2.3035145146671002E-4 4634.741 -16 1.3186219488115201E11 3.2572509838817544E-4 6553.688 -17 1.8646955425765E11 4.606157809237981E-4 9267.73 -18 2.6369948691792203E11 6.513885524405046E-4 13106.137 -19 3.72921540317595E11 9.211879818732388E-4 18534.585 -20 5.2738655166943195E11 0.0013027461607446565 26211.654 -21 7.45834321957879E11 0.0018423539618601286 37068.731 -22 1.0547669910096901E12 0.002605476704881784 52422.999 -23 1.491664385842573E12 0.003684696672929161 74137.243 -24 2.1095310730630159E12 0.005210945188126307 104845.843 +13 46661412575.42101 0.0001152627388626045 2319.121 +14 65955999820.764 0.0001629240952745143 3278.082 +15 93252393246.52299 0.00023035145146671 4634.741 +16 131862194881.152 0.0003257250983881754 6553.688 +17 186469554257.65 0.0004606157809237981 9267.73 +18 263699486917.922 0.0006513885524405046 13106.137 +19 372921540317.595 0.0009211879818732388 18534.585 +20 527386551669.4319 0.001302746160744657 26211.654 +21 745834321957.879 0.001842353961860129 37068.731 +22 1054766991009.69 0.002605476704881784 52422.999 +23 1491664385842.573 0.003684696672929161 74137.243 +24 2109531073063.016 0.005210945188126307 104845.843 -- !sql_test_Varchar_Date_2 -- \N \N @@ -7221,18 +7221,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101232012E13 -2.012030100768188E13 -14 2.0120302023380082E13 -2.0120302016823918E13 -15 2.0120303034837742E13 -2.0120303025568258E13 -16 2.0120304046857688E13 -2.0120304033750312E13 -17 2.012030505967273E13 -2.012030504113727E13 -18 2.0120306073612137E13 -2.0120306047399863E13 -19 2.0120307089141586E13 -2.0120307052072414E13 -20 2.0120308106919652E13 -2.0120308054496348E13 -21 2.012030912787773E13 -2.012030905374027E13 -22 2.0120310153333E13 -2.0120310048487E13 -23 2.0120311185148242E13 -2.0120311036873758E13 -24 2.0120312225957844E13 -2.0120312016266156E13 +13 20120301012320.12 -20120301007681.88 +14 20120302023380.08 -20120302016823.92 +15 20120303034837.74 -20120303025568.26 +16 20120304046857.69 -20120304033750.31 +17 20120305059672.73 -20120305041137.27 +18 20120306073612.14 -20120306047399.86 +19 20120307089141.59 -20120307052072.41 +20 20120308106919.65 -20120308054496.35 +21 20120309127877.73 -20120309053740.27 +22 20120310153333 -20120310048487 +23 20120311185148.24 -20120311036873.76 +24 20120312225957.84 -20120312016266.16 -- !sql_test_Varchar_DateTime_notn_0 -- 1 \N \N @@ -7247,18 +7247,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101232012E13 -2.012030100768188E13 -14 2.0120302023380082E13 -2.0120302016823918E13 -15 2.0120303034837742E13 -2.0120303025568258E13 -16 2.0120304046857688E13 -2.0120304033750312E13 -17 2.012030505967273E13 -2.012030504113727E13 -18 2.0120306073612137E13 -2.0120306047399863E13 -19 2.0120307089141586E13 -2.0120307052072414E13 -20 2.0120308106919652E13 -2.0120308054496348E13 -21 2.012030912787773E13 -2.012030905374027E13 -22 2.0120310153333E13 -2.0120310048487E13 -23 2.0120311185148242E13 -2.0120311036873758E13 -24 2.0120312225957844E13 -2.0120312016266156E13 +13 20120301012320.12 -20120301007681.88 +14 20120302023380.08 -20120302016823.92 +15 20120303034837.74 -20120303025568.26 +16 20120304046857.69 -20120304033750.31 +17 20120305059672.73 -20120305041137.27 +18 20120306073612.14 -20120306047399.86 +19 20120307089141.59 -20120307052072.41 +20 20120308106919.65 -20120308054496.35 +21 20120309127877.73 -20120309053740.27 +22 20120310153333 -20120310048487 +23 20120311185148.24 -20120311036873.76 +24 20120312225957.84 -20120312016266.16 -- !sql_test_Varchar_DateTime_1 -- \N \N \N \N @@ -7274,18 +7274,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412598614528E16 1.1526273880531198E-10 2319.121 -14 6.595599988666E16 1.6292409511173836E-10 3278.082 -15 9.325239338650608E16 2.3035145112092473E-10 4634.741 -16 1.3186219514529184E17 3.25725097735699E-10 6553.688 -17 1.8646955472478992E17 4.6061577976987233E-10 9267.73 -18 2.63699487710921952E17 6.513885504816421E-10 13106.137 -19 3.7292154162626643E17 9.211879786405685E-10 18534.585 -20 5.2738655378492211E17 1.3027461555189893E-9 26211.654 -21 7.4583432532405338E17 1.8423539535450316E-9 37068.731 -22 1.05476699629969485E18 2.605476691814458E-9 52422.999 -23 1.49166439407262259E18 3.684696652599363E-9 74137.243 -24 2.10953108576110566E18 5.210945156759597E-9 104845.843 +13 4.666141259861453e+16 1.15262738805312e-10 2319.121 +14 6.595599988666e+16 1.629240951117384e-10 3278.082 +15 9.325239338650608e+16 2.303514511209247e-10 4634.741 +16 1.318621951452918e+17 3.25725097735699e-10 6553.688 +17 1.864695547247899e+17 4.606157797698723e-10 9267.73 +18 2.63699487710922e+17 6.513885504816421e-10 13106.137 +19 3.729215416262664e+17 9.211879786405685e-10 18534.585 +20 5.273865537849221e+17 1.302746155518989e-09 26211.654 +21 7.458343253240534e+17 1.842353953545032e-09 37068.731 +22 1.054766996299695e+18 2.605476691814458e-09 52422.999 +23 1.491664394072623e+18 3.684696652599363e-09 74137.243 +24 2.109531085761106e+18 5.210945156759597e-09 104845.843 -- !sql_test_Varchar_DateTime_notn_1 -- 1 \N \N \N @@ -7300,18 +7300,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412598614528E16 1.1526273880531198E-10 2319.121 -14 6.595599988666E16 1.6292409511173836E-10 3278.082 -15 9.325239338650608E16 2.3035145112092473E-10 4634.741 -16 1.3186219514529184E17 3.25725097735699E-10 6553.688 -17 1.8646955472478992E17 4.6061577976987233E-10 9267.73 -18 2.63699487710921952E17 6.513885504816421E-10 13106.137 -19 3.7292154162626643E17 9.211879786405685E-10 18534.585 -20 5.2738655378492211E17 1.3027461555189893E-9 26211.654 -21 7.4583432532405338E17 1.8423539535450316E-9 37068.731 -22 1.05476699629969485E18 2.605476691814458E-9 52422.999 -23 1.49166439407262259E18 3.684696652599363E-9 74137.243 -24 2.10953108576110566E18 5.210945156759597E-9 104845.843 +13 4.666141259861453e+16 1.15262738805312e-10 2319.121 +14 6.595599988666e+16 1.629240951117384e-10 3278.082 +15 9.325239338650608e+16 2.303514511209247e-10 4634.741 +16 1.318621951452918e+17 3.25725097735699e-10 6553.688 +17 1.864695547247899e+17 4.606157797698723e-10 9267.73 +18 2.63699487710922e+17 6.513885504816421e-10 13106.137 +19 3.729215416262664e+17 9.211879786405685e-10 18534.585 +20 5.273865537849221e+17 1.302746155518989e-09 26211.654 +21 7.458343253240534e+17 1.842353953545032e-09 37068.731 +22 1.054766996299695e+18 2.605476691814458e-09 52422.999 +23 1.491664394072623e+18 3.684696652599363e-09 74137.243 +24 2.109531085761106e+18 5.210945156759597e-09 104845.843 -- !sql_test_Varchar_DateTime_2 -- \N \N @@ -7433,18 +7433,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0122620121E7 -2.0117981879E7 -14 2.0123580082E7 -2.0117023918E7 -15 2.0124937741E7 -2.0115668259E7 -16 2.0126857688E7 -2.0113750312E7 -17 2.012957273E7 -2.011103727E7 -18 2.0133412137E7 -2.0107199863E7 -19 2.0138841585E7 -2.0101772415E7 -20 2.0146519654E7 -2.0094096346E7 -21 2.0157377731E7 -2.0083240269E7 -22 2.0172732999E7 -2.0067887001E7 -23 2.0194448243E7 -2.0046173757E7 -24 2.0225157843E7 -2.0015466157E7 +13 20122620.121 -20117981.879 +14 20123580.082 -20117023.918 +15 20124937.741 -20115668.259 +16 20126857.688 -20113750.312 +17 20129572.73 -20111037.27 +18 20133412.137 -20107199.863 +19 20138841.585 -20101772.415 +20 20146519.654 -20094096.346 +21 20157377.731 -20083240.269 +22 20172732.999 -20067887.001 +23 20194448.243 -20046173.757 +24 20225157.843 -20015466.157 -- !sql_test_Varchar_DateV2_notn_0 -- 1 \N \N @@ -7459,18 +7459,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0122620121E7 -2.0117981879E7 -14 2.0123580082E7 -2.0117023918E7 -15 2.0124937741E7 -2.0115668259E7 -16 2.0126857688E7 -2.0113750312E7 -17 2.012957273E7 -2.011103727E7 -18 2.0133412137E7 -2.0107199863E7 -19 2.0138841585E7 -2.0101772415E7 -20 2.0146519654E7 -2.0094096346E7 -21 2.0157377731E7 -2.0083240269E7 -22 2.0172732999E7 -2.0067887001E7 -23 2.0194448243E7 -2.0046173757E7 -24 2.0225157843E7 -2.0015466157E7 +13 20122620.121 -20117981.879 +14 20123580.082 -20117023.918 +15 20124937.741 -20115668.259 +16 20126857.688 -20113750.312 +17 20129572.73 -20111037.27 +18 20133412.137 -20107199.863 +19 20138841.585 -20101772.415 +20 20146519.654 -20094096.346 +21 20157377.731 -20083240.269 +22 20172732.999 -20067887.001 +23 20194448.243 -20046173.757 +24 20225157.843 -20015466.157 -- !sql_test_Varchar_DateV2_1 -- \N \N \N \N @@ -7486,18 +7486,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412575421005E10 1.1526273886260449E-4 2319.121 -14 6.5955999820764E10 1.6292409527451427E-4 3278.082 -15 9.3252393246523E10 2.3035145146671002E-4 4634.741 -16 1.3186219488115201E11 3.2572509838817544E-4 6553.688 -17 1.8646955425765E11 4.606157809237981E-4 9267.73 -18 2.6369948691792203E11 6.513885524405046E-4 13106.137 -19 3.72921540317595E11 9.211879818732388E-4 18534.585 -20 5.2738655166943195E11 0.0013027461607446565 26211.654 -21 7.45834321957879E11 0.0018423539618601286 37068.731 -22 1.0547669910096901E12 0.002605476704881784 52422.999 -23 1.491664385842573E12 0.003684696672929161 74137.243 -24 2.1095310730630159E12 0.005210945188126307 104845.843 +13 46661412575.42101 0.0001152627388626045 2319.121 +14 65955999820.764 0.0001629240952745143 3278.082 +15 93252393246.52299 0.00023035145146671 4634.741 +16 131862194881.152 0.0003257250983881754 6553.688 +17 186469554257.65 0.0004606157809237981 9267.73 +18 263699486917.922 0.0006513885524405046 13106.137 +19 372921540317.595 0.0009211879818732388 18534.585 +20 527386551669.4319 0.001302746160744657 26211.654 +21 745834321957.879 0.001842353961860129 37068.731 +22 1054766991009.69 0.002605476704881784 52422.999 +23 1491664385842.573 0.003684696672929161 74137.243 +24 2109531073063.016 0.005210945188126307 104845.843 -- !sql_test_Varchar_DateV2_notn_1 -- 1 \N \N \N @@ -7512,18 +7512,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412575421005E10 1.1526273886260449E-4 2319.121 -14 6.5955999820764E10 1.6292409527451427E-4 3278.082 -15 9.3252393246523E10 2.3035145146671002E-4 4634.741 -16 1.3186219488115201E11 3.2572509838817544E-4 6553.688 -17 1.8646955425765E11 4.606157809237981E-4 9267.73 -18 2.6369948691792203E11 6.513885524405046E-4 13106.137 -19 3.72921540317595E11 9.211879818732388E-4 18534.585 -20 5.2738655166943195E11 0.0013027461607446565 26211.654 -21 7.45834321957879E11 0.0018423539618601286 37068.731 -22 1.0547669910096901E12 0.002605476704881784 52422.999 -23 1.491664385842573E12 0.003684696672929161 74137.243 -24 2.1095310730630159E12 0.005210945188126307 104845.843 +13 46661412575.42101 0.0001152627388626045 2319.121 +14 65955999820.764 0.0001629240952745143 3278.082 +15 93252393246.52299 0.00023035145146671 4634.741 +16 131862194881.152 0.0003257250983881754 6553.688 +17 186469554257.65 0.0004606157809237981 9267.73 +18 263699486917.922 0.0006513885524405046 13106.137 +19 372921540317.595 0.0009211879818732388 18534.585 +20 527386551669.4319 0.001302746160744657 26211.654 +21 745834321957.879 0.001842353961860129 37068.731 +22 1054766991009.69 0.002605476704881784 52422.999 +23 1491664385842.573 0.003684696672929161 74137.243 +24 2109531073063.016 0.005210945188126307 104845.843 -- !sql_test_Varchar_DateV2_2 -- \N \N @@ -7645,18 +7645,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101232012E13 -2.012030100768188E13 -14 2.0120302023380082E13 -2.0120302016823918E13 -15 2.0120303034837742E13 -2.0120303025568258E13 -16 2.0120304046857688E13 -2.0120304033750312E13 -17 2.012030505967273E13 -2.012030504113727E13 -18 2.0120306073612137E13 -2.0120306047399863E13 -19 2.0120307089141586E13 -2.0120307052072414E13 -20 2.0120308106919652E13 -2.0120308054496348E13 -21 2.012030912787773E13 -2.012030905374027E13 -22 2.0120310153333E13 -2.0120310048487E13 -23 2.0120311185148242E13 -2.0120311036873758E13 -24 2.0120312225957844E13 -2.0120312016266156E13 +13 20120301012320.12 -20120301007681.88 +14 20120302023380.08 -20120302016823.92 +15 20120303034837.74 -20120303025568.26 +16 20120304046857.69 -20120304033750.31 +17 20120305059672.73 -20120305041137.27 +18 20120306073612.14 -20120306047399.86 +19 20120307089141.59 -20120307052072.41 +20 20120308106919.65 -20120308054496.35 +21 20120309127877.73 -20120309053740.27 +22 20120310153333 -20120310048487 +23 20120311185148.24 -20120311036873.76 +24 20120312225957.84 -20120312016266.16 -- !sql_test_Varchar_DateTimeV2_notn_0 -- 1 \N \N @@ -7671,18 +7671,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.012030101232012E13 -2.012030100768188E13 -14 2.0120302023380082E13 -2.0120302016823918E13 -15 2.0120303034837742E13 -2.0120303025568258E13 -16 2.0120304046857688E13 -2.0120304033750312E13 -17 2.012030505967273E13 -2.012030504113727E13 -18 2.0120306073612137E13 -2.0120306047399863E13 -19 2.0120307089141586E13 -2.0120307052072414E13 -20 2.0120308106919652E13 -2.0120308054496348E13 -21 2.012030912787773E13 -2.012030905374027E13 -22 2.0120310153333E13 -2.0120310048487E13 -23 2.0120311185148242E13 -2.0120311036873758E13 -24 2.0120312225957844E13 -2.0120312016266156E13 +13 20120301012320.12 -20120301007681.88 +14 20120302023380.08 -20120302016823.92 +15 20120303034837.74 -20120303025568.26 +16 20120304046857.69 -20120304033750.31 +17 20120305059672.73 -20120305041137.27 +18 20120306073612.14 -20120306047399.86 +19 20120307089141.59 -20120307052072.41 +20 20120308106919.65 -20120308054496.35 +21 20120309127877.73 -20120309053740.27 +22 20120310153333 -20120310048487 +23 20120311185148.24 -20120311036873.76 +24 20120312225957.84 -20120312016266.16 -- !sql_test_Varchar_DateTimeV2_1 -- \N \N \N \N @@ -7698,18 +7698,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412598614528E16 1.1526273880531198E-10 2319.121 -14 6.595599988666E16 1.6292409511173836E-10 3278.082 -15 9.325239338650608E16 2.3035145112092473E-10 4634.741 -16 1.3186219514529184E17 3.25725097735699E-10 6553.688 -17 1.8646955472478992E17 4.6061577976987233E-10 9267.73 -18 2.63699487710921952E17 6.513885504816421E-10 13106.137 -19 3.7292154162626643E17 9.211879786405685E-10 18534.585 -20 5.2738655378492211E17 1.3027461555189893E-9 26211.654 -21 7.4583432532405338E17 1.8423539535450316E-9 37068.731 -22 1.05476699629969485E18 2.605476691814458E-9 52422.999 -23 1.49166439407262259E18 3.684696652599363E-9 74137.243 -24 2.10953108576110566E18 5.210945156759597E-9 104845.843 +13 4.666141259861453e+16 1.15262738805312e-10 2319.121 +14 6.595599988666e+16 1.629240951117384e-10 3278.082 +15 9.325239338650608e+16 2.303514511209247e-10 4634.741 +16 1.318621951452918e+17 3.25725097735699e-10 6553.688 +17 1.864695547247899e+17 4.606157797698723e-10 9267.73 +18 2.63699487710922e+17 6.513885504816421e-10 13106.137 +19 3.729215416262664e+17 9.211879786405685e-10 18534.585 +20 5.273865537849221e+17 1.302746155518989e-09 26211.654 +21 7.458343253240534e+17 1.842353953545032e-09 37068.731 +22 1.054766996299695e+18 2.605476691814458e-09 52422.999 +23 1.491664394072623e+18 3.684696652599363e-09 74137.243 +24 2.109531085761106e+18 5.210945156759597e-09 104845.843 -- !sql_test_Varchar_DateTimeV2_notn_1 -- 1 \N \N \N @@ -7724,18 +7724,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 4.6661412598614528E16 1.1526273880531198E-10 2319.121 -14 6.595599988666E16 1.6292409511173836E-10 3278.082 -15 9.325239338650608E16 2.3035145112092473E-10 4634.741 -16 1.3186219514529184E17 3.25725097735699E-10 6553.688 -17 1.8646955472478992E17 4.6061577976987233E-10 9267.73 -18 2.63699487710921952E17 6.513885504816421E-10 13106.137 -19 3.7292154162626643E17 9.211879786405685E-10 18534.585 -20 5.2738655378492211E17 1.3027461555189893E-9 26211.654 -21 7.4583432532405338E17 1.8423539535450316E-9 37068.731 -22 1.05476699629969485E18 2.605476691814458E-9 52422.999 -23 1.49166439407262259E18 3.684696652599363E-9 74137.243 -24 2.10953108576110566E18 5.210945156759597E-9 104845.843 +13 4.666141259861453e+16 1.15262738805312e-10 2319.121 +14 6.595599988666e+16 1.629240951117384e-10 3278.082 +15 9.325239338650608e+16 2.303514511209247e-10 4634.741 +16 1.318621951452918e+17 3.25725097735699e-10 6553.688 +17 1.864695547247899e+17 4.606157797698723e-10 9267.73 +18 2.63699487710922e+17 6.513885504816421e-10 13106.137 +19 3.729215416262664e+17 9.211879786405685e-10 18534.585 +20 5.273865537849221e+17 1.302746155518989e-09 26211.654 +21 7.458343253240534e+17 1.842353953545032e-09 37068.731 +22 1.054766996299695e+18 2.605476691814458e-09 52422.999 +23 1.491664394072623e+18 3.684696652599363e-09 74137.243 +24 2.109531085761106e+18 5.210945156759597e-09 104845.843 -- !sql_test_Varchar_DateTimeV2_2 -- \N \N @@ -7910,13 +7910,13 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 26211.654 26211.654 0.6539999999986321 21 37068.731 37068.731 0.7309999999997672 22 52422.999 52422.999 0.9990000000034343 @@ -7936,13 +7936,13 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 26211.654 26211.654 0.6539999999986321 21 37068.731 37068.731 0.7309999999997672 22 52422.999 52422.999 0.9990000000034343 @@ -8075,7 +8075,7 @@ 16 29970.255 29962.255 17 42381.012 42371.012 18 59932.842 59920.842 -19 84755.017 84741.017 +19 84755.01700000001 84741.01700000001 20 119858.851 119842.851 21 169503.031 169485.031 22 239710.285 239690.285 @@ -8101,7 +8101,7 @@ 16 29970.255 29962.255 17 42381.012 42371.012 18 59932.842 59920.842 -19 84755.017 84741.017 +19 84755.01700000001 84741.01700000001 20 119858.851 119842.851 21 169503.031 169485.031 22 239710.285 239690.285 @@ -8122,18 +8122,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 10604.017 10604.017 0.016999999999825377 +13 10604.017 10604.017 0.01699999999982538 14 29977.586 7494.3965 0.7929999999996653 15 63576.039 7064.004333333333 0.01299999999901047 -16 119865.02 7491.56375 2.2550000000010186 -17 211880.06 8475.2024 1.0120000000024447 -18 359561.05199999997 9987.806999999999 4.841999999996915 -19 593236.1190000001 12106.859571428573 6.017000000007101 -20 958806.808 14981.356375 2.8509999999951106 -21 1525446.2789999999 18832.67011111111 6.030999999988126 -22 2397002.85 23970.0285 0.28500000000349246 -23 3728857.649 30817.005363636363 0.0590000000083819 -24 5752798.3319999995 39949.98841666667 11.86099999997532 +16 119865.02 7491.56375 2.255000000001019 +17 211880.06 8475.2024 1.012000000002445 +18 359561.052 9987.806999999999 4.841999999996915 +19 593236.1190000001 12106.85957142857 6.017000000007101 +20 958806.808 14981.356375 2.850999999995111 +21 1525446.279 18832.67011111111 6.030999999988126 +22 2397002.85 23970.0285 0.2850000000034925 +23 3728857.649 30817.00536363636 0.0590000000083819 +24 5752798.331999999 39949.98841666667 11.86099999997532 -- !sql_test_String_TinyInt_notn_1 -- 1 \N \N \N @@ -8148,18 +8148,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 10604.017 10604.017 0.016999999999825377 +13 10604.017 10604.017 0.01699999999982538 14 29977.586 7494.3965 0.7929999999996653 15 63576.039 7064.004333333333 0.01299999999901047 -16 119865.02 7491.56375 2.2550000000010186 -17 211880.06 8475.2024 1.0120000000024447 -18 359561.05199999997 9987.806999999999 4.841999999996915 -19 593236.1190000001 12106.859571428573 6.017000000007101 -20 958806.808 14981.356375 2.8509999999951106 -21 1525446.2789999999 18832.67011111111 6.030999999988126 -22 2397002.85 23970.0285 0.28500000000349246 -23 3728857.649 30817.005363636363 0.0590000000083819 -24 5752798.3319999995 39949.98841666667 11.86099999997532 +16 119865.02 7491.56375 2.255000000001019 +17 211880.06 8475.2024 1.012000000002445 +18 359561.052 9987.806999999999 4.841999999996915 +19 593236.1190000001 12106.85957142857 6.017000000007101 +20 958806.808 14981.356375 2.850999999995111 +21 1525446.279 18832.67011111111 6.030999999988126 +22 2397002.85 23970.0285 0.2850000000034925 +23 3728857.649 30817.00536363636 0.0590000000083819 +24 5752798.331999999 39949.98841666667 11.86099999997532 -- !sql_test_String_TinyInt_2 -- \N \N @@ -8287,7 +8287,7 @@ 16 30046.255 29886.255 17 42536.012 42216.012 18 60246.842 59606.842 -19 85388.017 84108.017 +19 85388.01700000001 84108.01700000001 20 121130.851 118570.851 21 172054.031 166934.031 22 244820.285 234580.285 @@ -8313,7 +8313,7 @@ 16 30046.255 29886.255 17 42536.012 42216.012 18 60246.842 59606.842 -19 85388.017 84108.017 +19 85388.01700000001 84108.01700000001 20 121130.851 118570.851 21 172054.031 166934.031 22 244820.285 234580.285 @@ -8338,14 +8338,14 @@ 14 299775.86 749.43965 8.792999999999665 15 847680.52 529.8003249999999 32.01299999999901 16 2397300.4 374.5781875 46.25500000000102 -17 6780161.92 264.850075 136.01200000000244 -18 1.9176589439999998E7 187.27138125 86.84199999999691 -19 5.423873088E7 132.4187765625 268.0170000000071 -20 1.5340908928E8 93.63347734375 810.8509999999951 -21 4.3390471935999995E8 66.208605859375 534.0309999999881 -22 1.2272654592E9 46.8164619140625 4180.2850000000035 -23 3.47122748416E9 33.10420498046875 1067.0590000000084 -24 9.818109153279999E9 23.408196337890622 8359.860999999975 +17 6780161.92 264.850075 136.0120000000024 +18 19176589.44 187.27138125 86.84199999999691 +19 54238730.88 132.4187765625 268.0170000000071 +20 153409089.28 93.63347734375 810.8509999999951 +21 433904719.36 66.208605859375 534.0309999999881 +22 1227265459.2 46.8164619140625 4180.285000000003 +23 3471227484.16 33.10420498046875 1067.059000000008 +24 9818109153.279999 23.40819633789062 8359.860999999975 -- !sql_test_String_SmallInt_notn_1 -- 1 \N \N \N @@ -8364,14 +8364,14 @@ 14 299775.86 749.43965 8.792999999999665 15 847680.52 529.8003249999999 32.01299999999901 16 2397300.4 374.5781875 46.25500000000102 -17 6780161.92 264.850075 136.01200000000244 -18 1.9176589439999998E7 187.27138125 86.84199999999691 -19 5.423873088E7 132.4187765625 268.0170000000071 -20 1.5340908928E8 93.63347734375 810.8509999999951 -21 4.3390471935999995E8 66.208605859375 534.0309999999881 -22 1.2272654592E9 46.8164619140625 4180.2850000000035 -23 3.47122748416E9 33.10420498046875 1067.0590000000084 -24 9.818109153279999E9 23.408196337890622 8359.860999999975 +17 6780161.92 264.850075 136.0120000000024 +18 19176589.44 187.27138125 86.84199999999691 +19 54238730.88 132.4187765625 268.0170000000071 +20 153409089.28 93.63347734375 810.8509999999951 +21 433904719.36 66.208605859375 534.0309999999881 +22 1227265459.2 46.8164619140625 4180.285000000003 +23 3471227484.16 33.10420498046875 1067.059000000008 +24 9818109153.279999 23.40819633789062 8359.860999999975 -- !sql_test_String_SmallInt_2 -- \N \N @@ -8494,17 +8494,17 @@ 11 \N \N 12 \N \N 13 34399.017 -13190.983 -14 62533.793 -32556.207000000002 -15 116237.013 -73852.987 +14 62533.793 -32556.207 +15 116237.013 -73852.98699999999 16 220011.255 -160078.745 17 422421.012 -337668.988 -18 819971.842 -700118.158 +18 819971.8419999999 -700118.1580000001 19 1604793.017 -1435296.983 20 3159895.851 -2920194.149 21 6249539.031 -5910550.969 -22 1.2399745285E7 -1.1920344715E7 -23 2.4659032059E7 -2.3981057941E7 -24 4.9119444861E7 -4.8160645139E7 +22 12399745.285 -11920344.715 +23 24659032.059 -23981057.941 +24 49119444.861 -48160645.139 -- !sql_test_String_Integer_notn_0 -- 1 \N \N @@ -8520,17 +8520,17 @@ 11 \N \N 12 \N \N 13 34399.017 -13190.983 -14 62533.793 -32556.207000000002 -15 116237.013 -73852.987 +14 62533.793 -32556.207 +15 116237.013 -73852.98699999999 16 220011.255 -160078.745 17 422421.012 -337668.988 -18 819971.842 -700118.158 +18 819971.8419999999 -700118.1580000001 19 1604793.017 -1435296.983 20 3159895.851 -2920194.149 21 6249539.031 -5910550.969 -22 1.2399745285E7 -1.1920344715E7 -23 2.4659032059E7 -2.3981057941E7 -24 4.9119444861E7 -4.8160645139E7 +22 12399745.285 -11920344.715 +23 24659032.059 -23981057.941 +24 49119444.861 -48160645.139 -- !sql_test_String_Integer_1 -- \N \N \N \N @@ -8546,18 +8546,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.52322584515E8 0.4456405547383904 10604.017 -14 7.12642163185E8 0.3152548743295825 14988.793 -15 2.0141948755849998E9 0.22296820453469407 21192.013 -16 5.694936931475E9 0.1576797863663869 29966.255 -17 1.610479148054E10 0.1115026167953795 42376.012 -18 4.554709662789E10 0.07884643935556447 59926.842 -19 1.2882079950076501E11 0.0557536237414024 84748.017 -20 3.64351980328295E11 0.039424038459957005 119850.851 -21 1.0305313357113949E12 0.027877101403032376 169494.031 -22 2.914766252112825E12 0.01971212154231337 239700.285 -23 8.244180529297655E12 0.013938586832384562 338987.059 -24 2.3318030812033742E13 0.009856073550096427 479399.861 +13 252322584.515 0.4456405547383904 10604.017 +14 712642163.1849999 0.3152548743295825 14988.793 +15 2014194875.585 0.2229682045346941 21192.013 +16 5694936931.475 0.1576797863663869 29966.255 +17 16104791480.54 0.1115026167953795 42376.012 +18 45547096627.89 0.07884643935556447 59926.842 +19 128820799500.765 0.0557536237414024 84748.01700000001 +20 364351980328.295 0.039424038459957 119850.851 +21 1030531335711.395 0.02787710140303238 169494.031 +22 2914766252112.825 0.01971212154231337 239700.285 +23 8244180529297.655 0.01393858683238456 338987.059 +24 23318030812033.74 0.009856073550096427 479399.861 -- !sql_test_String_Integer_notn_1 -- 1 \N \N \N @@ -8572,18 +8572,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.52322584515E8 0.4456405547383904 10604.017 -14 7.12642163185E8 0.3152548743295825 14988.793 -15 2.0141948755849998E9 0.22296820453469407 21192.013 -16 5.694936931475E9 0.1576797863663869 29966.255 -17 1.610479148054E10 0.1115026167953795 42376.012 -18 4.554709662789E10 0.07884643935556447 59926.842 -19 1.2882079950076501E11 0.0557536237414024 84748.017 -20 3.64351980328295E11 0.039424038459957005 119850.851 -21 1.0305313357113949E12 0.027877101403032376 169494.031 -22 2.914766252112825E12 0.01971212154231337 239700.285 -23 8.244180529297655E12 0.013938586832384562 338987.059 -24 2.3318030812033742E13 0.009856073550096427 479399.861 +13 252322584.515 0.4456405547383904 10604.017 +14 712642163.1849999 0.3152548743295825 14988.793 +15 2014194875.585 0.2229682045346941 21192.013 +16 5694936931.475 0.1576797863663869 29966.255 +17 16104791480.54 0.1115026167953795 42376.012 +18 45547096627.89 0.07884643935556447 59926.842 +19 128820799500.765 0.0557536237414024 84748.01700000001 +20 364351980328.295 0.039424038459957 119850.851 +21 1030531335711.395 0.02787710140303238 169494.031 +22 2914766252112.825 0.01971212154231337 239700.285 +23 8244180529297.655 0.01393858683238456 338987.059 +24 23318030812033.74 0.009856073550096427 479399.861 -- !sql_test_String_Integer_2 -- \N \N @@ -8706,17 +8706,17 @@ 11 \N \N 12 \N \N 13 5365133.017 -5343924.983 -14 1.0713267793E7 -1.0683290207E7 -15 2.1406971013E7 -2.1364586987E7 -16 4.2790745255E7 -4.2730812745E7 -17 8.5553155012E7 -8.5468402988E7 -18 1.71070705842E8 -1.70950852158E8 -19 3.42095527017E8 -3.41926030983E8 -20 6.84130629851E8 -6.83890928149E8 -21 1.368180273031E9 -1.367841284969E9 -22 2.736250479285E9 -2.735771078715E9 -23 5.472349766059E9 -5.471671791941E9 -24 1.0944490178861E10 -1.0943531379139E10 +14 10713267.793 -10683290.207 +15 21406971.013 -21364586.987 +16 42790745.255 -42730812.745 +17 85553155.01199999 -85468402.98800001 +18 171070705.842 -170950852.158 +19 342095527.017 -341926030.983 +20 684130629.851 -683890928.149 +21 1368180273.031 -1367841284.969 +22 2736250479.285 -2735771078.715 +23 5472349766.059 -5471671791.941 +24 10944490178.861 -10943531379.139 -- !sql_test_String_BigInt_notn_0 -- 1 \N \N @@ -8732,17 +8732,17 @@ 11 \N \N 12 \N \N 13 5365133.017 -5343924.983 -14 1.0713267793E7 -1.0683290207E7 -15 2.1406971013E7 -2.1364586987E7 -16 4.2790745255E7 -4.2730812745E7 -17 8.5553155012E7 -8.5468402988E7 -18 1.71070705842E8 -1.70950852158E8 -19 3.42095527017E8 -3.41926030983E8 -20 6.84130629851E8 -6.83890928149E8 -21 1.368180273031E9 -1.367841284969E9 -22 2.736250479285E9 -2.735771078715E9 -23 5.472349766059E9 -5.471671791941E9 -24 1.0944490178861E10 -1.0943531379139E10 +14 10713267.793 -10683290.207 +15 21406971.013 -21364586.987 +16 42790745.255 -42730812.745 +17 85553155.01199999 -85468402.98800001 +18 171070705.842 -170950852.158 +19 342095527.017 -341926030.983 +20 684130629.851 -683890928.149 +21 1368180273.031 -1367841284.969 +22 2736250479.285 -2735771078.715 +23 5472349766.059 -5471671791.941 +24 10944490178.861 -10943531379.139 -- !sql_test_String_BigInt_1 -- \N \N \N \N @@ -8758,18 +8758,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.6779516542993E10 0.0019803827750302593 10604.017 -14 1.60354289387247E11 0.0014010471216912553 14988.793 -15 4.5320770658312695E11 9.909394930154285E-4 21192.013 -16 1.281380407512645E12 7.007883322237886E-4 29966.255 -17 3.623605797033348E12 4.955633955808074E-4 42376.012 -18 1.0248135933429918E13 3.504272792067686E-4 59926.842 -19 2.8984735312875246E13 2.477934094585949E-4 84748.017 -20 8.197927395632292E13 1.7521778118060913E-4 119850.851 -21 2.3186966138416012E14 1.2389816922634057E-4 169494.031 -22 6.55822563489372E14 8.760940813530326E-5 239700.285 -23 1.854940840789509E15 6.194926740658747E-5 338987.059 -24 5.246557246235101E15 4.380476871604514E-5 479399.861 +13 56779516542.993 0.001980382775030259 10604.017 +14 160354289387.247 0.001401047121691255 14988.793 +15 453207706583.127 0.0009909394930154285 21192.013 +16 1281380407512.645 0.0007007883322237886 29966.255 +17 3623605797033.348 0.0004955633955808074 42376.012 +18 10248135933429.92 0.0003504272792067686 59926.842 +19 28984735312875.25 0.0002477934094585949 84748.01700000001 +20 81979273956322.92 0.0001752177811806091 119850.851 +21 231869661384160.1 0.0001238981692263406 169494.031 +22 655822563489372 8.760940813530326e-05 239700.285 +23 1854940840789509 6.194926740658747e-05 338987.059 +24 5246557246235101 4.380476871604514e-05 479399.861 -- !sql_test_String_BigInt_notn_1 -- 1 \N \N \N @@ -8784,18 +8784,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5.6779516542993E10 0.0019803827750302593 10604.017 -14 1.60354289387247E11 0.0014010471216912553 14988.793 -15 4.5320770658312695E11 9.909394930154285E-4 21192.013 -16 1.281380407512645E12 7.007883322237886E-4 29966.255 -17 3.623605797033348E12 4.955633955808074E-4 42376.012 -18 1.0248135933429918E13 3.504272792067686E-4 59926.842 -19 2.8984735312875246E13 2.477934094585949E-4 84748.017 -20 8.197927395632292E13 1.7521778118060913E-4 119850.851 -21 2.3186966138416012E14 1.2389816922634057E-4 169494.031 -22 6.55822563489372E14 8.760940813530326E-5 239700.285 -23 1.854940840789509E15 6.194926740658747E-5 338987.059 -24 5.246557246235101E15 4.380476871604514E-5 479399.861 +13 56779516542.993 0.001980382775030259 10604.017 +14 160354289387.247 0.001401047121691255 14988.793 +15 453207706583.127 0.0009909394930154285 21192.013 +16 1281380407512.645 0.0007007883322237886 29966.255 +17 3623605797033.348 0.0004955633955808074 42376.012 +18 10248135933429.92 0.0003504272792067686 59926.842 +19 28984735312875.25 0.0002477934094585949 84748.01700000001 +20 81979273956322.92 0.0001752177811806091 119850.851 +21 231869661384160.1 0.0001238981692263406 169494.031 +22 655822563489372 8.760940813530326e-05 239700.285 +23 1854940840789509 6.194926740658747e-05 338987.059 +24 5246557246235101 4.380476871604514e-05 479399.861 -- !sql_test_String_BigInt_2 -- \N \N @@ -8917,18 +8917,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07101249017E8 -1.07080040983E8 -14 2.13980633793E8 -2.13950656207E8 -15 4.27736837013E8 -4.27694452987E8 -16 8.55245611255E8 -8.55185678745E8 -17 1.710258021012E9 -1.710173268988E9 -18 3.420275571842E9 -3.420155718158E9 -19 6.840300393017E9 -6.840130896983E9 -20 1.3680335495851E10 -1.3680095794149E10 -21 2.7360385139031E10 -2.7360046150969E10 -22 5.4720455345285E10 -5.4719975944715E10 -23 1.09440554632059E11 -1.09439876657941E11 -24 2.18880695044861E11 -2.18879736245139E11 +13 107101249.017 -107080040.983 +14 213980633.793 -213950656.207 +15 427736837.013 -427694452.987 +16 855245611.255 -855185678.745 +17 1710258021.012 -1710173268.988 +18 3420275571.842 -3420155718.158 +19 6840300393.017 -6840130896.983 +20 13680335495.851 -13680095794.149 +21 27360385139.031 -27360046150.969 +22 54720455345.285 -54719975944.715 +23 109440554632.059 -109439876657.941 +24 218880695044.861 -218879736245.139 -- !sql_test_String_LargeInt_notn_0 -- 1 \N \N @@ -8943,18 +8943,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.07101249017E8 -1.07080040983E8 -14 2.13980633793E8 -2.13950656207E8 -15 4.27736837013E8 -4.27694452987E8 -16 8.55245611255E8 -8.55185678745E8 -17 1.710258021012E9 -1.710173268988E9 -18 3.420275571842E9 -3.420155718158E9 -19 6.840300393017E9 -6.840130896983E9 -20 1.3680335495851E10 -1.3680095794149E10 -21 2.7360385139031E10 -2.7360046150969E10 -22 5.4720455345285E10 -5.4719975944715E10 -23 1.09440554632059E11 -1.09439876657941E11 -24 2.18880695044861E11 -2.18879736245139E11 +13 107101249.017 -107080040.983 +14 213980633.793 -213950656.207 +15 427736837.013 -427694452.987 +16 855245611.255 -855185678.745 +17 1710258021.012 -1710173268.988 +18 3420275571.842 -3420155718.158 +19 6840300393.017 -6840130896.983 +20 13680335495.851 -13680095794.149 +21 27360385139.031 -27360046150.969 +22 54720455345.285 -54719975944.715 +23 109440554632.059 -109439876657.941 +24 218880695044.861 -218879736245.139 -- !sql_test_String_LargeInt_1 -- \N \N \N \N @@ -8970,18 +8970,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.135591020120965E12 9.901907865061416E-5 10604.017 -14 3.207086762016485E12 7.005233480356157E-5 14988.793 -15 9.064155509143385E12 4.95469671211115E-5 21192.013 -16 2.5627610098059477E13 3.503941394804582E-5 29966.255 -17 7.247211869510775E13 2.477816883729888E-5 42376.012 -18 2.049627225638431E14 1.7521363627351046E-5 59926.842 -19 5.79694711766126E14 1.2389670355195359E-5 84748.017 -20 1.6395854869167638E15 8.760889017404082E-6 119850.851 -21 4.637393238700315E15 6.194908446599709E-6 169494.031 -22 1.311645128536796E16 4.380470401561774E-6 239700.285 -23 3.7098816837824336E16 3.0974633684896923E-6 338987.059 -24 1.04931144955863024E17 2.1902384351518302E-6 479399.861 +13 1135591020120.965 9.901907865061416e-05 10604.017 +14 3207086762016.485 7.005233480356157e-05 14988.793 +15 9064155509143.385 4.95469671211115e-05 21192.013 +16 25627610098059.48 3.503941394804582e-05 29966.255 +17 72472118695107.75 2.477816883729888e-05 42376.012 +18 204962722563843.1 1.752136362735105e-05 59926.842 +19 579694711766126 1.238967035519536e-05 84748.01700000001 +20 1639585486916764 8.760889017404082e-06 119850.851 +21 4637393238700315 6.194908446599709e-06 169494.031 +22 1.311645128536796e+16 4.380470401561774e-06 239700.285 +23 3.709881683782434e+16 3.097463368489692e-06 338987.059 +24 1.04931144955863e+17 2.19023843515183e-06 479399.861 -- !sql_test_String_LargeInt_notn_1 -- 1 \N \N \N @@ -8996,18 +8996,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.135591020120965E12 9.901907865061416E-5 10604.017 -14 3.207086762016485E12 7.005233480356157E-5 14988.793 -15 9.064155509143385E12 4.95469671211115E-5 21192.013 -16 2.5627610098059477E13 3.503941394804582E-5 29966.255 -17 7.247211869510775E13 2.477816883729888E-5 42376.012 -18 2.049627225638431E14 1.7521363627351046E-5 59926.842 -19 5.79694711766126E14 1.2389670355195359E-5 84748.017 -20 1.6395854869167638E15 8.760889017404082E-6 119850.851 -21 4.637393238700315E15 6.194908446599709E-6 169494.031 -22 1.311645128536796E16 4.380470401561774E-6 239700.285 -23 3.7098816837824336E16 3.0974633684896923E-6 338987.059 -24 1.04931144955863024E17 2.1902384351518302E-6 479399.861 +13 1135591020120.965 9.901907865061416e-05 10604.017 +14 3207086762016.485 7.005233480356157e-05 14988.793 +15 9064155509143.385 4.95469671211115e-05 21192.013 +16 25627610098059.48 3.503941394804582e-05 29966.255 +17 72472118695107.75 2.477816883729888e-05 42376.012 +18 204962722563843.1 1.752136362735105e-05 59926.842 +19 579694711766126 1.238967035519536e-05 84748.01700000001 +20 1639585486916764 8.760889017404082e-06 119850.851 +21 4637393238700315 6.194908446599709e-06 169494.031 +22 1.311645128536796e+16 4.380470401561774e-06 239700.285 +23 3.709881683782434e+16 3.097463368489692e-06 338987.059 +24 1.04931144955863e+17 2.19023843515183e-06 479399.861 -- !sql_test_String_LargeInt_2 -- \N \N @@ -9131,16 +9131,16 @@ 12 \N \N 13 10604.11700000149 10603.91699999851 14 14988.99300000298 14988.59299999702 -15 21192.31300001192 21191.712999988078 +15 21192.31300001192 21191.71299998808 16 29966.65500000596 29965.85499999404 17 42376.512 42375.512 -18 59927.44200002384 59926.241999976155 +18 59927.44200002384 59926.24199997616 19 84748.71699998809 84747.31700001193 -20 119851.65100001192 119850.05099998807 -21 169494.93099997615 169493.13100002383 +20 119851.6510000119 119850.0509999881 +21 169494.9309999761 169493.1310000238 22 239701.285 239699.285 -23 338988.15900002385 338985.95899997617 -24 479401.06100004766 479398.6609999523 +23 338988.1590000239 338985.9589999762 +24 479401.0610000477 479398.6609999523 -- !sql_test_String_Float_notn_0 -- 1 \N \N @@ -9157,16 +9157,16 @@ 12 \N \N 13 10604.11700000149 10603.91699999851 14 14988.99300000298 14988.59299999702 -15 21192.31300001192 21191.712999988078 +15 21192.31300001192 21191.71299998808 16 29966.65500000596 29965.85499999404 17 42376.512 42375.512 -18 59927.44200002384 59926.241999976155 +18 59927.44200002384 59926.24199997616 19 84748.71699998809 84747.31700001193 -20 119851.65100001192 119850.05099998807 -21 169494.93099997615 169493.13100002383 +20 119851.6510000119 119850.0509999881 +21 169494.9309999761 169493.1310000238 22 239701.285 239699.285 -23 338988.15900002385 338985.95899997617 -24 479401.06100004766 479398.6609999523 +23 338988.1590000239 338985.9589999762 +24 479401.0610000477 479398.6609999523 -- !sql_test_String_Float_1 -- \N \N \N \N @@ -9182,18 +9182,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1060.4017158012166 106040.16841987836 0.016841988086525816 +13 1060.401715801217 106040.1684198784 0.01684198808652582 14 2997.758644670084 74943.96388324791 0.1927766524549952 -15 6357.604152628481 70640.04052635032 0.012157905577623751 -16 11986.502178612798 74915.63638367003 0.2545534718046838 -17 21188.006 84752.024 0.012000000002444722 +15 6357.604152628481 70640.04052635032 0.01215790557762375 +16 11986.5021786128 74915.63638367003 0.2545534718046838 +17 21188.006 84752.024 0.01200000000244472 18 35956.10662876725 99878.06603120224 0.03961872291256441 -19 59323.610889724914 121068.59777607166 0.41844324303383473 -20 95880.68222873348 149813.56151760396 0.44921408986556344 -21 152544.6238589474 188326.70610006506 0.6354900417209137 -22 239700.285 239700.285 0.28500000000349246 +19 59323.61088972491 121068.5977760717 0.4184432430338347 +20 95880.68222873348 149813.561517604 0.4492140898655634 +21 152544.6238589474 188326.7061000651 0.6354900417209137 +22 239700.285 239700.285 0.2850000000034925 23 372885.7729820813 308170.0469569578 0.05165265465620905 -24 575279.8560595667 399499.86829196813 1.041950403188821 +24 575279.8560595667 399499.8682919681 1.041950403188821 -- !sql_test_String_Float_notn_1 -- 1 \N \N \N @@ -9208,18 +9208,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1060.4017158012166 106040.16841987836 0.016841988086525816 +13 1060.401715801217 106040.1684198784 0.01684198808652582 14 2997.758644670084 74943.96388324791 0.1927766524549952 -15 6357.604152628481 70640.04052635032 0.012157905577623751 -16 11986.502178612798 74915.63638367003 0.2545534718046838 -17 21188.006 84752.024 0.012000000002444722 +15 6357.604152628481 70640.04052635032 0.01215790557762375 +16 11986.5021786128 74915.63638367003 0.2545534718046838 +17 21188.006 84752.024 0.01200000000244472 18 35956.10662876725 99878.06603120224 0.03961872291256441 -19 59323.610889724914 121068.59777607166 0.41844324303383473 -20 95880.68222873348 149813.56151760396 0.44921408986556344 -21 152544.6238589474 188326.70610006506 0.6354900417209137 -22 239700.285 239700.285 0.28500000000349246 +19 59323.61088972491 121068.5977760717 0.4184432430338347 +20 95880.68222873348 149813.561517604 0.4492140898655634 +21 152544.6238589474 188326.7061000651 0.6354900417209137 +22 239700.285 239700.285 0.2850000000034925 23 372885.7729820813 308170.0469569578 0.05165265465620905 -24 575279.8560595667 399499.86829196813 1.041950403188821 +24 575279.8560595667 399499.8682919681 1.041950403188821 -- !sql_test_String_Float_2 -- \N \N @@ -9342,17 +9342,17 @@ 11 \N \N 12 \N \N 13 10604.5414 10603.4926 -14 14989.534599999999 14988.0514 -15 21193.0498 21190.976199999997 -16 29967.704100000003 29964.8059 -17 42378.043000000005 42373.981 -18 59929.6968 59923.987199999996 +14 14989.5346 14988.0514 +15 21193.0498 21190.9762 +16 29967.7041 29964.8059 +17 42378.04300000001 42373.981 +18 59929.6968 59923.9872 19 84752.03880000001 84743.9952 -20 119856.52549999999 119845.1765 +20 119856.5255 119845.1765 21 169502.0451 169486.0169 22 239711.6098 239688.9602 23 339003.0676 338971.0504 -24 479422.495 479377.22699999996 +24 479422.495 479377.227 -- !sql_test_String_Double_notn_0 -- 1 \N \N @@ -9368,17 +9368,17 @@ 11 \N \N 12 \N \N 13 10604.5414 10603.4926 -14 14989.534599999999 14988.0514 -15 21193.0498 21190.976199999997 -16 29967.704100000003 29964.8059 -17 42378.043000000005 42373.981 -18 59929.6968 59923.987199999996 +14 14989.5346 14988.0514 +15 21193.0498 21190.9762 +16 29967.7041 29964.8059 +17 42378.04300000001 42373.981 +18 59929.6968 59923.9872 19 84752.03880000001 84743.9952 -20 119856.52549999999 119845.1765 +20 119856.5255 119845.1765 21 169502.0451 169486.0169 22 239711.6098 239688.9602 23 339003.0676 338971.0504 -24 479422.495 479377.22699999996 +24 479422.495 479377.227 -- !sql_test_String_Double_1 -- \N \N \N \N @@ -9394,18 +9394,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5560.7465148 20221.23760488177 0.12460000000028515 -14 11115.6888888 20211.425296655878 0.31539999999891855 -15 21971.879078399998 20439.827353395063 0.8578000000001578 -16 43424.10012050001 20679.21813539438 0.31609999999988725 +13 5560.7465148 20221.23760488177 0.1246000000002851 +14 11115.6888888 20211.42529665588 0.3153999999989185 +15 21971.8790784 20439.82735339506 0.8578000000001578 +16 43424.10012050001 20679.21813539438 0.3160999999998872 17 86065.68037200002 20864.60462826194 1.227999999999554 -18 171079.14854159998 20991.607818411096 1.7351999999968255 -19 340839.5747706 21072.160972698795 0.6474000000109044 -20 680093.6539995 21120.953564190677 5.41099999999301 -21 1358342.1138370999 21149.477920165707 3.8301000000068797 -22 2714557.787568 21165.961871291325 10.893000000008666 -23 5426708.232707401 21175.309458665964 4.95399999998142 -24 1.0850736453874E7 21180.518732879736 11.740999999968096 +18 171079.1485416 20991.6078184111 1.735199999996826 +19 340839.5747706 21072.1609726988 0.6474000000109044 +20 680093.6539995 21120.95356419068 5.41099999999301 +21 1358342.1138371 21149.47792016571 3.83010000000688 +22 2714557.787568 21165.96187129133 10.89300000000867 +23 5426708.232707401 21175.30945866596 4.95399999998142 +24 10850736.453874 21180.51873287974 11.7409999999681 -- !sql_test_String_Double_notn_1 -- 1 \N \N \N @@ -9420,18 +9420,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 5560.7465148 20221.23760488177 0.12460000000028515 -14 11115.6888888 20211.425296655878 0.31539999999891855 -15 21971.879078399998 20439.827353395063 0.8578000000001578 -16 43424.10012050001 20679.21813539438 0.31609999999988725 +13 5560.7465148 20221.23760488177 0.1246000000002851 +14 11115.6888888 20211.42529665588 0.3153999999989185 +15 21971.8790784 20439.82735339506 0.8578000000001578 +16 43424.10012050001 20679.21813539438 0.3160999999998872 17 86065.68037200002 20864.60462826194 1.227999999999554 -18 171079.14854159998 20991.607818411096 1.7351999999968255 -19 340839.5747706 21072.160972698795 0.6474000000109044 -20 680093.6539995 21120.953564190677 5.41099999999301 -21 1358342.1138370999 21149.477920165707 3.8301000000068797 -22 2714557.787568 21165.961871291325 10.893000000008666 -23 5426708.232707401 21175.309458665964 4.95399999998142 -24 1.0850736453874E7 21180.518732879736 11.740999999968096 +18 171079.1485416 20991.6078184111 1.735199999996826 +19 340839.5747706 21072.1609726988 0.6474000000109044 +20 680093.6539995 21120.95356419068 5.41099999999301 +21 1358342.1138371 21149.47792016571 3.83010000000688 +22 2714557.787568 21165.96187129133 10.89300000000867 +23 5426708.232707401 21175.30945866596 4.95399999998142 +24 10850736.453874 21180.51873287974 11.7409999999681 -- !sql_test_String_Double_2 -- \N \N @@ -9553,18 +9553,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 10628.412 10579.622 -14 15023.277 14954.309 -15 21240.769 21143.256999999998 -16 30035.198 29897.312 -17 42473.506 42278.518000000004 -18 60064.716 59788.96799999999 -19 84942.997 84553.03700000001 -20 120126.59199999999 119575.11 -21 169883.98599999998 169104.076 -22 240251.764 239148.806 -23 339766.967 338207.151 -24 480502.81799999997 478296.904 +13 10628.412200000 10579.621800000 +14 15023.276700000 14954.309300000 +15 21240.768800000 21143.257200000 +16 30035.197900000 29897.312100000 +17 42473.506200000 42278.517800000 +18 60064.715600000 59788.968400000 +19 84942.996800000 84553.037200000 +20 120126.592000000 119575.110000000 +21 169883.986300000 169104.075700000 +22 240251.764000000 239148.806000000 +23 339766.967400000 338207.150600000 +24 480502.817500000 478296.904500000 -- !sql_test_String_DecimalV2_notn_0 -- 1 \N \N @@ -9579,18 +9579,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 10628.412 10579.622 -14 15023.277 14954.309 -15 21240.769 21143.256999999998 -16 30035.198 29897.312 -17 42473.506 42278.518000000004 -18 60064.716 59788.96799999999 -19 84942.997 84553.03700000001 -20 120126.59199999999 119575.11 -21 169883.98599999998 169104.076 -22 240251.764 239148.806 -23 339766.967 338207.151 -24 480502.81799999997 478296.904 +13 10628.412200000 10579.621800000 +14 15023.276700000 14954.309300000 +15 21240.768800000 21143.257200000 +16 30035.197900000 29897.312100000 +17 42473.506200000 42278.517800000 +18 60064.715600000 59788.968400000 +19 84942.996800000 84553.037200000 +20 120126.592000000 119575.110000000 +21 169883.986300000 169104.075700000 +22 240251.764000000 239148.806000000 +23 339766.967400000 338207.150600000 +24 480502.817500000 478296.904500000 -- !sql_test_String_DecimalV2_1 -- \N \N \N \N @@ -9606,18 +9606,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 258684.99471499998 434.6799344127895 16.58700000000001 -14 516873.537812 434.65934926342646 22.7369999999989 -15 1033237.7858279999 434.6544630404463 31.908999999998912 -16 2065963.518465 434.65261157768015 44.993000000001956 -17 4131406.9139280003 434.6525119494533 63.61600000000254 -18 8262353.413907999 434.64933199878146 89.52599999999899 -19 1.652416835466E7 434.649794850754 126.69700000001154 -20 3.3047793505590998E7 434.6500919340976 179.25700000000143 -21 6.609504485860499E7 434.65023143696067 253.56099999999503 -22 1.3218967347151501E8 434.6498869403912 358.39899999998534 -23 2.64378719210572E8 434.65006000707774 506.9870000000017 -24 5.28757432488977E8 434.64963819985724 716.5229999999287 +13 258687.115518400 434.6763707614613 16.500200000 +14 516869.041174100 434.663130696532 22.867200000 +15 1033233.547425400 434.6562460261138 31.995800000 +16 2065960.521839500 434.653242030724 45.036400000 +17 4131415.389130400 434.6516203015154 63.529200000 +18 8262329.443171200 434.650593006928 89.699600000 +19 16524151.405056600 434.6502406915998 126.783800000 +20 33047793.505591000 434.6500919340976 179.257000000 +21 66095095.706814300 434.6498970523031 253.430800000 +22 132189673.471515000 434.6498869403912 358.399000000 +23 264378854.805395600 434.6498370834319 506.813400000 +24 528757192.789046500 434.6498352382891 716.740000000 -- !sql_test_String_DecimalV2_notn_1 -- 1 \N \N \N @@ -9632,18 +9632,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 258684.99471499998 434.6799344127895 16.58700000000001 -14 516873.537812 434.65934926342646 22.7369999999989 -15 1033237.7858279999 434.6544630404463 31.908999999998912 -16 2065963.518465 434.65261157768015 44.993000000001956 -17 4131406.9139280003 434.6525119494533 63.61600000000254 -18 8262353.413907999 434.64933199878146 89.52599999999899 -19 1.652416835466E7 434.649794850754 126.69700000001154 -20 3.3047793505590998E7 434.6500919340976 179.25700000000143 -21 6.609504485860499E7 434.65023143696067 253.56099999999503 -22 1.3218967347151501E8 434.6498869403912 358.39899999998534 -23 2.64378719210572E8 434.65006000707774 506.9870000000017 -24 5.28757432488977E8 434.64963819985724 716.5229999999287 +13 258687.115518400 434.6763707614613 16.500200000 +14 516869.041174100 434.663130696532 22.867200000 +15 1033233.547425400 434.6562460261138 31.995800000 +16 2065960.521839500 434.653242030724 45.036400000 +17 4131415.389130400 434.6516203015154 63.529200000 +18 8262329.443171200 434.650593006928 89.699600000 +19 16524151.405056600 434.6502406915998 126.783800000 +20 33047793.505591000 434.6500919340976 179.257000000 +21 66095095.706814300 434.6498970523031 253.430800000 +22 132189673.471515000 434.6498869403912 358.399000000 +23 264378854.805395600 434.6498370834319 506.813400000 +24 528757192.789046500 434.6498352382891 716.740000000 -- !sql_test_String_DecimalV2_2 -- \N \N @@ -9765,17 +9765,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 10749.360999999999 10458.673 +13 10749.361 10458.673 14 15145.248 14832.338 -15 21359.578999999998 21024.447 +15 21359.579 21024.447 16 30144.932 29787.578 17 42565.8 42186.224 -18 60127.740999999995 59725.943 +18 60127.74099999999 59725.943 19 84960.027 84536.00700000001 20 120073.972 119627.73 -21 169728.26299999998 169259.799 +21 169728.263 169259.799 22 239945.628 239454.942 -23 339243.51300000004 338730.605 +23 339243.513 338730.605 24 479667.426 479132.296 -- !sql_test_String_Decimal32V3_notn_0 -- @@ -9791,17 +9791,17 @@ 10 \N \N 11 \N \N 12 \N \N -13 10749.360999999999 10458.673 +13 10749.361 10458.673 14 15145.248 14832.338 -15 21359.578999999998 21024.447 +15 21359.579 21024.447 16 30144.932 29787.578 17 42565.8 42186.224 -18 60127.740999999995 59725.943 +18 60127.74099999999 59725.943 19 84960.027 84536.00700000001 20 120073.972 119627.73 -21 169728.26299999998 169259.799 +21 169728.263 169259.799 22 239945.628 239454.942 -23 339243.51300000004 338730.605 +23 339243.513 338730.605 24 479667.426 479132.296 -- !sql_test_String_Decimal32V3_1 -- @@ -9818,18 +9818,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1541230.246848 72.95806500440335 139.24900000000025 -14 2345071.608815 95.80258221213766 125.56799999999848 -15 3551060.850358 126.46964778057601 78.6969999999987 -16 5354280.544635 167.71187673847223 127.19600000000227 -17 8042458.565456001 223.28077644529685 53.28800000000001 -18 1.2039242630958E7 298.2933812512755 58.939999999996644 -19 1.7967427084170002E7 399.73594170086324 156.02700000001073 -20 2.6741241725971E7 537.1563008412476 34.873999999990104 -21 3.9700925869192E7 723.6160345298678 144.29499999998862 -22 5.8808787022755E7 977.0007092111861 0.17400000001393323 -23 8.6934587228786E7 1321.8240269210073 211.32499999999817 -24 1.2827062380846499E8 1791.7136434137499 190.9459999999794 +13 1541230.246848 72.95806500440335 139.2490000000003 +14 2345071.608815 95.80258221213766 125.5679999999985 +15 3551060.850358 126.469647780576 78.6969999999987 +16 5354280.544635 167.7118767384722 127.1960000000023 +17 8042458.565456001 223.2807764452969 53.28800000000001 +18 12039242.630958 298.2933812512755 58.93999999999664 +19 17967427.08417 399.7359417008632 156.0270000000107 +20 26741241.725971 537.1563008412476 34.8739999999901 +21 39700925.869192 723.6160345298678 144.2949999999886 +22 58808787.022755 977.0007092111861 0.1740000000139332 +23 86934587.22878601 1321.824026921007 211.3249999999982 +24 128270623.808465 1791.71364341375 190.9459999999794 -- !sql_test_String_Decimal32V3_notn_1 -- 1 \N \N \N @@ -9844,18 +9844,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1541230.246848 72.95806500440335 139.24900000000025 -14 2345071.608815 95.80258221213766 125.56799999999848 -15 3551060.850358 126.46964778057601 78.6969999999987 -16 5354280.544635 167.71187673847223 127.19600000000227 -17 8042458.565456001 223.28077644529685 53.28800000000001 -18 1.2039242630958E7 298.2933812512755 58.939999999996644 -19 1.7967427084170002E7 399.73594170086324 156.02700000001073 -20 2.6741241725971E7 537.1563008412476 34.873999999990104 -21 3.9700925869192E7 723.6160345298678 144.29499999998862 -22 5.8808787022755E7 977.0007092111861 0.17400000001393323 -23 8.6934587228786E7 1321.8240269210073 211.32499999999817 -24 1.2827062380846499E8 1791.7136434137499 190.9459999999794 +13 1541230.246848 72.95806500440335 139.2490000000003 +14 2345071.608815 95.80258221213766 125.5679999999985 +15 3551060.850358 126.469647780576 78.6969999999987 +16 5354280.544635 167.7118767384722 127.1960000000023 +17 8042458.565456001 223.2807764452969 53.28800000000001 +18 12039242.630958 298.2933812512755 58.93999999999664 +19 17967427.08417 399.7359417008632 156.0270000000107 +20 26741241.725971 537.1563008412476 34.8739999999901 +21 39700925.869192 723.6160345298678 144.2949999999886 +22 58808787.022755 977.0007092111861 0.1740000000139332 +23 86934587.22878601 1321.824026921007 211.3249999999982 +24 128270623.808465 1791.71364341375 190.9459999999794 -- !sql_test_String_Decimal32V3_2 -- \N \N @@ -9978,17 +9978,17 @@ 11 \N \N 12 \N \N 13 25171.36266 -3963.328660000001 -14 30667.249770000002 -689.663770000001 -15 37981.580879999994 4402.44512 -16 47866.933990000005 12065.57601 -17 61387.8021 23364.221900000004 +14 30667.24977 -689.663770000001 +15 37981.58087999999 4402.44512 +16 47866.93399 12065.57601 +17 61387.8021 23364.2219 18 80049.74321 39803.94078999999 -19 105982.02932 63514.004680000005 +19 105982.02932 63514.00468000001 20 142195.97443 97505.72756999999 -21 192950.26554 146037.79645999998 +21 192950.26554 146037.79646 22 264267.63065 215132.93935 -23 364665.51576 313308.60224000004 -24 506189.42886999995 452610.29313 +23 364665.51576 313308.60224 +24 506189.4288699999 452610.29313 -- !sql_test_String_Decimal64V3_notn_0 -- 1 \N \N @@ -10004,17 +10004,17 @@ 11 \N \N 12 \N \N 13 25171.36266 -3963.328660000001 -14 30667.249770000002 -689.663770000001 -15 37981.580879999994 4402.44512 -16 47866.933990000005 12065.57601 -17 61387.8021 23364.221900000004 +14 30667.24977 -689.663770000001 +15 37981.58087999999 4402.44512 +16 47866.93399 12065.57601 +17 61387.8021 23364.2219 18 80049.74321 39803.94078999999 -19 105982.02932 63514.004680000005 +19 105982.02932 63514.00468000001 20 142195.97443 97505.72756999999 -21 192950.26554 146037.79645999998 +21 192950.26554 146037.79646 22 264267.63065 215132.93935 -23 364665.51576 313308.60224000004 -24 506189.42886999995 452610.29313 +23 364665.51576 313308.60224 +24 506189.4288699999 452610.29313 -- !sql_test_String_Decimal64V3_1 -- \N \N \N \N @@ -10030,18 +10030,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447238102351624E8 0.7279306228805447 10604.017 -14 2.350011430849786E8 0.9560120118888461 14988.793 -15 3.558047407773424E8 1.2622131285013156 4402.44512 -16 5.364163112874825E8 1.6740289581607652 12065.57601 -17 8.056438454190812E8 2.228933297554132 4352.431800000006 -18 1.2059019213932788E9 2.9780418526439707 19681.039579999997 -19 1.7995404370735698E9 3.991144759776611 21045.980040000002 -20 2.6780820587855387E9 5.363624478309718 8125.233849999997 -21 3.975691744266031E9 7.225969313657791 5300.389219999979 -22 5.88879975399851E9 9.756865410488496 18594.17415000001 -23 8.70466453673107E9 13.2012239741778 5167.121119999996 -24 1.2842915113128065E10 17.89502030515582 23977.207209999993 +13 154472381.0235162 0.7279306228805447 10604.017 +14 235001143.0849786 0.9560120118888461 14988.793 +15 355804740.7773424 1.262213128501316 4402.44512 +16 536416311.2874825 1.674028958160765 12065.57601 +17 805643845.4190812 2.228933297554132 4352.431800000006 +18 1205901921.393279 2.978041852643971 19681.03958 +19 1799540437.07357 3.991144759776611 21045.98004 +20 2678082058.785539 5.363624478309718 8125.233849999997 +21 3975691744.266031 7.225969313657791 5300.389219999979 +22 5888799753.99851 9.756865410488496 18594.17415000001 +23 8704664536.73107 13.2012239741778 5167.121119999996 +24 12842915113.12807 17.89502030515582 23977.20720999999 -- !sql_test_String_Decimal64V3_notn_1 -- 1 \N \N \N @@ -10056,18 +10056,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447238102351624E8 0.7279306228805447 10604.017 -14 2.350011430849786E8 0.9560120118888461 14988.793 -15 3.558047407773424E8 1.2622131285013156 4402.44512 -16 5.364163112874825E8 1.6740289581607652 12065.57601 -17 8.056438454190812E8 2.228933297554132 4352.431800000006 -18 1.2059019213932788E9 2.9780418526439707 19681.039579999997 -19 1.7995404370735698E9 3.991144759776611 21045.980040000002 -20 2.6780820587855387E9 5.363624478309718 8125.233849999997 -21 3.975691744266031E9 7.225969313657791 5300.389219999979 -22 5.88879975399851E9 9.756865410488496 18594.17415000001 -23 8.70466453673107E9 13.2012239741778 5167.121119999996 -24 1.2842915113128065E10 17.89502030515582 23977.207209999993 +13 154472381.0235162 0.7279306228805447 10604.017 +14 235001143.0849786 0.9560120118888461 14988.793 +15 355804740.7773424 1.262213128501316 4402.44512 +16 536416311.2874825 1.674028958160765 12065.57601 +17 805643845.4190812 2.228933297554132 4352.431800000006 +18 1205901921.393279 2.978041852643971 19681.03958 +19 1799540437.07357 3.991144759776611 21045.98004 +20 2678082058.785539 5.363624478309718 8125.233849999997 +21 3975691744.266031 7.225969313657791 5300.389219999979 +22 5888799753.99851 9.756865410488496 18594.17415000001 +23 8704664536.73107 13.2012239741778 5167.121119999996 +24 12842915113.12807 17.89502030515582 23977.20720999999 -- !sql_test_String_Decimal64V3_2 -- \N \N @@ -10189,18 +10189,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568961536267698E8 -1.45668407328677E8 -14 1.5680511124978802E8 -1.56775133663788E8 -15 1.67922425580899E8 -1.6788004155489898E8 -16 1.7904231093401E8 -1.7898237842401E8 -17 1.9016583180212098E8 -1.90081079778121E8 -18 2.01294493743232E8 -2.01174640059232E8 -19 2.1243042602934298E8 -2.12260929995343E8 -20 2.2357663997445402E8 -2.23336938272454E8 -21 2.3473739426556498E8 -2.34398406203565E8 -22 2.45918711630676E8 -2.45439311060676E8 -23 2.5712910951578698E8 -2.56451135397787E8 -24 2.68380633428898E8 -2.67421833706898E8 +13 145689615.362677 -145668407.328677 +14 156805111.249788 -156775133.663788 +15 167922425.580899 -167880041.554899 +16 179042310.93401 -178982378.42401 +17 190165831.802121 -190081079.778121 +18 201294493.743232 -201174640.059232 +19 212430426.029343 -212260929.995343 +20 223576639.974454 -223336938.272454 +21 234737394.265565 -234398406.203565 +22 245918711.630676 -245439311.060676 +23 257129109.515787 -256451135.397787 +24 268380633.428898 -267421833.706898 -- !sql_test_String_Decimal128V3_notn_0 -- 1 \N \N @@ -10215,18 +10215,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 1.4568961536267698E8 -1.45668407328677E8 -14 1.5680511124978802E8 -1.56775133663788E8 -15 1.67922425580899E8 -1.6788004155489898E8 -16 1.7904231093401E8 -1.7898237842401E8 -17 1.9016583180212098E8 -1.90081079778121E8 -18 2.01294493743232E8 -2.01174640059232E8 -19 2.1243042602934298E8 -2.12260929995343E8 -20 2.2357663997445402E8 -2.23336938272454E8 -21 2.3473739426556498E8 -2.34398406203565E8 -22 2.45918711630676E8 -2.45439311060676E8 -23 2.5712910951578698E8 -2.56451135397787E8 -24 2.68380633428898E8 -2.67421833706898E8 +13 145689615.362677 -145668407.328677 +14 156805111.249788 -156775133.663788 +15 167922425.580899 -167880041.554899 +16 179042310.93401 -178982378.42401 +17 190165831.802121 -190081079.778121 +18 201294493.743232 -201174640.059232 +19 212430426.029343 -212260929.995343 +20 223576639.974454 -223336938.272454 +21 234737394.265565 -234398406.203565 +22 245918711.630676 -245439311.060676 +23 257129109.515787 -256451135.397787 +24 268380633.428898 -267421833.706898 -- !sql_test_String_Decimal128V3_1 -- \N \N \N \N @@ -10242,18 +10242,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447827128527517E12 7.279028668610382E-5 10604.017 -14 2.350094689949447E12 9.559781423176688E-5 14988.793 -15 3.5581651244869517E12 1.262171370017361E-4 21192.013 -16 5.364329568799107E12 1.6739770127994797E-4 29966.255 -17 8.056673844043637E12 2.2288681753596603E-4 42376.012 -18 1.2059352095628559E13 2.977959647927322E-4 59926.842 -19 1.799587513006657E13 3.991040354260183E-4 84748.017 -20 2.6781486338173504E13 5.363491146101878E-4 119850.851 -21 3.9757858953962266E13 7.225798194489018E-4 169494.031 -22 5.888932903807677E13 9.756644806044754E-4 239700.285 -23 8.704852839187608E13 0.0013200938406696123 338987.059 -24 1.2843181413417883E14 0.0017894649256196833 479399.861 +13 1544782712852.752 7.279028668610382e-05 10604.017 +14 2350094689949.447 9.559781423176688e-05 14988.793 +15 3558165124486.952 0.0001262171370017361 21192.013 +16 5364329568799.107 0.000167397701279948 29966.255 +17 8056673844043.637 0.000222886817535966 42376.012 +18 12059352095628.56 0.0002977959647927322 59926.842 +19 17995875130066.57 0.0003991040354260183 84748.01700000001 +20 26781486338173.5 0.0005363491146101878 119850.851 +21 39757858953962.27 0.0007225798194489018 169494.031 +22 58889329038076.77 0.0009756644806044754 239700.285 +23 87048528391876.08 0.001320093840669612 338987.059 +24 128431814134178.8 0.001789464925619683 479399.861 -- !sql_test_String_Decimal128V3_notn_1 -- 1 \N \N \N @@ -10268,18 +10268,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.5447827128527517E12 7.279028668610382E-5 10604.017 -14 2.350094689949447E12 9.559781423176688E-5 14988.793 -15 3.5581651244869517E12 1.262171370017361E-4 21192.013 -16 5.364329568799107E12 1.6739770127994797E-4 29966.255 -17 8.056673844043637E12 2.2288681753596603E-4 42376.012 -18 1.2059352095628559E13 2.977959647927322E-4 59926.842 -19 1.799587513006657E13 3.991040354260183E-4 84748.017 -20 2.6781486338173504E13 5.363491146101878E-4 119850.851 -21 3.9757858953962266E13 7.225798194489018E-4 169494.031 -22 5.888932903807677E13 9.756644806044754E-4 239700.285 -23 8.704852839187608E13 0.0013200938406696123 338987.059 -24 1.2843181413417883E14 0.0017894649256196833 479399.861 +13 1544782712852.752 7.279028668610382e-05 10604.017 +14 2350094689949.447 9.559781423176688e-05 14988.793 +15 3558165124486.952 0.0001262171370017361 21192.013 +16 5364329568799.107 0.000167397701279948 29966.255 +17 8056673844043.637 0.000222886817535966 42376.012 +18 12059352095628.56 0.0002977959647927322 59926.842 +19 17995875130066.57 0.0003991040354260183 84748.01700000001 +20 26781486338173.5 0.0005363491146101878 119850.851 +21 39757858953962.27 0.0007225798194489018 169494.031 +22 58889329038076.77 0.0009756644806044754 239700.285 +23 87048528391876.08 0.001320093840669612 338987.059 +24 128431814134178.8 0.001789464925619683 479399.861 -- !sql_test_String_Decimal128V3_2 -- \N \N @@ -10402,17 +10402,17 @@ 11 \N \N 12 \N \N 13 10758.306 10449.728 -14 15206.886999999999 14770.699 +14 15206.887 14770.699 15 21500.372 20883.654 16 30402.288 29530.222 17 42992.62 41759.404 -18 60798.831 59054.852999999996 +18 60798.831 59054.853 19 85981.17800000001 83514.856 20 121594.791 118106.911 -21 171960.32499999998 167027.737 -22 243188.145 236212.42500000002 -23 343919.63300000003 334054.485 -24 486375.571 472424.15099999995 +21 171960.325 167027.737 +22 243188.145 236212.425 +23 343919.633 334054.485 +24 486375.571 472424.151 -- !sql_test_String_Char_notn_0 -- 1 \N \N @@ -10428,17 +10428,17 @@ 11 \N \N 12 \N \N 13 10758.306 10449.728 -14 15206.886999999999 14770.699 +14 15206.887 14770.699 15 21500.372 20883.654 16 30402.288 29530.222 17 42992.62 41759.404 -18 60798.831 59054.852999999996 +18 60798.831 59054.853 19 85981.17800000001 83514.856 20 121594.791 118106.911 -21 171960.32499999998 167027.737 -22 243188.145 236212.42500000002 -23 343919.63300000003 334054.485 -24 486375.571 472424.15099999995 +21 171960.325 167027.737 +22 243188.145 236212.425 +23 343919.633 334054.485 +24 486375.571 472424.151 -- !sql_test_String_Char_1 -- \N \N \N \N @@ -10454,18 +10454,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1636083.1789129998 68.72827615708185 112.36500000000069 -14 3268965.820542 68.72629691784276 158.40100000000007 -15 6534747.936666999 68.72513207008714 223.60100000000034 -16 1.3066276066415E7 68.72474101730832 316.01099999999997 -17 2.6129388007296E7 68.72439540194095 446.66800000000603 -18 5.2255547028738E7 68.72430959564856 631.5899999999947 -19 1.0450794939173701E8 68.72421119383438 893.0690000000031 -20 2.0901269309294E8 68.72418259802515 1262.9309999999914 -21 4.1802211169111395E8 68.72417927465257 1786.038999999997 -22 8.360410360401001E8 68.72417040821593 2525.804999999995 -23 1.672078753559866E9 68.72417099064303 3572.0270000000346 -24 3.34415440437631E9 68.72416728906448 5051.580999999973 +13 1636083.178913 68.72827615708185 112.3650000000007 +14 3268965.820542 68.72629691784276 158.4010000000001 +15 6534747.936666999 68.72513207008714 223.6010000000003 +16 13066276.066415 68.72474101730832 316.011 +17 26129388.007296 68.72439540194095 446.668000000006 +18 52255547.028738 68.72430959564856 631.5899999999947 +19 104507949.391737 68.72421119383438 893.0690000000031 +20 209012693.09294 68.72418259802515 1262.930999999991 +21 418022111.6911139 68.72417927465257 1786.038999999997 +22 836041036.0401001 68.72417040821593 2525.804999999995 +23 1672078753.559866 68.72417099064303 3572.027000000035 +24 3344154404.37631 68.72416728906448 5051.580999999973 -- !sql_test_String_Char_notn_1 -- 1 \N \N \N @@ -10480,18 +10480,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1636083.1789129998 68.72827615708185 112.36500000000069 -14 3268965.820542 68.72629691784276 158.40100000000007 -15 6534747.936666999 68.72513207008714 223.60100000000034 -16 1.3066276066415E7 68.72474101730832 316.01099999999997 -17 2.6129388007296E7 68.72439540194095 446.66800000000603 -18 5.2255547028738E7 68.72430959564856 631.5899999999947 -19 1.0450794939173701E8 68.72421119383438 893.0690000000031 -20 2.0901269309294E8 68.72418259802515 1262.9309999999914 -21 4.1802211169111395E8 68.72417927465257 1786.038999999997 -22 8.360410360401001E8 68.72417040821593 2525.804999999995 -23 1.672078753559866E9 68.72417099064303 3572.0270000000346 -24 3.34415440437631E9 68.72416728906448 5051.580999999973 +13 1636083.178913 68.72827615708185 112.3650000000007 +14 3268965.820542 68.72629691784276 158.4010000000001 +15 6534747.936666999 68.72513207008714 223.6010000000003 +16 13066276.066415 68.72474101730832 316.011 +17 26129388.007296 68.72439540194095 446.668000000006 +18 52255547.028738 68.72430959564856 631.5899999999947 +19 104507949.391737 68.72421119383438 893.0690000000031 +20 209012693.09294 68.72418259802515 1262.930999999991 +21 418022111.6911139 68.72417927465257 1786.038999999997 +22 836041036.0401001 68.72417040821593 2525.804999999995 +23 1672078753.559866 68.72417099064303 3572.027000000035 +24 3344154404.37631 68.72416728906448 5051.580999999973 -- !sql_test_String_Char_2 -- \N \N @@ -10613,13 +10613,13 @@ 10 \N \N 11 \N \N 12 \N \N -13 12923.137999999999 8284.896 +13 12923.138 8284.896000000001 14 18266.875 11710.711 -15 25826.754 16557.271999999997 -16 36519.943 23412.567000000003 +15 25826.754 16557.272 +16 36519.943 23412.567 17 51643.742 33108.28200000001 -18 73032.97899999999 46820.704999999994 -19 103282.60200000001 66213.432 +18 73032.97899999999 46820.70499999999 +19 103282.602 66213.432 20 146062.505 93639.197 21 206562.762 132425.3 22 292123.284 187277.286 @@ -10639,13 +10639,13 @@ 10 \N \N 11 \N \N 12 \N \N -13 12923.137999999999 8284.896 +13 12923.138 8284.896000000001 14 18266.875 11710.711 -15 25826.754 16557.271999999997 -16 36519.943 23412.567000000003 +15 25826.754 16557.272 +16 36519.943 23412.567 17 51643.742 33108.28200000001 -18 73032.97899999999 46820.704999999994 -19 103282.60200000001 66213.432 +18 73032.97899999999 46820.70499999999 +19 103282.602 66213.432 20 146062.505 93639.197 21 206562.762 132425.3 22 292123.284 187277.286 @@ -10666,18 +10666,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.4591998509057E7 4.57242938164934 1327.5329999999994 -14 4.9134492535026E7 4.5724277184036275 1876.4650000000001 -15 9.821949152363299E7 4.572426592985455 2653.048999999999 -16 1.9638948579844E8 4.572426243055818 3751.5030000000006 -17 3.9272943769276E8 4.572426257562532 5305.092000000004 -18 7.85409401229354E8 4.572426032171035 7502.293999999994 -19 1.5707693246679451E9 4.572425926990003 10609.67700000001 -20 3.141489038017554E9 4.57242610481582 15004.235 -21 6.28292864124466E9 4.572426042855365 21219.10699999999 -22 1.2565807800854715E10 4.572426026217996 30008.28899999999 -23 2.513156596693834E10 4.57242602075181 42438.087 -24 5.0263082560627815E10 4.572426023604961 60016.489 +13 24591998.509057 4.57242938164934 1327.532999999999 +14 49134492.535026 4.572427718403627 1876.465 +15 98219491.52363299 4.572426592985455 2653.048999999999 +16 196389485.79844 4.572426243055818 3751.503000000001 +17 392729437.69276 4.572426257562532 5305.092000000004 +18 785409401.229354 4.572426032171035 7502.293999999994 +19 1570769324.667945 4.572425926990003 10609.67700000001 +20 3141489038.017554 4.57242610481582 15004.235 +21 6282928641.24466 4.572426042855365 21219.10699999999 +22 12565807800.85472 4.572426026217996 30008.28899999999 +23 25131565966.93834 4.57242602075181 42438.087 +24 50263082560.62782 4.572426023604961 60016.489 -- !sql_test_String_Varchar_notn_1 -- 1 \N \N \N @@ -10692,18 +10692,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.4591998509057E7 4.57242938164934 1327.5329999999994 -14 4.9134492535026E7 4.5724277184036275 1876.4650000000001 -15 9.821949152363299E7 4.572426592985455 2653.048999999999 -16 1.9638948579844E8 4.572426243055818 3751.5030000000006 -17 3.9272943769276E8 4.572426257562532 5305.092000000004 -18 7.85409401229354E8 4.572426032171035 7502.293999999994 -19 1.5707693246679451E9 4.572425926990003 10609.67700000001 -20 3.141489038017554E9 4.57242610481582 15004.235 -21 6.28292864124466E9 4.572426042855365 21219.10699999999 -22 1.2565807800854715E10 4.572426026217996 30008.28899999999 -23 2.513156596693834E10 4.57242602075181 42438.087 -24 5.0263082560627815E10 4.572426023604961 60016.489 +13 24591998.509057 4.57242938164934 1327.532999999999 +14 49134492.535026 4.572427718403627 1876.465 +15 98219491.52363299 4.572426592985455 2653.048999999999 +16 196389485.79844 4.572426243055818 3751.503000000001 +17 392729437.69276 4.572426257562532 5305.092000000004 +18 785409401.229354 4.572426032171035 7502.293999999994 +19 1570769324.667945 4.572425926990003 10609.67700000001 +20 3141489038.017554 4.57242610481582 15004.235 +21 6282928641.24466 4.572426042855365 21219.10699999999 +22 12565807800.85472 4.572426026217996 30008.28899999999 +23 25131565966.93834 4.57242602075181 42438.087 +24 50263082560.62782 4.572426023604961 60016.489 -- !sql_test_String_Varchar_2 -- \N \N @@ -10825,18 +10825,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 21208.034 0.0 -14 29977.586 0.0 -15 42384.026 0.0 -16 59932.51 0.0 -17 84752.024 0.0 -18 119853.684 0.0 -19 169496.034 0.0 -20 239701.702 0.0 -21 338988.062 0.0 -22 479400.57 0.0 -23 677974.118 0.0 -24 958799.722 0.0 +13 21208.034 0 +14 29977.586 0 +15 42384.026 0 +16 59932.51 0 +17 84752.024 0 +18 119853.684 0 +19 169496.034 0 +20 239701.702 0 +21 338988.062 0 +22 479400.57 0 +23 677974.118 0 +24 958799.722 0 -- !sql_test_String_String_notn_0 -- 1 \N \N @@ -10851,18 +10851,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 21208.034 0.0 -14 29977.586 0.0 -15 42384.026 0.0 -16 59932.51 0.0 -17 84752.024 0.0 -18 119853.684 0.0 -19 169496.034 0.0 -20 239701.702 0.0 -21 338988.062 0.0 -22 479400.57 0.0 -23 677974.118 0.0 -24 958799.722 0.0 +13 21208.034 0 +14 29977.586 0 +15 42384.026 0 +16 59932.51 0 +17 84752.024 0 +18 119853.684 0 +19 169496.034 0 +20 239701.702 0 +21 338988.062 0 +22 479400.57 0 +23 677974.118 0 +24 958799.722 0 -- !sql_test_String_String_1 -- \N \N \N \N @@ -10878,18 +10878,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.1244517653628899E8 1.0 0.0 -14 2.24663915596849E8 1.0 0.0 -15 4.4910141499216896E8 1.0 0.0 -16 8.97976438725025E8 1.0 0.0 -17 1.7957263930241442E9 1.0 0.0 -18 3.5912263920929637E9 1.0 0.0 -19 7.18222638543229E9 1.0 0.0 -20 1.43642264854242E10 1.0 0.0 -21 2.8728226544628956E10 1.0 0.0 -22 5.745622662908123E10 1.0 0.0 -23 1.1491222616946948E11 1.0 0.0 -24 2.298242267268193E11 1.0 0.0 +13 112445176.536289 1 0 +14 224663915.596849 1 0 +15 449101414.992169 1 0 +16 897976438.7250251 1 0 +17 1795726393.024144 1 0 +18 3591226392.092964 1 0 +19 7182226385.43229 1 0 +20 14364226485.4242 1 0 +21 28728226544.62896 1 0 +22 57456226629.08123 1 0 +23 114912226169.4695 1 0 +24 229824226726.8193 1 0 -- !sql_test_String_String_notn_1 -- 1 \N \N \N @@ -10904,18 +10904,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 1.1244517653628899E8 1.0 0.0 -14 2.24663915596849E8 1.0 0.0 -15 4.4910141499216896E8 1.0 0.0 -16 8.97976438725025E8 1.0 0.0 -17 1.7957263930241442E9 1.0 0.0 -18 3.5912263920929637E9 1.0 0.0 -19 7.18222638543229E9 1.0 0.0 -20 1.43642264854242E10 1.0 0.0 -21 2.8728226544628956E10 1.0 0.0 -22 5.745622662908123E10 1.0 0.0 -23 1.1491222616946948E11 1.0 0.0 -24 2.298242267268193E11 1.0 0.0 +13 112445176.536289 1 0 +14 224663915.596849 1 0 +15 449101414.992169 1 0 +16 897976438.7250251 1 0 +17 1795726393.024144 1 0 +18 3591226392.092964 1 0 +19 7182226385.43229 1 0 +20 14364226485.4242 1 0 +21 28728226544.62896 1 0 +22 57456226629.08123 1 0 +23 114912226169.4695 1 0 +24 229824226726.8193 1 0 -- !sql_test_String_String_2 -- \N \N @@ -11037,18 +11037,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0130905017E7 -2.0109696983E7 -14 2.0135290793E7 -2.0105313207E7 -15 2.0141495013E7 -2.0099110987E7 -16 2.0150270255E7 -2.0090337745E7 -17 2.0162681012E7 -2.0077928988E7 -18 2.0180232842E7 -2.0060379158E7 -19 2.0205055017E7 -2.0035558983E7 -20 2.0240158851E7 -2.0000457149E7 -21 2.0289803031E7 -1.9950814969E7 -22 2.0360010285E7 -1.9880609715E7 -23 2.0459298059E7 -1.9781323941E7 -24 2.0599711861E7 -1.9640912139E7 +13 20130905.017 -20109696.983 +14 20135290.793 -20105313.207 +15 20141495.013 -20099110.987 +16 20150270.255 -20090337.745 +17 20162681.012 -20077928.988 +18 20180232.842 -20060379.158 +19 20205055.017 -20035558.983 +20 20240158.851 -20000457.149 +21 20289803.031 -19950814.969 +22 20360010.285 -19880609.715 +23 20459298.059 -19781323.941 +24 20599711.861 -19640912.139 -- !sql_test_String_Date_notn_0 -- 1 \N \N @@ -11063,18 +11063,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0130905017E7 -2.0109696983E7 -14 2.0135290793E7 -2.0105313207E7 -15 2.0141495013E7 -2.0099110987E7 -16 2.0150270255E7 -2.0090337745E7 -17 2.0162681012E7 -2.0077928988E7 -18 2.0180232842E7 -2.0060379158E7 -19 2.0205055017E7 -2.0035558983E7 -20 2.0240158851E7 -2.0000457149E7 -21 2.0289803031E7 -1.9950814969E7 -22 2.0360010285E7 -1.9880609715E7 -23 2.0459298059E7 -1.9781323941E7 -24 2.0599711861E7 -1.9640912139E7 +13 20130905.017 -20109696.983 +14 20135290.793 -20105313.207 +15 20141495.013 -20099110.987 +16 20150270.255 -20090337.745 +17 20162681.012 -20077928.988 +18 20180232.842 -20060379.158 +19 20205055.017 -20035558.983 +20 20240158.851 -20000457.149 +21 20289803.031 -19950814.969 +22 20360010.285 -19880609.715 +23 20459298.059 -19781323.941 +24 20599711.861 -19640912.139 -- !sql_test_String_Date_1 -- \N \N \N \N @@ -11090,18 +11090,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013849117E11 5.270307337847481E-4 10604.017 -14 3.01579041775486E11 7.449586492290225E-4 14988.793 -15 4.2638972273993896E11 0.0010532651024191832 21192.013 -16 6.0293016034152E11 0.001489353987892032 29966.255 -17 8.5261828612366E11 0.0021061316913436453 42376.012 -18 1.2057463986536519E12 0.002978425974237171 59926.842 -19 1.7051561196812192E12 0.004212063811948794 84748.017 -20 2.411436036182108E12 0.005956710553337454 119850.851 -21 3.4102722773755786E12 0.008424027235367011 169494.031 -22 4.82284404128835E12 0.011913349496106174 239700.285 -23 6.82052505205535E12 0.016848002945878918 338987.059 -24 9.64567477607663E12 0.023826661385767774 479399.861 +13 213356013849.117 0.0005270307337847481 10604.017 +14 301579041775.486 0.0007449586492290225 14988.793 +15 426389722739.939 0.001053265102419183 21192.013 +16 602930160341.52 0.001489353987892032 29966.255 +17 852618286123.66 0.002106131691343645 42376.012 +18 1205746398653.652 0.002978425974237171 59926.842 +19 1705156119681.219 0.004212063811948794 84748.01700000001 +20 2411436036182.108 0.005956710553337454 119850.851 +21 3410272277375.579 0.008424027235367011 169494.031 +22 4822844041288.35 0.01191334949610617 239700.285 +23 6820525052055.35 0.01684800294587892 338987.059 +24 9645674776076.631 0.02382666138576777 479399.861 -- !sql_test_String_Date_notn_1 -- 1 \N \N \N @@ -11116,18 +11116,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013849117E11 5.270307337847481E-4 10604.017 -14 3.01579041775486E11 7.449586492290225E-4 14988.793 -15 4.2638972273993896E11 0.0010532651024191832 21192.013 -16 6.0293016034152E11 0.001489353987892032 29966.255 -17 8.5261828612366E11 0.0021061316913436453 42376.012 -18 1.2057463986536519E12 0.002978425974237171 59926.842 -19 1.7051561196812192E12 0.004212063811948794 84748.017 -20 2.411436036182108E12 0.005956710553337454 119850.851 -21 3.4102722773755786E12 0.008424027235367011 169494.031 -22 4.82284404128835E12 0.011913349496106174 239700.285 -23 6.82052505205535E12 0.016848002945878918 338987.059 -24 9.64567477607663E12 0.023826661385767774 479399.861 +13 213356013849.117 0.0005270307337847481 10604.017 +14 301579041775.486 0.0007449586492290225 14988.793 +15 426389722739.939 0.001053265102419183 21192.013 +16 602930160341.52 0.001489353987892032 29966.255 +17 852618286123.66 0.002106131691343645 42376.012 +18 1205746398653.652 0.002978425974237171 59926.842 +19 1705156119681.219 0.004212063811948794 84748.01700000001 +20 2411436036182.108 0.005956710553337454 119850.851 +21 3410272277375.579 0.008424027235367011 169494.031 +22 4822844041288.35 0.01191334949610617 239700.285 +23 6820525052055.35 0.01684800294587892 338987.059 +24 9645674776076.631 0.02382666138576777 479399.861 -- !sql_test_String_Date_2 -- \N \N @@ -11249,18 +11249,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120301020605016E13 -2.0120300999396984E13 -14 2.0120302035090793E13 -2.0120302005113207E13 -15 2.012030305139501E13 -2.012030300901099E13 -16 2.0120304070270254E13 -2.0120304010337746E13 -17 2.012030509278101E13 -2.012030500802899E13 -18 2.0120306120432844E13 -2.0120306000579156E13 -19 2.0120307155355016E13 -2.0120306985858984E13 -20 2.012030820055885E13 -2.012030796085715E13 -21 2.012030926030303E13 -2.012030892131497E13 -22 2.0120310340610285E13 -2.0120309861209715E13 -23 2.012031144999806E13 -2.012031077202394E13 -24 2.012031260051186E13 -2.012031164171214E13 +13 20120301020605.02 -20120300999396.98 +14 20120302035090.79 -20120302005113.21 +15 20120303051395.01 -20120303009010.99 +16 20120304070270.25 -20120304010337.75 +17 20120305092781.01 -20120305008028.99 +18 20120306120432.84 -20120306000579.16 +19 20120307155355.02 -20120306985858.98 +20 20120308200558.85 -20120307960857.15 +21 20120309260303.03 -20120308921314.97 +22 20120310340610.29 -20120309861209.71 +23 20120311449998.06 -20120310772023.94 +24 20120312600511.86 -20120311641712.14 -- !sql_test_String_DateTime_notn_0 -- 1 \N \N @@ -11275,18 +11275,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120301020605016E13 -2.0120300999396984E13 -14 2.0120302035090793E13 -2.0120302005113207E13 -15 2.012030305139501E13 -2.012030300901099E13 -16 2.0120304070270254E13 -2.0120304010337746E13 -17 2.012030509278101E13 -2.012030500802899E13 -18 2.0120306120432844E13 -2.0120306000579156E13 -19 2.0120307155355016E13 -2.0120306985858984E13 -20 2.012030820055885E13 -2.012030796085715E13 -21 2.012030926030303E13 -2.012030892131497E13 -22 2.0120310340610285E13 -2.0120309861209715E13 -23 2.012031144999806E13 -2.012031077202394E13 -24 2.012031260051186E13 -2.012031164171214E13 +13 20120301020605.02 -20120300999396.98 +14 20120302035090.79 -20120302005113.21 +15 20120303051395.01 -20120303009010.99 +16 20120304070270.25 -20120304010337.75 +17 20120305092781.01 -20120305008028.99 +18 20120306120432.84 -20120306000579.16 +19 20120307155355.02 -20120306985858.98 +20 20120308200558.85 -20120307960857.15 +21 20120309260303.03 -20120308921314.97 +22 20120310340610.29 -20120309861209.71 +23 20120311449998.06 -20120310772023.94 +24 20120312600511.86 -20120311641712.14 -- !sql_test_String_DateTime_1 -- \N \N \N \N @@ -11302,18 +11302,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013955167776E17 5.27030733522782E-10 10604.017 -14 3.0157904207679072E17 7.449586484847415E-10 14988.793 -15 4.2638972338000134E17 1.0532651008381053E-9 21192.013 -16 6.0293016154928E17 1.4893539849086316E-9 29966.255 -17 8.5261828825962291E17 2.1061316860674046E-9 42376.012 -18 1.20574640227958554E18 2.9784259652804164E-9 59926.842 -19 1.70515612566502246E18 4.212063797167649E-9 84748.017 -20 2.4114360458550303E18 5.956710529443476E-9 119850.851 -21 3.4102722927671624E18 8.424027197346845E-9 169494.031 -22 4.8228440654765056E18 1.1913349436356791E-8 239700.285 -23 6.8205250896866417E18 1.684800285292242E-8 338987.059 -24 9.645674834137706E18 2.3826661242345814E-8 479399.861 +13 2.133560139551678e+17 5.27030733522782e-10 10604.017 +14 3.015790420767907e+17 7.449586484847415e-10 14988.793 +15 4.263897233800013e+17 1.053265100838105e-09 21192.013 +16 6.0293016154928e+17 1.489353984908632e-09 29966.255 +17 8.526182882596229e+17 2.106131686067405e-09 42376.012 +18 1.205746402279586e+18 2.978425965280416e-09 59926.842 +19 1.705156125665022e+18 4.212063797167649e-09 84748.01700000001 +20 2.41143604585503e+18 5.956710529443476e-09 119850.851 +21 3.410272292767162e+18 8.424027197346845e-09 169494.031 +22 4.822844065476506e+18 1.191334943635679e-08 239700.285 +23 6.820525089686642e+18 1.684800285292242e-08 338987.059 +24 9.645674834137706e+18 2.382666124234581e-08 479399.861 -- !sql_test_String_DateTime_notn_1 -- 1 \N \N \N @@ -11328,18 +11328,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013955167776E17 5.27030733522782E-10 10604.017 -14 3.0157904207679072E17 7.449586484847415E-10 14988.793 -15 4.2638972338000134E17 1.0532651008381053E-9 21192.013 -16 6.0293016154928E17 1.4893539849086316E-9 29966.255 -17 8.5261828825962291E17 2.1061316860674046E-9 42376.012 -18 1.20574640227958554E18 2.9784259652804164E-9 59926.842 -19 1.70515612566502246E18 4.212063797167649E-9 84748.017 -20 2.4114360458550303E18 5.956710529443476E-9 119850.851 -21 3.4102722927671624E18 8.424027197346845E-9 169494.031 -22 4.8228440654765056E18 1.1913349436356791E-8 239700.285 -23 6.8205250896866417E18 1.684800285292242E-8 338987.059 -24 9.645674834137706E18 2.3826661242345814E-8 479399.861 +13 2.133560139551678e+17 5.27030733522782e-10 10604.017 +14 3.015790420767907e+17 7.449586484847415e-10 14988.793 +15 4.263897233800013e+17 1.053265100838105e-09 21192.013 +16 6.0293016154928e+17 1.489353984908632e-09 29966.255 +17 8.526182882596229e+17 2.106131686067405e-09 42376.012 +18 1.205746402279586e+18 2.978425965280416e-09 59926.842 +19 1.705156125665022e+18 4.212063797167649e-09 84748.01700000001 +20 2.41143604585503e+18 5.956710529443476e-09 119850.851 +21 3.410272292767162e+18 8.424027197346845e-09 169494.031 +22 4.822844065476506e+18 1.191334943635679e-08 239700.285 +23 6.820525089686642e+18 1.684800285292242e-08 338987.059 +24 9.645674834137706e+18 2.382666124234581e-08 479399.861 -- !sql_test_String_DateTime_2 -- \N \N @@ -11461,18 +11461,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0130905017E7 -2.0109696983E7 -14 2.0135290793E7 -2.0105313207E7 -15 2.0141495013E7 -2.0099110987E7 -16 2.0150270255E7 -2.0090337745E7 -17 2.0162681012E7 -2.0077928988E7 -18 2.0180232842E7 -2.0060379158E7 -19 2.0205055017E7 -2.0035558983E7 -20 2.0240158851E7 -2.0000457149E7 -21 2.0289803031E7 -1.9950814969E7 -22 2.0360010285E7 -1.9880609715E7 -23 2.0459298059E7 -1.9781323941E7 -24 2.0599711861E7 -1.9640912139E7 +13 20130905.017 -20109696.983 +14 20135290.793 -20105313.207 +15 20141495.013 -20099110.987 +16 20150270.255 -20090337.745 +17 20162681.012 -20077928.988 +18 20180232.842 -20060379.158 +19 20205055.017 -20035558.983 +20 20240158.851 -20000457.149 +21 20289803.031 -19950814.969 +22 20360010.285 -19880609.715 +23 20459298.059 -19781323.941 +24 20599711.861 -19640912.139 -- !sql_test_String_DateV2_notn_0 -- 1 \N \N @@ -11487,18 +11487,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0130905017E7 -2.0109696983E7 -14 2.0135290793E7 -2.0105313207E7 -15 2.0141495013E7 -2.0099110987E7 -16 2.0150270255E7 -2.0090337745E7 -17 2.0162681012E7 -2.0077928988E7 -18 2.0180232842E7 -2.0060379158E7 -19 2.0205055017E7 -2.0035558983E7 -20 2.0240158851E7 -2.0000457149E7 -21 2.0289803031E7 -1.9950814969E7 -22 2.0360010285E7 -1.9880609715E7 -23 2.0459298059E7 -1.9781323941E7 -24 2.0599711861E7 -1.9640912139E7 +13 20130905.017 -20109696.983 +14 20135290.793 -20105313.207 +15 20141495.013 -20099110.987 +16 20150270.255 -20090337.745 +17 20162681.012 -20077928.988 +18 20180232.842 -20060379.158 +19 20205055.017 -20035558.983 +20 20240158.851 -20000457.149 +21 20289803.031 -19950814.969 +22 20360010.285 -19880609.715 +23 20459298.059 -19781323.941 +24 20599711.861 -19640912.139 -- !sql_test_String_DateV2_1 -- \N \N \N \N @@ -11514,18 +11514,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013849117E11 5.270307337847481E-4 10604.017 -14 3.01579041775486E11 7.449586492290225E-4 14988.793 -15 4.2638972273993896E11 0.0010532651024191832 21192.013 -16 6.0293016034152E11 0.001489353987892032 29966.255 -17 8.5261828612366E11 0.0021061316913436453 42376.012 -18 1.2057463986536519E12 0.002978425974237171 59926.842 -19 1.7051561196812192E12 0.004212063811948794 84748.017 -20 2.411436036182108E12 0.005956710553337454 119850.851 -21 3.4102722773755786E12 0.008424027235367011 169494.031 -22 4.82284404128835E12 0.011913349496106174 239700.285 -23 6.82052505205535E12 0.016848002945878918 338987.059 -24 9.64567477607663E12 0.023826661385767774 479399.861 +13 213356013849.117 0.0005270307337847481 10604.017 +14 301579041775.486 0.0007449586492290225 14988.793 +15 426389722739.939 0.001053265102419183 21192.013 +16 602930160341.52 0.001489353987892032 29966.255 +17 852618286123.66 0.002106131691343645 42376.012 +18 1205746398653.652 0.002978425974237171 59926.842 +19 1705156119681.219 0.004212063811948794 84748.01700000001 +20 2411436036182.108 0.005956710553337454 119850.851 +21 3410272277375.579 0.008424027235367011 169494.031 +22 4822844041288.35 0.01191334949610617 239700.285 +23 6820525052055.35 0.01684800294587892 338987.059 +24 9645674776076.631 0.02382666138576777 479399.861 -- !sql_test_String_DateV2_notn_1 -- 1 \N \N \N @@ -11540,18 +11540,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013849117E11 5.270307337847481E-4 10604.017 -14 3.01579041775486E11 7.449586492290225E-4 14988.793 -15 4.2638972273993896E11 0.0010532651024191832 21192.013 -16 6.0293016034152E11 0.001489353987892032 29966.255 -17 8.5261828612366E11 0.0021061316913436453 42376.012 -18 1.2057463986536519E12 0.002978425974237171 59926.842 -19 1.7051561196812192E12 0.004212063811948794 84748.017 -20 2.411436036182108E12 0.005956710553337454 119850.851 -21 3.4102722773755786E12 0.008424027235367011 169494.031 -22 4.82284404128835E12 0.011913349496106174 239700.285 -23 6.82052505205535E12 0.016848002945878918 338987.059 -24 9.64567477607663E12 0.023826661385767774 479399.861 +13 213356013849.117 0.0005270307337847481 10604.017 +14 301579041775.486 0.0007449586492290225 14988.793 +15 426389722739.939 0.001053265102419183 21192.013 +16 602930160341.52 0.001489353987892032 29966.255 +17 852618286123.66 0.002106131691343645 42376.012 +18 1205746398653.652 0.002978425974237171 59926.842 +19 1705156119681.219 0.004212063811948794 84748.01700000001 +20 2411436036182.108 0.005956710553337454 119850.851 +21 3410272277375.579 0.008424027235367011 169494.031 +22 4822844041288.35 0.01191334949610617 239700.285 +23 6820525052055.35 0.01684800294587892 338987.059 +24 9645674776076.631 0.02382666138576777 479399.861 -- !sql_test_String_DateV2_2 -- \N \N @@ -11673,18 +11673,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120301020605016E13 -2.0120300999396984E13 -14 2.0120302035090793E13 -2.0120302005113207E13 -15 2.012030305139501E13 -2.012030300901099E13 -16 2.0120304070270254E13 -2.0120304010337746E13 -17 2.012030509278101E13 -2.012030500802899E13 -18 2.0120306120432844E13 -2.0120306000579156E13 -19 2.0120307155355016E13 -2.0120306985858984E13 -20 2.012030820055885E13 -2.012030796085715E13 -21 2.012030926030303E13 -2.012030892131497E13 -22 2.0120310340610285E13 -2.0120309861209715E13 -23 2.012031144999806E13 -2.012031077202394E13 -24 2.012031260051186E13 -2.012031164171214E13 +13 20120301020605.02 -20120300999396.98 +14 20120302035090.79 -20120302005113.21 +15 20120303051395.01 -20120303009010.99 +16 20120304070270.25 -20120304010337.75 +17 20120305092781.01 -20120305008028.99 +18 20120306120432.84 -20120306000579.16 +19 20120307155355.02 -20120306985858.98 +20 20120308200558.85 -20120307960857.15 +21 20120309260303.03 -20120308921314.97 +22 20120310340610.29 -20120309861209.71 +23 20120311449998.06 -20120310772023.94 +24 20120312600511.86 -20120311641712.14 -- !sql_test_String_DateTimeV2_notn_0 -- 1 \N \N @@ -11699,18 +11699,18 @@ 10 \N \N 11 \N \N 12 \N \N -13 2.0120301020605016E13 -2.0120300999396984E13 -14 2.0120302035090793E13 -2.0120302005113207E13 -15 2.012030305139501E13 -2.012030300901099E13 -16 2.0120304070270254E13 -2.0120304010337746E13 -17 2.012030509278101E13 -2.012030500802899E13 -18 2.0120306120432844E13 -2.0120306000579156E13 -19 2.0120307155355016E13 -2.0120306985858984E13 -20 2.012030820055885E13 -2.012030796085715E13 -21 2.012030926030303E13 -2.012030892131497E13 -22 2.0120310340610285E13 -2.0120309861209715E13 -23 2.012031144999806E13 -2.012031077202394E13 -24 2.012031260051186E13 -2.012031164171214E13 +13 20120301020605.02 -20120300999396.98 +14 20120302035090.79 -20120302005113.21 +15 20120303051395.01 -20120303009010.99 +16 20120304070270.25 -20120304010337.75 +17 20120305092781.01 -20120305008028.99 +18 20120306120432.84 -20120306000579.16 +19 20120307155355.02 -20120306985858.98 +20 20120308200558.85 -20120307960857.15 +21 20120309260303.03 -20120308921314.97 +22 20120310340610.29 -20120309861209.71 +23 20120311449998.06 -20120310772023.94 +24 20120312600511.86 -20120311641712.14 -- !sql_test_String_DateTimeV2_1 -- \N \N \N \N @@ -11726,18 +11726,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013955167776E17 5.27030733522782E-10 10604.017 -14 3.0157904207679072E17 7.449586484847415E-10 14988.793 -15 4.2638972338000134E17 1.0532651008381053E-9 21192.013 -16 6.0293016154928E17 1.4893539849086316E-9 29966.255 -17 8.5261828825962291E17 2.1061316860674046E-9 42376.012 -18 1.20574640227958554E18 2.9784259652804164E-9 59926.842 -19 1.70515612566502246E18 4.212063797167649E-9 84748.017 -20 2.4114360458550303E18 5.956710529443476E-9 119850.851 -21 3.4102722927671624E18 8.424027197346845E-9 169494.031 -22 4.8228440654765056E18 1.1913349436356791E-8 239700.285 -23 6.8205250896866417E18 1.684800285292242E-8 338987.059 -24 9.645674834137706E18 2.3826661242345814E-8 479399.861 +13 2.133560139551678e+17 5.27030733522782e-10 10604.017 +14 3.015790420767907e+17 7.449586484847415e-10 14988.793 +15 4.263897233800013e+17 1.053265100838105e-09 21192.013 +16 6.0293016154928e+17 1.489353984908632e-09 29966.255 +17 8.526182882596229e+17 2.106131686067405e-09 42376.012 +18 1.205746402279586e+18 2.978425965280416e-09 59926.842 +19 1.705156125665022e+18 4.212063797167649e-09 84748.01700000001 +20 2.41143604585503e+18 5.956710529443476e-09 119850.851 +21 3.410272292767162e+18 8.424027197346845e-09 169494.031 +22 4.822844065476506e+18 1.191334943635679e-08 239700.285 +23 6.820525089686642e+18 1.684800285292242e-08 338987.059 +24 9.645674834137706e+18 2.382666124234581e-08 479399.861 -- !sql_test_String_DateTimeV2_notn_1 -- 1 \N \N \N @@ -11752,18 +11752,18 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 2.13356013955167776E17 5.27030733522782E-10 10604.017 -14 3.0157904207679072E17 7.449586484847415E-10 14988.793 -15 4.2638972338000134E17 1.0532651008381053E-9 21192.013 -16 6.0293016154928E17 1.4893539849086316E-9 29966.255 -17 8.5261828825962291E17 2.1061316860674046E-9 42376.012 -18 1.20574640227958554E18 2.9784259652804164E-9 59926.842 -19 1.70515612566502246E18 4.212063797167649E-9 84748.017 -20 2.4114360458550303E18 5.956710529443476E-9 119850.851 -21 3.4102722927671624E18 8.424027197346845E-9 169494.031 -22 4.8228440654765056E18 1.1913349436356791E-8 239700.285 -23 6.8205250896866417E18 1.684800285292242E-8 338987.059 -24 9.645674834137706E18 2.3826661242345814E-8 479399.861 +13 2.133560139551678e+17 5.27030733522782e-10 10604.017 +14 3.015790420767907e+17 7.449586484847415e-10 14988.793 +15 4.263897233800013e+17 1.053265100838105e-09 21192.013 +16 6.0293016154928e+17 1.489353984908632e-09 29966.255 +17 8.526182882596229e+17 2.106131686067405e-09 42376.012 +18 1.205746402279586e+18 2.978425965280416e-09 59926.842 +19 1.705156125665022e+18 4.212063797167649e-09 84748.01700000001 +20 2.41143604585503e+18 5.956710529443476e-09 119850.851 +21 3.410272292767162e+18 8.424027197346845e-09 169494.031 +22 4.822844065476506e+18 1.191334943635679e-08 239700.285 +23 6.820525089686642e+18 1.684800285292242e-08 338987.059 +24 9.645674834137706e+18 2.382666124234581e-08 479399.861 -- !sql_test_String_DateTimeV2_2 -- \N \N @@ -11891,7 +11891,7 @@ 16 29966.255 29966.255 17 42376.012 42376.012 18 59926.842 59926.842 -19 84748.017 84748.017 +19 84748.01700000001 84748.01700000001 20 119851.851 119849.851 21 169495.031 169493.031 22 239701.285 239699.285 @@ -11917,7 +11917,7 @@ 16 29966.255 29966.255 17 42376.012 42376.012 18 59926.842 59926.842 -19 84748.017 84748.017 +19 84748.01700000001 84748.01700000001 20 119851.851 119849.851 21 169495.031 169493.031 22 239701.285 239699.285 @@ -11938,16 +11938,16 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 119850.851 119850.851 0.8509999999951106 -21 169494.031 169494.031 0.030999999988125637 -22 239700.285 239700.285 0.28500000000349246 +21 169494.031 169494.031 0.03099999998812564 +22 239700.285 239700.285 0.2850000000034925 23 338987.059 338987.059 0.0590000000083819 24 479399.861 479399.861 0.86099999997532 @@ -11964,16 +11964,16 @@ 10 \N \N \N 11 \N \N \N 12 \N \N \N -13 0.0 \N \N -14 0.0 \N \N -15 0.0 \N \N -16 0.0 \N \N -17 0.0 \N \N -18 0.0 \N \N -19 0.0 \N \N +13 0 \N \N +14 0 \N \N +15 0 \N \N +16 0 \N \N +17 0 \N \N +18 0 \N \N +19 0 \N \N 20 119850.851 119850.851 0.8509999999951106 -21 169494.031 169494.031 0.030999999988125637 -22 239700.285 239700.285 0.28500000000349246 +21 169494.031 169494.031 0.03099999998812564 +22 239700.285 239700.285 0.2850000000034925 23 338987.059 338987.059 0.0590000000083819 24 479399.861 479399.861 0.86099999997532 diff --git a/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy b/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy new file mode 100644 index 00000000000000..d54d924e97fdc9 --- /dev/null +++ b/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy @@ -0,0 +1,88 @@ +// 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_pruned_columns") { + sql """DROP TABLE IF EXISTS `tbl_test_pruned_columns`""" + sql """ + CREATE TABLE `tbl_test_pruned_columns` ( + `id` int NULL, + `s` struct>>> NULL + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + DISTRIBUTED BY RANDOM BUCKETS AUTO + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + sql """ + insert into `tbl_test_pruned_columns` values + (1, named_struct('city', 'beijing', 'data', array(map(1, named_struct('a', 10, 'b', 20.0), 2, named_struct('a', 30, 'b', 40))))), + (2, named_struct('city', 'shanghai', 'data', array(map(2, named_struct('a', 50, 'b', 40.0), 1, named_struct('a', 70, 'b', 80))))); + """ + + qt_sql """ + select * from `tbl_test_pruned_columns` order by 1; + """ + + qt_sql1 """ + select b.id, array_map(x -> struct_element(map_values(x)[1], 'a'), struct_element(s, 'data')) from `tbl_test_pruned_columns` t join (select 1 id) b on t.id = b.id order by 1; + """ + + qt_sql2 """ + select id, struct_element(s, 'city') from `tbl_test_pruned_columns` order by 1; + """ + + qt_sql3 """ + select id, struct_element(s, 'data') from `tbl_test_pruned_columns` order by 1; + """ + + qt_sql4 """ + select id, struct_element(s, 'data') from `tbl_test_pruned_columns` where struct_element(struct_element(s, 'data')[1][2], 'b') = 40 order by 1; + """ + + qt_sql5 """ + select id, struct_element(s, 'city') from `tbl_test_pruned_columns` where struct_element(struct_element(s, 'data')[1][2], 'b') = 40 order by 1; + """ + + sql """DROP TABLE IF EXISTS `tbl_test_pruned_columns_map`""" + sql """ + CREATE TABLE `tbl_test_pruned_columns_map` ( + `id` bigint NULL, + `dynamic_attributes` map> NULL + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + DISTRIBUTED BY RANDOM BUCKETS AUTO + PROPERTIES ( + "replication_allocation" = "tag.location.default: 1" + ); + """ + + sql """ + insert into `tbl_test_pruned_columns_map` values + (1, '{"theme_preference":{"attribute_value":"light", "confidence_score":0.41, "last_updated":"2025-11-03 15:32:33"}, "language_setting":{"attribute_value":"es", "confidence_score":0.65, "last_updated":"2025-11-03 15:32:33"}}'), + (2, '{"theme_preference":{"attribute_value":"light", "confidence_score":0.99, "last_updated":"2025-11-03 15:32:33"}, "language_setting":{"attribute_value":"es", "confidence_score":0.92, "last_updated":"2025-11-03 15:32:33"}}'); + """ + + qt_sql6 """ + select count(struct_element(dynamic_attributes['theme_preference'], 'confidence_score')) from `tbl_test_pruned_columns_map`; + """ + + qt_sql7 """ + select struct_element(dynamic_attributes['theme_preference'], 'confidence_score') from `tbl_test_pruned_columns_map` order by id; + """ +} \ No newline at end of file From 2aea8f567dd1f4ddfbcf1ea0b75aa4fd31f666d4 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Fri, 28 Nov 2025 10:58:35 +0800 Subject: [PATCH 02/12] [fix](olap) The tablet schema cache caused incorrect behavior in the complex-type column pruning functionality (#58373) ### What problem does this PR solve? TabletSchema with pruned column type should not be cached. Related PR: #xxx Problem Summary: ### Release note None ### Check List (For Author) - Test - [ ] Regression test - [ ] Unit Test - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [ ] Yes. - Does this need documentation? - [ ] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label --- be/src/vec/exec/scan/olap_scanner.cpp | 30 +++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/be/src/vec/exec/scan/olap_scanner.cpp b/be/src/vec/exec/scan/olap_scanner.cpp index 7112a5a4183484..3ecb1063f1c30e 100644 --- a/be/src/vec/exec/scan/olap_scanner.cpp +++ b/be/src/vec/exec/scan/olap_scanner.cpp @@ -168,16 +168,34 @@ Status OlapScanner::prepare() { // value (e.g. select a from t where a .. and b ... limit 1), // it will be very slow when reading data in segment iterator _tablet_reader->set_batch_size(_state->batch_size()); - TabletSchemaSPtr cached_schema; std::string schema_key; { TOlapScanNode& olap_scan_node = local_state->olap_scan_node(); - if (olap_scan_node.__isset.schema_version && olap_scan_node.__isset.columns_desc && - !olap_scan_node.columns_desc.empty() && - olap_scan_node.columns_desc[0].col_unique_id >= 0 && // Why check first column? - tablet->tablet_schema()->num_variant_columns() == 0 && - tablet->tablet_schema()->num_virtual_columns() == 0) { + + const auto check_can_use_cache = [&]() { + if (!(olap_scan_node.__isset.schema_version && olap_scan_node.__isset.columns_desc && + !olap_scan_node.columns_desc.empty() && + olap_scan_node.columns_desc[0].col_unique_id >= 0 && // Why check first column? + tablet->tablet_schema()->num_variant_columns() == 0 && + tablet->tablet_schema()->num_virtual_columns() == 0)) { + return false; + } + + const bool has_pruned_column = + std::ranges::any_of(_output_tuple_desc->slots(), [](const auto& slot) { + if ((slot->type()->get_primitive_type() == PrimitiveType::TYPE_STRUCT || + slot->type()->get_primitive_type() == PrimitiveType::TYPE_MAP || + slot->type()->get_primitive_type() == PrimitiveType::TYPE_ARRAY) && + !slot->all_access_paths().empty()) { + return true; + } + return false; + }); + return !has_pruned_column; + }(); + + if (check_can_use_cache) { schema_key = SchemaCache::get_schema_key(tablet->tablet_id(), olap_scan_node.columns_desc, olap_scan_node.schema_version); From 63b5a88a7d1c92a2d42baf0fa4c404159c6c0da2 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Wed, 3 Dec 2025 17:03:58 +0800 Subject: [PATCH 03/12] [fix](olap) Fix the crash in column pruning caused by the light schema change (#58614) ### What problem does this PR solve? Issue Number: close #xxx Related PR: #xxx Should set the column name of sub-iterator of StructIterator. ### Release note None ### Check List (For Author) - Test - [ ] Regression test - [ ] Unit Test - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [ ] Yes. - Does this need documentation? - [ ] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label --- .../olap/rowset/segment_v2/column_reader.cpp | 2 ++ .../complex_types/test_pruned_columns.out | 4 +++ .../complex_types/test_pruned_columns.groovy | 33 +++++++++++++++++++ 3 files changed, 39 insertions(+) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 7c51bc7d082ecc..3ed95016b4623f 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -930,6 +931,7 @@ Status ColumnReader::new_struct_iterator(ColumnIteratorUPtr* iterator, TabletColumn column = tablet_column->get_sub_column(i); ColumnIteratorUPtr it; RETURN_IF_ERROR(Segment::new_default_iterator(column, &it)); + it->set_column_name(column.name()); sub_column_iterators.emplace_back(std::move(it)); } diff --git a/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out b/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out index 870a576307486f..86728bafd1ca8d 100644 --- a/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out +++ b/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out @@ -29,3 +29,7 @@ 0.41 0.99 +-- !sql8 -- +\N +added_z + diff --git a/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy b/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy index d54d924e97fdc9..c2a7e2b71466c1 100644 --- a/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy +++ b/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy @@ -85,4 +85,37 @@ suite("test_pruned_columns") { qt_sql7 """ select struct_element(dynamic_attributes['theme_preference'], 'confidence_score') from `tbl_test_pruned_columns_map` order by id; """ + + // test light schema change with nested complex types + sql """ + DROP TABLE IF EXISTS nested_sc_tbl; + CREATE TABLE nested_sc_tbl ( + `id` BIGINT, + `s_info` STRUCT, + `arr_s` ARRAY>, + `map_s` MAP> + ) + UNIQUE KEY(`id`) + DISTRIBUTED BY HASH(`id`) BUCKETS 4 + PROPERTIES ( + "replication_num" = "1", + "light_schema_change" = "true" + ); + """ + sql """ + ALTER TABLE nested_sc_tbl MODIFY COLUMN s_info STRUCT; + """ + sql """ + INSERT INTO nested_sc_tbl VALUES (1, struct(10, 'v1_struct', 100), array(struct(100, 200)), map('k1', struct(1, 1.1))); + """ + sql """ + ALTER TABLE nested_sc_tbl MODIFY COLUMN arr_s ARRAY>; + """ + sql """ + INSERT INTO nested_sc_tbl VALUES (3, struct(30.5, 'v3', 888), array(struct(500, 600, 'added_z'), struct(501, 601, 'added_z_2')), map('k3', struct(3, 3.3))); + """ + + qt_sql8 """ + select struct_element(element_at(arr_s, 1), 'z') as inner_z FROM nested_sc_tbl ORDER BY id; + """ } \ No newline at end of file From 8009f8aecd7f934c23ccd68e65fb96a30012d111 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Thu, 4 Dec 2025 14:34:14 +0800 Subject: [PATCH 04/12] [fix](olap) Fix the incorrect row count set when reading pruned columns (#58682) ### What problem does this PR solve? The `next_batch` method should accumulate the row count. Related PR: #xxx Problem Summary: ### Release note None ### Check List (For Author) - Test - [ ] Regression test - [ ] Unit Test - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [ ] Yes. - Does this need documentation? - [ ] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label --- be/src/olap/rowset/segment_v2/column_reader.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 3ed95016b4623f..574388dc2cb291 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -1022,7 +1022,7 @@ Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr bool* has_null) { if (_reading_flag == ReadingFlag::SKIP_READING) { DLOG(INFO) << "Map column iterator column " << _column_name << " skip reading."; - dst->resize(*n); + dst->resize(dst->size() + *n); return Status::OK(); } @@ -1212,7 +1212,7 @@ Status StructFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumn bool* has_null) { if (_reading_flag == ReadingFlag::SKIP_READING) { DLOG(INFO) << "Struct column iterator column " << _column_name << " skip reading."; - dst->resize(*n); + dst->resize(dst->size() + *n); return Status::OK(); } @@ -1469,7 +1469,7 @@ Status ArrayFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnP bool* has_null) { if (_reading_flag == ReadingFlag::SKIP_READING) { DLOG(INFO) << "Array column iterator column " << _column_name << " skip reading."; - dst->resize(*n); + dst->resize(dst->size() + *n); return Status::OK(); } @@ -1686,7 +1686,7 @@ Status FileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr& d bool* has_null) { if (_reading_flag == ReadingFlag::SKIP_READING) { DLOG(INFO) << "File column iterator column " << _column_name << " skip reading."; - dst->resize(*n); + dst->resize(dst->size() + *n); return Status::OK(); } From 462af3f1417f73c7930549904d7b3211fa8cf83a Mon Sep 17 00:00:00 2001 From: lihangyu Date: Wed, 3 Dec 2025 11:52:30 +0800 Subject: [PATCH 05/12] [Optimize](Map) Optimize MapFileColumnIterator::read_by_rowids for batched map access (#58485) - Replace the per-row seek + next_batch(1) loop in MapFileColumnIterator::read_by_rowids with batched offset reads via OffsetFileColumnIterator::read_by_rowids to derive key/value ranges for the requested rowids. - Compute per-row map sizes from offset[rowid] and offset[rowid+1], using the page-tail next_array_item_ordinal sentinel for the last row when rowid+1 is out of bounds. - Skip key/value decoding for null rows by consulting a pre-fetched null map, and add a safety check to reject non-nullable destination columns when the underlying map reader is nullable. - Reuse a small peek column in OffsetFileColumnIterator::_peek_one_offset to avoid repeated temporary column allocations when reading page sentinels. - Add a unit test (MapReadByRowidsSkipReadingResizesDestination) to verify that read_by_rowids honors the SKIP_READING flag and only resizes the destination column without touching sub-iterators. - Improve performance from ~19s to ~0.1s in the worst-case access pattern, and from ~6s to ~3s in the normal case. --- .../olap/rowset/segment_v2/column_reader.cpp | 123 ++++++++++++++++-- be/src/olap/rowset/segment_v2/column_reader.h | 7 + .../rowset/segment_v2/column_reader_test.cpp | 86 ++++++++++++ 3 files changed, 208 insertions(+), 8 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 574388dc2cb291..4c22f0c60a7794 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -1085,13 +1085,117 @@ Status MapFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t dst->resize(count); return Status::OK(); } + if (count == 0) { + return Status::OK(); + } + // resolve ColumnMap and nullable wrapper + const auto* column_map = vectorized::check_and_get_column( + dst->is_nullable() ? static_cast(*dst).get_nested_column() + : *dst); + auto offsets_ptr = column_map->get_offsets_column().assume_mutable(); + auto& offsets = static_cast(*offsets_ptr); + size_t base = offsets.get_data().empty() ? 0 : offsets.get_data().back(); + // 1. bulk read null-map if nullable + std::vector null_mask; // 0: not null, 1: null + if (_map_reader->is_nullable()) { + // For nullable map columns, the destination column must also be nullable. + if (UNLIKELY(!dst->is_nullable())) { + return Status::InternalError( + "unexpected non-nullable destination column for nullable map reader"); + } + auto null_map_ptr = + static_cast(*dst).get_null_map_column_ptr(); + size_t null_before = null_map_ptr->size(); + RETURN_IF_ERROR(_null_iterator->read_by_rowids(rowids, count, null_map_ptr)); + // extract a light-weight view to decide element reads + auto& null_map_col = assert_cast(*null_map_ptr); + null_mask.reserve(count); + for (size_t i = 0; i < count; ++i) { + null_mask.push_back(null_map_col.get_element(null_before + i)); + } + } else if (dst->is_nullable()) { + // in not-null to null linked-schemachange mode, + // actually we do not change dat data include meta in footer, + // so may dst from changed meta which is nullable but old data is not nullable, + // if so, we should set null_map to all null by default + auto null_map_ptr = + static_cast(*dst).get_null_map_column_ptr(); + auto& null_map = assert_cast(*null_map_ptr); + null_map.insert_many_vals(0, count); + } + + // 2. bulk read start ordinals for requested rows + vectorized::MutableColumnPtr starts_col = vectorized::ColumnOffset64::create(); + starts_col->reserve(count); + RETURN_IF_ERROR(_offsets_iterator->read_by_rowids(rowids, count, starts_col)); + + // 3. bulk read next-start ordinals for rowid+1 (within bounds) + std::vector next_rowids(count); for (size_t i = 0; i < count; ++i) { - RETURN_IF_ERROR(seek_to_ordinal(rowids[i])); - size_t num_read = 1; - RETURN_IF_ERROR(next_batch(&num_read, dst, nullptr)); - DCHECK(num_read == 1); + uint64_t nr = rowids[i] + 1; + next_rowids[i] = nr < _map_reader->num_rows() ? static_cast(nr) + : static_cast(0); // placeholder + } + vectorized::MutableColumnPtr next_starts_col = vectorized::ColumnOffset64::create(); + next_starts_col->reserve(count); + // read for all; we'll fix out-of-bound cases below + RETURN_IF_ERROR(_offsets_iterator->read_by_rowids(next_rowids.data(), count, next_starts_col)); + + // 4. fix next_start for rows whose next_rowid is out-of-bound (rowid == num_rows-1) + for (size_t i = 0; i < count; ++i) { + if (rowids[i] + 1 >= _map_reader->num_rows()) { + // seek to the last row and consume one to move decoder to end-of-page, + // then peek page-tail sentinel next_array_item_ordinal as next_start + RETURN_IF_ERROR(_offsets_iterator->seek_to_ordinal(rowids[i])); + size_t one = 1; + bool has_null_unused = false; + vectorized::MutableColumnPtr tmp = vectorized::ColumnOffset64::create(); + RETURN_IF_ERROR(_offsets_iterator->next_batch(&one, tmp, &has_null_unused)); + ordinal_t ns = 0; + RETURN_IF_ERROR(_offsets_iterator->_peek_one_offset(&ns)); + // overwrite with sentinel + assert_cast(*next_starts_col).get_data()[i] = ns; + } + } + + // 5. compute sizes and append offsets prefix-sum + auto& starts_data = assert_cast(*starts_col).get_data(); + auto& next_starts_data = assert_cast(*next_starts_col).get_data(); + std::vector sizes(count, 0); + size_t acc = base; + offsets.get_data().reserve(offsets.get_data().size() + count); + for (size_t i = 0; i < count; ++i) { + size_t sz = static_cast(next_starts_data[i] - starts_data[i]); + if (_map_reader->is_nullable() && !null_mask.empty() && null_mask[i]) { + sz = 0; // null rows do not consume elements + } + sizes[i] = sz; + acc += sz; + offsets.get_data().push_back(acc); } + + // 6. read key/value elements for non-empty sizes + auto keys_ptr = column_map->get_keys().assume_mutable(); + auto vals_ptr = column_map->get_values().assume_mutable(); + + for (size_t i = 0; i < count; ++i) { + size_t sz = sizes[i]; + if (sz == 0) { + continue; + } + ordinal_t start = static_cast(starts_data[i]); + RETURN_IF_ERROR(_key_iterator->seek_to_ordinal(start)); + RETURN_IF_ERROR(_val_iterator->seek_to_ordinal(start)); + size_t n = sz; + bool dummy_has_null = false; + RETURN_IF_ERROR(_key_iterator->next_batch(&n, keys_ptr, &dummy_has_null)); + DCHECK(n == sz); + n = sz; + RETURN_IF_ERROR(_val_iterator->next_batch(&n, vals_ptr, &dummy_has_null)); + DCHECK(n == sz); + } + return Status::OK(); } @@ -1363,6 +1467,8 @@ Status StructFileColumnIterator::set_access_paths( //////////////////////////////////////////////////////////////////////////////// Status OffsetFileColumnIterator::init(const ColumnIteratorOptions& opts) { RETURN_IF_ERROR(_offset_iterator->init(opts)); + // allocate peek tmp column once + _peek_tmp_col = vectorized::ColumnOffset64::create(); return Status::OK(); } @@ -1375,11 +1481,12 @@ Status OffsetFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumn Status OffsetFileColumnIterator::_peek_one_offset(ordinal_t* offset) { if (_offset_iterator->get_current_page()->has_remaining()) { PageDecoder* offset_page_decoder = _offset_iterator->get_current_page()->data_decoder.get(); - vectorized::MutableColumnPtr offset_col = vectorized::ColumnOffset64::create(); size_t n = 1; - RETURN_IF_ERROR(offset_page_decoder->peek_next_batch(&n, offset_col)); // not null - DCHECK(offset_col->size() == 1); - *offset = assert_cast(offset_col.get())->get_element(0); + _peek_tmp_col->clear(); + RETURN_IF_ERROR(offset_page_decoder->peek_next_batch(&n, _peek_tmp_col)); // not null + DCHECK(_peek_tmp_col->size() == 1); + *offset = + assert_cast(_peek_tmp_col.get())->get_element(0); } else { *offset = _offset_iterator->get_current_page()->next_array_item_ordinal; } diff --git a/be/src/olap/rowset/segment_v2/column_reader.h b/be/src/olap/rowset/segment_v2/column_reader.h index 4a7f444a4c0ab9..48a10164a1373f 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.h +++ b/be/src/olap/rowset/segment_v2/column_reader.h @@ -521,8 +521,15 @@ class OffsetFileColumnIterator final : public ColumnIterator { Status _calculate_offsets(ssize_t start, vectorized::ColumnArray::ColumnOffsets& column_offsets); + Status read_by_rowids(const rowid_t* rowids, const size_t count, + vectorized::MutableColumnPtr& dst) override { + return _offset_iterator->read_by_rowids(rowids, count, dst); + } + private: std::unique_ptr _offset_iterator; + // reuse a tiny column for peek to avoid frequent allocations + vectorized::MutableColumnPtr _peek_tmp_col; }; // This iterator is used to read map value column diff --git a/be/test/olap/rowset/segment_v2/column_reader_test.cpp b/be/test/olap/rowset/segment_v2/column_reader_test.cpp index 98478df7016196..04a8f8317a5d92 100644 --- a/be/test/olap/rowset/segment_v2/column_reader_test.cpp +++ b/be/test/olap/rowset/segment_v2/column_reader_test.cpp @@ -217,4 +217,90 @@ TEST_F(ColumnReaderTest, MultiAccessPaths) { ASSERT_EQ(map_iter->_key_iterator->_reading_flag, ColumnIterator::ReadingFlag::NEED_TO_READ); ASSERT_EQ(map_iter->_val_iterator->_reading_flag, ColumnIterator::ReadingFlag::SKIP_READING); } + +TEST_F(ColumnReaderTest, OffsetPeekUsesPageSentinelWhenNoRemaining) { + // create a bare FileColumnIterator with a dummy ColumnReader + auto reader = std::make_shared(); + auto file_iter = std::make_unique(reader); + auto* page = file_iter->get_current_page(); + + // simulate a page that has no remaining offsets in decoder but has a valid + // next_array_item_ordinal recorded in footer + page->num_rows = 0; + page->offset_in_page = 0; + page->next_array_item_ordinal = 12345; + + OffsetFileColumnIterator offset_iter(std::move(file_iter)); + ordinal_t offset = 0; + auto st = offset_iter._peek_one_offset(&offset); + + ASSERT_TRUE(st.ok()) << "peek one offset failed: " << st.to_string(); + ASSERT_EQ(static_cast(12345), offset); +} + +TEST_F(ColumnReaderTest, OffsetCalculateOffsetsUsesPageSentinelForLastOffset) { + // create offset iterator with a page whose sentinel offset is set in footer + auto reader = std::make_shared(); + auto file_iter = std::make_unique(reader); + auto* page = file_iter->get_current_page(); + + // simulate page with no remaining values, but a valid next_array_item_ordinal + page->num_rows = 0; + page->offset_in_page = 0; + page->next_array_item_ordinal = 15; + + OffsetFileColumnIterator offset_iter(std::move(file_iter)); + + // prepare in-memory column offsets: + // offsets_data = [first_column_offset, first_storage_offset, next_storage_offset_placeholder] + // first_column_offset = 100 + // first_storage_offset = 10 + // placeholder real next_storage_offset will be fetched from page sentinel (15) + vectorized::ColumnArray::ColumnOffsets column_offsets; + auto& data = column_offsets.get_data(); + data.push_back(100); // index 0: first_column_offset + data.push_back(10); // index 1: first_storage_offset + data.push_back(12); // index 2: placeholder storage offset for middle element + + auto st = offset_iter._calculate_offsets(1, column_offsets); + ASSERT_TRUE(st.ok()) << "calculate offsets failed: " << st.to_string(); + + // after calculation: + // data[1] = 100 + (12 - 10) = 102 + // data[2] = 100 + (15 - 10) = 105 (using page sentinel as next_storage_offset) + ASSERT_EQ(static_cast(100), data[0]); + ASSERT_EQ(static_cast(102), data[1]); + ASSERT_EQ(static_cast(105), data[2]); +} + +TEST_F(ColumnReaderTest, MapReadByRowidsSkipReadingResizesDestination) { + // create a basic map iterator with dummy readers/iterators + auto map_reader = std::make_shared(); + auto null_iter = std::make_unique(std::make_shared()); + auto offsets_iter = std::make_unique( + std::make_unique(std::make_shared())); + auto key_iter = std::make_unique(std::make_shared()); + auto val_iter = std::make_unique(std::make_shared()); + + MapFileColumnIterator map_iter(map_reader, std::move(null_iter), std::move(offsets_iter), + std::move(key_iter), std::move(val_iter)); + map_iter.set_column_name("map_col"); + map_iter.set_reading_flag(ColumnIterator::ReadingFlag::SKIP_READING); + + // prepare an empty ColumnMap as destination + auto keys = vectorized::ColumnInt32::create(); + auto values = vectorized::ColumnInt32::create(); + auto offsets = vectorized::ColumnArray::ColumnOffsets::create(); + offsets->get_data().push_back(0); + auto column_map = + vectorized::ColumnMap::create(std::move(keys), std::move(values), std::move(offsets)); + vectorized::MutableColumnPtr dst = std::move(column_map); + + const rowid_t rowids[] = {1, 5, 7}; + size_t count = sizeof(rowids) / sizeof(rowids[0]); + auto st = map_iter.read_by_rowids(rowids, count, dst); + + ASSERT_TRUE(st.ok()) << "read_by_rowids failed: " << st.to_string(); + ASSERT_EQ(count, dst->size()); +} } // namespace doris::segment_v2 \ No newline at end of file From 4e760a673eacb855f87d86314a32ea218a794310 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Fri, 12 Dec 2025 10:09:32 +0800 Subject: [PATCH 06/12] [opt](olap) Optimize the performance of StructFileColumnIterator::read_by_rowids in scenarios where the rowids are continuous (#58851) ### What problem does this PR solve? Avoid seeking and reading row by row. Issue Number: close #xxx Related PR: #xxx Problem Summary: ### Release note None ### Check List (For Author) - Test - [ ] Regression test - [ ] Unit Test - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [ ] Yes. - Does this need documentation? - [ ] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label --- .../olap/rowset/segment_v2/column_reader.cpp | 53 +++++++++++++----- .../complex_types/test_pruned_columns.out | 55 ++++++++++++++++++- .../complex_types/test_pruned_columns.groovy | 25 ++++++++- 3 files changed, 115 insertions(+), 18 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index 4c22f0c60a7794..ca2f0e47705b48 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -1026,7 +1026,7 @@ Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr return Status::OK(); } - auto& column_map = assert_cast( + auto& column_map = assert_cast( dst->is_nullable() ? static_cast(*dst).get_nested_column() : *dst); auto column_offsets_ptr = column_map.get_offsets_column().assume_mutable(); @@ -1070,7 +1070,8 @@ Status MapFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnPtr RETURN_IF_ERROR( _null_iterator->next_batch(&num_read, null_map_ptr, &null_signs_has_null)); } else { - auto& null_map = assert_cast(*null_map_ptr); + auto& null_map = assert_cast( + *null_map_ptr); null_map.insert_many_vals(0, num_read); } DCHECK(num_read == *n); @@ -1155,7 +1156,8 @@ Status MapFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t ordinal_t ns = 0; RETURN_IF_ERROR(_offsets_iterator->_peek_one_offset(&ns)); // overwrite with sentinel - assert_cast(*next_starts_col).get_data()[i] = ns; + assert_cast(*next_starts_col) + .get_data()[i] = ns; } } @@ -1320,7 +1322,7 @@ Status StructFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumn return Status::OK(); } - auto& column_struct = assert_cast( + auto& column_struct = assert_cast( dst->is_nullable() ? static_cast(*dst).get_nested_column() : *dst); for (size_t i = 0; i < column_struct.tuple_size(); i++) { @@ -1346,7 +1348,8 @@ Status StructFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumn RETURN_IF_ERROR( _null_iterator->next_batch(&num_read, null_map_ptr, &null_signs_has_null)); } else { - auto& null_map = assert_cast(*null_map_ptr); + auto& null_map = assert_cast( + *null_map_ptr); null_map.insert_many_vals(0, num_read); } DCHECK(num_read == *n); @@ -1378,12 +1381,33 @@ Status StructFileColumnIterator::read_by_rowids(const rowid_t* rowids, const siz return Status::OK(); } - for (size_t i = 0; i < count; ++i) { - RETURN_IF_ERROR(seek_to_ordinal(rowids[i])); - size_t num_read = 1; + if (count == 0) { + return Status::OK(); + } + + size_t this_run = 1; + auto start_idx = rowids[0]; + auto last_idx = rowids[0]; + for (size_t i = 1; i < count; ++i) { + if (last_idx == rowids[i] - 1) { + last_idx = rowids[i]; + this_run++; + continue; + } + RETURN_IF_ERROR(seek_to_ordinal(start_idx)); + size_t num_read = this_run; RETURN_IF_ERROR(next_batch(&num_read, dst, nullptr)); - DCHECK(num_read == 1); + DCHECK_EQ(num_read, this_run); + + start_idx = rowids[i]; + last_idx = rowids[i]; + this_run = 1; } + + RETURN_IF_ERROR(seek_to_ordinal(start_idx)); + size_t num_read = this_run; + RETURN_IF_ERROR(next_batch(&num_read, dst, nullptr)); + DCHECK_EQ(num_read, this_run); return Status::OK(); } @@ -1485,8 +1509,9 @@ Status OffsetFileColumnIterator::_peek_one_offset(ordinal_t* offset) { _peek_tmp_col->clear(); RETURN_IF_ERROR(offset_page_decoder->peek_next_batch(&n, _peek_tmp_col)); // not null DCHECK(_peek_tmp_col->size() == 1); - *offset = - assert_cast(_peek_tmp_col.get())->get_element(0); + *offset = assert_cast( + _peek_tmp_col.get()) + ->get_element(0); } else { *offset = _offset_iterator->get_current_page()->next_array_item_ordinal; } @@ -1617,7 +1642,8 @@ Status ArrayFileColumnIterator::next_batch(size_t* n, vectorized::MutableColumnP RETURN_IF_ERROR( _null_iterator->next_batch(&num_read, null_map_ptr, &null_signs_has_null)); } else { - auto& null_map = assert_cast(*null_map_ptr); + auto& null_map = assert_cast( + *null_map_ptr); null_map.insert_many_vals(0, num_read); } DCHECK(num_read == *n); @@ -2203,7 +2229,8 @@ void DefaultValueColumnIterator::_insert_many_default(vectorized::MutableColumnP Status RowIdColumnIteratorV2::next_batch(size_t* n, vectorized::MutableColumnPtr& dst, bool* has_null) { - auto* string_column = assert_cast(dst.get()); + auto* string_column = + assert_cast(dst.get()); for (uint32_t i = 0; i < *n; ++i) { uint32_t row_id = _current_rowid + i; diff --git a/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out b/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out index 86728bafd1ca8d..b3312aa670c066 100644 --- a/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out +++ b/regression-test/data/datatype_p0/complex_types/test_pruned_columns.out @@ -1,7 +1,18 @@ -- This file is automatically generated. You should know what you did if you want to edit this -- !sql -- -1 {"city":"beijing", "data":[{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}]} -2 {"city":"shanghai", "data":[{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}]} +1 {"city":"beijing", "data":[{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}], "value":1} +2 {"city":"shanghai", "data":[{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}], "value":2} +3 {"city":"guangzhou", "data":[{1:{"a":90, "b":60}, 2:{"a":110, "b":40}}], "value":3} +4 {"city":"shenzhen", "data":[{2:{"a":130, "b":20}, 1:{"a":150, "b":40}}], "value":4} +5 {"city":"hangzhou", "data":[{1:{"a":170, "b":80}, 2:{"a":190, "b":40}}], "value":5} +6 {"city":"nanjing", "data":[{2:{"a":210, "b":60}, 1:{"a":230, "b":40}}], "value":6} +7 {"city":"tianjin", "data":[{1:{"a":250, "b":20}, 2:{"a":270, "b":40}}], "value":7} +8 {"city":"chongqing", "data":[{2:{"a":290, "b":80}, 1:{"a":310, "b":40}}], "value":8} +9 {"city":"wuhan", "data":[{1:{"a":330, "b":60}, 2:{"a":350, "b":40}}], "value":9} +10 {"city":"xian", "data":[{2:{"a":370, "b":20}, 1:{"a":390, "b":40}}], "value":10} +11 {"city":"changsha", "data":[{1:{"a":410, "b":80}, 2:{"a":430, "b":40}}], "value":11} +12 {"city":"qingdao", "data":[{2:{"a":450, "b":60}, 1:{"a":470, "b":40}}], "value":12} +13 {"city":"dalian", "data":[{1:{"a":490, "b":20}, 2:{"a":510, "b":40}}], "value":13} -- !sql1 -- 1 [10] @@ -9,18 +20,58 @@ -- !sql2 -- 1 beijing 2 shanghai +3 guangzhou +4 shenzhen +5 hangzhou +6 nanjing +7 tianjin +8 chongqing +9 wuhan +10 xian +11 changsha +12 qingdao +13 dalian -- !sql3 -- 1 [{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}] 2 [{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}] +3 [{1:{"a":90, "b":60}, 2:{"a":110, "b":40}}] +4 [{2:{"a":130, "b":20}, 1:{"a":150, "b":40}}] +5 [{1:{"a":170, "b":80}, 2:{"a":190, "b":40}}] +6 [{2:{"a":210, "b":60}, 1:{"a":230, "b":40}}] +7 [{1:{"a":250, "b":20}, 2:{"a":270, "b":40}}] +8 [{2:{"a":290, "b":80}, 1:{"a":310, "b":40}}] +9 [{1:{"a":330, "b":60}, 2:{"a":350, "b":40}}] +10 [{2:{"a":370, "b":20}, 1:{"a":390, "b":40}}] +11 [{1:{"a":410, "b":80}, 2:{"a":430, "b":40}}] +12 [{2:{"a":450, "b":60}, 1:{"a":470, "b":40}}] +13 [{1:{"a":490, "b":20}, 2:{"a":510, "b":40}}] -- !sql4 -- 1 [{1:{"a":10, "b":20}, 2:{"a":30, "b":40}}] 2 [{2:{"a":50, "b":40}, 1:{"a":70, "b":80}}] +3 [{1:{"a":90, "b":60}, 2:{"a":110, "b":40}}] +5 [{1:{"a":170, "b":80}, 2:{"a":190, "b":40}}] +7 [{1:{"a":250, "b":20}, 2:{"a":270, "b":40}}] +9 [{1:{"a":330, "b":60}, 2:{"a":350, "b":40}}] +11 [{1:{"a":410, "b":80}, 2:{"a":430, "b":40}}] +13 [{1:{"a":490, "b":20}, 2:{"a":510, "b":40}}] -- !sql5 -- 1 beijing 2 shanghai +3 guangzhou +5 hangzhou +7 tianjin +9 wuhan +11 changsha +13 dalian + +-- !sql5_1 -- +61 + +-- !sql5_2 -- +61 -- !sql6 -- 2 diff --git a/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy b/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy index c2a7e2b71466c1..a99b7b6da5998b 100644 --- a/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy +++ b/regression-test/suites/datatype_p0/complex_types/test_pruned_columns.groovy @@ -20,7 +20,7 @@ suite("test_pruned_columns") { sql """ CREATE TABLE `tbl_test_pruned_columns` ( `id` int NULL, - `s` struct>>> NULL + `s` struct>>, value:int> NULL ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY RANDOM BUCKETS AUTO @@ -31,8 +31,19 @@ suite("test_pruned_columns") { sql """ insert into `tbl_test_pruned_columns` values - (1, named_struct('city', 'beijing', 'data', array(map(1, named_struct('a', 10, 'b', 20.0), 2, named_struct('a', 30, 'b', 40))))), - (2, named_struct('city', 'shanghai', 'data', array(map(2, named_struct('a', 50, 'b', 40.0), 1, named_struct('a', 70, 'b', 80))))); + (1, named_struct('city', 'beijing', 'data', array(map(1, named_struct('a', 10, 'b', 20.0), 2, named_struct('a', 30, 'b', 40))), 'value', 1)), + (2, named_struct('city', 'shanghai', 'data', array(map(2, named_struct('a', 50, 'b', 40.0), 1, named_struct('a', 70, 'b', 80))), 'value', 2)), + (3, named_struct('city', 'guangzhou', 'data', array(map(1, named_struct('a', 90, 'b', 60.0), 2, named_struct('a', 110, 'b', 40))), 'value', 3)), + (4, named_struct('city', 'shenzhen', 'data', array(map(2, named_struct('a', 130, 'b', 20.0), 1, named_struct('a', 150, 'b', 40))), 'value', 4)), + (5, named_struct('city', 'hangzhou', 'data', array(map(1, named_struct('a', 170, 'b', 80.0), 2, named_struct('a', 190, 'b', 40))), 'value', 5)), + (6, named_struct('city', 'nanjing', 'data', array(map(2, named_struct('a', 210, 'b', 60.0), 1, named_struct('a', 230, 'b', 40))), 'value', 6)), + (7, named_struct('city', 'tianjin', 'data', array(map(1, named_struct('a', 250, 'b', 20.0), 2, named_struct('a', 270, 'b', 40))), 'value', 7)), + (8, named_struct('city', 'chongqing', 'data', array(map(2, named_struct('a', 290, 'b', 80.0), 1, named_struct('a', 310, 'b', 40))), 'value', 8)), + (9, named_struct('city', 'wuhan', 'data', array(map(1, named_struct('a', 330, 'b', 60.0), 2, named_struct('a', 350, 'b', 40))), 'value', 9)), + (10, named_struct('city', 'xian', 'data', array(map(2, named_struct('a', 370, 'b', 20.0), 1, named_struct('a', 390, 'b', 40))), 'value', 10)), + (11, named_struct('city', 'changsha', 'data', array(map(1, named_struct('a', 410, 'b', 80.0), 2, named_struct('a', 430, 'b', 40))), 'value', 11)), + (12, named_struct('city', 'qingdao', 'data', array(map(2, named_struct('a', 450, 'b', 60.0), 1, named_struct('a', 470, 'b', 40))), 'value', 12)), + (13, named_struct('city', 'dalian', 'data', array(map(1, named_struct('a', 490, 'b', 20.0), 2, named_struct('a', 510, 'b', 40))), 'value', 13)); """ qt_sql """ @@ -59,6 +70,14 @@ suite("test_pruned_columns") { select id, struct_element(s, 'city') from `tbl_test_pruned_columns` where struct_element(struct_element(s, 'data')[1][2], 'b') = 40 order by 1; """ + qt_sql5_1 """ + select /*+ set enable_prune_nested_column = 1; */ sum(s.value) from `tbl_test_pruned_columns` where id in(1,2,3,4,8,9,10,11,13); + """ + + qt_sql5_2 """ + select /*+ set enable_prune_nested_column = 0; */ sum(s.value) from `tbl_test_pruned_columns` where id in(1,2,3,4,8,9,10,11,13); + """ + sql """DROP TABLE IF EXISTS `tbl_test_pruned_columns_map`""" sql """ CREATE TABLE `tbl_test_pruned_columns_map` ( From 8906295b374899763e3972ab21b35ca33de6f635 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Thu, 18 Dec 2025 11:06:52 +0800 Subject: [PATCH 07/12] [opt](olap) Optimize reading by rowids of Map Column (#59043) ### What problem does this PR solve? Read as many consecutive rows as possible. Problem Summary: ### Release note None ### Check List (For Author) - Test - [ ] Regression test - [ ] Unit Test - [ ] Manual test (add detailed scripts or steps below) - [ ] No need to test or manual test. Explain why: - [ ] This is a refactor/code format and no logic has been changed. - [ ] Previous test can cover this change. - [ ] No code files have been changed. - [ ] Other reason - Behavior changed: - [ ] No. - [ ] Yes. - Does this need documentation? - [ ] No. - [ ] Yes. ### Check List (For Reviewer who merge this PR) - [ ] Confirm the release note - [ ] Confirm test cases - [ ] Confirm document - [ ] Add branch pick label --- .../olap/rowset/segment_v2/column_reader.cpp | 67 ++++++++++++++++--- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp b/be/src/olap/rowset/segment_v2/column_reader.cpp index ca2f0e47705b48..27efea4fe08efa 100644 --- a/be/src/olap/rowset/segment_v2/column_reader.cpp +++ b/be/src/olap/rowset/segment_v2/column_reader.cpp @@ -1166,6 +1166,7 @@ Status MapFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t auto& next_starts_data = assert_cast(*next_starts_col).get_data(); std::vector sizes(count, 0); size_t acc = base; + const auto original_size = offsets.get_data().back(); offsets.get_data().reserve(offsets.get_data().size() + count); for (size_t i = 0; i < count; ++i) { size_t sz = static_cast(next_starts_data[i] - starts_data[i]); @@ -1181,21 +1182,65 @@ Status MapFileColumnIterator::read_by_rowids(const rowid_t* rowids, const size_t auto keys_ptr = column_map->get_keys().assume_mutable(); auto vals_ptr = column_map->get_values().assume_mutable(); - for (size_t i = 0; i < count; ++i) { + size_t this_run = sizes[0]; + auto start_idx = starts_data[0]; + auto last_idx = starts_data[0] + this_run; + for (size_t i = 1; i < count; ++i) { size_t sz = sizes[i]; if (sz == 0) { continue; } - ordinal_t start = static_cast(starts_data[i]); - RETURN_IF_ERROR(_key_iterator->seek_to_ordinal(start)); - RETURN_IF_ERROR(_val_iterator->seek_to_ordinal(start)); - size_t n = sz; - bool dummy_has_null = false; - RETURN_IF_ERROR(_key_iterator->next_batch(&n, keys_ptr, &dummy_has_null)); - DCHECK(n == sz); - n = sz; - RETURN_IF_ERROR(_val_iterator->next_batch(&n, vals_ptr, &dummy_has_null)); - DCHECK(n == sz); + auto start = static_cast(starts_data[i]); + if (start != last_idx) { + size_t n = this_run; + bool dummy_has_null = false; + + if (this_run != 0) { + if (_key_iterator->reading_flag() != ReadingFlag::SKIP_READING) { + RETURN_IF_ERROR(_key_iterator->seek_to_ordinal(start_idx)); + RETURN_IF_ERROR(_key_iterator->next_batch(&n, keys_ptr, &dummy_has_null)); + DCHECK(n == this_run); + } + + if (_val_iterator->reading_flag() != ReadingFlag::SKIP_READING) { + n = this_run; + RETURN_IF_ERROR(_val_iterator->seek_to_ordinal(start_idx)); + RETURN_IF_ERROR(_val_iterator->next_batch(&n, vals_ptr, &dummy_has_null)); + DCHECK(n == this_run); + } + } + start_idx = start; + this_run = sz; + last_idx = start + sz; + continue; + } + + this_run += sz; + last_idx += sz; + } + + size_t n = this_run; + const size_t total_count = offsets.get_data().back() - original_size; + bool dummy_has_null = false; + if (_key_iterator->reading_flag() != ReadingFlag::SKIP_READING) { + if (this_run != 0) { + RETURN_IF_ERROR(_key_iterator->seek_to_ordinal(start_idx)); + RETURN_IF_ERROR(_key_iterator->next_batch(&n, keys_ptr, &dummy_has_null)); + DCHECK(n == this_run); + } + } else { + keys_ptr->insert_many_defaults(total_count); + } + + if (_val_iterator->reading_flag() != ReadingFlag::SKIP_READING) { + if (this_run != 0) { + n = this_run; + RETURN_IF_ERROR(_val_iterator->seek_to_ordinal(start_idx)); + RETURN_IF_ERROR(_val_iterator->next_batch(&n, vals_ptr, &dummy_has_null)); + DCHECK(n == this_run); + } + } else { + vals_ptr->insert_many_defaults(total_count); } return Status::OK(); From 109bccaaf38f8fdd70377f2d7fc831bfb91d485a Mon Sep 17 00:00:00 2001 From: 924060929 Date: Wed, 26 Nov 2025 10:35:50 +0800 Subject: [PATCH 08/12] [chore](test) add some tests for prune nested column (#58354) add some tests for prune nested column (cherry picked from commit 70f3e9d895d4891ca9b27df953cb9dc9a96a47a7) --- .../apache/doris/analysis/AccessPathInfo.java | 45 +++++++++-- .../AccessPathExpressionCollector.java | 21 ++--- .../rules/rewrite/NestedColumnPruning.java | 79 ++++++++++++++----- .../rules/rewrite/SlotTypeReplacer.java | 7 +- .../rules/rewrite/PruneNestedColumnTest.java | 76 ++++++++++++++++++ 5 files changed, 191 insertions(+), 37 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java index 3df7baada4daa0..a2db1038a329fe 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AccessPathInfo.java @@ -23,16 +23,51 @@ import org.apache.doris.nereids.types.DataType; import org.apache.doris.thrift.TColumnAccessPath; -import lombok.AllArgsConstructor; -import lombok.Data; - import java.util.List; /** AccessPathInfo */ -@Data -@AllArgsConstructor public class AccessPathInfo { + public static final String ACCESS_ALL = "*"; + public static final String ACCESS_MAP_KEYS = "KEYS"; + public static final String ACCESS_MAP_VALUES = "VALUES"; + private DataType prunedType; + // allAccessPaths is used to record all access path include predicate access path and non-predicate access path, + // and predicateAccessPaths only contains the predicate access path. + // e.g. select element_at(s, 'name') from tbl where element_at(s, 'id') = 1 + // the allAccessPaths is: ["s.name", "s.id"] + // the predicateAccessPaths is: ["s.id"] private List allAccessPaths; private List predicateAccessPaths; + + public AccessPathInfo(DataType prunedType, List allAccessPaths, + List predicateAccessPaths) { + this.prunedType = prunedType; + this.allAccessPaths = allAccessPaths; + this.predicateAccessPaths = predicateAccessPaths; + } + + public DataType getPrunedType() { + return prunedType; + } + + public void setPrunedType(DataType prunedType) { + this.prunedType = prunedType; + } + + public List getAllAccessPaths() { + return allAccessPaths; + } + + public void setAllAccessPaths(List allAccessPaths) { + this.allAccessPaths = allAccessPaths; + } + + public List getPredicateAccessPaths() { + return predicateAccessPaths; + } + + public void setPredicateAccessPaths(List predicateAccessPaths) { + this.predicateAccessPaths = predicateAccessPaths; + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java index 4fe9e9e2f746fa..9c665f379e9cb4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java @@ -17,6 +17,7 @@ package org.apache.doris.nereids.rules.rewrite; +import org.apache.doris.analysis.AccessPathInfo; import org.apache.doris.nereids.StatementContext; import org.apache.doris.nereids.rules.rewrite.AccessPathExpressionCollector.CollectorContext; import org.apache.doris.nereids.rules.rewrite.NestedColumnPruning.DataTypeAccessTree; @@ -117,7 +118,7 @@ public Void visitArrayItemSlot(ArrayItemSlot arrayItemSlot, CollectorContext con if (nameToLambdaArguments.isEmpty()) { return null; } - context.accessPathBuilder.addPrefix("*"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_ALL); Expression argument = nameToLambdaArguments.peek().get(arrayItemSlot.getName()); if (argument == null) { return null; @@ -157,7 +158,7 @@ public Void visitElementAt(ElementAt elementAt, CollectorContext context) { List arguments = elementAt.getArguments(); Expression first = arguments.get(0); if (first.getDataType().isArrayType() || first.getDataType().isMapType()) { - context.accessPathBuilder.addPrefix("*"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_ALL); continueCollectAccessPath(first, context); for (int i = 1; i < arguments.size(); i++) { @@ -200,39 +201,39 @@ public Void visitStructElement(StructElement structElement, CollectorContext con @Override public Void visitMapKeys(MapKeys mapKeys, CollectorContext context) { context = new CollectorContext(context.statementContext, context.bottomFilter); - context.accessPathBuilder.addPrefix("KEYS"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_MAP_KEYS); return continueCollectAccessPath(mapKeys.getArgument(0), context); } @Override public Void visitMapValues(MapValues mapValues, CollectorContext context) { LinkedList suffixPath = context.accessPathBuilder.accessPath; - if (!suffixPath.isEmpty() && suffixPath.get(0).equals("*")) { + if (!suffixPath.isEmpty() && suffixPath.get(0).equals(AccessPathInfo.ACCESS_ALL)) { CollectorContext removeStarContext = new CollectorContext(context.statementContext, context.bottomFilter); removeStarContext.accessPathBuilder.accessPath.addAll(suffixPath.subList(1, suffixPath.size())); - removeStarContext.accessPathBuilder.addPrefix("VALUES"); + removeStarContext.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_MAP_VALUES); return continueCollectAccessPath(mapValues.getArgument(0), removeStarContext); } - context.accessPathBuilder.addPrefix("VALUES"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_MAP_VALUES); return continueCollectAccessPath(mapValues.getArgument(0), context); } @Override public Void visitMapContainsKey(MapContainsKey mapContainsKey, CollectorContext context) { - context.accessPathBuilder.addPrefix("KEYS"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_MAP_KEYS); return continueCollectAccessPath(mapContainsKey.getArgument(0), context); } @Override public Void visitMapContainsValue(MapContainsValue mapContainsValue, CollectorContext context) { - context.accessPathBuilder.addPrefix("VALUES"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_MAP_VALUES); return continueCollectAccessPath(mapContainsValue.getArgument(0), context); } @Override public Void visitMapContainsEntry(MapContainsEntry mapContainsEntry, CollectorContext context) { - context.accessPathBuilder.addPrefix("*"); + context.accessPathBuilder.addPrefix(AccessPathInfo.ACCESS_ALL); return continueCollectAccessPath(mapContainsEntry.getArgument(0), context); } @@ -398,7 +399,7 @@ private Void collectArrayPathInLambda(Lambda lambda, CollectorContext context) { } List path = context.accessPathBuilder.getPathList(); - if (!path.isEmpty() && path.get(0).equals("*")) { + if (!path.isEmpty() && path.get(0).equals(AccessPathInfo.ACCESS_ALL)) { context.accessPathBuilder.removePrefix(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java index b03f183b115a7c..016289ac139484 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/NestedColumnPruning.java @@ -244,11 +244,18 @@ private static Map pruneDataType( /** DataTypeAccessTree */ public static class DataTypeAccessTree { + // type of this level private DataType type; + // is the root column? private boolean isRoot; + // if access 's.a.b' the node 's' and 'a' has accessPartialChild, and node 'b' has accessAll private boolean accessPartialChild; private boolean accessAll; + // for the future, only access the meta of the column, + // e.g. `is not null` can only access the column's offset, not need to read the data private TAccessPathType pathType; + // the children of the column, for example, column s is `struct`, + // then node 's' has two children: 'a' and 'b', and the key is the column name private Map children = new LinkedHashMap<>(); public DataTypeAccessTree(DataType type, TAccessPathType pathType) { @@ -261,6 +268,30 @@ public DataTypeAccessTree(boolean isRoot, DataType type, TAccessPathType pathTyp this.pathType = pathType; } + public DataType getType() { + return type; + } + + public boolean isRoot() { + return isRoot; + } + + public boolean isAccessPartialChild() { + return accessPartialChild; + } + + public boolean isAccessAll() { + return accessAll; + } + + public TAccessPathType getPathType() { + return pathType; + } + + public Map getChildren() { + return children; + } + /** pruneCastType */ public DataType pruneCastType(DataTypeAccessTree origin, DataTypeAccessTree cast) { if (type instanceof StructType) { @@ -297,8 +328,16 @@ public DataType pruneCastType(DataTypeAccessTree origin, DataTypeAccessTree cast ); } else if (type instanceof MapType) { return MapType.of( - children.get("KEYS").pruneCastType(origin.children.get("KEYS"), cast.children.get("KEYS")), - children.get("VALUES").pruneCastType(origin.children.get("VALUES"), cast.children.get("VALUES")) + children.get(AccessPathInfo.ACCESS_MAP_KEYS) + .pruneCastType( + origin.children.get(AccessPathInfo.ACCESS_MAP_KEYS), + cast.children.get(AccessPathInfo.ACCESS_MAP_KEYS) + ), + children.get(AccessPathInfo.ACCESS_MAP_VALUES) + .pruneCastType( + origin.children.get(AccessPathInfo.ACCESS_MAP_VALUES), + cast.children.get(AccessPathInfo.ACCESS_MAP_VALUES) + ) ); } else { return cast.type; @@ -327,7 +366,7 @@ public boolean replacePathByAnotherTree(DataTypeAccessTree cast, List pa cast.children.values().iterator().next(), path, index + 1); } else if (cast.type instanceof MapType) { String fieldName = path.get(index); - return children.get("VALUES").replacePathByAnotherTree( + return children.get(AccessPathInfo.ACCESS_MAP_VALUES).replacePathByAnotherTree( cast.children.get(fieldName), path, index + 1 ); } @@ -358,33 +397,33 @@ public void setAccessByPath(List path, int accessIndex, TAccessPathType } return; } else if (this.type.isArrayType()) { - DataTypeAccessTree child = children.get("*"); - if (path.get(accessIndex).equals("*")) { + DataTypeAccessTree child = children.get(AccessPathInfo.ACCESS_ALL); + if (path.get(accessIndex).equals(AccessPathInfo.ACCESS_ALL)) { // enter this array and skip next * child.setAccessByPath(path, accessIndex + 1, pathType); } return; } else if (this.type.isMapType()) { String fieldName = path.get(accessIndex); - if (fieldName.equals("*")) { + if (fieldName.equals(AccessPathInfo.ACCESS_ALL)) { // access value by the key, so we should access key and access value, then prune the value's type. // e.g. map_column['id'] should access the keys, and access the values - DataTypeAccessTree keysChild = children.get("KEYS"); - DataTypeAccessTree valuesChild = children.get("VALUES"); + DataTypeAccessTree keysChild = children.get(AccessPathInfo.ACCESS_MAP_KEYS); + DataTypeAccessTree valuesChild = children.get(AccessPathInfo.ACCESS_MAP_VALUES); keysChild.accessAll = true; valuesChild.setAccessByPath(path, accessIndex + 1, pathType); return; - } else if (fieldName.equals("KEYS")) { + } else if (fieldName.equals(AccessPathInfo.ACCESS_MAP_KEYS)) { // only access the keys and not need enter keys, because it must be primitive type. // e.g. map_keys(map_column) - DataTypeAccessTree keysChild = children.get("KEYS"); + DataTypeAccessTree keysChild = children.get(AccessPathInfo.ACCESS_MAP_KEYS); keysChild.accessAll = true; return; - } else if (fieldName.equals("VALUES")) { + } else if (fieldName.equals(AccessPathInfo.ACCESS_MAP_VALUES)) { // only access the values without keys, and maybe prune the value's data type. // e.g. map_values(map_columns)[0] will access the array of values first, // and then access the array, so the access path is ['VALUES', '*'] - DataTypeAccessTree valuesChild = children.get("VALUES"); + DataTypeAccessTree valuesChild = children.get(AccessPathInfo.ACCESS_MAP_VALUES); valuesChild.setAccessByPath(path, accessIndex + 1, pathType); return; } @@ -411,10 +450,10 @@ public static DataTypeAccessTree of(DataType type, TAccessPathType pathType) { root.children.put(kv.getKey().toLowerCase(), of(kv.getValue().getDataType(), pathType)); } } else if (type instanceof ArrayType) { - root.children.put("*", of(((ArrayType) type).getItemType(), pathType)); + root.children.put(AccessPathInfo.ACCESS_ALL, of(((ArrayType) type).getItemType(), pathType)); } else if (type instanceof MapType) { - root.children.put("KEYS", of(((MapType) type).getKeyType(), pathType)); - root.children.put("VALUES", of(((MapType) type).getValueType(), pathType)); + root.children.put(AccessPathInfo.ACCESS_MAP_KEYS, of(((MapType) type).getKeyType(), pathType)); + root.children.put(AccessPathInfo.ACCESS_MAP_VALUES, of(((MapType) type).getValueType(), pathType)); } return root; } @@ -440,17 +479,17 @@ public Optional pruneDataType() { } } } else if (type instanceof ArrayType) { - Optional childDataType = children.get("*").pruneDataType(); + Optional childDataType = children.get(AccessPathInfo.ACCESS_ALL).pruneDataType(); if (childDataType.isPresent()) { - accessedChildren.add(Pair.of("*", childDataType.get())); + accessedChildren.add(Pair.of(AccessPathInfo.ACCESS_ALL, childDataType.get())); } } else if (type instanceof MapType) { - DataType prunedValueType = children.get("VALUES") + DataType prunedValueType = children.get(AccessPathInfo.ACCESS_MAP_VALUES) .pruneDataType() .orElse(((MapType) type).getValueType()); // can not prune keys but can prune values - accessedChildren.add(Pair.of("KEYS", ((MapType) type).getKeyType())); - accessedChildren.add(Pair.of("VALUES", prunedValueType)); + accessedChildren.add(Pair.of(AccessPathInfo.ACCESS_MAP_KEYS, ((MapType) type).getKeyType())); + accessedChildren.add(Pair.of(AccessPathInfo.ACCESS_MAP_VALUES, prunedValueType)); } if (accessedChildren.isEmpty()) { return Optional.of(type); diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java index 9f6a02391eb8a8..661f537eabf2a4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java @@ -21,6 +21,7 @@ import org.apache.doris.catalog.Column; import org.apache.doris.common.Pair; import org.apache.doris.datasource.iceberg.IcebergExternalTable; +import org.apache.doris.nereids.exceptions.AnalysisException; import org.apache.doris.nereids.properties.OrderKey; import org.apache.doris.nereids.rules.rewrite.NestedColumnPruning.DataTypeAccessTree; import org.apache.doris.nereids.trees.expressions.ArrayItemReference; @@ -542,8 +543,10 @@ private , E extends Expression> Pair replace ImmutableCollection.Builder newExprs; if (expressions instanceof List) { newExprs = ImmutableList.builder(); - } else { + } else if (expressions instanceof Set) { newExprs = ImmutableSet.builder(); + } else { + throw new AnalysisException("Unsupported expression type: " + expressions.getClass()); } boolean changed = false; @@ -688,7 +691,7 @@ private void replaceIcebergAccessPathToId(List originPath, int index, Da originPath, index + 1, ((ArrayType) type).getItemType(), column.getChildren().get(0) ); } else if (type instanceof MapType) { - if (fieldName.equals("*") || fieldName.equals("VALUES")) { + if (fieldName.equals(AccessPathInfo.ACCESS_ALL) || fieldName.equals(AccessPathInfo.ACCESS_MAP_VALUES)) { replaceIcebergAccessPathToId( originPath, index + 1, ((MapType) type).getValueType(), column.getChildren().get(1) ); diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java index 9c6674deb3df0e..22e9c5e949f220 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java @@ -23,6 +23,7 @@ import org.apache.doris.common.Triple; import org.apache.doris.nereids.NereidsPlanner; import org.apache.doris.nereids.rules.RuleType; +import org.apache.doris.nereids.rules.rewrite.NestedColumnPruning.DataTypeAccessTree; import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.ArrayItemReference; import org.apache.doris.nereids.trees.expressions.Expression; @@ -31,10 +32,14 @@ import org.apache.doris.nereids.trees.expressions.SlotReference; import org.apache.doris.nereids.trees.expressions.functions.scalar.StructElement; import org.apache.doris.nereids.trees.expressions.literal.NullLiteral; +import org.apache.doris.nereids.trees.plans.Plan; +import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan; import org.apache.doris.nereids.trees.plans.physical.PhysicalCTEConsumer; import org.apache.doris.nereids.trees.plans.physical.PhysicalPlan; import org.apache.doris.nereids.trees.plans.physical.PhysicalUnion; import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.NestedColumnPrunable; +import org.apache.doris.nereids.types.NullType; import org.apache.doris.nereids.util.MemoPatternMatchSupported; import org.apache.doris.nereids.util.PlanChecker; import org.apache.doris.planner.OlapScanNode; @@ -537,6 +542,77 @@ public void testPushDownThroughUnion() { ); } + @Test + public void testDataTypeAccessTree() { + List> trees = getDataTypeAccessTrees( + "select struct_element(s, 'city') from (select id, s from tbl union all select 1, null) tmp"); + + Assertions.assertEquals(1, trees.size()); + DataTypeAccessTree tree = trees.get(0).second; + Assertions.assertEquals(NullType.INSTANCE, tree.getType()); + Assertions.assertEquals(1, tree.getChildren().size()); + Assertions.assertEquals("STRUCT", tree.getChildren().get("s").getType().toSql()); + + SlotReference slot = trees.get(0).first; + Type columnType = slot.getOriginalColumn().get().getType(); + Assertions.assertEquals("struct>>>", columnType.toSql()); + + setAccessPathAndAssertType(slot, ImmutableList.of("s", "city"), "STRUCT"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "KEYS"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "VALUES"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "VALUES", "a"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "VALUES", "b"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "*"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "*", "a"), "STRUCT>>>"); + setAccessPathAndAssertType(slot, ImmutableList.of("s", "data", "*", "*", "b"), "STRUCT>>>"); + + setAccessPathsAndAssertType(slot, + ImmutableList.of( + ImmutableList.of("s", "data", "*", "*", "b"), + ImmutableList.of("s", "city") + ), + "STRUCT>>>" + ); + } + + private void setAccessPathAndAssertType(SlotReference slot, List path, String expectedType) { + setAccessPathsAndAssertType(slot, ImmutableList.of(path), expectedType); + } + + private void setAccessPathsAndAssertType(SlotReference slot, List> paths, String expectedType) { + DataType columnType = DataType.fromCatalogType(slot.getOriginalColumn().get().getType()); + SlotReference originColumnTypeSlot = new SlotReference(slot.getName(), columnType); + DataTypeAccessTree tree = DataTypeAccessTree.ofRoot(originColumnTypeSlot, TAccessPathType.DATA); + for (List path : paths) { + tree.setAccessByPath(path, 0, TAccessPathType.DATA); + } + DataType dataType = tree.pruneDataType().get(); + Assertions.assertEquals(expectedType, dataType.toSql()); + } + + private List> getDataTypeAccessTrees(String sql) { + Plan rewritePlan = PlanChecker.from(connectContext) + .analyze(sql) + .rewrite() + .getCascadesContext() + .getRewritePlan(); + + List output = ((LogicalOlapScan) rewritePlan.collect(LogicalOlapScan.class::isInstance) + .iterator() + .next()) + .getOutput(); + List> trees = new ArrayList<>(); + for (Slot slot : output) { + if (slot.getDataType() instanceof NestedColumnPrunable) { + DataTypeAccessTree dataTypeAccessTree = DataTypeAccessTree.ofRoot(slot, TAccessPathType.DATA); + trees.add(Pair.of((SlotReference) slot, dataTypeAccessTree)); + } + } + return trees; + } + private void assertColumn(String sql, String expectType, List expectAllAccessPaths, List expectPredicateAccessPaths) throws Exception { From 9eb6f7c8d7eb4238fdc73f589fe05b6c3b3a5010 Mon Sep 17 00:00:00 2001 From: 924060929 Date: Wed, 26 Nov 2025 11:39:03 +0800 Subject: [PATCH 09/12] [opt](nereids) optimize push down project (#58370) optimize push down project, this can reduce the scan bytes and shuffle bytes by prune nested column. #57204 related the sql: ```sql select coalecse(struct_element(t1.s, 'city'), 'beijing') from t1 join t2 on t1.id = t2.id ``` original plan: ``` Project(coalecse(struct_element(t1.s, 'city'), 'beijing')) | Join(t1.id=t2.id) / \ Project(t1.id, t1.s) Project(t2.id) | | Scan(t1) Scan(t2) ``` optimize plan: ``` Project(coalecse(slot#3, 'beijing')) | Join(t1.id=t2.id) / \ Project(t1.id, struct_element(t1.s, 'city')#3) Project(t2.id) | | Scan(t1) Scan(t2) ``` (cherry picked from commit c30c0ff78912a05c2451f6d52c149842b19163ed) --- .../rewrite/AccessPathPlanCollector.java | 25 ++++++++++ .../rules/rewrite/PushDownProject.java | 47 ++++++++++--------- .../rules/rewrite/PruneNestedColumnTest.java | 21 ++++++--- 3 files changed, 65 insertions(+), 28 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java index 514f7bb1e8cfc1..ed253167b385c0 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathPlanCollector.java @@ -19,7 +19,9 @@ import org.apache.doris.nereids.StatementContext; import org.apache.doris.nereids.rules.rewrite.AccessPathExpressionCollector.CollectAccessPathResult; +import org.apache.doris.nereids.trees.expressions.Alias; import org.apache.doris.nereids.trees.expressions.Expression; +import org.apache.doris.nereids.trees.expressions.NamedExpression; import org.apache.doris.nereids.trees.expressions.Slot; import org.apache.doris.nereids.trees.plans.Plan; import org.apache.doris.nereids.trees.plans.logical.LogicalCTEAnchor; @@ -28,6 +30,7 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalFileScan; import org.apache.doris.nereids.trees.plans.logical.LogicalFilter; import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan; +import org.apache.doris.nereids.trees.plans.logical.LogicalProject; import org.apache.doris.nereids.trees.plans.logical.LogicalTVFRelation; import org.apache.doris.nereids.trees.plans.logical.LogicalUnion; import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanVisitor; @@ -53,6 +56,28 @@ public Map> collect(Plan root, StatementCont return scanSlotToAccessPaths; } + @Override + public Void visitLogicalProject(LogicalProject project, StatementContext context) { + AccessPathExpressionCollector exprCollector + = new AccessPathExpressionCollector(context, allSlotToAccessPaths, false); + for (NamedExpression output : project.getProjects()) { + // e.g. select struct_element(s, 'city') from (select s from tbl)a; + // we will not treat the inner `s` access all path + if (output instanceof Slot && allSlotToAccessPaths.containsKey(output.getExprId().asInt())) { + continue; + } else if (output instanceof Alias && output.child(0) instanceof Slot + && allSlotToAccessPaths.containsKey(output.getExprId().asInt())) { + Slot innerSlot = (Slot) output.child(0); + Collection outerSlotAccessPaths = allSlotToAccessPaths.get( + output.getExprId().asInt()); + allSlotToAccessPaths.putAll(innerSlot.getExprId().asInt(), outerSlotAccessPaths); + } else { + exprCollector.collect(output); + } + } + return project.child().accept(this, context); + } + @Override public Void visitLogicalFilter(LogicalFilter filter, StatementContext context) { boolean bottomFilter = filter.child().arity() == 0; diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java index 8b1fbaac8aec9e..9fbc9413b29c9c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/PushDownProject.java @@ -48,7 +48,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.function.Function; /** push down project if the expression instance of PreferPushDownProject */ @@ -320,13 +319,13 @@ private List replaceSlot( private static class PushdownProjectHelper { private final Plan plan; private final StatementContext statementContext; - private final Map> exprToChildAndSlot; + private final Map oldExprToNewExpr; private final Multimap childToPushDownProjects; public PushdownProjectHelper(StatementContext statementContext, Plan plan) { this.statementContext = statementContext; this.plan = plan; - this.exprToChildAndSlot = new LinkedHashMap<>(); + this.oldExprToNewExpr = new LinkedHashMap<>(); this.childToPushDownProjects = ArrayListMultimap.create(); } @@ -357,32 +356,36 @@ public , E extends Expression> Pair pushDown } public Optional pushDownExpression(E expression) { - if (!(expression instanceof PreferPushDownProject - || (expression instanceof Alias && expression.child(0) instanceof PreferPushDownProject))) { + if (!expression.containsType(PreferPushDownProject.class)) { return Optional.empty(); } - Pair existPushdown = exprToChildAndSlot.get(expression); + Expression existPushdown = oldExprToNewExpr.get(expression); if (existPushdown != null) { - return Optional.of((E) existPushdown.first); + return Optional.of((E) existPushdown); } - Alias pushDownAlias = null; - if (expression instanceof Alias) { - pushDownAlias = (Alias) expression; - } else { - pushDownAlias = new Alias(statementContext.getNextExprId(), expression); - } - - Set inputSlots = expression.getInputSlots(); - for (Plan child : plan.children()) { - if (child.getOutputSet().containsAll(inputSlots)) { - Slot remaimSlot = pushDownAlias.toSlot(); - exprToChildAndSlot.put(expression, Pair.of(remaimSlot, child)); - childToPushDownProjects.put(child, pushDownAlias); - return Optional.of((E) remaimSlot); + Expression newExpression = expression.rewriteDownShortCircuit(e -> { + if (e instanceof PreferPushDownProject) { + List children = plan.children(); + for (int i = 0; i < children.size(); i++) { + Plan child = children.get(i); + if (child.getOutputSet().containsAll(e.getInputSlots())) { + Alias alias = new Alias(statementContext.getNextExprId(), e); + Slot slot = alias.toSlot(); + childToPushDownProjects.put(child, alias); + return slot; + } + } } + return e; + }); + + if (newExpression != expression) { + oldExprToNewExpr.put(expression, newExpression); + return Optional.of((E) newExpression); + } else { + return Optional.empty(); } - return Optional.empty(); } public List buildNewChildren() { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java index 22e9c5e949f220..3d22e1e6c28e24 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java @@ -30,6 +30,7 @@ import org.apache.doris.nereids.trees.expressions.NamedExpression; import org.apache.doris.nereids.trees.expressions.Slot; import org.apache.doris.nereids.trees.expressions.SlotReference; +import org.apache.doris.nereids.trees.expressions.functions.scalar.Coalesce; import org.apache.doris.nereids.trees.expressions.functions.scalar.StructElement; import org.apache.doris.nereids.trees.expressions.literal.NullLiteral; import org.apache.doris.nereids.trees.plans.Plan; @@ -72,6 +73,7 @@ public void createTable() throws Exception { createTable("create table tbl(\n" + " id int,\n" + + " value int,\n" + " s struct<\n" + " city: string,\n" + " data: array", ImmutableList.of(path("s", "city")), ImmutableList.of() ); - assertColumn("select * from (select struct_element(s, 'city') from tbl union all select null)a", + assertColumn("select * from (select coalesce(struct_element(s, 'city'), 'abc') from tbl union all select null)a", "struct", ImmutableList.of(path("s", "city")), ImmutableList.of() @@ -407,7 +410,7 @@ public void testCteAndUnion() throws Throwable { @Test public void testPushDownThroughJoin() { PlanChecker.from(connectContext) - .analyze("select struct_element(s, 'city') from (select * from tbl)a join (select 100 id, 'f1' name)b on a.id=b.id") + .analyze("select coalesce(struct_element(s, 'city'), 'abc') from (select * from tbl)a join (select 100 id, 'f1' name)b on a.id=b.id") .rewrite() .matches( logicalResultSink( @@ -426,7 +429,9 @@ public void testPushDownThroughJoin() { logicalOneRowRelation() ) ).when(p -> { - Assertions.assertTrue(p.getProjects().size() == 1 && p.getProjects().get(0) instanceof SlotReference); + Assertions.assertTrue(p.getProjects().size() == 1 && p.getProjects().get(0) instanceof Alias + && p.getProjects().get(0).child(0) instanceof Coalesce + && p.getProjects().get(0).child(0).child(0) instanceof Slot); return true; }) ) @@ -479,7 +484,9 @@ public void testPushDownThroughWindow() { }) ) ).when(p -> { - Assertions.assertTrue(p.getProjects().size() == 2 && p.getProjects().get(0) instanceof SlotReference); + Assertions.assertTrue(p.getProjects().size() == 2 + && (p.getProjects().get(0) instanceof SlotReference + || (p.getProjects().get(0) instanceof Alias && p.getProjects().get(0).child(0) instanceof SlotReference))); return true; }) ) @@ -509,7 +516,9 @@ public void testPushDownThroughPartitionTopN() { ) ) ).when(p -> { - Assertions.assertTrue(p.getProjects().size() == 2 && p.getProjects().get(0) instanceof SlotReference); + Assertions.assertTrue(p.getProjects().size() == 2 + && (p.getProjects().get(0) instanceof SlotReference + || p.getProjects().get(0) instanceof Alias && p.getProjects().get(0).child(0) instanceof SlotReference)); return true; }) ) From adcdfd459883f47f066c2cba61275a3275aa08e1 Mon Sep 17 00:00:00 2001 From: 924060929 Date: Mon, 1 Dec 2025 11:07:57 +0800 Subject: [PATCH 10/12] [fix](nereids) fix Input slot(s) not in child's output (#58471) fix `Input slot(s) not in child's output`, introduced by #57204 (cherry picked from commit b7888428925a1995d8d4610d66be3e0708ecd269) --- .../rules/rewrite/SlotTypeReplacer.java | 4 +- .../trees/plans/logical/LogicalOlapScan.java | 81 +++++---- .../rules/rewrite/PruneNestedColumnTest.java | 161 ++++++++++++++++++ 3 files changed, 209 insertions(+), 37 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java index 661f537eabf2a4..99ccdaf330914d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/SlotTypeReplacer.java @@ -456,7 +456,7 @@ public Plan visitLogicalOlapScan(LogicalOlapScan olapScan, Void context) { } Pair> replaced = replaceExpressions(olapScan.getOutput(), false, true); if (replaced.first) { - return olapScan.withPrunedTypeSlots(replaced.second); + return olapScan.withCachedOutput(replaced.second); } return olapScan; } @@ -718,7 +718,7 @@ private void tryRecordReplaceSlots(Plan plan, Object checkObj, Set shou boolean shouldPrune = false; for (Slot slot : output) { int slotId = slot.getExprId().asInt(); - if (replacedDataTypes.containsKey(slotId)) { + if (slot.getDataType() instanceof NestedColumnPrunable && replacedDataTypes.containsKey(slotId)) { shouldReplaceSlots.add(slotId); shouldPrune = true; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java index f6ec7ecbcdd235..b846426b30bd81 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java @@ -81,7 +81,7 @@ public class LogicalOlapScan extends LogicalCatalogRelation implements OlapScan, /////////////////////////////////////////////////////////////////////////// /** - /** + * /** * The select materialized index id to read data from. */ private final long selectedIndexId; @@ -104,6 +104,11 @@ public class LogicalOlapScan extends LogicalCatalogRelation implements OlapScan, */ private final Map, Slot> cacheSlotWithSlotName; + /** + * this is the cache output to overwrite the output, the priority is higher than cacheSlotWithSlotName + */ + private final Optional> cachedOutput; + /////////////////////////////////////////////////////////////////////////// // Members for tablet ids. /////////////////////////////////////////////////////////////////////////// @@ -161,7 +166,7 @@ public LogicalOlapScan(RelationId id, OlapTable table, List qualifier) { table.getPartitionIds(), false, ImmutableList.of(), -1, false, PreAggStatus.unset(), ImmutableList.of(), ImmutableList.of(), - Maps.newHashMap(), Optional.empty(), false, ImmutableMap.of(), + Maps.newHashMap(), Optional.empty(), Optional.empty(), false, ImmutableMap.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), Optional.empty(), ImmutableList.of(), Optional.empty()); } @@ -170,7 +175,7 @@ public LogicalOlapScan(RelationId id, OlapTable table, List qualifier, L List hints, Optional tableSample, Collection operativeSlots) { this(id, table, qualifier, Optional.empty(), Optional.empty(), table.getPartitionIds(), false, tabletIds, - -1, false, PreAggStatus.unset(), ImmutableList.of(), hints, Maps.newHashMap(), + -1, false, PreAggStatus.unset(), ImmutableList.of(), hints, Maps.newHashMap(), Optional.empty(), tableSample, false, ImmutableMap.of(), ImmutableList.of(), operativeSlots, ImmutableList.of(), ImmutableList.of(), Optional.empty(), ImmutableList.of(), Optional.empty()); } @@ -183,7 +188,7 @@ public LogicalOlapScan(RelationId id, OlapTable table, List qualifier, L this(id, table, qualifier, Optional.empty(), Optional.empty(), // must use specifiedPartitions here for prune partition by sql like 'select * from t partition p1' specifiedPartitions, false, tabletIds, - -1, false, PreAggStatus.unset(), specifiedPartitions, hints, Maps.newHashMap(), + -1, false, PreAggStatus.unset(), specifiedPartitions, hints, Maps.newHashMap(), Optional.empty(), tableSample, false, ImmutableMap.of(), ImmutableList.of(), operativeSlots, ImmutableList.of(), ImmutableList.of(), Optional.empty(), ImmutableList.of(), Optional.empty()); @@ -199,7 +204,7 @@ public LogicalOlapScan(RelationId id, OlapTable table, List qualifier, L this(id, table, qualifier, Optional.empty(), Optional.empty(), selectedPartitionIds, false, tabletIds, selectedIndexId, true, preAggStatus, - specifiedPartitions, hints, Maps.newHashMap(), tableSample, true, ImmutableMap.of(), + specifiedPartitions, hints, Maps.newHashMap(), Optional.empty(), tableSample, true, ImmutableMap.of(), ImmutableList.of(), operativeSlots, ImmutableList.of(), ImmutableList.of(), Optional.empty(), ImmutableList.of(), Optional.empty()); } @@ -213,7 +218,7 @@ public LogicalOlapScan(RelationId id, Table table, List qualifier, List selectedTabletIds, long selectedIndexId, boolean indexSelected, PreAggStatus preAggStatus, List specifiedPartitions, List hints, Map, Slot> cacheSlotWithSlotName, - Optional tableSample, boolean directMvScan, + Optional> cachedOutput, Optional tableSample, boolean directMvScan, Map>> colToSubPathsMap, List specifiedTabletIds, Collection operativeSlots, List virtualColumns, List scoreOrderKeys, Optional scoreLimit, @@ -245,6 +250,7 @@ public LogicalOlapScan(RelationId id, Table table, List qualifier, this.hints = Objects.requireNonNull(hints, "hints can not be null"); this.cacheSlotWithSlotName = Objects.requireNonNull(cacheSlotWithSlotName, "mvNameToSlot can not be null"); + this.cachedOutput = Objects.requireNonNull(cachedOutput, "cachedOutput can not be null"); this.tableSample = tableSample; this.directMvScan = directMvScan; this.colToSubPathsMap = colToSubPathsMap; @@ -337,8 +343,9 @@ public LogicalOlapScan withGroupExpression(Optional groupExpres groupExpression, Optional.of(getLogicalProperties()), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } @Override @@ -347,8 +354,9 @@ public Plan withGroupExprLogicalPropChildren(Optional groupExpr return new LogicalOlapScan(relationId, (Table) table, qualifier, groupExpression, logicalProperties, selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } /** @@ -359,8 +367,9 @@ public LogicalOlapScan withSelectedPartitionIds(List selectedPartitionIds) Optional.empty(), Optional.of(getLogicalProperties()), selectedPartitionIds, true, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } /** @@ -373,7 +382,7 @@ public LogicalOlapScan withMaterializedIndexSelected(long indexId) { Optional.empty(), Optional.of(getLogicalProperties()), selectedPartitionIds, partitionPruned, selectedTabletIds, indexId, true, PreAggStatus.unset(), manuallySpecifiedPartitions, hints, cacheSlotWithSlotName, - tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, + cachedOutput, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } @@ -385,8 +394,9 @@ public LogicalOlapScan withSelectedTabletIds(List selectedTabletIds) { Optional.empty(), Optional.of(getLogicalProperties()), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } /** @@ -397,8 +407,9 @@ public LogicalOlapScan withPreAggStatus(PreAggStatus preAggStatus) { Optional.empty(), Optional.of(getLogicalProperties()), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } /** @@ -409,8 +420,9 @@ public LogicalOlapScan withColToSubPathsMap(Map>> colTo Optional.empty(), Optional.empty(), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } /** @@ -421,8 +433,9 @@ public LogicalOlapScan withManuallySpecifiedTabletIds(List manuallySpecifi Optional.empty(), Optional.of(getLogicalProperties()), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, + colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, + scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } @Override @@ -432,8 +445,9 @@ public LogicalOlapScan withRelationId(RelationId relationId) { Optional.empty(), Optional.empty(), selectedPartitionIds, false, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, Maps.newHashMap(), tableSample, directMvScan, colToSubPathsMap, selectedTabletIds, - operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); + hints, Maps.newHashMap(), Optional.empty(), tableSample, directMvScan, + colToSubPathsMap, selectedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, + scoreLimit, annOrderKeys, annLimit); } /** @@ -451,7 +465,7 @@ public LogicalOlapScan withVirtualColumns(List virtualColumns) groupExpression, Optional.of(logicalProperties), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } @@ -475,7 +489,7 @@ public LogicalOlapScan withVirtualColumnsAndTopN( groupExpression, Optional.of(logicalProperties), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } @@ -523,6 +537,9 @@ public Optional getSelectedMaterializedIndexName() { @Override public List computeOutput() { + if (cachedOutput.isPresent()) { + return cachedOutput.get(); + } if (selectedIndexId != ((OlapTable) table).getBaseIndexId()) { return getOutputByIndex(selectedIndexId); } @@ -806,7 +823,7 @@ public CatalogRelation withOperativeSlots(Collection operativeSlots) { groupExpression, Optional.of(getLogicalProperties()), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, cacheSlotWithSlotName, tableSample, directMvScan, colToSubPathsMap, + hints, cacheSlotWithSlotName, cachedOutput, tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } @@ -841,19 +858,13 @@ private Map constructReplaceMap(MTMV mtmv) { return replaceMap; } - /** withPrunedTypeSlots */ - public LogicalOlapScan withPrunedTypeSlots(List outputSlots) { - Map, Slot> replaceSlotMap = new HashMap<>(); - for (Slot outputSlot : outputSlots) { - Pair key = Pair.of(selectedIndexId, outputSlot.getName()); - replaceSlotMap.put(key, outputSlot); - } - + /** withCachedOutput */ + public LogicalOlapScan withCachedOutput(List outputSlots) { return new LogicalOlapScan(relationId, (Table) table, qualifier, groupExpression, Optional.empty(), selectedPartitionIds, partitionPruned, selectedTabletIds, selectedIndexId, indexSelected, preAggStatus, manuallySpecifiedPartitions, - hints, replaceSlotMap, tableSample, directMvScan, colToSubPathsMap, + hints, cacheSlotWithSlotName, Optional.of(outputSlots), tableSample, directMvScan, colToSubPathsMap, manuallySpecifiedTabletIds, operativeSlots, virtualColumns, scoreOrderKeys, scoreLimit, annOrderKeys, annLimit); } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java index 3d22e1e6c28e24..fccc0e4c646599 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java @@ -586,6 +586,167 @@ public void testDataTypeAccessTree() { ); } + @Test + public void testWithVariant() throws Exception { + connectContext.getSessionVariable().enableDecimal256 = true; + + createTable("CREATE TABLE test.`table_20_undef_partitions2_keys3_properties4_distributed_by56` (\n" + + " `col_tinyint_undef_signed_index_inverted` tinyint NULL,\n" + + " `col_smallint_undef_signed_not_null_index_inverted` smallint NOT NULL,\n" + + " `pk` int NULL,\n" + + " `col_int_undef_signed` int NULL,\n" + + " `col_bigint_undef_signed` bigint NULL,\n" + + " `col_decimal_10_0__undef_signed` decimal(10,0) NULL,\n" + + " `col_largeint_undef_signed` largeint NULL,\n" + + " `col_boolean_undef_signed` boolean NULL,\n" + + " `col_boolean_undef_signed_not_null` boolean NOT NULL,\n" + + " `col_tinyint_undef_signed` tinyint NULL,\n" + + " `col_tinyint_undef_signed_not_null` tinyint NOT NULL,\n" + + " `col_tinyint_undef_signed_not_null_index_inverted` tinyint NOT NULL,\n" + + " `col_smallint_undef_signed` smallint NULL,\n" + + " `col_smallint_undef_signed_index_inverted` smallint NULL,\n" + + " `col_smallint_undef_signed_not_null` smallint NOT NULL,\n" + + " `col_int_undef_signed_index_inverted` int NULL,\n" + + " `col_int_undef_signed_not_null` int NOT NULL,\n" + + " `col_int_undef_signed_not_null_index_inverted` int NOT NULL,\n" + + " `col_bigint_undef_signed_index_inverted` bigint NULL,\n" + + " `col_bigint_undef_signed_not_null` bigint NOT NULL,\n" + + " `col_bigint_undef_signed_not_null_index_inverted` bigint NOT NULL,\n" + + " `col_largeint_undef_signed_not_null` largeint NOT NULL,\n" + + " `col_decimal_10_0__undef_signed_index_inverted` decimal(10,0) NULL,\n" + + " `col_decimal_10_0__undef_signed_not_null` decimal(10,0) NOT NULL,\n" + + " `col_decimal_10_0__undef_signed_not_null_index_inverted` decimal(10,0) NOT NULL,\n" + + " `col_decimal_16_10__undef_signed` decimal(16,10) NULL,\n" + + " `col_decimal_16_10__undef_signed_index_inverted` decimal(16,10) NULL,\n" + + " `col_decimal_16_10__undef_signed_not_null` decimal(16,10) NOT NULL,\n" + + " `col_decimal_16_10__undef_signed_not_null_index_inverted` decimal(16,10) NOT NULL,\n" + + " `col_decimal_37__12__undef_signed` decimal(37,12) NULL,\n" + + " `col_decimal_37__12__undef_signed_index_inverted` decimal(37,12) NULL,\n" + + " `col_decimal_37__12__undef_signed_not_null` decimal(37,12) NOT NULL,\n" + + " `col_decimal_37__12__undef_signed_not_null_index_inverted` decimal(37,12) NOT NULL,\n" + + " `col_decimal_17_0__undef_signed` decimal(17,0) NULL,\n" + + " `col_decimal_17_0__undef_signed_index_inverted` decimal(17,0) NULL,\n" + + " `col_decimal_17_0__undef_signed_not_null` decimal(17,0) NOT NULL,\n" + + " `col_decimal_17_0__undef_signed_not_null_index_inverted` decimal(17,0) NOT NULL,\n" + + " `col_decimal_8_4__undef_signed` decimal(8,4) NULL,\n" + + " `col_decimal_8_4__undef_signed_index_inverted` decimal(8,4) NULL,\n" + + " `col_decimal_8_4__undef_signed_not_null` decimal(8,4) NOT NULL,\n" + + " `col_decimal_8_4__undef_signed_not_null_index_inverted` decimal(8,4) NOT NULL,\n" + + " `col_decimal_9_0__undef_signed` decimal(9,0) NULL,\n" + + " `col_decimal_9_0__undef_signed_index_inverted` decimal(9,0) NULL,\n" + + " `col_decimal_9_0__undef_signed_not_null` decimal(9,0) NOT NULL,\n" + + " `col_decimal_9_0__undef_signed_not_null_index_inverted` decimal(9,0) NOT NULL,\n" + + " `col_decimal_76__56__undef_signed` decimal(76,56) NULL,\n" + + " `col_decimal_76__56__undef_signed_index_inverted` decimal(76,56) NULL,\n" + + " `col_decimal_76__56__undef_signed_not_null` decimal(76,56) NOT NULL,\n" + + " `col_decimal_76__56__undef_signed_not_null_index_inverted` decimal(76,56) NOT NULL,\n" + + " `col_datetime_undef_signed` datetime NULL,\n" + + " `col_datetime_undef_signed_index_inverted` datetime NULL,\n" + + " `col_datetime_undef_signed_not_null` datetime NOT NULL,\n" + + " `col_datetime_undef_signed_not_null_index_inverted` datetime NOT NULL,\n" + + " `col_map_boolean__boolean__undef_signed` map NULL,\n" + + " `col_map_boolean__boolean__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_tinyint__tinyint__undef_signed` map NULL,\n" + + " `col_map_tinyint__tinyint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_smallint__smallint__undef_signed` map NULL,\n" + + " `col_map_smallint__smallint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_int__int__undef_signed` map NULL,\n" + + " `col_map_int__int__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_bigint__bigint__undef_signed` map NULL,\n" + + " `col_map_bigint__bigint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_largeint__largeint__undef_signed` map NULL,\n" + + " `col_map_largeint__largeint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_decimal_10_0___decimal_10_0___undef_signed` map NULL,\n" + + " `col_map_decimal_10_0___decimal_10_0___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_decimal_16_10___decimal_16_10___undef_signed` map NULL,\n" + + " `col_map_decimal_16_10___decimal_16_10___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_decimal_37__12___decimal_37__12___undef_signed` map NULL,\n" + + " `col_map_decimal_37__12___decimal_37__12___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_decimal_8_4___decimal_8_4___undef_signed` map NULL,\n" + + " `col_map_decimal_8_4___decimal_8_4___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_decimal_76__56___decimal_76__56___undef_signed` map NULL,\n" + + " `col_map_decimal_76__56___decimal_76__56___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_char_255___boolean__undef_signed` map NULL,\n" + + " `col_map_char_255___boolean__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_char_255___tinyint__undef_signed` map NULL,\n" + + " `col_map_char_255___tinyint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_varchar_255___int__undef_signed` map NULL,\n" + + " `col_map_varchar_255___int__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_varchar_65533___largeint__undef_signed` map NULL,\n" + + " `col_map_varchar_65533___largeint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_string__decimal_10_0___undef_signed` map NULL,\n" + + " `col_map_string__decimal_10_0___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_varchar_65533___decimal_76__50___undef_signed` map NULL,\n" + + " `col_map_varchar_65533___decimal_76__50___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_date__boolean__undef_signed` map NULL,\n" + + " `col_map_date__boolean__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_date__tinyint__undef_signed` map NULL,\n" + + " `col_map_date__tinyint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_date__smallint__undef_signed` map NULL,\n" + + " `col_map_date__smallint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_date__int__undef_signed` map NULL,\n" + + " `col_map_date__int__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_datetime_6___bigint__undef_signed` map NULL,\n" + + " `col_map_datetime_6___bigint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_datetime_3___largeint__undef_signed` map NULL,\n" + + " `col_map_datetime_3___largeint__undef_signed_not_null` map NOT NULL,\n" + + " `col_map_datetime__decimal_76__50___undef_signed` map NULL,\n" + + " `col_map_datetime__decimal_76__50___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_date__decimal_16_10___undef_signed` map NULL,\n" + + " `col_map_date__decimal_16_10___undef_signed_not_null` map NOT NULL,\n" + + " `col_map_date__decimal_37__12___undef_signed` map NULL,\n" + + " `col_map_date__decimal_37__12___undef_signed_not_null` map NOT NULL,\n" + + " `col_struct` struct NULL,\n" + + " `col_struct2` struct NOT NULL,\n" + + " `col_variant_undef_signed` variant NULL,\n" + + " `col_variant_undef_signed_not_null` variant NOT NULL,\n" + + " INDEX col_tinyint_undef_signed_index_inverted_idx (`col_tinyint_undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_tinyint_undef_signed_not_null_index_inverted_idx (`col_tinyint_undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_smallint_undef_signed_index_inverted_idx (`col_smallint_undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_smallint_undef_signed_not_null_index_inverted_idx (`col_smallint_undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_int_undef_signed_index_inverted_idx (`col_int_undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_int_undef_signed_not_null_index_inverted_idx (`col_int_undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_bigint_undef_signed_index_inverted_idx (`col_bigint_undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_bigint_undef_signed_not_null_index_inverted_idx (`col_bigint_undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_10_0__undef_signed_index_inverted_idx (`col_decimal_10_0__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_10_0__undef_signed_not_null_index_inverted_idx (`col_decimal_10_0__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_16_10__undef_signed_index_inverted_idx (`col_decimal_16_10__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_16_10__undef_signed_not_null_index_inverted_idx (`col_decimal_16_10__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_37__12__undef_signed_index_inverted_idx (`col_decimal_37__12__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_37__12__undef_signed_not_null_index_inverted_idx (`col_decimal_37__12__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_17_0__undef_signed_index_inverted_idx (`col_decimal_17_0__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_17_0__undef_signed_not_null_index_inverted_idx (`col_decimal_17_0__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_8_4__undef_signed_index_inverted_idx (`col_decimal_8_4__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_8_4__undef_signed_not_null_index_inverted_idx (`col_decimal_8_4__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_9_0__undef_signed_index_inverted_idx (`col_decimal_9_0__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_9_0__undef_signed_not_null_index_inverted_idx (`col_decimal_9_0__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_76__56__undef_signed_index_inverted_idx (`col_decimal_76__56__undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_decimal_76__56__undef_signed_not_null_index_inverted_idx (`col_decimal_76__56__undef_signed_not_null_index_inverted`) USING INVERTED,\n" + + " INDEX col_datetime_undef_signed_index_inverted_idx (`col_datetime_undef_signed_index_inverted`) USING INVERTED,\n" + + " INDEX col_datetime_undef_signed_not_null_index_inverted_idx (`col_datetime_undef_signed_not_null_index_inverted`) USING INVERTED\n" + + ") ENGINE=OLAP\n" + + "DUPLICATE KEY(`col_tinyint_undef_signed_index_inverted`, `col_smallint_undef_signed_not_null_index_inverted`, `pk`, `col_int_undef_signed`, `col_bigint_undef_signed`, `col_decimal_10_0__undef_signed`, `col_largeint_undef_signed`)\n" + + "PARTITION BY RANGE(`col_tinyint_undef_signed_index_inverted`, `col_smallint_undef_signed_not_null_index_inverted`)\n" + + "(PARTITION p0 VALUES [(\"-128\", \"-32768\"), (\"0\", \"0\")),\n" + + "PARTITION p1 VALUES [(\"0\", \"0\"), (\"10\", \"256\")),\n" + + "PARTITION p2 VALUES [(\"10\", \"256\"), (\"50\", \"10240\")),\n" + + "PARTITION p3 VALUES [(\"50\", \"10240\"), (\"100\", \"32767\")),\n" + + "PARTITION p4 VALUES [(\"100\", \"32767\"), (MAXVALUE, MAXVALUE)))\n" + + "DISTRIBUTED BY HASH(`pk`) BUCKETS 10\n" + + "PROPERTIES (\n" + + "\"replication_allocation\" = \"tag.location.default: 1\"" + + ")"); + + PlanChecker.from(connectContext) + .analyze("SELECT col_variant_undef_signed_not_null,\n" + + " col_struct,\n" + + " col_variant_undef_signed_not_null[\"c_map_largeint\"]\n" + + " FROM table_20_undef_partitions2_keys3_properties4_distributed_by56") + .rewrite() + .getCascadesContext() + .getRewritePlan(); + } + private void setAccessPathAndAssertType(SlotReference slot, List path, String expectedType) { setAccessPathsAndAssertType(slot, ImmutableList.of(path), expectedType); } From 4a29af874b904d086c65e736058382326eb638d4 Mon Sep 17 00:00:00 2001 From: 924060929 Date: Tue, 2 Dec 2025 14:12:56 +0800 Subject: [PATCH 11/12] [fix](nereids) fix prune map type cause backend core (#58573) fix prune map type cause backend core, when the map type is changed, we should not prune the nested column type, introduced by #57204 (cherry picked from commit 1d7f6c422fe20dfa8c64ae9a36ee093058756f04) --- .../AccessPathExpressionCollector.java | 48 ++++++++++++++++++- .../rules/rewrite/PruneNestedColumnTest.java | 9 +++- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java index 9c665f379e9cb4..a46bc67a283545 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/AccessPathExpressionCollector.java @@ -50,7 +50,9 @@ import org.apache.doris.nereids.trees.expressions.functions.scalar.StructElement; import org.apache.doris.nereids.trees.expressions.literal.Literal; import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionVisitor; +import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.DataType; +import org.apache.doris.nereids.types.MapType; import org.apache.doris.nereids.types.NestedColumnPrunable; import org.apache.doris.nereids.types.StructField; import org.apache.doris.nereids.types.StructType; @@ -65,6 +67,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Objects; import java.util.Stack; @@ -135,7 +138,8 @@ public Void visitAlias(Alias alias, CollectorContext context) { public Void visitCast(Cast cast, CollectorContext context) { if (!context.accessPathBuilder.isEmpty() && cast.getDataType() instanceof NestedColumnPrunable - && cast.child().getDataType() instanceof NestedColumnPrunable) { + && cast.child().getDataType() instanceof NestedColumnPrunable + && !mapTypeIsChanged(cast.child().getDataType(), cast.getDataType(), false)) { DataTypeAccessTree castTree = DataTypeAccessTree.of(cast.getDataType(), TAccessPathType.DATA); DataTypeAccessTree originTree = DataTypeAccessTree.of(cast.child().getDataType(), TAccessPathType.DATA); @@ -509,4 +513,46 @@ public int hashCode() { return path.hashCode(); } } + + // if the map type is changed, we can not prune the type, because the map type need distinct the keys, + // e.g. select map_values(cast(map(3.0, 1, 3.1, 2) as map)); + // the result is [2] because the keys: 3.0 and 3.1 will cast to 3 and the second entry remained. + // backend will throw exception because it can not only access the values without the cast keys, + // so we should check whether the map type is changed, if not changed, we can prune the type. + private static boolean mapTypeIsChanged(DataType originType, DataType castType, boolean inMap) { + if (originType.isMapType()) { + MapType originMapType = (MapType) originType; + MapType castMapType = (MapType) castType; + if (mapTypeIsChanged(originMapType.getKeyType(), castMapType.getKeyType(), true) + || mapTypeIsChanged(originMapType.getValueType(), castMapType.getValueType(), true)) { + return true; + } + return false; + } else if (originType.isStructType()) { + StructType originStructType = (StructType) originType; + StructType castStructType = (StructType) castType; + List> originFields + = new ArrayList<>(originStructType.getNameToFields().entrySet()); + List> castFields + = new ArrayList<>(castStructType.getNameToFields().entrySet()); + + for (int i = 0; i < originFields.size(); i++) { + DataType originFieldType = originFields.get(i).getValue().getDataType(); + DataType castFieldType = castFields.get(i).getValue().getDataType(); + if (mapTypeIsChanged(originFieldType, castFieldType, inMap)) { + return true; + } + } + return false; + } else if (originType.isArrayType()) { + ArrayType originArrayType = (ArrayType) originType; + ArrayType castArrayType = (ArrayType) castType; + return mapTypeIsChanged(originArrayType.getItemType(), castArrayType.getItemType(), inMap); + } else if (inMap) { + return !originType.equals(castType); + } else { + // other type changed which not in map will not affect the map + return false; + } + } } diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java index fccc0e4c646599..b0692f65daf642 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java @@ -140,13 +140,20 @@ public void testStruct() throws Throwable { @Test public void testPruneCast() throws Exception { + // the map type is changed, so we can not prune type + assertColumn("select struct_element(cast(s as struct>>>), 'k') from tbl", + "struct>>>", + ImmutableList.of(path("s")), + ImmutableList.of() + ); + assertColumn("select struct_element(cast(s as struct>>>), 'k') from tbl", "struct", ImmutableList.of(path("s", "city")), ImmutableList.of() ); - assertColumn("select struct_element(map_values(struct_element(cast(s as struct>>>), 'l')[0])[0], 'x') from tbl", + assertColumn("select struct_element(map_values(struct_element(cast(s as struct>>>), 'l')[0])[0], 'x') from tbl", "struct>>>", ImmutableList.of(path("s", "data", "*", "VALUES", "a")), ImmutableList.of() From eac26e910c487ad34dfde675601224ad56c8a87c Mon Sep 17 00:00:00 2001 From: 924060929 Date: Wed, 3 Dec 2025 18:01:02 +0800 Subject: [PATCH 12/12] [fix](nereids) fix can not prune dereference expression (#58657) fix can not prune dereference expression, introduced by #57532 (cherry picked from commit 2b23693072d0e2df8b1810c453e9cebf4a0c7707) --- .../doris/nereids/rules/analysis/ExpressionAnalyzer.java | 4 +++- .../nereids/rules/rewrite/PruneNestedColumnTest.java | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java index 6fe66e693dc1a3..fdb709516ea28f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ExpressionAnalyzer.java @@ -296,6 +296,8 @@ public Expression visitUnboundSlot(UnboundSlot unboundSlot, ExpressionRewriteCon } if (firstBound.getDataType() instanceof NestedColumnPrunable) { context.cascadesContext.getStatementContext().setHasNestedColumns(true); + } else if (firstBound.containsType(ElementAt.class, StructElement.class)) { + context.cascadesContext.getStatementContext().setHasNestedColumns(true); } return firstBound; default: @@ -1102,7 +1104,7 @@ private Optional bindNestedFields(UnboundSlot unboundSlot, Slot slot } throw new AnalysisException("No such field '" + fieldName + "' in '" + lastFieldName + "'"); } - return Optional.of(new Alias(expression)); + return Optional.of(new Alias(expression, unboundSlot.getName(), slot.getQualifier())); } public static boolean sameTableName(String boundSlot, String unboundSlot) { diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java index b0692f65daf642..6f987a6648c8ee 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/PruneNestedColumnTest.java @@ -414,6 +414,15 @@ public void testCteAndUnion() throws Throwable { ); } + @Test + public void testDereference() throws Exception { + assertColumn("select s.city from tbl", + "struct", + ImmutableList.of(path("s", "city")), + ImmutableList.of() + ); + } + @Test public void testPushDownThroughJoin() { PlanChecker.from(connectContext)