This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-4.0 by this push:
     new ce0da8a8b66 branch-4.0: [fix](string) fix string len check of nested 
types #56963 (#57016)
ce0da8a8b66 is described below

commit ce0da8a8b661ebd35ed104ff4a8ab3e709a72856
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Thu Oct 16 14:49:30 2025 +0800

    branch-4.0: [fix](string) fix string len check of nested types #56963 
(#57016)
    
    Cherry-picked from #56963
    
    Co-authored-by: TengJianPing <[email protected]>
---
 be/src/vec/sink/vtablet_block_convertor.cpp        |  156 ++-
 .../one_level_nestedtypes_with_s3data.out          | 1020 ++++++++++----------
 .../string_len/test_string_len_complex.out         |   43 +
 .../one_level_nestedtypes_with_s3data.groovy       |    6 +-
 .../string_len/test_string_len_complex.groovy      |  229 +++++
 5 files changed, 900 insertions(+), 554 deletions(-)

diff --git a/be/src/vec/sink/vtablet_block_convertor.cpp 
b/be/src/vec/sink/vtablet_block_convertor.cpp
index 521febba99a..e720b5f694e 100644
--- a/be/src/vec/sink/vtablet_block_convertor.cpp
+++ b/be/src/vec/sink/vtablet_block_convertor.cpp
@@ -209,18 +209,27 @@ Status OlapTableBlockConvertor::_internal_validate_column(
         return ret;
     };
 
-    auto column_ptr = 
vectorized::check_and_get_column<vectorized::ColumnNullable>(*column);
-    auto& real_column_ptr = column_ptr == nullptr ? column : 
(column_ptr->get_nested_column_ptr());
-    auto null_map = column_ptr == nullptr ? nullptr : 
column_ptr->get_null_map_data().data();
-    auto need_to_validate = [&null_map, this](size_t j, size_t row) {
-        return !_filter_map[row] && (null_map == nullptr || null_map[j] == 0);
+    const auto* column_ptr = 
vectorized::check_and_get_column<vectorized::ColumnNullable>(*column);
+    const auto& real_column_ptr =
+            column_ptr == nullptr ? column : 
(column_ptr->get_nested_column_ptr());
+    const auto* null_map = column_ptr == nullptr ? nullptr : 
column_ptr->get_null_map_data().data();
+    auto need_to_validate = [](size_t j, size_t row, const std::vector<char>& 
filter_map,
+                               const unsigned char* null_map) {
+        return !filter_map[row] && (null_map == nullptr || null_map[j] == 0);
     };
 
-    auto string_column_checker = [&](const ColumnString* column_string) {
+    // may change orig_column if substring function is performed
+    auto string_column_checker = [&state, &error_msg, need_to_validate,
+                                  set_invalid_and_append_error_msg](
+                                         vectorized::ColumnPtr& orig_column,
+                                         const DataTypePtr& orig_type,
+                                         vectorized::IColumn::Permutation* 
rows,
+                                         const std::vector<char>& filter_map) {
         int limit = config::string_type_length_soft_limit_bytes;
         int len = -1;
         // when type.len is negative, std::min will return overflow value, so 
we need to check it
-        auto* type_str = 
check_and_get_data_type<DataTypeString>(remove_nullable(type).get());
+        const auto* type_str =
+                
check_and_get_data_type<DataTypeString>(remove_nullable(orig_type).get());
         if (type_str) {
             if (type_str->len() >= 0) {
                 len = type_str->len();
@@ -228,8 +237,18 @@ Status OlapTableBlockConvertor::_internal_validate_column(
             }
         }
 
-        auto* __restrict offsets = column_string->get_offsets().data();
+        const auto* tmp_column_ptr =
+                
vectorized::check_and_get_column<vectorized::ColumnNullable>(*orig_column);
+        const auto& tmp_real_column_ptr =
+                tmp_column_ptr == nullptr ? orig_column : 
(tmp_column_ptr->get_nested_column_ptr());
+        const auto* column_string =
+                assert_cast<const 
vectorized::ColumnString*>(tmp_real_column_ptr.get());
+        const auto* null_map =
+                tmp_column_ptr == nullptr ? nullptr : 
tmp_column_ptr->get_null_map_data().data();
+
+        const auto* __restrict offsets = column_string->get_offsets().data();
         int invalid_count = 0;
+        size_t row_count = orig_column->size();
         for (int64_t j = 0; j < row_count; ++j) {
             invalid_count += (offsets[j] - offsets[j - 1]) > limit;
         }
@@ -242,40 +261,38 @@ Status OlapTableBlockConvertor::_internal_validate_column(
             // This is a workaround for now, need to improve it after better 
support of multi-byte chars.
             if (type_str && !state->enable_insert_strict()) {
                 ColumnsWithTypeAndName argument_template;
+                auto input_type = remove_nullable(orig_type);
                 auto pos_type = DataTypeFactory::instance().create_data_type(
                         FieldType::OLAP_FIELD_TYPE_INT, 0, 0);
                 auto len_type = DataTypeFactory::instance().create_data_type(
                         FieldType::OLAP_FIELD_TYPE_INT, 0, 0);
-                argument_template.emplace_back(nullptr, type, "string column");
+                argument_template.emplace_back(nullptr, input_type, "string 
column");
                 argument_template.emplace_back(nullptr, pos_type, "pos 
column");
                 argument_template.emplace_back(nullptr, len_type, "len 
column");
                 auto func = SimpleFunctionFactory::instance().get_function(
-                        "substring", argument_template, type, {}, 
state->be_exec_version());
+                        "substring", argument_template, input_type, {}, 
state->be_exec_version());
                 if (!func) {
                     return Status::InternalError("get function substring 
failed");
                 }
                 auto pos_column = pos_type->create_column_const(row_count, 
to_field<TYPE_INT>(1));
                 auto len_column =
                         len_type->create_column_const(row_count, 
to_field<TYPE_INT>(limit));
-                Block tmp_block({block->get_by_position(slot_index),
+                Block tmp_block({{remove_nullable(orig_column), input_type, 
"string column"},
                                  {pos_column, pos_type, "pos"},
                                  {len_column, len_type, "len"},
-                                 {nullptr, type, "result"}});
+                                 {nullptr, input_type, "result"}});
                 RETURN_IF_ERROR(func->execute(nullptr, tmp_block, {0, 1, 2}, 
3, row_count));
-                block->get_by_position(slot_index).column =
-                        std::move(tmp_block.get_by_position(3).column);
-                const auto* tmp_column_ptr =
-                        
vectorized::check_and_get_column<vectorized::ColumnNullable>(
-                                *block->get_by_position(slot_index).column);
-                const auto& tmp_real_column_ptr =
-                        tmp_column_ptr == nullptr ? 
block->get_by_position(slot_index).column
-                                                  : 
(tmp_column_ptr->get_nested_column_ptr());
-                column_string =
-                        assert_cast<const 
vectorized::ColumnString*>(tmp_real_column_ptr.get());
+                column_string = assert_cast<const vectorized::ColumnString*>(
+                        tmp_block.get_by_position(3).column.get());
+                orig_column =
+                        orig_column->is_nullable()
+                                ? 
ColumnNullable::create(tmp_block.get_by_position(3).column,
+                                                         
tmp_column_ptr->get_null_map_column_ptr())
+                                : 
std::move(tmp_block.get_by_position(3).column);
             }
             for (size_t j = 0; j < row_count; ++j) {
                 auto row = rows ? (*rows)[j] : j;
-                if (need_to_validate(j, row)) {
+                if (need_to_validate(j, row, filter_map, null_map)) {
                     auto str_val = column_string->get_data_at(j);
                     bool invalid = str_val.size > limit;
                     if (invalid) {
@@ -308,9 +325,8 @@ Status OlapTableBlockConvertor::_internal_validate_column(
     case TYPE_CHAR:
     case TYPE_VARCHAR:
     case TYPE_STRING: {
-        const auto column_string =
-                assert_cast<const 
vectorized::ColumnString*>(real_column_ptr.get());
-        RETURN_IF_ERROR(string_column_checker(column_string));
+        RETURN_IF_ERROR(string_column_checker(column, type, rows, 
_filter_map));
+        block->get_by_position(slot_index).column = std::move(column);
         break;
     }
     case TYPE_JSONB: {
@@ -339,7 +355,7 @@ Status OlapTableBlockConvertor::_internal_validate_column(
         const auto& min_decimalv2 = _get_decimalv2_min_or_max<true>(type);
         for (size_t j = 0; j < row_count; ++j) {
             auto row = rows ? (*rows)[j] : j;
-            if (need_to_validate(j, row)) {
+            if (need_to_validate(j, row, _filter_map, null_map)) {
                 auto dec_val = binary_cast<vectorized::Int128, DecimalV2Value>(
                         column_decimal->get_data()[j]);
                 bool invalid = false;
@@ -388,7 +404,7 @@ Status OlapTableBlockConvertor::_internal_validate_column(
     if (invalid_count) {                                                       
                   \
         for (size_t j = 0; j < row_count; ++j) {                               
                   \
             auto row = rows ? (*rows)[j] : j;                                  
                   \
-            if (need_to_validate(j, row)) {                                    
                   \
+            if (need_to_validate(j, row, _filter_map, null_map)) {             
                   \
                 auto dec_val = column_decimal->get_data()[j];                  
                   \
                 bool invalid = false;                                          
                   \
                 if (dec_val > max_decimal || dec_val < min_decimal) {          
                   \
@@ -436,9 +452,22 @@ Status OlapTableBlockConvertor::_internal_validate_column(
             }
         }
         fmt::format_to(error_prefix, "ARRAY type failed: ");
-        RETURN_IF_ERROR(_validate_column(state, block, nested_type, 
column_array->get_data_ptr(),
-                                         slot_index, error_prefix, 
permutation.size(),
-                                         &permutation));
+        auto data_column_ptr = column_array->get_data_ptr();
+        switch (nested_type->get_primitive_type()) {
+        case TYPE_CHAR:
+        case TYPE_VARCHAR:
+        case TYPE_STRING: {
+            RETURN_IF_ERROR(
+                    string_column_checker(data_column_ptr, nested_type, 
&permutation, _filter_map));
+            const_cast<vectorized::ColumnArray*>(column_array)->get_data_ptr() 
=
+                    std::move(data_column_ptr);
+            break;
+        }
+        default:
+            RETURN_IF_ERROR(_validate_column(state, block, nested_type, 
data_column_ptr, slot_index,
+                                             error_prefix, permutation.size(), 
&permutation));
+            break;
+        }
         break;
     }
     case TYPE_MAP: {
@@ -458,12 +487,41 @@ Status OlapTableBlockConvertor::_internal_validate_column(
         }
 
         fmt::format_to(error_prefix, "MAP type failed: ");
-        RETURN_IF_ERROR(_validate_column(state, block, key_type, 
column_map->get_keys_ptr(),
-                                         slot_index, error_prefix, 
permutation.size(),
-                                         &permutation));
-        RETURN_IF_ERROR(_validate_column(state, block, val_type, 
column_map->get_values_ptr(),
-                                         slot_index, error_prefix, 
permutation.size(),
-                                         &permutation));
+        switch (key_type->get_primitive_type()) {
+        case TYPE_CHAR:
+        case TYPE_VARCHAR:
+        case TYPE_STRING: {
+            auto key_column_ptr = column_map->get_keys_ptr();
+            RETURN_IF_ERROR(
+                    string_column_checker(key_column_ptr, key_type, 
&permutation, _filter_map));
+            const_cast<vectorized::ColumnMap*>(column_map)->get_keys_ptr() =
+                    std::move(key_column_ptr);
+            break;
+        }
+        default:
+            RETURN_IF_ERROR(_validate_column(state, block, key_type, 
column_map->get_keys_ptr(),
+                                             slot_index, error_prefix, 
permutation.size(),
+                                             &permutation));
+            break;
+        }
+
+        switch (val_type->get_primitive_type()) {
+        case TYPE_CHAR:
+        case TYPE_VARCHAR:
+        case TYPE_STRING: {
+            auto value_column_ptr = column_map->get_values_ptr();
+            RETURN_IF_ERROR(
+                    string_column_checker(value_column_ptr, val_type, 
&permutation, _filter_map));
+            const_cast<vectorized::ColumnMap*>(column_map)->get_values_ptr() =
+                    std::move(value_column_ptr);
+            break;
+        }
+        default:
+            RETURN_IF_ERROR(_validate_column(state, block, val_type, 
column_map->get_values_ptr(),
+                                             slot_index, error_prefix, 
permutation.size(),
+                                             &permutation));
+            break;
+        }
         break;
     }
     case TYPE_STRUCT: {
@@ -474,16 +532,32 @@ Status OlapTableBlockConvertor::_internal_validate_column(
         DCHECK(type_struct->get_elements().size() == 
column_struct->tuple_size());
         fmt::format_to(error_prefix, "STRUCT type failed: ");
         for (size_t sc = 0; sc < column_struct->tuple_size(); ++sc) {
-            RETURN_IF_ERROR(_validate_column(
-                    state, block, type_struct->get_element(sc), 
column_struct->get_column_ptr(sc),
-                    slot_index, error_prefix, 
column_struct->get_column_ptr(sc)->size()));
+            auto element_type = type_struct->get_element(sc);
+            switch (element_type->get_primitive_type()) {
+            case TYPE_CHAR:
+            case TYPE_VARCHAR:
+            case TYPE_STRING: {
+                auto element_column_ptr = column_struct->get_column_ptr(sc);
+                RETURN_IF_ERROR(string_column_checker(element_column_ptr, 
element_type, nullptr,
+                                                      _filter_map));
+                
const_cast<vectorized::ColumnStruct*>(column_struct)->get_column_ptr(sc) =
+                        std::move(element_column_ptr);
+                break;
+            }
+            default:
+                RETURN_IF_ERROR(_validate_column(state, block, 
type_struct->get_element(sc),
+                                                 
column_struct->get_column_ptr(sc), slot_index,
+                                                 error_prefix,
+                                                 
column_struct->get_column_ptr(sc)->size()));
+                break;
+            }
         }
         break;
     }
     case TYPE_AGG_STATE: {
         auto* column_string = 
vectorized::check_and_get_column<ColumnString>(*real_column_ptr);
         if (column_string) {
-            RETURN_IF_ERROR(string_column_checker(column_string));
+            RETURN_IF_ERROR(string_column_checker(column, type, rows, 
_filter_map));
         }
         break;
     }
diff --git 
a/regression-test/data/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.out
 
b/regression-test/data/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.out
index ce7d2896bfe..2db95a0fde9 100644
--- 
a/regression-test/data/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.out
+++ 
b/regression-test/data/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.out
@@ -36,28 +36,28 @@
 -3562337774148755203   
[FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,
 [...]
 
 -- !select_arr --
-false
-false
-true
-true
-true
-true
-true
-true
-true
-true
+false  -8130762325653500066
+false  -8486390558035389955
+true   -8396837115675039201
+true   -8515031650658489442
+true   -8541785086945532478
+true   -8595400109785252164
+true   -8704279886565651802
+true   -8831405316887920021
+true   -8843401066421936451
+true   -9199935995880135372
 
 -- !select_arr --
-false
-false
-false
-false
-false
-true
-true
-true
-true
-true
+false  -8486390558035389955
+false  -8515031650658489442
+false  -8541785086945532478
+false  -8704279886565651802
+false  -8831405316887920021
+true   -8130762325653500066
+true   -8396837115675039201
+true   -8595400109785252164
+true   -8843401066421936451
+true   -9199935995880135372
 
 -- !select_arr_null --
 \N
@@ -84,28 +84,28 @@ true
 \N
 
 -- !select_arr --
--17
--22
--61
--91
-26
-35
-46
-54
-66
-84
+-17    -8541785086945532478
+-22    -8595400109785252164
+-61    -8515031650658489442
+-91    -8704279886565651802
+26     -8396837115675039201
+35     -8843401066421936451
+46     -9199935995880135372
+54     -8831405316887920021
+66     -8130762325653500066
+84     -8486390558035389955
 
 -- !select_arr --
--109
--111
--64
--67
--82
--82
--99
-117
-14
-25
+-109   -8541785086945532478
+-111   -8831405316887920021
+-64    -8704279886565651802
+-67    -8595400109785252164
+-82    -8515031650658489442
+-82    -8843401066421936451
+-99    -8486390558035389955
+117    -8130762325653500066
+14     -8396837115675039201
+25     -9199935995880135372
 
 -- !select_arr_null --
 \N
@@ -132,28 +132,28 @@ true
 \N
 
 -- !select_arr --
--12603
--2344
--24632
--6139
-10699
-11049
-14809
-19782
-30951
-31600
+-12603 -8486390558035389955
+-2344  -8595400109785252164
+-24632 -8541785086945532478
+-6139  -8843401066421936451
+10699  -8831405316887920021
+11049  -8515031650658489442
+14809  -8396837115675039201
+19782  -8130762325653500066
+30951  -9199935995880135372
+31600  -8704279886565651802
 
 -- !select_arr --
--2808
--7513
-11152
-14506
-17125
-23712
-29837
-31951
-32414
-6257
+-2808  -8831405316887920021
+-7513  -8396837115675039201
+11152  -8541785086945532478
+14506  -8704279886565651802
+17125  -8843401066421936451
+23712  -8130762325653500066
+29837  -8486390558035389955
+31951  -8515031650658489442
+32414  -9199935995880135372
+6257   -8595400109785252164
 
 -- !select_arr_null --
 \N
@@ -180,28 +180,28 @@ true
 \N
 
 -- !select_arr --
--1225369512
--1395978559
--1667521392
--616624660
--755482173
-1018641939
-125717314
-151142332
-357975304
-895657518
+-1225369512    -9199935995880135372
+-1395978559    -8595400109785252164
+-1667521392    -8515031650658489442
+-616624660     -8704279886565651802
+-755482173     -8130762325653500066
+1018641939     -8831405316887920021
+125717314      -8541785086945532478
+151142332      -8843401066421936451
+357975304      -8396837115675039201
+895657518      -8486390558035389955
 
 -- !select_arr --
--1109276453
--1296011431
--1986718067
--794212138
-1389664080
-1439779038
-2134947781
-593610110
-606554113
-772552651
+-1109276453    -8541785086945532478
+-1296011431    -8515031650658489442
+-1986718067    -9199935995880135372
+-794212138     -8595400109785252164
+1389664080     -8486390558035389955
+1439779038     -8843401066421936451
+2134947781     -8704279886565651802
+593610110      -8831405316887920021
+606554113      -8396837115675039201
+772552651      -8130762325653500066
 
 -- !select_arr_null --
 \N
@@ -228,28 +228,28 @@ true
 \N
 
 -- !select_arr --
--3361221405413165437
--4788314364539725007
--5203517795919857144
--5251599557722879198
--5293002896959075734
--5977614697497049338
-1282831306004793126
-1559145931588384833
-3973381630263491239
-8699645739348382040
+-3361221405413165437   -8843401066421936451
+-4788314364539725007   -8486390558035389955
+-5203517795919857144   -8541785086945532478
+-5251599557722879198   -9199935995880135372
+-5293002896959075734   -8831405316887920021
+-5977614697497049338   -8595400109785252164
+1282831306004793126    -8515031650658489442
+1559145931588384833    -8396837115675039201
+3973381630263491239    -8704279886565651802
+8699645739348382040    -8130762325653500066
 
 -- !select_arr --
--1745599059001110301
--2603796573220467612
--3115601516454430516
--591765487762003839
--6139341399562784017
-1895388930380005263
-471624784286609316
-5954685743593662721
-6272777515975020397
-6968890337336200470
+-1745599059001110301   -8486390558035389955
+-2603796573220467612   -8843401066421936451
+-3115601516454430516   -8831405316887920021
+-591765487762003839    -8130762325653500066
+-6139341399562784017   -8515031650658489442
+1895388930380005263    -8704279886565651802
+471624784286609316     -9199935995880135372
+5954685743593662721    -8396837115675039201
+6272777515975020397    -8541785086945532478
+6968890337336200470    -8595400109785252164
 
 -- !select_arr_null --
 \N
@@ -276,28 +276,28 @@ true
 \N
 
 -- !select_arr --
--1822267886295353545
--3076397891591710122
--3124109887729622012
--6894631363500087746
--7343875642021263634
--7538233704987985548
--754703764366248603
-5683394577563243114
-6317706127964864993
-6977603239291717701
+-1822267886295353545   -9199935995880135372
+-3076397891591710122   -8396837115675039201
+-3124109887729622012   -8704279886565651802
+-6894631363500087746   -8515031650658489442
+-7343875642021263634   -8541785086945532478
+-7538233704987985548   -8130762325653500066
+-754703764366248603    -8595400109785252164
+5683394577563243114    -8486390558035389955
+6317706127964864993    -8843401066421936451
+6977603239291717701    -8831405316887920021
 
 -- !select_arr --
--1172538416080263233
--9204263826084876671
-1925178357753659116
-3276595312735248598
-6418523542690297751
-7441149022252855367
-7590254027096205680
-7683460268482283530
-8301618752336534989
-8651228050707939339
+-1172538416080263233   -8541785086945532478
+-9204263826084876671   -8831405316887920021
+1925178357753659116    -8486390558035389955
+3276595312735248598    -9199935995880135372
+6418523542690297751    -8843401066421936451
+7441149022252855367    -8515031650658489442
+7590254027096205680    -8130762325653500066
+7683460268482283530    -8595400109785252164
+8301618752336534989    -8396837115675039201
+8651228050707939339    -8704279886565651802
 
 -- !select_arr_null --
 \N
@@ -324,28 +324,28 @@ true
 \N
 
 -- !select_arr --
--15757.0
--16341.96
--19821.92
--20866.91
--2331.224
--24902.76
-14000.87
-25051.34
-28653.88
-4009.615
+-15757.0       -8843401066421936451
+-16341.96      -8541785086945532478
+-19821.92      -8396837115675039201
+-20866.91      -8595400109785252164
+-2331.224      -9199935995880135372
+-24902.76      -8831405316887920021
+14000.87       -8130762325653500066
+25051.34       -8486390558035389955
+28653.88       -8704279886565651802
+4009.615       -8515031650658489442
 
 -- !select_arr --
--20864.9
--22548.39
--9877.706
-11880.59
-15704.28
-18024.07
-20368.82
-27983.51
-32182.08
-5182.625
+-20864.9       -8486390558035389955
+-22548.39      -9199935995880135372
+-9877.706      -8831405316887920021
+11880.59       -8130762325653500066
+15704.28       -8396837115675039201
+18024.07       -8541785086945532478
+20368.82       -8843401066421936451
+27983.51       -8515031650658489442
+32182.08       -8595400109785252164
+5182.625       -8704279886565651802
 
 -- !select_arr_null --
 \N
@@ -372,28 +372,28 @@ true
 \N
 
 -- !select_arr --
--1.05898247831049E8
--1.56959142076795E9
--1.906554324481077E9
--7.4956160631982E7
--7.50864271988945E8
-1.223931468425696E9
-1.679729892130251E9
-2.086048609782723E9
-2.93704169907062E8
-6.6910726734426E8
+-1.05898247831049E8    -8486390558035389955
+-1.56959142076795E9    -8843401066421936451
+-1.906554324481077E9   -8541785086945532478
+-7.4956160631982E7     -8515031650658489442
+-7.50864271988945E8    -8595400109785252164
+1.223931468425696E9    -8704279886565651802
+1.679729892130251E9    -8396837115675039201
+2.086048609782723E9    -8831405316887920021
+2.93704169907062E8     -8130762325653500066
+6.6910726734426E8      -9199935995880135372
 
 -- !select_arr --
--4.70268405631243E8
--5.70997144930699E8
--8.95187115793498E8
-1.464045023331255E9
-2.96680669413185E8
-5.39155738251913E8
-5.46593171499773E8
-6.84302065704346E8
-8.34463531129353E8
-8.49151182292817E8
+-4.70268405631243E8    -8130762325653500066
+-5.70997144930699E8    -8831405316887920021
+-8.95187115793498E8    -9199935995880135372
+1.464045023331255E9    -8843401066421936451
+2.96680669413185E8     -8595400109785252164
+5.39155738251913E8     -8486390558035389955
+5.46593171499773E8     -8541785086945532478
+6.84302065704346E8     -8704279886565651802
+8.34463531129353E8     -8515031650658489442
+8.49151182292817E8     -8396837115675039201
 
 -- !select_arr_null --
 \N
@@ -420,28 +420,28 @@ true
 \N
 
 -- !select_arr --
--17743828141091863.653
--38425906971625582.970
--80297537986454091.370
--81302901562381564.141
-3727622936511099.551
-39052905432041986.569
-47508675066707278.900
-72995688528646592.170
-75749832103433356.594
-7709761905655290.742
+-17743828141091863.653 -9199935995880135372
+-38425906971625582.970 -8486390558035389955
+-80297537986454091.370 -8595400109785252164
+-81302901562381564.141 -8831405316887920021
+3727622936511099.551   -8704279886565651802
+39052905432041986.569  -8396837115675039201
+47508675066707278.900  -8843401066421936451
+72995688528646592.170  -8515031650658489442
+75749832103433356.594  -8541785086945532478
+7709761905655290.742   -8130762325653500066
 
 -- !select_arr --
--16090503008771839.385
--3676691574790730.662
--37803671896764115.154
--55041500422869845.164
--97977309467834861.568
-11882392565807224.321
-42936217673262402.895
-49188645579737386.849
-65929564340189671.738
-67982096020622551.950
+-16090503008771839.385 -8541785086945532478
+-3676691574790730.662  -9199935995880135372
+-37803671896764115.154 -8130762325653500066
+-55041500422869845.164 -8515031650658489442
+-97977309467834861.568 -8486390558035389955
+11882392565807224.321  -8843401066421936451
+42936217673262402.895  -8831405316887920021
+49188645579737386.849  -8396837115675039201
+65929564340189671.738  -8704279886565651802
+67982096020622551.950  -8595400109785252164
 
 -- !select_arr_null --
 \N
@@ -468,28 +468,28 @@ true
 \N
 
 -- !select_arr --
--14914964387190161.149
--18159913768383637.618
--32703459873895514.658
--56977299434781593.902
--79297570991708069.780
-5853554040766134.311
-60140744241339179.673
-66913892073455553.154
-78004472109663314.920
-8371525595421172.292
+-14914964387190161.149 -8486390558035389955
+-18159913768383637.618 -8595400109785252164
+-32703459873895514.658 -8843401066421936451
+-56977299434781593.902 -8704279886565651802
+-79297570991708069.780 -8831405316887920021
+5853554040766134.311   -9199935995880135372
+60140744241339179.673  -8396837115675039201
+66913892073455553.154  -8541785086945532478
+78004472109663314.920  -8130762325653500066
+8371525595421172.292   -8515031650658489442
 
 -- !select_arr --
--25611061282453522.392
--30215750680959790.240
--55487212422427975.730
--60456623570048382.473
--88387477920318749.692
--90417907600039118.140
--94063431029701515.970
-84582086603105455.690
-90782454457555847.981
-98030845381440535.985
+-25611061282453522.392 -8396837115675039201
+-30215750680959790.240 -8515031650658489442
+-55487212422427975.730 -9199935995880135372
+-60456623570048382.473 -8486390558035389955
+-88387477920318749.692 -8130762325653500066
+-90417907600039118.140 -8843401066421936451
+-94063431029701515.970 -8831405316887920021
+84582086603105455.690  -8595400109785252164
+90782454457555847.981  -8704279886565651802
+98030845381440535.985  -8541785086945532478
 
 -- !select_arr_null --
 \N
@@ -516,28 +516,28 @@ true
 \N
 
 -- !select_arr --
-2022-12-31
-2023-02-22
-2023-03-04
-2023-05-26
-2023-06-06
-2023-08-29
-2023-09-06
-2023-09-10
-2023-09-27
-2023-10-15
+2022-12-31     -8541785086945532478
+2023-02-22     -8831405316887920021
+2023-03-04     -8704279886565651802
+2023-05-26     -8515031650658489442
+2023-06-06     -8486390558035389955
+2023-08-29     -8595400109785252164
+2023-09-06     -8843401066421936451
+2023-09-10     -8130762325653500066
+2023-09-27     -9199935995880135372
+2023-10-15     -8396837115675039201
 
 -- !select_arr --
-2023-02-25
-2023-05-06
-2023-05-29
-2023-06-14
-2023-07-05
-2023-09-11
-2023-09-19
-2023-09-29
-2023-10-02
-2023-10-29
+2023-02-25     -8595400109785252164
+2023-05-06     -9199935995880135372
+2023-05-29     -8704279886565651802
+2023-06-14     -8515031650658489442
+2023-07-05     -8130762325653500066
+2023-09-11     -8541785086945532478
+2023-09-19     -8396837115675039201
+2023-09-29     -8486390558035389955
+2023-10-02     -8843401066421936451
+2023-10-29     -8831405316887920021
 
 -- !select_arr_null --
 \N
@@ -564,28 +564,28 @@ true
 \N
 
 -- !select_arr --
-2022-11-16T20:47:14
-2022-12-03T22:25:03
-2023-01-09T03:21:22
-2023-03-07T21:14:01
-2023-03-14T05:31:47
-2023-04-09T13:56:01
-2023-06-09T12:47:51
-2023-08-14T11:58:46
-2023-08-24T16:50:01
-2023-09-29T22:14:30
+2022-11-16T20:47:14    -8396837115675039201
+2022-12-03T22:25:03    -8843401066421936451
+2023-01-09T03:21:22    -9199935995880135372
+2023-03-07T21:14:01    -8515031650658489442
+2023-03-14T05:31:47    -8831405316887920021
+2023-04-09T13:56:01    -8595400109785252164
+2023-06-09T12:47:51    -8486390558035389955
+2023-08-14T11:58:46    -8130762325653500066
+2023-08-24T16:50:01    -8541785086945532478
+2023-09-29T22:14:30    -8704279886565651802
 
 -- !select_arr --
-2022-11-23T10:15:10
-2022-12-11T18:27:48
-2023-03-15T19:59:48
-2023-03-19T12:19:51
-2023-04-08T03:14:40
-2023-06-23T06:01:06
-2023-08-01T14:58:11
-2023-09-04T04:55:36
-2023-09-05T15:06:29
-2023-09-20T07:58:50
+2022-11-23T10:15:10    -8515031650658489442
+2022-12-11T18:27:48    -8396837115675039201
+2023-03-15T19:59:48    -8130762325653500066
+2023-03-19T12:19:51    -8486390558035389955
+2023-04-08T03:14:40    -8831405316887920021
+2023-06-23T06:01:06    -8704279886565651802
+2023-08-01T14:58:11    -8843401066421936451
+2023-09-04T04:55:36    -8541785086945532478
+2023-09-05T15:06:29    -9199935995880135372
+2023-09-20T07:58:50    -8595400109785252164
 
 -- !select_arr_null --
 \N
@@ -612,28 +612,28 @@ true
 \N
 
 -- !select_arr --
-2022-12-02
-2022-12-20
-2023-02-11
-2023-02-20
-2023-03-08
-2023-04-23
-2023-05-10
-2023-06-03
-2023-06-08
-2023-11-10
+2022-12-02     -8595400109785252164
+2022-12-20     -8704279886565651802
+2023-02-11     -8515031650658489442
+2023-02-20     -8831405316887920021
+2023-03-08     -8130762325653500066
+2023-04-23     -8843401066421936451
+2023-05-10     -8541785086945532478
+2023-06-03     -8486390558035389955
+2023-06-08     -8396837115675039201
+2023-11-10     -9199935995880135372
 
 -- !select_arr --
-2023-01-31
-2023-04-15
-2023-06-05
-2023-06-29
-2023-07-12
-2023-08-03
-2023-08-31
-2023-09-10
-2023-10-25
-2023-10-31
+2023-01-31     -8843401066421936451
+2023-04-15     -8595400109785252164
+2023-06-05     -8541785086945532478
+2023-06-29     -8831405316887920021
+2023-07-12     -8486390558035389955
+2023-08-03     -8704279886565651802
+2023-08-31     -8515031650658489442
+2023-09-10     -8130762325653500066
+2023-10-25     -9199935995880135372
+2023-10-31     -8396837115675039201
 
 -- !select_arr_null --
 \N
@@ -660,28 +660,28 @@ true
 \N
 
 -- !select_arr --
-2022-11-18T18:43:48
-2022-12-03T11:27:48
-2023-01-01T00:09:08
-2023-02-20T23:45:22
-2023-06-09T16:00:02
-2023-06-27T12:59:28
-2023-08-26T00:38:20
-2023-09-13T18:59:10
-2023-10-13T06:40:15
-2023-10-22T09:22:21
+2022-11-18T18:43:48    -8595400109785252164
+2022-12-03T11:27:48    -8515031650658489442
+2023-01-01T00:09:08    -8704279886565651802
+2023-02-20T23:45:22    -8486390558035389955
+2023-06-09T16:00:02    -8831405316887920021
+2023-06-27T12:59:28    -8396837115675039201
+2023-08-26T00:38:20    -8130762325653500066
+2023-09-13T18:59:10    -9199935995880135372
+2023-10-13T06:40:15    -8541785086945532478
+2023-10-22T09:22:21    -8843401066421936451
 
 -- !select_arr --
-2023-01-08T01:16:27
-2023-02-26T19:06:24
-2023-05-22T01:24:36
-2023-06-25T05:22:43
-2023-06-27T21:39:40
-2023-07-04T00:33:11
-2023-07-21T16:13:42
-2023-09-07T08:10:32
-2023-09-07T18:19:45
-2023-11-09T01:07:22
+2023-01-08T01:16:27    -8704279886565651802
+2023-02-26T19:06:24    -8541785086945532478
+2023-05-22T01:24:36    -8486390558035389955
+2023-06-25T05:22:43    -8831405316887920021
+2023-06-27T21:39:40    -8595400109785252164
+2023-07-04T00:33:11    -8515031650658489442
+2023-07-21T16:13:42    -8130762325653500066
+2023-09-07T08:10:32    -9199935995880135372
+2023-09-07T18:19:45    -8396837115675039201
+2023-11-09T01:07:22    -8843401066421936451
 
 -- !select_arr_null --
 \N
@@ -708,28 +708,28 @@ true
 \N
 
 -- !select_arr --
-&K
--ILK
-Fj*=@$lSm
-N(N
-X1nRg/Eu*,=U4
-^
-jm7X
-l+&-xcmpY*?*>3
-n1mf
-xuWV@yg6
+&K     -8541785086945532478
+-ILK   -8486390558035389955
+Fj*=@$lSm      -8831405316887920021
+N(N    -8843401066421936451
+X1nRg/Eu*,=U4  -8515031650658489442
+^      -8130762325653500066
+jm7X   -8595400109785252164
+l+&-xcmpY*?*>3 -8704279886565651802
+n1mf   -9199935995880135372
+xuWV@yg6       -8396837115675039201
 
 -- !select_arr --
-&x^n7*
-.UL
-;o
-=ox
-A>VG1wu?-?L
-CZJTv
-_XNa9dHP
-jc.SvQ)8=X+$t
-viL6FXeueJ
-~<35
+&x^n7* -8831405316887920021
+.UL    -8515031650658489442
+;o     -8486390558035389955
+=ox    -8595400109785252164
+A>VG1wu?-?L    -8130762325653500066
+CZJTv  -8843401066421936451
+_XNa9dHP       -9199935995880135372
+jc.SvQ)8=X+$t  -8704279886565651802
+viL6FXeueJ     -8541785086945532478
+~<35   -8396837115675039201
 
 -- !select_arr_null --
 \N
@@ -756,28 +756,28 @@ viL6FXeueJ
 \N
 
 -- !select_arr --
--/;q%n`o_zeG4pb
-.`v(R!K/iVe?7ahMDK=%2NRRdw*Y(vvl-+:*NF;!%c@b+S2rlRdkGXlig@h6K^(hx!bllx/WruS0ffly
-8oPwCJU99WKcsNBQ#alkk+@&$h_BZ$$(JZ;RX<^p4ok
-98zbIC`.bm8mCywYX#+uD-c;X
-;>=Xe-^rDyKGjWWWdsp5Q*tOx?LdSHPu)6Wc<p^C:
-FNsG-Xn$0>S*iGM,JdvoV/5ue%LJhH%0GWL<c!sxMW_OuA47E/`Qp=kl`_9OAK>BSxy6bf&6q1uc9Pph*YhKT6)rJ*@@T_NB
-W-dPFj78l(?eD@R93=x9k+~Ydpsy_f,?&=`%4.5fsd1IBDjPZslK(zW?SeEG<Us(z*_qmE%A
-`g0jm1c:n`Bz3pEWs!+,2rjPVRbAMW98@.,8vam0W/SB;RMr5
-c3sPL0!+f=+5s@;Meevmfv@YNF*
-rGHy$N2B<XDWVJ,jM*wc8~3,/XNP1yX/&uNsXw~RQLLO;LmgKb`d6
+-/;q%n`o_zeG4pb        -8396837115675039201
+.`v(R!K/iVe?7ahMDK=%2NRRdw*Y(vvl-+:*NF;!%c@b+S2rlRdkGXlig@h6K^(hx!bllx/WruS0ffly
       -9199935995880135372
+8oPwCJU99WKcsNBQ#alkk+@&$h_BZ$$(JZ;RX<^p4ok    -8130762325653500066
+98zbIC`.bm8mCywYX#+uD-c;X      -8831405316887920021
+;>=Xe-^rDyKGjWWWdsp5Q*tOx?LdSHPu)6Wc<p^C:      -8486390558035389955
+FNsG-Xn$0>S*iGM,JdvoV/5ue%LJhH%0GWL<c!sxMW_OuA47E/`Qp=kl`_9OAK>BSxy6bf&6q1uc9Pph*YhKT6)rJ*@@T_NB
       -8515031650658489442
+W-dPFj78l(?eD@R93=x9k+~Ydpsy_f,?&=`%4.5fsd1IBDjPZslK(zW?SeEG<Us(z*_qmE%A       
-8541785086945532478
+`g0jm1c:n`Bz3pEWs!+,2rjPVRbAMW98@.,8vam0W/SB;RMr5      -8704279886565651802
+c3sPL0!+f=+5s@;Meevmfv@YNF*    -8843401066421936451
+rGHy$N2B<XDWVJ,jM*wc8~3,/XNP1yX/&uNsXw~RQLLO;LmgKb`d6  -8595400109785252164
 
 -- !select_arr --
-.6/ipQ=Ay+!ZQ@Kq#7T6%Mmx2-U:n*_Ls&N5a7e.+Vm#U=:xVyRh#A&jPgei*P(A`RL*l&jte=;hF1@M/pVx1Ensxu,
-01DU*g&
[email protected]
-90?GEXZ7`Nt!=<^x+%.yiUI$;)e>U
-?D_#`qcDbVdhL6@5Ge?<2wm24C6qXrf*A.0d9o37yzETAK?r6V?z3
-I4pJI/s9g::v9SQk2b
-VnC+PP_G>jAVox7_MR%hZzlDVoHU#sL$GhFkd7
-jCeAkA>$+D>aPI>H=>Nc<+jIyrdOC+0ShVH=il1,P&XUk0J55rnrCTy-OU@Jv7x
-jN/bZ7JW.9$J9PY78=V\\ZgmWcf?qxG5>#+?oluY~Tx.09Ov-Yb%K#NnQAsZ-RHV*
-y34_2x_)JoKUA8yL%2M*.Y;gaJ;5,QCG89B%=4qg3B~YFgPkbT:K//xK@1-KZHrapS!
+.6/ipQ=Ay+!ZQ@Kq#7T6%Mmx2-U:n*_Ls&N5a7e.+Vm#U=:xVyRh#A&jPgei*P(A`RL*l&jte=;hF1@M/pVx1Ensxu,
    -8486390558035389955
+01DU*g&        -8541785086945532478
[email protected]  -9199935995880135372
+90?GEXZ7`Nt!=<^x+%.yiUI$;)e>U  -8831405316887920021
+?D_#`qcDbVdhL6@5Ge?<2wm24C6qXrf*A.0d9o37yzETAK?r6V?z3  -8396837115675039201
+I4pJI/s9g::v9SQk2b     -8515031650658489442
+VnC+PP_G>jAVox7_MR%hZzlDVoHU#sL$GhFkd7 -8704279886565651802
+jCeAkA>$+D>aPI>H=>Nc<+jIyrdOC+0ShVH=il1,P&XUk0J55rnrCTy-OU@Jv7x        
-8130762325653500066
+jN/bZ7JW.9$J9PY78=V\\ZgmWcf?qxG5>#+?oluY~Tx.09Ov-Yb%K#NnQAsZ-RHV*      
-8843401066421936451
+y34_2x_)JoKUA8yL%2M*.Y;gaJ;5,QCG89B%=4qg3B~YFgPkbT:K//xK@1-KZHrapS!    
-8595400109785252164
 
 -- !select_arr_null --
 \N
@@ -804,28 +804,28 @@ 
y34_2x_)JoKUA8yL%2M*.Y;gaJ;5,QCG89B%=4qg3B~YFgPkbT:K//xK@1-KZHrapS!
 \N
 
 -- !select_arr --
-.?Q,W1LLM<E?G1o`PC0H%2;gJ
-2EoDhq_$RSYVHH;;~(0dApoRZra5)UE5qUx*/2tDPH?hT4QaeTU:TrqHY>E
-72HHKv=e:9b4_Fu0C;dW9<2/Wz/c(KlwuBS
-?(-AzraU%6Yh5;iE
-BCgr:xw5t`iTf/Sl~^fqe$aKaco2Cji*mPn2sKN~>3_kfxW
-IAG%P/0!Cz8&!V7PX9q;
-L(uWV9fg;-lt-q8BcJKkecoS5h:p8emH%YNwL=XC~U^.BY^3vR68)x4q=~N;6gNUXLQ%pTG9,k3&u#lb9EswE3)p#AGaN5Z(s7trSf^MLS
-Sh?@U;QdNu-CB%q+8Mq(n@NN&ga3cU//KDU-L>,_(
-Vle%Oo)1e!XDF,25*.y_fds~H:-e
-u>abbk6aqcVX>Ax-#=X=~K.P<r9t7L
+.?Q,W1LLM<E?G1o`PC0H%2;gJ      -8704279886565651802
+2EoDhq_$RSYVHH;;~(0dApoRZra5)UE5qUx*/2tDPH?hT4QaeTU:TrqHY>E    
-8130762325653500066
+72HHKv=e:9b4_Fu0C;dW9<2/Wz/c(KlwuBS    -8541785086945532478
+?(-AzraU%6Yh5;iE       -8843401066421936451
+BCgr:xw5t`iTf/Sl~^fqe$aKaco2Cji*mPn2sKN~>3_kfxW        -9199935995880135372
+IAG%P/0!Cz8&!V7PX9q;   -8515031650658489442
+L(uWV9fg;-lt-q8BcJKkecoS5h:p8emH%YNwL=XC~U^.BY^3vR68)x4q=~N;6gNUXLQ%pTG9,k3&u#lb9EswE3)p#AGaN5Z(s7trSf^MLS
     -8595400109785252164
+Sh?@U;QdNu-CB%q+8Mq(n@NN&ga3cU//KDU-L>,_(      -8396837115675039201
+Vle%Oo)1e!XDF,25*.y_fds~H:-e   -8486390558035389955
+u>abbk6aqcVX>Ax-#=X=~K.P<r9t7L -8831405316887920021
 
 -- !select_arr --
-%h!n&7TZT#DOoQG2Wh8/dY;nkyvM=B%?<jlQ$A^dV)F.ecIMT,ey.=IPvt7bx*$i&Q_sY)(R6biqKf1R<-
-&-s+Kp4Zha-8nN+ls>%>eT>WtPvn22c2Ym,u_TWlTfav>!&.gi~,*tLA!Lzl&edZpAG<b56Eti>M!,*;b1p`^7Uaawuj`u+B2
-9i-X4dj35hW(cJl!5x^%P%F&~/5g2j*mf`qW>M):%qt@$wHVBZVs@D6V4YAiopWw?JzQc<@Xj,@(~A0Dfas&
-CYc<zgWPyv>/MR.il~;?u5l7u&oeS&WLaL^>g$nS^l%w@Kx`QhN_
-F~K~Gy;#~*F()@`K<w?rA
-G,C+:ndE
-UU*Dht,NZtq=M9eY#P/:cM6Ie,F<kpGd5OYT~6ggr!D?o<e5&m+>f>gB,/N&HB-K1#kSk:R5a0,,zr4C,S%w(ux/F`HN&:1v8r#wAqfG46#+
-j7T_>G_D&EU+*-At3qqaP6YbIh@-3JS*u5;s3Q2~$W2Mif,sE/JY(u$%QtL6u#AX<(UN_!VMS3+L1-#+t.*WFO_6,q!jkF&/KQCM?Dtg+tFp
-j_<7=(t~*c;LR~52qQMV2NBw^lB*JHZge%
-nS%oRp!GPfh,%>c*+v><iU3xqDXt
+%h!n&7TZT#DOoQG2Wh8/dY;nkyvM=B%?<jlQ$A^dV)F.ecIMT,ey.=IPvt7bx*$i&Q_sY)(R6biqKf1R<-
     -9199935995880135372
+&-s+Kp4Zha-8nN+ls>%>eT>WtPvn22c2Ym,u_TWlTfav>!&.gi~,*tLA!Lzl&edZpAG<b56Eti>M!,*;b1p`^7Uaawuj`u+B2
      -8130762325653500066
+9i-X4dj35hW(cJl!5x^%P%F&~/5g2j*mf`qW>M):%qt@$wHVBZVs@D6V4YAiopWw?JzQc<@Xj,@(~A0Dfas&
   -8843401066421936451
+CYc<zgWPyv>/MR.il~;?u5l7u&oeS&WLaL^>g$nS^l%w@Kx`QhN_   -8515031650658489442
+F~K~Gy;#~*F()@`K<w?rA  -8704279886565651802
+G,C+:ndE       -8541785086945532478
+UU*Dht,NZtq=M9eY#P/:cM6Ie,F<kpGd5OYT~6ggr!D?o<e5&m+>f>gB,/N&HB-K1#kSk:R5a0,,zr4C,S%w(ux/F`HN&:1v8r#wAqfG46#+
   -8486390558035389955
+j7T_>G_D&EU+*-At3qqaP6YbIh@-3JS*u5;s3Q2~$W2Mif,sE/JY(u$%QtL6u#AX<(UN_!VMS3+L1-#+t.*WFO_6,q!jkF&/KQCM?Dtg+tFp
   -8831405316887920021
+j_<7=(t~*c;LR~52qQMV2NBw^lB*JHZge%     -8595400109785252164
+nS%oRp!GPfh,%>c*+v><iU3xqDXt   -8396837115675039201
 
 -- !select_arr_null --
 \N
@@ -852,208 +852,208 @@ nS%oRp!GPfh,%>c*+v><iU3xqDXt
 \N
 
 -- !select_arr --
-false  true
-false  true
-false  true
-false  true
-false  true
-false  true
-false  true
-false  true
-false  true
-false  true
+false  true    -3029329163450784167
+false  true    -3562337774148755203
+false  true    -4110451981448877832
+false  true    -5220219229417338043
+false  true    -5416818422863392285
+false  true    -6626238391768607459
+false  true    -7476127938744911589
+false  true    -7857556006370763693
+false  true    -8074276707509606973
+false  true    -8130762325653500066
 
 -- !select_arr --
--116   -54
--120   -1
--36    17
--37    94
--49    -41
--59    34
--91    -64
--94    99
-53     91
-66     117
+-116   -54     -7476127938744911589
+-120   -1      -7858769039668974267
+-36    17      -6241888565302595587
+-37    94      -7165272352215225125
+-49    -41     -7072378015249286235
+-59    34      -7582409789765414601
+-91    -64     -8704279886565651802
+-94    99      -6614511767379733802
+53     91      -5541301024078889964
+66     117     -8130762325653500066
 
 -- !select_arr --
--12603 29837
--2344  6257
--24632 11152
--30266 -15976
--6139  17125
--760   16243
-11049  31951
-13978  23044
-19782  23712
-30951  32414
+-12603 29837   -8486390558035389955
+-2344  6257    -8595400109785252164
+-24632 11152   -8541785086945532478
+-30266 -15976  -8029420303531310472
+-6139  17125   -8843401066421936451
+-760   16243   -8074276707509606973
+11049  31951   -8515031650658489442
+13978  23044   -7986890399880908420
+19782  23712   -8130762325653500066
+30951  32414   -9199935995880135372
 
 -- !select_arr --
--1395978559    -794212138
--154835386     1030726981
--1667521392    -1296011431
--1885219382    1981833275
--616624660     2134947781
--755482173     772552651
-151142332      1439779038
-357975304      606554113
-765662731      1541110905
-895657518      1389664080
+-1395978559    -794212138      -8595400109785252164
+-154835386     1030726981      -8074276707509606973
+-1667521392    -1296011431     -8515031650658489442
+-1885219382    1981833275      -7986890399880908420
+-616624660     2134947781      -8704279886565651802
+-755482173     772552651       -8130762325653500066
+151142332      1439779038      -8843401066421936451
+357975304      606554113       -8396837115675039201
+765662731      1541110905      -7769286895858329340
+895657518      1389664080      -8486390558035389955
 
 -- !select_arr --
--3361221405413165437   -2603796573220467612
--4339503874668115602   -838722987048422602
--4457622285697743920   8534941420423470769
--4788314364539725007   -1745599059001110301
--5203517795919857144   6272777515975020397
--5251599557722879198   471624784286609316
--5293002896959075734   -3115601516454430516
--5977614697497049338   6968890337336200470
-1559145931588384833    5954685743593662721
-3174761626943132670    7835344430383138309
+-3361221405413165437   -2603796573220467612    -8843401066421936451
+-4339503874668115602   -838722987048422602     -5541301024078889964
+-4457622285697743920   8534941420423470769     -6626238391768607459
+-4788314364539725007   -1745599059001110301    -8486390558035389955
+-5203517795919857144   6272777515975020397     -8541785086945532478
+-5251599557722879198   471624784286609316      -9199935995880135372
+-5293002896959075734   -3115601516454430516    -8831405316887920021
+-5977614697497049338   6968890337336200470     -8595400109785252164
+1559145931588384833    5954685743593662721     -8396837115675039201
+3174761626943132670    7835344430383138309     -7582409789765414601
 
 -- !select_arr --
--1822267886295353545   3276595312735248598
--3076397891591710122   8301618752336534989
--3124109887729622012   8651228050707939339
--4873506841897694168   2111894533569832748
--6894631363500087746   7441149022252855367
--7343875642021263634   -1172538416080263233
--7538233704987985548   7590254027096205680
--754703764366248603    7683460268482283530
--7621871960331100710   -6328352121339859493
-6317706127964864993    6418523542690297751
+-1822267886295353545   3276595312735248598     -9199935995880135372
+-3076397891591710122   8301618752336534989     -8396837115675039201
+-3124109887729622012   8651228050707939339     -8704279886565651802
+-4873506841897694168   2111894533569832748     -8029420303531310472
+-6894631363500087746   7441149022252855367     -8515031650658489442
+-7343875642021263634   -1172538416080263233    -8541785086945532478
+-7538233704987985548   7590254027096205680     -8130762325653500066
+-754703764366248603    7683460268482283530     -8595400109785252164
+-7621871960331100710   -6328352121339859493    -8074276707509606973
+6317706127964864993    6418523542690297751     -8843401066421936451
 
 -- !select_arr --
--15757.0       20368.82
--16341.96      18024.07
--19821.92      15704.28
--20866.91      32182.08
--24902.76      -9877.706
--27997.29      -15498.17
--9767.623      18092.59
-12312.54       32023.48
-16154.86       24438.55
-4009.615       27983.51
+-15757.0       20368.82        -8843401066421936451
+-16341.96      18024.07        -8541785086945532478
+-19821.92      15704.28        -8396837115675039201
+-20866.91      32182.08        -8595400109785252164
+-24902.76      -9877.706       -8831405316887920021
+-27997.29      -15498.17       -7858769039668974267
+-9767.623      18092.59        -7857556006370763693
+12312.54       32023.48        -7769286895858329340
+16154.86       24438.55        -7986890399880908420
+4009.615       27983.51        -8515031650658489442
 
 -- !select_arr --
--1.05898247831049E8    5.39155738251913E8
--1.073889678900371E9   -4.39918914177586E8
--1.34411787253998E8    -9.7004635471591E7
--1.56959142076795E9    1.464045023331255E9
--1.619321181264003E9   -1.42725438609996E8
--1.906554324481077E9   5.46593171499773E8
--3.92422000827448E8    6.58385835114419E8
--7.4956160631982E7     8.34463531129353E8
--7.50864271988945E8    2.96680669413185E8
-9.7816440578208E7      2.051735396272362E9
+-1.05898247831049E8    5.39155738251913E8      -8486390558035389955
+-1.073889678900371E9   -4.39918914177586E8     -6614511767379733802
+-1.34411787253998E8    -9.7004635471591E7      -8074276707509606973
+-1.56959142076795E9    1.464045023331255E9     -8843401066421936451
+-1.619321181264003E9   -1.42725438609996E8     -7857556006370763693
+-1.906554324481077E9   5.46593171499773E8      -8541785086945532478
+-3.92422000827448E8    6.58385835114419E8      -6241888565302595587
+-7.4956160631982E7     8.34463531129353E8      -8515031650658489442
+-7.50864271988945E8    2.96680669413185E8      -8595400109785252164
+9.7816440578208E7      2.051735396272362E9     -7986890399880908420
 
 -- !select_arr --
--17743828141091863.653 -3676691574790730.662
--51460308392133925.442 -11763398204924377.551
--58867806773334315.437 6230839636272359.175
--80297537986454091.370 67982096020622551.950
--81302901562381564.141 42936217673262402.895
--94234954772197810.884 -85397306669597661.174
-29682733847992295.716  94405311135417478.635
-3727622936511099.551   65929564340189671.738
-39052905432041986.569  49188645579737386.849
-563833857333149.237    72240891542273916.996
+-17743828141091863.653 -3676691574790730.662   -9199935995880135372
+-51460308392133925.442 -11763398204924377.551  -7986890399880908420
+-58867806773334315.437 6230839636272359.175    -7476127938744911589
+-80297537986454091.370 67982096020622551.950   -8595400109785252164
+-81302901562381564.141 42936217673262402.895   -8831405316887920021
+-94234954772197810.884 -85397306669597661.174  -7858769039668974267
+29682733847992295.716  94405311135417478.635   -7769286895858329340
+3727622936511099.551   65929564340189671.738   -8704279886565651802
+39052905432041986.569  49188645579737386.849   -8396837115675039201
+563833857333149.237    72240891542273916.996   -7582409789765414601
 
 -- !select_arr --
--18159913768383637.618 84582086603105455.690
--33223862267088292.835 -20604803215140946.570
--50016611788131067.932 18017097236073047.740
--56977299434781593.902 90782454457555847.981
--63313084178127406.173 -8433303713843033.989
--74437801391927585.136 71962497807759743.605
--78217797873852755.529 -815945693894447.914
-1546218436763850.962   98830676264056558.450
-56401716490568981.582  63366439479083025.171
-66913892073455553.154  98030845381440535.985
+-18159913768383637.618 84582086603105455.690   -8595400109785252164
+-33223862267088292.835 -20604803215140946.570  -7582409789765414601
+-50016611788131067.932 18017097236073047.740   -7986890399880908420
+-56977299434781593.902 90782454457555847.981   -8704279886565651802
+-63313084178127406.173 -8433303713843033.989   -8029420303531310472
+-74437801391927585.136 71962497807759743.605   -7165272352215225125
+-78217797873852755.529 -815945693894447.914    -7072378015249286235
+1546218436763850.962   98830676264056558.450   -7476127938744911589
+56401716490568981.582  63366439479083025.171   -7857556006370763693
+66913892073455553.154  98030845381440535.985   -8541785086945532478
 
 -- !select_arr --
-2022-12-31     2023-09-11
-2023-01-25     2023-05-19
-2023-02-22     2023-10-29
-2023-03-04     2023-05-29
-2023-05-18     2023-05-22
-2023-05-26     2023-06-14
-2023-06-01     2023-07-04
-2023-06-06     2023-09-29
-2023-07-18     2023-09-12
-2023-09-06     2023-10-02
+2022-12-31     2023-09-11      -8541785086945532478
+2023-01-25     2023-05-19      -6626238391768607459
+2023-02-22     2023-10-29      -8831405316887920021
+2023-03-04     2023-05-29      -8704279886565651802
+2023-05-18     2023-05-22      -7165272352215225125
+2023-05-26     2023-06-14      -8515031650658489442
+2023-06-01     2023-07-04      -7769286895858329340
+2023-06-06     2023-09-29      -8486390558035389955
+2023-07-18     2023-09-12      -7072378015249286235
+2023-09-06     2023-10-02      -8843401066421936451
 
 -- !select_arr --
-2022-11-16T20:47:14    2022-12-11T18:27:48
-2022-12-03T22:25:03    2023-08-01T14:58:11
-2022-12-22T19:32:55    2023-04-11T20:28:41
-2023-01-09T03:21:22    2023-09-05T15:06:29
-2023-03-13T00:53:46    2023-07-11T19:29:45
-2023-03-14T05:31:47    2023-04-08T03:14:40
-2023-04-09T13:56:01    2023-09-20T07:58:50
-2023-04-28T03:29:50    2023-05-19T10:23:08
-2023-07-06T11:48:43    2023-08-10T18:06:51
-2023-08-24T16:50:01    2023-09-04T04:55:36
+2022-11-16T20:47:14    2022-12-11T18:27:48     -8396837115675039201
+2022-12-03T22:25:03    2023-08-01T14:58:11     -8843401066421936451
+2022-12-22T19:32:55    2023-04-11T20:28:41     -7858769039668974267
+2023-01-09T03:21:22    2023-09-05T15:06:29     -9199935995880135372
+2023-03-13T00:53:46    2023-07-11T19:29:45     -7986890399880908420
+2023-03-14T05:31:47    2023-04-08T03:14:40     -8831405316887920021
+2023-04-09T13:56:01    2023-09-20T07:58:50     -8595400109785252164
+2023-04-28T03:29:50    2023-05-19T10:23:08     -7857556006370763693
+2023-07-06T11:48:43    2023-08-10T18:06:51     -8029420303531310472
+2023-08-24T16:50:01    2023-09-04T04:55:36     -8541785086945532478
 
 -- !select_arr --
-2022-12-02     2023-04-15
-2022-12-20     2023-08-03
-2023-02-11     2023-08-31
-2023-02-16     2023-05-30
-2023-02-20     2023-06-29
-2023-03-08     2023-09-10
-2023-05-10     2023-06-05
-2023-06-03     2023-07-12
-2023-06-08     2023-10-31
-2023-09-21     2023-11-04
+2022-12-02     2023-04-15      -8595400109785252164
+2022-12-20     2023-08-03      -8704279886565651802
+2023-02-11     2023-08-31      -8515031650658489442
+2023-02-16     2023-05-30      -7986890399880908420
+2023-02-20     2023-06-29      -8831405316887920021
+2023-03-08     2023-09-10      -8130762325653500066
+2023-05-10     2023-06-05      -8541785086945532478
+2023-06-03     2023-07-12      -8486390558035389955
+2023-06-08     2023-10-31      -8396837115675039201
+2023-09-21     2023-11-04      -8029420303531310472
 
 -- !select_arr --
-2022-11-18T18:43:48    2023-06-27T21:39:40
-2022-12-03T11:27:48    2023-07-04T00:33:11
-2022-12-26T23:10:18    2023-02-01T16:12:20
-2023-01-01T00:09:08    2023-01-08T01:16:27
-2023-01-13T10:24:26    2023-09-14T03:47:42
-2023-02-06T15:01:27    2023-03-17T10:12:31
-2023-02-20T23:45:22    2023-05-22T01:24:36
-2023-06-09T16:00:02    2023-06-25T05:22:43
-2023-06-27T12:59:28    2023-09-07T18:19:45
-2023-10-22T09:22:21    2023-11-09T01:07:22
+2022-11-18T18:43:48    2023-06-27T21:39:40     -8595400109785252164
+2022-12-03T11:27:48    2023-07-04T00:33:11     -8515031650658489442
+2022-12-26T23:10:18    2023-02-01T16:12:20     -7769286895858329340
+2023-01-01T00:09:08    2023-01-08T01:16:27     -8704279886565651802
+2023-01-13T10:24:26    2023-09-14T03:47:42     -8074276707509606973
+2023-02-06T15:01:27    2023-03-17T10:12:31     -7986890399880908420
+2023-02-20T23:45:22    2023-05-22T01:24:36     -8486390558035389955
+2023-06-09T16:00:02    2023-06-25T05:22:43     -8831405316887920021
+2023-06-27T12:59:28    2023-09-07T18:19:45     -8396837115675039201
+2023-10-22T09:22:21    2023-11-09T01:07:22     -8843401066421936451
 
 -- !select_arr --
-       ;f4fH_FX`5
-       UHAw
-&      ZZ-wWSZ
-&K     viL6FXeueJ
-)jGGLPZYrJ     F,VvTRF2ua
--ILK   ;o
-0nL4FS~R.I1:)  j.7>NH-a7
-;_ugtuS&       T
-E      N.6T26/T6)pj
-xuWV@yg6       ~<35
+       ;f4fH_FX`5      -7072378015249286235
+       UHAw    -6626238391768607459
+&      ZZ-wWSZ -7857556006370763693
+&K     viL6FXeueJ      -8541785086945532478
+)jGGLPZYrJ     F,VvTRF2ua      -6241888565302595587
+-ILK   ;o      -8486390558035389955
+0nL4FS~R.I1:)  j.7>NH-a7       -7858769039668974267
+;_ugtuS&       T       -7769286895858329340
+E      N.6T26/T6)pj    -7476127938744911589
+xuWV@yg6       ~<35    -8396837115675039201
 
 -- !select_arr --
--/;q%n`o_zeG4pb        ?D_#`qcDbVdhL6@5Ge?<2wm24C6qXrf*A.0d9o37yzETAK?r6V?z3
-.`v(R!K/iVe?7ahMDK=%2NRRdw*Y(vvl-+:*NF;!%c@b+S2rlRdkGXlig@h6K^(hx!bllx/WruS0ffly
       [email protected]
-/%1Ql^HD56sMQ;QiU7vho9lq6qtjR,~RjrNZJJXAUd7>3U@6*C!6>Om7Cb3,oMk4/f:@~ap$       
V?f+hRk?I/)P(bd>><E$91_1LS0OA>Ik5q2o..9IImfvmnekWmR)MHQ9qYODd8hQ:x$Hd(BM7,h;;XY~%G~*z>DKa7
-8      T4#M?i/-=IMy)f)<@PF`tIF0w+
-8oPwCJU99WKcsNBQ#alkk+@&$h_BZ$$(JZ;RX<^p4ok    
jCeAkA>$+D>aPI>H=>Nc<+jIyrdOC+0ShVH=il1,P&XUk0J55rnrCTy-OU@Jv7x
-FNsG-Xn$0>S*iGM,JdvoV/5ue%LJhH%0GWL<c!sxMW_OuA47E/`Qp=kl`_9OAK>BSxy6bf&6q1uc9Pph*YhKT6)rJ*@@T_NB
       I4pJI/s9g::v9SQk2b
-_ot:DO=JgmX_o  o8&u#Z1$I)cO<U3b
-c3sPL0!+f=+5s@;Meevmfv@YNF*    
jN/bZ7JW.9$J9PY78=V\\ZgmWcf?qxG5>#+?oluY~Tx.09Ov-Yb%K#NnQAsZ-RHV*
-lF0P;?=BR$MhFFwlaUPJM9=;ZdGWw  z=s1urTbg6_EKK9*)+oa1lR`r%C!h
-rGHy$N2B<XDWVJ,jM*wc8~3,/XNP1yX/&uNsXw~RQLLO;LmgKb`d6  
y34_2x_)JoKUA8yL%2M*.Y;gaJ;5,QCG89B%=4qg3B~YFgPkbT:K//xK@1-KZHrapS!
+-/;q%n`o_zeG4pb        ?D_#`qcDbVdhL6@5Ge?<2wm24C6qXrf*A.0d9o37yzETAK?r6V?z3   
-8396837115675039201
+.`v(R!K/iVe?7ahMDK=%2NRRdw*Y(vvl-+:*NF;!%c@b+S2rlRdkGXlig@h6K^(hx!bllx/WruS0ffly
       [email protected]   -9199935995880135372
+/%1Ql^HD56sMQ;QiU7vho9lq6qtjR,~RjrNZJJXAUd7>3U@6*C!6>Om7Cb3,oMk4/f:@~ap$       
V?f+hRk?I/)P(bd>><E$91_1LS0OA>Ik5q2o..9IImfvmnekWmR)MHQ9qYODd8hQ:x$Hd(BM7,h;;XY~%G~*z>DKa7
      -6626238391768607459
+8      T4#M?i/-=IMy)f)<@PF`tIF0w+      -6092405540953322235
+8oPwCJU99WKcsNBQ#alkk+@&$h_BZ$$(JZ;RX<^p4ok    
jCeAkA>$+D>aPI>H=>Nc<+jIyrdOC+0ShVH=il1,P&XUk0J55rnrCTy-OU@Jv7x 
-8130762325653500066
+FNsG-Xn$0>S*iGM,JdvoV/5ue%LJhH%0GWL<c!sxMW_OuA47E/`Qp=kl`_9OAK>BSxy6bf&6q1uc9Pph*YhKT6)rJ*@@T_NB
       I4pJI/s9g::v9SQk2b      -8515031650658489442
+_ot:DO=JgmX_o  o8&u#Z1$I)cO<U3b        -7857556006370763693
+c3sPL0!+f=+5s@;Meevmfv@YNF*    
jN/bZ7JW.9$J9PY78=V\\ZgmWcf?qxG5>#+?oluY~Tx.09Ov-Yb%K#NnQAsZ-RHV*       
-8843401066421936451
+lF0P;?=BR$MhFFwlaUPJM9=;ZdGWw  z=s1urTbg6_EKK9*)+oa1lR`r%C!h   
-8029420303531310472
+rGHy$N2B<XDWVJ,jM*wc8~3,/XNP1yX/&uNsXw~RQLLO;LmgKb`d6  
y34_2x_)JoKUA8yL%2M*.Y;gaJ;5,QCG89B%=4qg3B~YFgPkbT:K//xK@1-KZHrapS!     
-8595400109785252164
 
 -- !select_arr --
-(oV%,ZE=mskl8o<H4ivb7RS#G-59tD`Y3@&1?/h7!,,R8:4k4BW/.:@PlBs<_Cis9rj    
Fl6~FKlfZ7eUW/
-.?Q,W1LLM<E?G1o`PC0H%2;gJ      F~K~Gy;#~*F()@`K<w?rA
-1bLxJZghLR%+&*w~wIggpMxY*Qs+k6m&_krgBoLd7B~:X#XdQRA.5NXJYMtWyCs9j      
FHFNkRk1vC4m<`iJETD1BT?A`,heYP(
-3:9W6eDavlF1n=D0=Uam!gpoCQgisrH        M6Z&
-72HHKv=e:9b4_Fu0C;dW9<2/Wz/c(KlwuBS    G,C+:ndE
-L(uWV9fg;-lt-q8BcJKkecoS5h:p8emH%YNwL=XC~U^.BY^3vR68)x4q=~N;6gNUXLQ%pTG9,k3&u#lb9EswE3)p#AGaN5Z(s7trSf^MLS
     j_<7=(t~*c;LR~52qQMV2NBw^lB*JHZge%
-M)a*2ID$YKjV85(4sdIlOm_y_6#E4a-&B9g:DUs8tzogRRR3sJgU4iq4ZF+%5Sk8am*4(LBkSKZU_KnBzhy=y$zpGAdMv-R
        eh$M-n<`5S.@z_?yn85*T%e2+O=6-ZYv(d,keQULdS!VqUw^)J$16=AslNku
-Sh?@U;QdNu-CB%q+8Mq(n@NN&ga3cU//KDU-L>,_(      nS%oRp!GPfh,%>c*+v><iU3xqDXt
-Uxj_qqP:7B_*CXmc)5!k<qo!I~fY!k8Qwc7pqx*ezv=    
lTFY1.rVff&AQ74iuDTUGzdPj$N4ALVxm!Wb,YC8dklT..VV7lb8~8vDy9&+4;f>cKZ2J*OryV=0KbPG+c2-XQ1yH5/TV/nsUTTSS5S+Nc_ZU!dqMBdG#
-dHR`Om3C5@3q   tNccIq
+(oV%,ZE=mskl8o<H4ivb7RS#G-59tD`Y3@&1?/h7!,,R8:4k4BW/.:@PlBs<_Cis9rj    
Fl6~FKlfZ7eUW/  -6614511767379733802
+.?Q,W1LLM<E?G1o`PC0H%2;gJ      F~K~Gy;#~*F()@`K<w?rA   -8704279886565651802
+1bLxJZghLR%+&*w~wIggpMxY*Qs+k6m&_krgBoLd7B~:X#XdQRA.5NXJYMtWyCs9j      
FHFNkRk1vC4m<`iJETD1BT?A`,heYP( -7857556006370763693
+3:9W6eDavlF1n=D0=Uam!gpoCQgisrH        M6Z&    -7072378015249286235
+72HHKv=e:9b4_Fu0C;dW9<2/Wz/c(KlwuBS    G,C+:ndE        -8541785086945532478
+L(uWV9fg;-lt-q8BcJKkecoS5h:p8emH%YNwL=XC~U^.BY^3vR68)x4q=~N;6gNUXLQ%pTG9,k3&u#lb9EswE3)p#AGaN5Z(s7trSf^MLS
     j_<7=(t~*c;LR~52qQMV2NBw^lB*JHZge%      -8595400109785252164
+M)a*2ID$YKjV85(4sdIlOm_y_6#E4a-&B9g:DUs8tzogRRR3sJgU4iq4ZF+%5Sk8am*4(LBkSKZU_KnBzhy=y$zpGAdMv-R
        eh$M-n<`5S.@z_?yn85*T%e2+O=6-ZYv(d,keQULdS!VqUw^)J$16=AslNku    
-7858769039668974267
+Sh?@U;QdNu-CB%q+8Mq(n@NN&ga3cU//KDU-L>,_(      nS%oRp!GPfh,%>c*+v><iU3xqDXt    
-8396837115675039201
+Uxj_qqP:7B_*CXmc)5!k<qo!I~fY!k8Qwc7pqx*ezv=    
lTFY1.rVff&AQ74iuDTUGzdPj$N4ALVxm!Wb,YC8dklT..VV7lb8~8vDy9&+4;f>cKZ2J*OryV=0KbPG+c2-XQ1yH5/TV/nsUTTSS5S+Nc_ZU!dqMBdG#
   -7476127938744911589
+dHR`Om3C5@3q   tNccIq  -7769286895858329340
 
 -- !sql --
 false
diff --git 
a/regression-test/data/datatype_p0/nested_types/string_len/test_string_len_complex.out
 
b/regression-test/data/datatype_p0/nested_types/string_len/test_string_len_complex.out
new file mode 100644
index 00000000000..acc8e888691
--- /dev/null
+++ 
b/regression-test/data/datatype_p0/nested_types/string_len/test_string_len_complex.out
@@ -0,0 +1,43 @@
+-- This file is automatically generated. You should know what you did if you 
want to edit this
+-- !sql_array_all1 --
+1      ["12345678901", "12345678902", "12345678903"]
+2      ["22345678901", "22345678902", "22345678903"]
+3      ["32345678901", "32345678902", "32345678903"]
+
+-- !sql_array_all2 --
+
+-- !sql_array_all3 --
+1      [["12345678901", "12345678902"], ["12345678903"]]
+2      [["22345678901", "22345678902"], ["22345678903"]]
+3      [["32345678901", "32345678902"], ["32345678903"]]
+
+-- !sql_array_all4 --
+
+-- !sql_struct_all1 --
+1      {"phone":"12345678901"}
+2      {"phone":"12345678902"}
+3      {"phone":"12345678903"}
+
+-- !sql_struct_all2 --
+
+-- !sql_struct_all3 --
+1      {"phone":"12345678901", "addr":{"province":"12345678902", 
"city":"12345678903"}}
+2      {"phone":"22345678901", "addr":{"province":"22345678902", 
"city":"22345678903"}}
+3      {"phone":"32345678901", "addr":{"province":"32345678902", 
"city":"32345678903"}}
+
+-- !sql_struct_all4 --
+
+-- !sql_map_all1 --
+1      {"01234567891":"12345678901", "01234567892":"12345678902"}
+2      {"01234567891":"22345678901", "01234567892":"22345678902"}
+3      {"01234567891":"32345678901", "01234567892":"32345678902"}
+
+-- !sql_map_all2 --
+
+-- !sql_map_all3 --
+1      {{"01234567891":"12345678901"}:{"11234567891":"12345678901"}, 
{"01234567892":"12345678902"}:{"11234567892":"12345678902"}}
+2      {{"01234567891":"22345678901"}:{"11234567891":"22345678901"}, 
{"01234567892":"22345678902"}:{"11234567892":"22345678902"}}
+3      {{"01234567891":"32345678901"}:{"11234567891":"32345678901"}, 
{"01234567892":"32345678902"}:{"11234567892":"32345678902"}}
+
+-- !sql_map_all4 --
+
diff --git 
a/regression-test/suites/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.groovy
 
b/regression-test/suites/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.groovy
index 57feffbb9eb..8efcd399d61 100644
--- 
a/regression-test/suites/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.groovy
+++ 
b/regression-test/suites/datatype_p0/nested_types/base_cases/one_level_nestedtypes_with_s3data.groovy
@@ -155,9 +155,9 @@ suite("one_level_nestedtypes_with_s3data") {
     // select element_at(column)
     for (String col : colNameArr) {
         // first
-        order_qt_select_arr "select ${col}[1] from ${table_names[0]} where k1 
IS NOT NULL order by k1 limit 10;"
+        order_qt_select_arr "select ${col}[1], k1 from ${table_names[0]} where 
k1 IS NOT NULL order by k1 limit 10;"
         // last
-        order_qt_select_arr "select ${col}[-1] from ${table_names[0]} where k1 
IS NOT NULL order by k1 limit 10;"
+        order_qt_select_arr "select ${col}[-1], k1 from ${table_names[0]} 
where k1 IS NOT NULL order by k1 limit 10;"
         // null
         order_qt_select_arr_null "select ${col}[0] from ${table_names[0]} 
where k1 IS NOT NULL order by k1 limit 10;"
         // null
@@ -165,7 +165,7 @@ suite("one_level_nestedtypes_with_s3data") {
     }
     // select * from table where element_at(column) with equal expr
     for (String col : colNameArr) {
-        order_qt_select_arr "select ${col}[1], ${col}[-1] from 
${table_names[0]} where k1 IS NOT NULL AND ${col}[1]<${col}[-1] order by k1 
limit 10;"
+        order_qt_select_arr "select ${col}[1], ${col}[-1], k1 from 
${table_names[0]} where k1 IS NOT NULL AND ${col}[1]<${col}[-1] order by k1 
limit 10;"
     }
     // select * from table where groupby|orderby element_at(column)
     for (String col : colNameArr) {
diff --git 
a/regression-test/suites/datatype_p0/nested_types/string_len/test_string_len_complex.groovy
 
b/regression-test/suites/datatype_p0/nested_types/string_len/test_string_len_complex.groovy
new file mode 100644
index 00000000000..2c5b3d4be17
--- /dev/null
+++ 
b/regression-test/suites/datatype_p0/nested_types/string_len/test_string_len_complex.groovy
@@ -0,0 +1,229 @@
+// 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_string_len_complex") {
+    // test array one level
+    def create_table_array_one_level = {
+        sql """ DROP TABLE IF EXISTS test_string_len_array_one_level """
+        sql """
+            CREATE TABLE `test_string_len_array_one_level` (
+              `id` int(11),
+              `info` array<char(11)>
+            ) PROPERTIES ("replication_num" = "1");
+        """
+    }
+    create_table_array_one_level()
+    sql """
+    set enable_insert_strict = false;
+    """
+    sql """
+    insert into test_string_len_array_one_level values (1, ['12345678901', 
'12345678902', '12345678903x']),
+    (2, ['22345678901', '22345678902', '22345678903x']),
+    (3, ['32345678901', '32345678902', '32345678903x']);
+    """
+    qt_sql_array_all1 """ select * from test_string_len_array_one_level order 
by id """
+
+    create_table_array_one_level()
+    sql """
+    set enable_insert_strict = true;
+    """
+    test {
+        sql """
+        insert into test_string_len_array_one_level values (1, ['12345678901', 
'12345678902', '12345678903x']),
+        (2, ['22345678901', '22345678902', '22345678903x']),
+        (3, ['32345678901', '32345678902', '32345678903x']);
+        """
+        exception "Insert has filtered data in strict mode"
+    }
+    qt_sql_array_all2 """ select * from test_string_len_array_one_level order 
by id """
+
+    // test array one level
+    def create_table_array_two_level = {
+        sql """ DROP TABLE IF EXISTS test_string_len_array_two_level """
+        sql """
+            CREATE TABLE `test_string_len_array_two_level` (
+              `id` int(11),
+              `info` array<array<char(11)>>
+            ) PROPERTIES ("replication_num" = "1");
+        """
+    }
+    create_table_array_two_level()
+    sql """
+    set enable_insert_strict = false;
+    """
+    sql """
+    insert into test_string_len_array_two_level values (1, [['12345678901', 
'12345678902'], ['12345678903x']]),
+    (2, [['22345678901', '22345678902'], ['22345678903x']]),
+    (3, [['32345678901', '32345678902'], ['32345678903x']]);
+    """
+    qt_sql_array_all3 """ select * from test_string_len_array_two_level order 
by id """
+
+    create_table_array_two_level()
+    sql """
+    set enable_insert_strict = true;
+    """
+    test {
+        sql """
+        insert into test_string_len_array_two_level values (1, 
[['12345678901', '12345678902'], ['12345678903x']]),
+        (2, [['22345678901', '22345678902'], ['22345678903x']]),
+        (3, [['32345678901', '32345678902'], ['32345678903x']]);
+        """
+        exception "Insert has filtered data in strict mode"
+    }
+    qt_sql_array_all4 """ select * from test_string_len_array_two_level order 
by id """
+
+    // test struct one level
+    def create_table_struct_one_level = {
+        sql """ DROP TABLE IF EXISTS test_string_len_struct_one_level """
+        sql """
+            CREATE TABLE `test_string_len_struct_one_level` (
+              `id` int(11),
+              `info` struct<phone:char(11)>
+            ) PROPERTIES ("replication_num" = "1");
+        """
+    }
+
+    sql """
+    set enable_insert_strict = false;
+    """
+    create_table_struct_one_level()
+    sql """
+    insert into test_string_len_struct_one_level values (1, {'12345678901'}), 
(2, {'12345678902'}), (3, {'12345678903x'});
+    """
+    qt_sql_struct_all1 """ select * from test_string_len_struct_one_level 
order by id; """
+
+    sql """
+    set enable_insert_strict = true;
+    """
+    create_table_struct_one_level()
+    test {
+        sql """
+        insert into test_string_len_struct_one_level values (1, 
{'12345678901'}), (2, {'12345678902'}), (3, {'12345678903x'});
+        """
+        exception "Insert has filtered data in strict mode"
+    }
+    qt_sql_struct_all2 """ select * from test_string_len_struct_one_level 
order by id; """
+
+    // test struct two level
+    def create_table_struct_two_level = {
+        sql """ DROP TABLE IF EXISTS test_string_len_struct_two_level """
+        sql """
+            CREATE TABLE `test_string_len_struct_two_level` (
+              `id` int(11),
+              `info` struct<phone:char(11), addr:struct<province:char(11), 
city:char(11)>>
+            ) PROPERTIES ("replication_num" = "1");
+        """
+    }
+    create_table_struct_two_level()
+    sql """
+    set enable_insert_strict = false;
+    """
+    sql """
+    insert into test_string_len_struct_two_level values (1, {'12345678901', 
{'12345678902', '12345678903'}}),
+    (2, {'22345678901', {'22345678902', '22345678903'}}),
+    (3, {'32345678901', {'32345678902x', '32345678903x'}});
+    """
+    qt_sql_struct_all3 """ select * from test_string_len_struct_two_level 
order by id; """
+
+    create_table_struct_two_level()
+    sql """
+    set enable_insert_strict = true;
+    """
+    test {
+        sql """
+        insert into test_string_len_struct_two_level values (1, 
{'12345678901', {'12345678902', '12345678903'}}),
+        (2, {'22345678901', {'22345678902', '22345678903'}}),
+        (3, {'32345678901', {'32345678902x', '32345678903x'}});
+        """
+        exception "Insert has filtered data in strict mode"
+    }
+    qt_sql_struct_all4 """  
+        select * from test_string_len_struct_two_level order by id;
+    """
+
+    // test map one level
+    def create_table_map_one_level = {
+        sql """ DROP TABLE IF EXISTS test_string_len_map_one_level """
+        sql """
+            CREATE TABLE `test_string_len_map_one_level` (
+              `id` int(11),
+              `info` map<char(11), char(11)>
+            ) PROPERTIES ("replication_num" = "1");
+        """
+    }
+    create_table_map_one_level()
+    sql """
+    set enable_insert_strict = false;
+    """
+    sql """
+    insert into test_string_len_map_one_level values (1, 
{'01234567891':'12345678901', '01234567892':'12345678902'}), 
+    (2, {'01234567891':'22345678901', '01234567892':'22345678902'}), 
+    (3, {'01234567891':'32345678901', '01234567892':'32345678902x'});
+    """
+    qt_sql_map_all1 """ select * from test_string_len_map_one_level order by 
id; """
+
+    create_table_map_one_level()
+    sql """
+    set enable_insert_strict = true;
+    """
+    test {
+        sql """
+        insert into test_string_len_map_one_level values (1, 
{'01234567891':'12345678901', '01234567892':'12345678902'}), 
+        (2, {'01234567891':'22345678901', '01234567892':'22345678902'}), 
+        (3, {'01234567891':'32345678901', '01234567892':'32345678902x'});
+        """
+        exception "Insert has filtered data in strict mode"
+    }
+    qt_sql_map_all2 """ select * from test_string_len_map_one_level order by 
id; """
+
+    // test map two level
+    def create_table_map_two_level = {
+        sql """ DROP TABLE IF EXISTS test_string_len_map_two_level """
+        sql """
+            CREATE TABLE `test_string_len_map_two_level` (
+              `id` int(11),
+              `info` map<map<char(11), char(11)>, map<char(11), char(11)>>
+            ) PROPERTIES ("replication_num" = "1");
+        """
+    }
+
+    create_table_map_two_level()
+    sql """
+    set enable_insert_strict = false;
+    """
+    sql """
+    insert into test_string_len_map_two_level values (1, { 
{'01234567891':'12345678901'}:{'11234567891':'12345678901'}, 
{'01234567892':'12345678902'}:{'11234567892':'12345678902'} } ), 
+    (2, { {'01234567891':'22345678901'}:{'11234567891':'22345678901'}, 
{'01234567892':'22345678902'}:{'11234567892':'22345678902'} } ), 
+    (3, { {'01234567891':'32345678901'}:{'11234567891':'32345678901'}, 
{'01234567892':'32345678902x'}:{'11234567892':'32345678902x'} } );
+    """
+    qt_sql_map_all3 """ select * from test_string_len_map_two_level order by 
id; """
+
+    create_table_map_two_level()
+    sql """
+    set enable_insert_strict = true;
+    """
+    test {
+        sql """
+        insert into test_string_len_map_two_level values (1, { 
{'01234567891':'12345678901'}:{'11234567891':'12345678901'}, 
{'01234567892':'12345678902'}:{'11234567892':'12345678902'} } ), 
+        (2, { {'01234567891':'22345678901'}:{'11234567891':'22345678901'}, 
{'01234567892':'22345678902'}:{'11234567892':'22345678902'} } ), 
+        (3, { {'01234567891':'32345678901'}:{'11234567891':'32345678901'}, 
{'01234567892':'32345678902x'}:{'11234567892':'32345678902x'} } );
+        """
+        exception "Insert has filtered data in strict mode"
+    }
+    qt_sql_map_all4 """ select * from test_string_len_map_two_level order by 
id; """
+
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to