diff --git a/be/src/vec/exec/format/parquet/parquet_common.cpp b/be/src/vec/exec/format/parquet/parquet_common.cpp index 09613b9dc867948..f71f511edd30ce3 100644 --- a/be/src/vec/exec/format/parquet/parquet_common.cpp +++ b/be/src/vec/exec/format/parquet/parquet_common.cpp @@ -78,11 +78,11 @@ bool FilterMap::can_filter_all(size_t remaining_num_values, size_t filter_map_in Status FilterMap::generate_nested_filter_map(const std::vector& rep_levels, std::vector& nested_filter_map_data, std::unique_ptr* nested_filter_map, - size_t* current_row_ptr, bool is_cross_page, - size_t start_index) const { + size_t* current_row_ptr, size_t start_index) const { if (!has_filter() || filter_all()) { - *nested_filter_map = std::make_unique(); - return Status::OK(); + return Status::InternalError(fmt::format( + "FilterMap::generate_nested_filter_map failed: has_filter={}, filter_all={}", + has_filter(), filter_all())); } if (rep_levels.empty()) { @@ -94,12 +94,12 @@ Status FilterMap::generate_nested_filter_map(const std::vector& rep_lev size_t current_row = current_row_ptr ? *current_row_ptr : 0; for (size_t i = start_index; i < rep_levels.size(); i++) { - if (!is_cross_page && i > start_index && rep_levels[i] == 0) { + if (i != start_index && rep_levels[i] == 0) { current_row++; if (current_row >= _filter_map_size) { - return Status::InvalidArgument( - fmt::format("Filter map size {} is not enough for {} rows", - _filter_map_size, current_row + 1)); + return Status::InvalidArgument(fmt::format( + "current_row >= _filter_map_size. current_row: {}, _filter_map_size: {}", + current_row, _filter_map_size)); } } nested_filter_map_data[i] = _filter_map_data[current_row]; diff --git a/be/src/vec/exec/format/parquet/parquet_common.h b/be/src/vec/exec/format/parquet/parquet_common.h index deb0a867229f668..cb156e380569ea1 100644 --- a/be/src/vec/exec/format/parquet/parquet_common.h +++ b/be/src/vec/exec/format/parquet/parquet_common.h @@ -77,9 +77,7 @@ class FilterMap { Status generate_nested_filter_map(const std::vector& rep_levels, std::vector& nested_filter_map_data, std::unique_ptr* nested_filter_map, - size_t* current_row_ptr, // 当前处理到哪一行 - bool is_cross_page, // 是否是跨页的情况 - size_t start_index = 0) const; // rep_levels的起始处理位置 + size_t* current_row_ptr, size_t start_index = 0) const; const uint8_t* filter_map_data() const { return _filter_map_data; } size_t filter_map_size() const { return _filter_map_size; } 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 0291625eb79a6f3..d0afba3a0a38641 100644 --- a/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp +++ b/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp @@ -323,9 +323,6 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType size_t* read_rows, bool* eof, bool is_dict_filter, bool align_rows) { std::unique_ptr nested_filter_map; - std::unique_ptr> nested_filter_map_data; - - size_t current_row; FilterMap* current_filter_map = &filter_map; size_t origin_size = 0; @@ -337,17 +334,22 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType } else { _rep_levels.resize(0); _def_levels.resize(0); + if (_nested_filter_map_data) { + _nested_filter_map_data->resize(0); + } } size_t parsed_rows = 0; size_t remaining_values = _chunk_reader->remaining_num_values(); bool has_rep_level = _chunk_reader->max_rep_level() > 0; bool has_def_level = _chunk_reader->max_def_level() > 0; + // Handle repetition levels (indicates nesting structure) if (has_rep_level) { LevelDecoder& rep_decoder = _chunk_reader->rep_level_decoder(); + // Read repetition levels until batch is full or no more values while (parsed_rows <= batch_size && remaining_values > 0) { level_t rep_level = rep_decoder.get_next(); - if (rep_level == 0) { + if (rep_level == 0) { // rep_level 0 indicates start of new row if (parsed_rows == batch_size) { rep_decoder.rewind_one(); break; @@ -358,13 +360,15 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType remaining_values--; } - if (filter_map.has_filter()) { - nested_filter_map_data = std::make_unique>(); - nested_filter_map_data->resize(_rep_levels.size()); - current_row = _orig_filter_map_index; + // Generate nested filter map + if (filter_map.has_filter() && (!filter_map.filter_all())) { + if (_nested_filter_map_data == nullptr) { + _nested_filter_map_data.reset(new std::vector()); + } RETURN_IF_ERROR(filter_map.generate_nested_filter_map( - _rep_levels, *nested_filter_map_data, &nested_filter_map, ¤t_row, false, - 0)); + _rep_levels, *_nested_filter_map_data, &nested_filter_map, + &_orig_filter_map_index, origin_size)); + // Update current_filter_map to nested_filter_map current_filter_map = nested_filter_map.get(); } } else if (!align_rows) { @@ -374,8 +378,8 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType _rep_levels.resize(parsed_rows, 0); } + // Process definition levels (indicates null values) size_t parsed_values = _chunk_reader->remaining_num_values() - remaining_values; - _def_levels.resize(origin_size + parsed_values); if (has_def_level) { _chunk_reader->def_level_decoder().get_levels(&_def_levels[origin_size], parsed_values); @@ -383,6 +387,7 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType std::fill(_def_levels.begin() + origin_size, _def_levels.end(), 0); } + // Handle nullable columns MutableColumnPtr data_column; std::vector null_map; NullMap* map_data_column = nullptr; @@ -399,6 +404,7 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType data_column = doris_column->assume_mutable(); } + // Process definition levels to build null map size_t has_read = origin_size; size_t ancestor_nulls = 0; size_t null_size = 0; @@ -445,7 +451,9 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType size_t num_values = parsed_values - ancestor_nulls; + // Handle filtered values if (current_filter_map->filter_all()) { + // Skip all values if everything is filtered if (null_size > 0) { RETURN_IF_ERROR(_chunk_reader->skip_values(null_size, false)); } @@ -461,7 +469,7 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType SCOPED_RAW_TIMER(&_decode_null_map_time); RETURN_IF_ERROR( select_vector.init(null_map, num_values, map_data_column, current_filter_map, - nested_filter_map_data ? origin_size : _filter_map_index)); + _nested_filter_map_data ? origin_size : _filter_map_index)); } RETURN_IF_ERROR( @@ -470,11 +478,10 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType RETURN_IF_ERROR(_chunk_reader->skip_values(ancestor_nulls, false)); } } - - if (!align_rows) { - *read_rows = parsed_rows; - } + *read_rows += parsed_rows; _filter_map_index += parsed_values; + + // Handle cross-page reading if (_chunk_reader->remaining_num_values() == 0) { if (_chunk_reader->has_next_page()) { RETURN_IF_ERROR(_chunk_reader->next_page()); @@ -486,6 +493,7 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType } } + // Apply filtering to repetition and definition levels if (current_filter_map->has_filter()) { if (current_filter_map->filter_all()) { _rep_levels.resize(0); @@ -510,7 +518,8 @@ Status ScalarColumnReader::_read_nested_column(ColumnPtr& doris_column, DataType } } - _orig_filter_map_index = current_row + 1; + // Prepare for next row + ++_orig_filter_map_index; if (_rep_levels.size() > 0) { // make sure the rows of complex type are aligned correctly, 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 fc3d78ae0622534..51cdc3dbbd75203 100644 --- a/be/src/vec/exec/format/parquet/vparquet_column_reader.h +++ b/be/src/vec/exec/format/parquet/vparquet_column_reader.h @@ -201,6 +201,7 @@ class ScalarColumnReader : public ParquetColumnReader { std::vector _rep_levels; std::vector _def_levels; std::unique_ptr _converter = nullptr; + std::unique_ptr> _nested_filter_map_data = nullptr; size_t _orig_filter_map_index = 0; Status _skip_values(size_t num_values); diff --git a/be/test/vec/exec/parquet/parquet_common_test.cpp b/be/test/vec/exec/parquet/parquet_common_test.cpp new file mode 100644 index 000000000000000..067153629379b0b --- /dev/null +++ b/be/test/vec/exec/parquet/parquet_common_test.cpp @@ -0,0 +1,457 @@ +// 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/parquet/parquet_common.h" + +#include + +namespace doris::vectorized { + +// ============= FilterMap Tests ============= +class FilterMapTest : public testing::Test { +protected: + void SetUp() override {} + void TearDown() override {} +}; + +// Basic initialization test +TEST_F(FilterMapTest, test_basic_init) { + std::vector filter_data = {1, 0, 1, 0}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + EXPECT_TRUE(filter_map.has_filter()); + EXPECT_FALSE(filter_map.filter_all()); + EXPECT_EQ(filter_map.filter_map_size(), 4); + EXPECT_DOUBLE_EQ(filter_map.filter_ratio(), 0.5); +} + +// Empty filter test +TEST_F(FilterMapTest, test_empty_filter) { + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(nullptr, 0, false).ok()); + + EXPECT_FALSE(filter_map.has_filter()); + EXPECT_FALSE(filter_map.filter_all()); + EXPECT_DOUBLE_EQ(filter_map.filter_ratio(), 0.0); +} + +// Test filter all +TEST_F(FilterMapTest, test_filter_all) { + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(nullptr, 0, true).ok()); + + EXPECT_TRUE(filter_map.has_filter()); + EXPECT_TRUE(filter_map.filter_all()); + EXPECT_DOUBLE_EQ(filter_map.filter_ratio(), 1.0); +} + +// Test all zero filter +TEST_F(FilterMapTest, test_all_zero_filter) { + std::vector filter_data(100, 0); // Large data test + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + EXPECT_TRUE(filter_map.has_filter()); + EXPECT_TRUE(filter_map.filter_all()); + EXPECT_DOUBLE_EQ(filter_map.filter_ratio(), 1.0); +} + +// Test all one filter +TEST_F(FilterMapTest, test_all_one_filter) { + std::vector filter_data(100, 1); + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + EXPECT_FALSE(filter_map.has_filter()); + EXPECT_FALSE(filter_map.filter_all()); + EXPECT_DOUBLE_EQ(filter_map.filter_ratio(), 0.0); +} + +// Basic nested filter map generation test +TEST_F(FilterMapTest, test_generate_nested_filter_map_basic) { + std::vector filter_data = {1, 0, 1}; + std::vector rep_levels = {0, 1, 1, 0, 1, 0}; + + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_filter_map_data; + std::unique_ptr nested_filter_map; + size_t current_row = 0; + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, 0) + .ok()); + + std::vector expected = {1, 1, 1, 0, 0, 1}; + EXPECT_EQ(nested_filter_map_data, expected); + EXPECT_EQ(current_row, 2); +} + +// Empty rep_levels test +TEST_F(FilterMapTest, test_generate_nested_filter_map_empty_rep_levels) { + std::vector filter_data = {1, 0, 1}; + std::vector rep_levels; + + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_filter_map_data; + std::unique_ptr nested_filter_map; + size_t current_row = 0; + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, 0) + .ok()); + + EXPECT_TRUE(nested_filter_map_data.empty()); + EXPECT_EQ(current_row, 0); +} + +// Test nested filter map generation with start index +TEST_F(FilterMapTest, test_generate_nested_filter_map_with_start_index) { + std::vector filter_data = {1, 0, 1}; + std::vector rep_levels = {0, 1, 1, 0, 1, 0}; + // 011, 01, 0 + // 111, 00, 1 + + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_filter_map_data; + std::unique_ptr nested_filter_map; + size_t current_row = 1; + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, 3) + .ok()); + + std::vector expected(6); // Initialize with zeros + expected[5] = 1; // Last value should be 1 + EXPECT_EQ(nested_filter_map_data, expected); + EXPECT_EQ(current_row, 2); +} + +// Test filter map boundary check +TEST_F(FilterMapTest, test_generate_nested_filter_map_boundary) { + std::vector filter_data = {1}; + std::vector rep_levels = {0, 1, 1, 0}; // Needs 2 rows but filter_data only has 1 + + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_filter_map_data; + std::unique_ptr nested_filter_map; + size_t current_row = 0; + + // Should return error + auto status = filter_map.generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, 0); + EXPECT_FALSE(status.ok()); +} + +// Test can_filter_all functionality +TEST_F(FilterMapTest, test_can_filter_all) { + std::vector filter_data = {0, 0, 1, 0, 0, 1, 0}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + EXPECT_TRUE(filter_map.can_filter_all(2, 0)); // First two are 0 + EXPECT_FALSE(filter_map.can_filter_all(3, 0)); // First three include 1 + EXPECT_TRUE(filter_map.can_filter_all(2, 3)); // Two values starting at index 3 are 0 + EXPECT_FALSE(filter_map.can_filter_all(2, 5)); // Index 5 contains 1 + EXPECT_TRUE(filter_map.can_filter_all(1, 6)); // Last value is 0 +} + +// Test can_filter_all when filter_all is true +TEST_F(FilterMapTest, test_can_filter_all_when_filter_all) { + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(nullptr, 100, true).ok()); + + EXPECT_TRUE(filter_map.can_filter_all(50, 0)); + EXPECT_TRUE(filter_map.can_filter_all(100, 0)); +} + +class CrossPageTest : public testing::Test { +protected: + void SetUp() override { + filter_data = {1, 0, 1, 0, 1}; + + // 1111 00 + page1_rep_levels = {0, 1, 1, 1, 0, 1}; + // 00 11 000 1 + page2_rep_levels = {1, 1, 0, 1, 0, 1, 1, 0}; + } + + std::vector filter_data; + std::vector page1_rep_levels; + std::vector page2_rep_levels; +}; + +TEST_F(CrossPageTest, test_basic1) { + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_filter_map_data; + std::unique_ptr nested_filter_map; + size_t current_row = 0; + std::vector rep_levels; + rep_levels.insert(rep_levels.end(), page1_rep_levels.begin(), page1_rep_levels.end()); + rep_levels.insert(rep_levels.end(), page2_rep_levels.begin(), page2_rep_levels.end()); + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, 0) + .ok()); + + std::vector expected = {1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1}; + + EXPECT_EQ(nested_filter_map_data, expected); + + EXPECT_EQ(current_row, 4); +} + +TEST_F(CrossPageTest, test_basic2) { + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_filter_map_data; + std::unique_ptr nested_filter_map; + + size_t current_row = 0; + std::vector rep_levels; + rep_levels.insert(rep_levels.end(), page1_rep_levels.begin(), page1_rep_levels.end()); + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, 0) + .ok()); + std::vector expected1 = {1, 1, 1, 1, 0, 0}; + + EXPECT_EQ(nested_filter_map_data, expected1); + EXPECT_EQ(current_row, 1); + + rep_levels.insert(rep_levels.end(), page2_rep_levels.begin(), page2_rep_levels.end()); + + size_t start_index = page1_rep_levels.size(); + ASSERT_TRUE(filter_map + .generate_nested_filter_map(rep_levels, nested_filter_map_data, + &nested_filter_map, ¤t_row, start_index) + .ok()); + + std::vector expected2 = {1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1}; + + EXPECT_EQ(nested_filter_map_data, expected2); + EXPECT_EQ(current_row, 4); +} + +// ============= ColumnSelectVector Tests ============= +class ColumnSelectVectorTest : public testing::Test { +protected: + void SetUp() override {} + void TearDown() override {} +}; + +// Basic initialization test +TEST_F(ColumnSelectVectorTest, test_basic_init) { + std::vector run_length_null_map = {2, 1, 3}; // 2 non-null, 1 null, 3 non-null + std::vector filter_data = {1, 0, 1, 0, 1, 0}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, &null_map, &filter_map, 0).ok()); + + EXPECT_TRUE(select_vector.has_filter()); + EXPECT_EQ(select_vector.num_values(), 6); + EXPECT_EQ(select_vector.num_nulls(), 1); + EXPECT_EQ(select_vector.num_filtered(), 3); +} + +// Test initialization without null map +TEST_F(ColumnSelectVectorTest, test_init_without_null_map) { + std::vector run_length_null_map = {2, 1, 3}; + std::vector filter_data = {1, 1, 1, 1, 1, 1}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, nullptr, &filter_map, 0).ok()); + + EXPECT_EQ(select_vector.num_nulls(), 1); + EXPECT_EQ(select_vector.num_filtered(), 0); +} + +// Test all null values +TEST_F(ColumnSelectVectorTest, test_all_null) { + std::vector run_length_null_map = {0, 6}; // All null + std::vector filter_data = {1, 1, 1, 1, 1, 1}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, &null_map, &filter_map, 0).ok()); + + EXPECT_EQ(select_vector.num_nulls(), 6); + EXPECT_EQ(select_vector.num_filtered(), 0); + + // Verify null_map + EXPECT_EQ(null_map.size(), 6); + for (size_t i = 0; i < 6; i++) { + EXPECT_EQ(null_map[i], 1); + } +} + +// Test no null values +TEST_F(ColumnSelectVectorTest, test_no_null) { + std::vector run_length_null_map = {6}; // All non-null + std::vector filter_data = {1, 1, 1, 1, 1, 1}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, &null_map, &filter_map, 0).ok()); + + EXPECT_EQ(select_vector.num_nulls(), 0); + EXPECT_EQ(select_vector.num_filtered(), 0); + + // Verify null_map + EXPECT_EQ(null_map.size(), 6); + for (size_t i = 0; i < 6; i++) { + EXPECT_EQ(null_map[i], 0); + } +} + +// Test get_next_run with filter +TEST_F(ColumnSelectVectorTest, test_get_next_run_with_filter) { + std::vector run_length_null_map = {2, 1, 3}; // 1, 1, 0, 1, 1, 1 + std::vector filter_data = {1, 1, 0, 1, 1, 0}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, &null_map, &filter_map, 0).ok()); + + ColumnSelectVector::DataReadType type; + + // Verify read sequence + EXPECT_EQ(select_vector.get_next_run(&type), 2); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::FILTERED_NULL); + + EXPECT_EQ(select_vector.get_next_run(&type), 2); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::FILTERED_CONTENT); +} + +// Test get_next_run without filter +TEST_F(ColumnSelectVectorTest, test_get_next_run_without_filter) { + std::vector run_length_null_map = {2, 1, 3}; + std::vector filter_data = {1, 1, 1, 1, 1, 1}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(nullptr, 0, false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, &null_map, &filter_map, 0).ok()); + + ColumnSelectVector::DataReadType type; + + // Verify read sequence + EXPECT_EQ(select_vector.get_next_run(&type), 2); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::NULL_DATA); + + EXPECT_EQ(select_vector.get_next_run(&type), 3); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 0); +} + +// Test complex null pattern +TEST_F(ColumnSelectVectorTest, test_complex_null_pattern) { + // Alternating null and non-null values + std::vector run_length_null_map = {1, 1, 1, 1, 1, 1}; // 1, 0, 1, 0, 1, 0 + std::vector filter_data = {1, 0, 1, 0, 1, 0}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 6, &null_map, &filter_map, 0).ok()); + + EXPECT_EQ(select_vector.num_nulls(), 3); + EXPECT_EQ(select_vector.num_filtered(), 3); + + ColumnSelectVector::DataReadType type; + + // Verify alternating read pattern + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::FILTERED_NULL); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::FILTERED_NULL); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); + + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::FILTERED_NULL); +} + +// Test filter_map_index +TEST_F(ColumnSelectVectorTest, test_filter_map_index) { + std::vector run_length_null_map = {0, 1, 3}; // 0, 1, 1, 1 + std::vector filter_data = {0, 0, 1, 1, 1, 1}; + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + ColumnSelectVector select_vector; + NullMap null_map; + ASSERT_TRUE(select_vector.init(run_length_null_map, 4, &null_map, &filter_map, 2).ok()); + + EXPECT_EQ(select_vector.num_filtered(), 0); + + ColumnSelectVector::DataReadType type; + EXPECT_EQ(select_vector.get_next_run(&type), 1); + EXPECT_EQ(type, ColumnSelectVector::NULL_DATA); + + EXPECT_EQ(select_vector.get_next_run(&type), 3); + EXPECT_EQ(type, ColumnSelectVector::CONTENT); +} + +} // namespace doris::vectorized diff --git a/be/test/vec/exec/parquet/parquet_nested_type_cross_page_test.cpp b/be/test/vec/exec/parquet/parquet_nested_type_cross_page_test.cpp new file mode 100644 index 000000000000000..cff0937910e9a87 --- /dev/null +++ b/be/test/vec/exec/parquet/parquet_nested_type_cross_page_test.cpp @@ -0,0 +1,179 @@ +// 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 "vec/exec/format/parquet/parquet_common.h" + +namespace doris::vectorized { +class ParquetCrossPageTest : public testing::Test { +protected: + void SetUp() override { + // filter_data is row-level, corresponding to 8 rows + filter_data = {1, 0, 0, 1, 0, 0, 1, 1}; // filter conditions for 8 rows + + // Page 1: 2 complete rows + 1 incomplete row + page1_rep_levels = { + 0, 1, 1, // Row 1: [1,1,1] + 0, 1, // Row 2: [1,1] + 0, 1, 1 // Row 3: [1,1,to be continued...] + }; + + // Page 2: continue Row 3 + 2 complete rows + 1 incomplete row + page2_rep_levels = { + 1, 1, // Continue Row 3: [...1,1] + 0, 1, // Row 4: [1] + 0, 1, 1, // Row 5: [1,1,1] + 0, 1 // Row 6: [1,to be continued...] + }; + + // Page 3: continue Row 6 + 2 complete rows + page3_rep_levels = { + 1, 1, // Continue Row 6: [...1,1] + 0, 1, 1, // Row 7: [1,1] + 0, 1 // Row 8: [1] + }; + } + + std::vector filter_data; // Row-level filter conditions for all data + std::vector page1_rep_levels; + std::vector page2_rep_levels; + std::vector page3_rep_levels; +}; + +// Test complete processing of three pages +TEST_F(ParquetCrossPageTest, test_three_pages_complete) { + size_t current_row = 0; + + // Process first page + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(filter_data.data(), filter_data.size(), false).ok()); + + std::vector nested_data1; + std::unique_ptr nested_map1; + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(page1_rep_levels, nested_data1, &nested_map1, + ¤t_row, 0) + .ok()); + + // Verify first page results - using corresponding rows from overall filter_data + std::vector expected1 = {1, 1, 1, 0, 0, 0, 0, 0}; + EXPECT_EQ(nested_data1, expected1); + EXPECT_EQ(current_row, 2); // Processed up to Row 3 + + // Process second page - continue with same filter_map + std::vector nested_data2; + std::unique_ptr nested_map2; + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(page2_rep_levels, nested_data2, &nested_map2, + ¤t_row, 0) + .ok()); + + // Verify second page results + std::vector expected2 = {0, 0, 1, 1, 0, 0, 0, 0, 0}; + EXPECT_EQ(nested_data2, expected2); + EXPECT_EQ(current_row, 5); // Processed up to Row 6 + + // Process third page - continue with same filter_map + std::vector nested_data3; + std::unique_ptr nested_map3; + + ASSERT_TRUE(filter_map + .generate_nested_filter_map(page3_rep_levels, nested_data3, &nested_map3, + ¤t_row, 0) + .ok()); + + // Verify third page results + std::vector expected3 = {0, 0, 1, 1, 1, 1, 1}; + EXPECT_EQ(nested_data3, expected3); + EXPECT_EQ(current_row, 7); // Processed all 8 rows +} + +// Test case where a single row spans three pages +TEST_F(ParquetCrossPageTest, test_single_row_across_three_pages) { + // Filter for one long array row + std::vector row_filter = {1, 0}; // Only 2 rows of data + + // First page + std::vector rep1 = { + 0, // Start of first row + 1, 1, 1, // 3 array elements + 1, 1 // To be continued... + }; + + // Second page + std::vector rep2 = { + 1, 1, 1, // Continue with 3 array elements + 1, 1, 1 // To be continued... + }; + + // Third page + std::vector rep3 = { + 1, 1, 1, // Last 3 array elements + 0 // Start of second row + }; + + size_t current_row = 0; + + // Use same filter_map for all pages + FilterMap filter_map; + ASSERT_TRUE(filter_map.init(row_filter.data(), row_filter.size(), false).ok()); + + // Process first page + std::vector nested_data1; + std::unique_ptr nested_map1; + + ASSERT_TRUE( + filter_map.generate_nested_filter_map(rep1, nested_data1, &nested_map1, ¤t_row, 0) + .ok()); + + // Verify first page results + std::vector expected1(rep1.size(), 1); // All use first row's filter value + EXPECT_EQ(nested_data1, expected1); + EXPECT_EQ(current_row, 0); // Still in first row + + // Process second page + std::vector nested_data2; + std::unique_ptr nested_map2; + + ASSERT_TRUE( + filter_map.generate_nested_filter_map(rep2, nested_data2, &nested_map2, ¤t_row, 0) + .ok()); + + // Verify second page results + std::vector expected2(rep2.size(), 1); // Still using first row's filter value + EXPECT_EQ(nested_data2, expected2); + EXPECT_EQ(current_row, 0); // Still in first row + + // Process third page + std::vector nested_data3; + std::unique_ptr nested_map3; + + ASSERT_TRUE( + filter_map.generate_nested_filter_map(rep3, nested_data3, &nested_map3, ¤t_row, 0) + .ok()); + + // Verify third page results + std::vector expected3(rep3.size(), 1); + expected3.back() = 0; // Last element uses second row's filter value + EXPECT_EQ(nested_data3, expected3); + EXPECT_EQ(current_row, 1); // Moved to second row +} + +} // namespace doris::vectorized diff --git a/be/test/vec/exec/parquet/parquet_thrift_test.cpp b/be/test/vec/exec/parquet/parquet_thrift_test.cpp index fe2221bf8d37256..dc69c214f531f7b 100644 --- a/be/test/vec/exec/parquet/parquet_thrift_test.cpp +++ b/be/test/vec/exec/parquet/parquet_thrift_test.cpp @@ -230,12 +230,14 @@ static Status get_column_values(io::FileReaderSPtr file_reader, tparquet::Column } else { data_column = src_column->assume_mutable(); } + FilterMap filter_map; + RETURN_IF_ERROR(filter_map.init(nullptr, 0, false)); ColumnSelectVector run_length_map; // decode page data if (field_schema->definition_level == 0) { // required column std::vector null_map = {(u_short)rows}; - run_length_map.set_run_length_null_map(null_map, rows, nullptr); + RETURN_IF_ERROR(run_length_map.init(null_map, rows, nullptr, &filter_map, 0)); RETURN_IF_ERROR( chunk_reader.decode_values(data_column, resolved_type, run_length_map, false)); } else { @@ -249,7 +251,7 @@ static Status get_column_values(io::FileReaderSPtr file_reader, tparquet::Column chunk_reader.insert_null_values(data_column, num_values); } else { std::vector null_map = {(u_short)num_values}; - run_length_map.set_run_length_null_map(null_map, rows, nullptr); + RETURN_IF_ERROR(run_length_map.init(null_map, rows, nullptr, &filter_map, 0)); RETURN_IF_ERROR(chunk_reader.decode_values(data_column, resolved_type, run_length_map, false)); } @@ -264,7 +266,7 @@ static Status get_column_values(io::FileReaderSPtr file_reader, tparquet::Column chunk_reader.insert_null_values(data_column, num_values); } else { std::vector null_map = {(u_short)num_values}; - run_length_map.set_run_length_null_map(null_map, rows, nullptr); + RETURN_IF_ERROR(run_length_map.init(null_map, rows, nullptr, &filter_map, 0)); RETURN_IF_ERROR( chunk_reader.decode_values(data_column, resolved_type, run_length_map, false)); } diff --git a/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/create_table.hql b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/create_table.hql new file mode 100644 index 000000000000000..9aa256b210aca44 --- /dev/null +++ b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/create_table.hql @@ -0,0 +1,42 @@ +CREATE DATABASE IF NOT EXISTS multi_catalog; +USE multi_catalog; + +CREATE TABLE `nested_cross_page1_parquet`( + `id` int, + `array_col` array, + `description` string) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' +LOCATION + '/user/doris/suites/multi_catalog/nested_cross_page1_parquet'; + +msck repair table nested_cross_page1_parquet; + +CREATE TABLE `nested_cross_page2_parquet`( + id INT, + nested_array_col ARRAY>, + array_struct_col ARRAY>, + map_array_col MAP>, + complex_struct_col STRUCT< + a: ARRAY, + b: MAP>, + c: STRUCT< + x: ARRAY, + y: STRING + > + >, + description STRING) +ROW FORMAT SERDE + 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' +STORED AS INPUTFORMAT + 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' +OUTPUTFORMAT + 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat' +LOCATION + '/user/doris/suites/multi_catalog/nested_cross_page2_parquet'; + +msck repair table nested_cross_page2_parquet; diff --git a/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data.tar.gz b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data.tar.gz new file mode 100644 index 000000000000000..51af8457225552b Binary files /dev/null and b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data.tar.gz differ diff --git a/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data_gen_scripts/nested_cross_page_test1.py b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data_gen_scripts/nested_cross_page_test1.py new file mode 100644 index 000000000000000..9fff6d362cde497 --- /dev/null +++ b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data_gen_scripts/nested_cross_page_test1.py @@ -0,0 +1,192 @@ +import pyarrow as pa +import pyarrow.parquet as pq +import subprocess +import argparse +import json + +# Define the output file path as a constant +OUTPUT_PARQUET_FILE = 'nested_cross_page_test1.parquet' + +def generate_cross_page_test_data(output_file): + # Create test data + data = { + # id column (INT32) + 'id': [1, 2, 3], + + # array column (ARRAY) + 'array_col': [ + # Row 1 - Large array to force cross-page + [1, 2, 3, 4, 5] * 200, # 1000 elements + + # Row 2 - Normal sized array + [1, 2, 3], + + # Row 3 - Another large array + [6, 7, 8, 9, 10] * 200 # 1000 elements + ], + + # description column (STRING) + 'description': [ + 'This is a large array with repeated sequence [1,2,3,4,5]', + 'This is a small array with just three elements', + 'This is another large array with repeated sequence [6,7,8,9,10]' + ] + } + + # Create table structure + table = pa.Table.from_pydict({ + 'id': pa.array(data['id'], type=pa.int32()), + 'array_col': pa.array(data['array_col'], type=pa.list_(pa.int32())), + 'description': pa.array(data['description'], type=pa.string()) + }) + + # Write to parquet file + pq.write_table( + table, + output_file, + compression=None, # No compression for predictable size + version='2.6', + write_statistics=True, + row_group_size=3, # All data in one row group + data_page_size=100, # Very small page size + write_batch_size=10 # Small batch size + ) + +def inspect_parquet_file(file_path): + """Inspect the structure of generated parquet file""" + pf = pq.ParquetFile(file_path) + print(f"\nFile: {file_path}") + print(f"Number of row groups: {pf.num_row_groups}") + + metadata = pf.metadata + schema = pf.schema + print(f"\nSchema: {schema}") + print(f"\nDetailed schema:") + for i in range(len(schema)): + print(f"Column {i}: {schema[i]}") + + for i in range(metadata.num_row_groups): + rg = metadata.row_group(i) + print(f"\nRow Group {i}:") + print(f"Num rows: {rg.num_rows}") + + for j in range(rg.num_columns): + col = rg.column(j) + print(f"\nColumn {j}:") + print(f"Path: {schema[j].name}") + print(f"Type: {col.physical_type}") + print(f"Encodings: {col.encodings}") + print(f"Total compressed size: {col.total_compressed_size}") + print(f"Total uncompressed size: {col.total_uncompressed_size}") + print(f"Number of values: {col.num_values}") + print(f"Data page offset: {col.data_page_offset}") + if col.dictionary_page_offset is not None: + print(f"Dictionary page offset: {col.dictionary_page_offset}") + +def read_and_print_file(file_path): + """Read and print file content""" + table = pq.read_table(file_path) + df = table.to_pandas() + print("\nFile content:") + for i in range(len(df)): + print(f"\nRow {i}:") + print(f"ID: {df.iloc[i]['id']}") + arr = df.iloc[i]['array_col'] + print(f"Array length: {len(arr)}") + print(f"First few elements: {arr[:5]}...") + print(f"Last few elements: ...{arr[-5:]}") + print(f"Description: {df.iloc[i]['description']}") + +def inspect_pages_with_cli(file_path, parquet_cli_path=None): + """ + Inspect page information using parquet-cli + + Args: + file_path: Path to the parquet file + parquet_cli_path: Optional path to parquet-cli jar file + """ + if not parquet_cli_path: + print("\nSkipping parquet-cli inspection: No parquet-cli path provided") + return + + print("\nParquet CLI Output:") + try: + cmd = f"java -jar {parquet_cli_path} pages {file_path}" + result = subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True) + print(result.stdout) + except subprocess.CalledProcessError as e: + print(f"Error running parquet-cli: {e}") + if e.output: + print(f"Error output: {e.output}") + except Exception as e: + print(f"Unexpected error running parquet-cli: {e}") + +def save_test_data_info(output_file): + """Save detailed test data information to text file""" + info = { + "file_format": "Parquet", + "version": "2.6", + "compression": "None", + "row_group_size": 3, + "data_page_size": 100, + "write_batch_size": 10, + "output_file": output_file, + "schema": { + "id": "INT32", + "array_col": "ARRAY", + "description": "STRING" + }, + "test_cases": [ + { + "row": 1, + "description": "Large array", + "characteristics": [ + "1000 elements", + "Repeated sequence [1,2,3,4,5]", + "Forces cross-page scenario" + ] + }, + { + "row": 2, + "description": "Small array", + "characteristics": [ + "3 elements", + "Simple sequence [1,2,3]", + "Fits in single page" + ] + }, + { + "row": 3, + "description": "Another large array", + "characteristics": [ + "1000 elements", + "Repeated sequence [6,7,8,9,10]", + "Forces cross-page scenario" + ] + } + ] + } + + info_file = output_file.replace('.parquet', '_info.json') + with open(info_file, 'w') as f: + json.dump(info, f, indent=2) + +if __name__ == '__main__': + # Add command line argument parsing + parser = argparse.ArgumentParser(description='Generate and inspect parquet test data') + parser.add_argument('--parquet-cli', + help='Path to parquet-cli jar file', + default=None) + parser.add_argument('--output', + help='Output parquet file path', + default=OUTPUT_PARQUET_FILE) + args = parser.parse_args() + + # Use the output file path from command line or default + output_file = args.output + + generate_cross_page_test_data(output_file) + inspect_parquet_file(output_file) + read_and_print_file(output_file) + inspect_pages_with_cli(output_file, args.parquet_cli) + save_test_data_info(output_file) diff --git a/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data_gen_scripts/nested_cross_page_test2.py b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data_gen_scripts/nested_cross_page_test2.py new file mode 100644 index 000000000000000..2e67e96213190eb --- /dev/null +++ b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/data_gen_scripts/nested_cross_page_test2.py @@ -0,0 +1,287 @@ +import pyarrow as pa +import pyarrow.parquet as pq +import subprocess +import json +import argparse + +# Define the output file path as a constant +OUTPUT_PARQUET_FILE = 'nested_cross_page_test2.parquet' + +def generate_cross_page_test_data(output_file): + # Create test data + data = { + # id column (INT32) + 'id': [1, 2, 3], + + # Multi-level array column (ARRAY>) + 'nested_array_col': [ + # Row 1 - Large array + [[i for i in range(10)] for _ in range(100)], # 100 sub-arrays, each with 10 elements + + # Row 2 - Small array + [[1, 2], [3, 4], [5, 6]], + + # Row 3 - Another large array + [[i for i in range(10, 20)] for _ in range(100)] + ], + + # Struct array column (ARRAY>) + 'array_struct_col': [ + # Row 1 + [{'x': i, 'y': f'value_{i}'} for i in range(500)], + + # Row 2 + [{'x': 1, 'y': 'small'}, {'x': 2, 'y': 'array'}], + + # Row 3 + [{'x': i, 'y': f'big_{i}'} for i in range(500)] + ], + + # Map column (MAP>) + 'map_array_col': [ + # Row 1 + {f'key_{i}': list(range(i, i+10)) for i in range(50)}, + + # Row 2 + {'small_key': [1, 2, 3]}, + + # Row 3 + {f'big_key_{i}': list(range(i*10, (i+1)*10)) for i in range(50)} + ], + + # Complex nested structure (STRUCT< + # a: ARRAY, + # b: MAP>, + # c: STRUCT, y: STRING> + # >) + 'complex_struct_col': [ + # Row 1 + { + 'a': list(range(100)), + 'b': {f'key_{i}': list(range(i, i+5)) for i in range(20)}, + 'c': {'x': list(range(50)), 'y': 'nested_struct_1'} + }, + + # Row 2 + { + 'a': [1, 2, 3], + 'b': {'small': [1, 2]}, + 'c': {'x': [1], 'y': 'small_struct'} + }, + + # Row 3 + { + 'a': list(range(100, 200)), + 'b': {f'big_{i}': list(range(i*5, (i+1)*5)) for i in range(20)}, + 'c': {'x': list(range(50)), 'y': 'nested_struct_2'} + } + ], + + # Description column (STRING) + 'description': [ + 'Row with large nested arrays and structures', + 'Row with small nested data', + 'Row with another set of large nested arrays and structures' + ] + } + + # Create complex table structure + table = pa.Table.from_pydict({ + 'id': pa.array(data['id'], type=pa.int32()), + + # Multi-level array type + 'nested_array_col': pa.array(data['nested_array_col'], + type=pa.list_(pa.list_(pa.int32()))), + + # Struct array type + 'array_struct_col': pa.array(data['array_struct_col'], + type=pa.list_(pa.struct([ + ('x', pa.int32()), + ('y', pa.string()) + ]))), + + # Map type + 'map_array_col': pa.array(data['map_array_col'], + type=pa.map_(pa.string(), pa.list_(pa.int32()))), + + # Complex nested structure type + 'complex_struct_col': pa.array(data['complex_struct_col'], + type=pa.struct([ + ('a', pa.list_(pa.int32())), + ('b', pa.map_(pa.string(), pa.list_(pa.int32()))), + ('c', pa.struct([ + ('x', pa.list_(pa.int32())), + ('y', pa.string()) + ])) + ])), + + 'description': pa.array(data['description'], type=pa.string()) + }) + + # Write to parquet file + pq.write_table( + table, + output_file, + compression=None, # No compression + version='2.6', + write_statistics=True, + row_group_size=3, # All data in one row group + data_page_size=100, # Very small page size + write_batch_size=1 # Minimum batch size + ) + +def inspect_parquet_file(file_path): + """Inspect the structure of generated parquet file""" + pf = pq.ParquetFile(file_path) + print(f"\nFile: {file_path}") + print(f"Number of row groups: {pf.num_row_groups}") + + metadata = pf.metadata + schema = pf.schema + print(f"\nSchema: {schema}") + print(f"\nDetailed schema:") + for i in range(len(schema)): + print(f"Column {i}: {schema[i]}") + + for i in range(metadata.num_row_groups): + rg = metadata.row_group(i) + print(f"\nRow Group {i}:") + print(f"Num rows: {rg.num_rows}") + + for j in range(rg.num_columns): + col = rg.column(j) + print(f"\nColumn {j}:") + print(f"Path: {schema[j].name}") + print(f"Type: {col.physical_type}") + print(f"Encodings: {col.encodings}") + print(f"Total compressed size: {col.total_compressed_size}") + print(f"Total uncompressed size: {col.total_uncompressed_size}") + print(f"Number of values: {col.num_values}") + print(f"Data page offset: {col.data_page_offset}") + if col.dictionary_page_offset is not None: + print(f"Dictionary page offset: {col.dictionary_page_offset}") + +def format_value(value): + """Format value for printing""" + if isinstance(value, (list, dict)): + return f"{str(value)[:100]}... (length: {len(str(value))})" + return str(value) + +def read_and_print_file(file_path): + """Read and print file content""" + table = pq.read_table(file_path) + df = table.to_pandas() + print("\nFile content:") + + for i in range(len(df)): + print(f"\nRow {i}:") + for column in df.columns: + value = df.iloc[i][column] + print(f"{column}: {format_value(value)}") + +def inspect_pages_with_cli(file_path, parquet_cli_path=None): + """ + Inspect page information using parquet-cli + + Args: + file_path: Path to the parquet file + parquet_cli_path: Optional path to parquet-cli jar file + """ + if not parquet_cli_path: + print("\nSkipping parquet-cli inspection: No parquet-cli path provided") + return + + print("\nParquet CLI Output:") + try: + cmd = f"java -jar {parquet_cli_path} pages {file_path}" + result = subprocess.run(cmd, shell=True, check=True, capture_output=True, text=True) + print(result.stdout) + except subprocess.CalledProcessError as e: + print(f"Error running parquet-cli: {e}") + if e.output: + print(f"Error output: {e.output}") + except Exception as e: + print(f"Unexpected error running parquet-cli: {e}") + +def save_test_data_info(output_file): + """Save detailed test data information to text file""" + info = { + "file_format": "Parquet", + "version": "2.6", + "compression": "None", + "row_group_size": 3, + "data_page_size": 100, + "write_batch_size": 1, + "output_file": output_file, + "schema": { + "id": "INT32", + "nested_array_col": "ARRAY>", + "array_struct_col": "ARRAY>", + "map_array_col": "MAP>", + "complex_struct_col": """STRUCT< + a: ARRAY, + b: MAP>, + c: STRUCT< + x: ARRAY, + y: STRING + > + >""", + "description": "STRING" + }, + "test_cases": [ + { + "row": 1, + "description": "Large nested data", + "characteristics": [ + "Large nested arrays (100 arrays of 10 elements each)", + "Large struct array (500 elements)", + "Large map (50 key-value pairs)", + "Complex nested structure with large arrays" + ] + }, + { + "row": 2, + "description": "Small nested data", + "characteristics": [ + "Small nested arrays (3 arrays of 2 elements each)", + "Small struct array (2 elements)", + "Small map (1 key-value pair)", + "Complex nested structure with small arrays" + ] + }, + { + "row": 3, + "description": "Another large nested data", + "characteristics": [ + "Large nested arrays (100 arrays of 10 elements each)", + "Large struct array (500 elements)", + "Large map (50 key-value pairs)", + "Complex nested structure with large arrays" + ] + } + ] + } + + info_file = output_file.replace('.parquet', '_info.json') + with open(info_file, 'w') as f: + json.dump(info, f, indent=2) + +if __name__ == '__main__': + # Add command line argument parsing + parser = argparse.ArgumentParser(description='Generate and inspect parquet test data') + parser.add_argument('--parquet-cli', + help='Path to parquet-cli jar file', + default=None) + parser.add_argument('--output', + help='Output parquet file path', + default=OUTPUT_PARQUET_FILE) + args = parser.parse_args() + + # Use the output file path from command line or default + output_file = args.output + + generate_cross_page_test_data(output_file) + inspect_parquet_file(output_file) + read_and_print_file(output_file) + inspect_pages_with_cli(output_file, args.parquet_cli) + save_test_data_info(output_file) diff --git a/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/run.sh b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/run.sh new file mode 100755 index 000000000000000..f3136eaa20094ae --- /dev/null +++ b/docker/thirdparties/docker-compose/hive/scripts/data/multi_catalog/parquet_nested_types/run.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -x + +CUR_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" + +## mkdir and put data to hdfs +cd "${CUR_DIR}" && rm -rf data/ && tar xzf data.tar.gz +hadoop fs -mkdir -p /user/doris/suites/multi_catalog/ +hadoop fs -put "${CUR_DIR}"/data/* /user/doris/suites/multi_catalog/ + +# create table +hive -f "${CUR_DIR}/create_table.hql" diff --git a/regression-test/data/external_table_p0/hive/test_parquet_nested_types.out b/regression-test/data/external_table_p0/hive/test_parquet_nested_types.out new file mode 100644 index 000000000000000..cc793ef96e4c2a3 --- /dev/null +++ b/regression-test/data/external_table_p0/hive/test_parquet_nested_types.out @@ -0,0 +1,913 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !nested_cross_page1_parquet_q1 -- +[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] + +-- !nested_cross_page1_parquet_q2 -- +[1, 2, 3] + +-- !nested_cross_page1_parquet_q3 -- +[6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10] + +-- !nested_cross_page1_parquet_q4 -- +1 1000 +2 3 +3 1000 + +-- !nested_cross_page1_parquet_q5 -- +1 1 3 +2 1 3 +3 6 8 + +-- !nested_cross_page1_parquet_q6 -- +1 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] +3 [6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10] + +-- !nested_cross_page1_parquet_q7 -- +1 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] +2 [1, 2, 3] + +-- !nested_cross_page1_parquet_q8 -- +2 [1, 2, 3] This is a small array with just three elements + +-- !nested_cross_page1_parquet_q9 -- +1 1 5 +2 1 3 +3 6 10 + +-- !nested_cross_page1_parquet_q10 -- +1 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] +3 [6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10] + +-- !nested_cross_page2_parquet_q1 -- +1 [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]] 100 + +-- !nested_cross_page2_parquet_q2 -- +2 [[1, 2], [3, 4], [5, 6]] 3 + +-- !nested_cross_page2_parquet_q3 -- +3 [[10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]] 100 + +-- !nested_cross_page2_parquet_q4 -- +1 [{"x":0, "y":"value_0"}, {"x":1, "y":"value_1"}, {"x":2, "y":"value_2"}, {"x":3, "y":"value_3"}, {"x":4, "y":"value_4"}, {"x":5, "y":"value_5"}, {"x":6, "y":"value_6"}, {"x":7, "y":"value_7"}, {"x":8, "y":"value_8"}, {"x":9, "y":"value_9"}, {"x":10, "y":"value_10"}, {"x":11, "y":"value_11"}, {"x":12, "y":"value_12"}, {"x":13, "y":"value_13"}, {"x":14, "y":"value_14"}, {"x":15, "y":"value_15"}, {"x":16, "y":"value_16"}, {"x":17, "y":"value_17"}, {"x":18, "y":"value_18"}, {"x":19, "y":"value_19"}, {"x":20, "y":"value_20"}, {"x":21, "y":"value_21"}, {"x":22, "y":"value_22"}, {"x":23, "y":"value_23"}, {"x":24, "y":"value_24"}, {"x":25, "y":"value_25"}, {"x":26, "y":"value_26"}, {"x":27, "y":"value_27"}, {"x":28, "y":"value_28"}, {"x":29, "y":"value_29"}, {"x":30, "y":"value_30"}, {"x":31, "y":"value_31"}, {"x":32, "y":"value_32"}, {"x":33, "y":"value_33"}, {"x":34, "y":"value_34"}, {"x":35, "y":"value_35"}, {"x":36, "y":"value_36"}, {"x":37, "y":"value_37"}, {"x":38, "y":"value_38"}, {"x":39, "y":"value_39"}, {"x":40, "y":"value_40"}, {"x":41, "y":"value_41"}, {"x":42, "y":"value_42"}, {"x":43, "y":"value_43"}, {"x":44, "y":"value_44"}, {"x":45, "y":"value_45"}, {"x":46, "y":"value_46"}, {"x":47, "y":"value_47"}, {"x":48, "y":"value_48"}, {"x":49, "y":"value_49"}, {"x":50, "y":"value_50"}, {"x":51, "y":"value_51"}, {"x":52, "y":"value_52"}, {"x":53, "y":"value_53"}, {"x":54, "y":"value_54"}, {"x":55, "y":"value_55"}, {"x":56, "y":"value_56"}, {"x":57, "y":"value_57"}, {"x":58, "y":"value_58"}, {"x":59, "y":"value_59"}, {"x":60, "y":"value_60"}, {"x":61, "y":"value_61"}, {"x":62, "y":"value_62"}, {"x":63, "y":"value_63"}, {"x":64, "y":"value_64"}, {"x":65, "y":"value_65"}, {"x":66, "y":"value_66"}, {"x":67, "y":"value_67"}, {"x":68, "y":"value_68"}, {"x":69, "y":"value_69"}, {"x":70, "y":"value_70"}, {"x":71, "y":"value_71"}, {"x":72, "y":"value_72"}, {"x":73, "y":"value_73"}, {"x":74, "y":"value_74"}, {"x":75, "y":"value_75"}, {"x":76, "y":"value_76"}, {"x":77, "y":"value_77"}, {"x":78, "y":"value_78"}, {"x":79, "y":"value_79"}, {"x":80, "y":"value_80"}, {"x":81, "y":"value_81"}, {"x":82, "y":"value_82"}, {"x":83, "y":"value_83"}, {"x":84, "y":"value_84"}, {"x":85, "y":"value_85"}, {"x":86, "y":"value_86"}, {"x":87, "y":"value_87"}, {"x":88, "y":"value_88"}, {"x":89, "y":"value_89"}, {"x":90, "y":"value_90"}, {"x":91, "y":"value_91"}, {"x":92, "y":"value_92"}, {"x":93, "y":"value_93"}, {"x":94, "y":"value_94"}, {"x":95, "y":"value_95"}, {"x":96, "y":"value_96"}, {"x":97, "y":"value_97"}, {"x":98, "y":"value_98"}, {"x":99, "y":"value_99"}, {"x":100, "y":"value_100"}, {"x":101, "y":"value_101"}, {"x":102, "y":"value_102"}, {"x":103, "y":"value_103"}, {"x":104, "y":"value_104"}, {"x":105, "y":"value_105"}, {"x":106, "y":"value_106"}, {"x":107, "y":"value_107"}, {"x":108, "y":"value_108"}, {"x":109, "y":"value_109"}, {"x":110, "y":"value_110"}, {"x":111, "y":"value_111"}, {"x":112, "y":"value_112"}, {"x":113, "y":"value_113"}, {"x":114, "y":"value_114"}, {"x":115, "y":"value_115"}, {"x":116, "y":"value_116"}, {"x":117, "y":"value_117"}, {"x":118, "y":"value_118"}, {"x":119, "y":"value_119"}, {"x":120, "y":"value_120"}, {"x":121, "y":"value_121"}, {"x":122, "y":"value_122"}, {"x":123, "y":"value_123"}, {"x":124, "y":"value_124"}, {"x":125, "y":"value_125"}, {"x":126, "y":"value_126"}, {"x":127, "y":"value_127"}, {"x":128, "y":"value_128"}, {"x":129, "y":"value_129"}, {"x":130, "y":"value_130"}, {"x":131, "y":"value_131"}, {"x":132, "y":"value_132"}, {"x":133, "y":"value_133"}, {"x":134, "y":"value_134"}, {"x":135, "y":"value_135"}, {"x":136, "y":"value_136"}, {"x":137, "y":"value_137"}, {"x":138, "y":"value_138"}, {"x":139, "y":"value_139"}, {"x":140, "y":"value_140"}, {"x":141, "y":"value_141"}, {"x":142, "y":"value_142"}, {"x":143, "y":"value_143"}, {"x":144, "y":"value_144"}, {"x":145, "y":"value_145"}, {"x":146, "y":"value_146"}, {"x":147, "y":"value_147"}, {"x":148, "y":"value_148"}, {"x":149, "y":"value_149"}, {"x":150, "y":"value_150"}, {"x":151, "y":"value_151"}, {"x":152, "y":"value_152"}, {"x":153, "y":"value_153"}, {"x":154, "y":"value_154"}, {"x":155, "y":"value_155"}, {"x":156, "y":"value_156"}, {"x":157, "y":"value_157"}, {"x":158, "y":"value_158"}, {"x":159, "y":"value_159"}, {"x":160, "y":"value_160"}, {"x":161, "y":"value_161"}, {"x":162, "y":"value_162"}, {"x":163, "y":"value_163"}, {"x":164, "y":"value_164"}, {"x":165, "y":"value_165"}, {"x":166, "y":"value_166"}, {"x":167, "y":"value_167"}, {"x":168, "y":"value_168"}, {"x":169, "y":"value_169"}, {"x":170, "y":"value_170"}, {"x":171, "y":"value_171"}, {"x":172, "y":"value_172"}, {"x":173, "y":"value_173"}, {"x":174, "y":"value_174"}, {"x":175, "y":"value_175"}, {"x":176, "y":"value_176"}, {"x":177, "y":"value_177"}, {"x":178, "y":"value_178"}, {"x":179, "y":"value_179"}, {"x":180, "y":"value_180"}, {"x":181, "y":"value_181"}, {"x":182, "y":"value_182"}, {"x":183, "y":"value_183"}, {"x":184, "y":"value_184"}, {"x":185, "y":"value_185"}, {"x":186, "y":"value_186"}, {"x":187, "y":"value_187"}, {"x":188, "y":"value_188"}, {"x":189, "y":"value_189"}, {"x":190, "y":"value_190"}, {"x":191, "y":"value_191"}, {"x":192, "y":"value_192"}, {"x":193, "y":"value_193"}, {"x":194, "y":"value_194"}, {"x":195, "y":"value_195"}, {"x":196, "y":"value_196"}, {"x":197, "y":"value_197"}, {"x":198, "y":"value_198"}, {"x":199, "y":"value_199"}, {"x":200, "y":"value_200"}, {"x":201, "y":"value_201"}, {"x":202, "y":"value_202"}, {"x":203, "y":"value_203"}, {"x":204, "y":"value_204"}, {"x":205, "y":"value_205"}, {"x":206, "y":"value_206"}, {"x":207, "y":"value_207"}, {"x":208, "y":"value_208"}, {"x":209, "y":"value_209"}, {"x":210, "y":"value_210"}, {"x":211, "y":"value_211"}, {"x":212, "y":"value_212"}, {"x":213, "y":"value_213"}, {"x":214, "y":"value_214"}, {"x":215, "y":"value_215"}, {"x":216, "y":"value_216"}, {"x":217, "y":"value_217"}, {"x":218, "y":"value_218"}, {"x":219, "y":"value_219"}, {"x":220, "y":"value_220"}, {"x":221, "y":"value_221"}, {"x":222, "y":"value_222"}, {"x":223, "y":"value_223"}, {"x":224, "y":"value_224"}, {"x":225, "y":"value_225"}, {"x":226, "y":"value_226"}, {"x":227, "y":"value_227"}, {"x":228, "y":"value_228"}, {"x":229, "y":"value_229"}, {"x":230, "y":"value_230"}, {"x":231, "y":"value_231"}, {"x":232, "y":"value_232"}, {"x":233, "y":"value_233"}, {"x":234, "y":"value_234"}, {"x":235, "y":"value_235"}, {"x":236, "y":"value_236"}, {"x":237, "y":"value_237"}, {"x":238, "y":"value_238"}, {"x":239, "y":"value_239"}, {"x":240, "y":"value_240"}, {"x":241, "y":"value_241"}, {"x":242, "y":"value_242"}, {"x":243, "y":"value_243"}, {"x":244, "y":"value_244"}, {"x":245, "y":"value_245"}, {"x":246, "y":"value_246"}, {"x":247, "y":"value_247"}, {"x":248, "y":"value_248"}, {"x":249, "y":"value_249"}, {"x":250, "y":"value_250"}, {"x":251, "y":"value_251"}, {"x":252, "y":"value_252"}, {"x":253, "y":"value_253"}, {"x":254, "y":"value_254"}, {"x":255, "y":"value_255"}, {"x":256, "y":"value_256"}, {"x":257, "y":"value_257"}, {"x":258, "y":"value_258"}, {"x":259, "y":"value_259"}, {"x":260, "y":"value_260"}, {"x":261, "y":"value_261"}, {"x":262, "y":"value_262"}, {"x":263, "y":"value_263"}, {"x":264, "y":"value_264"}, {"x":265, "y":"value_265"}, {"x":266, "y":"value_266"}, {"x":267, "y":"value_267"}, {"x":268, "y":"value_268"}, {"x":269, "y":"value_269"}, {"x":270, "y":"value_270"}, {"x":271, "y":"value_271"}, {"x":272, "y":"value_272"}, {"x":273, "y":"value_273"}, {"x":274, "y":"value_274"}, {"x":275, "y":"value_275"}, {"x":276, "y":"value_276"}, {"x":277, "y":"value_277"}, {"x":278, "y":"value_278"}, {"x":279, "y":"value_279"}, {"x":280, "y":"value_280"}, {"x":281, "y":"value_281"}, {"x":282, "y":"value_282"}, {"x":283, "y":"value_283"}, {"x":284, "y":"value_284"}, {"x":285, "y":"value_285"}, {"x":286, "y":"value_286"}, {"x":287, "y":"value_287"}, {"x":288, "y":"value_288"}, {"x":289, "y":"value_289"}, {"x":290, "y":"value_290"}, {"x":291, "y":"value_291"}, {"x":292, "y":"value_292"}, {"x":293, "y":"value_293"}, {"x":294, "y":"value_294"}, {"x":295, "y":"value_295"}, {"x":296, "y":"value_296"}, {"x":297, "y":"value_297"}, {"x":298, "y":"value_298"}, {"x":299, "y":"value_299"}, {"x":300, "y":"value_300"}, {"x":301, "y":"value_301"}, {"x":302, "y":"value_302"}, {"x":303, "y":"value_303"}, {"x":304, "y":"value_304"}, {"x":305, "y":"value_305"}, {"x":306, "y":"value_306"}, {"x":307, "y":"value_307"}, {"x":308, "y":"value_308"}, {"x":309, "y":"value_309"}, {"x":310, "y":"value_310"}, {"x":311, "y":"value_311"}, {"x":312, "y":"value_312"}, {"x":313, "y":"value_313"}, {"x":314, "y":"value_314"}, {"x":315, "y":"value_315"}, {"x":316, "y":"value_316"}, {"x":317, "y":"value_317"}, {"x":318, "y":"value_318"}, {"x":319, "y":"value_319"}, {"x":320, "y":"value_320"}, {"x":321, "y":"value_321"}, {"x":322, "y":"value_322"}, {"x":323, "y":"value_323"}, {"x":324, "y":"value_324"}, {"x":325, "y":"value_325"}, {"x":326, "y":"value_326"}, {"x":327, "y":"value_327"}, {"x":328, "y":"value_328"}, {"x":329, "y":"value_329"}, {"x":330, "y":"value_330"}, {"x":331, "y":"value_331"}, {"x":332, "y":"value_332"}, {"x":333, "y":"value_333"}, {"x":334, "y":"value_334"}, {"x":335, "y":"value_335"}, {"x":336, "y":"value_336"}, {"x":337, "y":"value_337"}, {"x":338, "y":"value_338"}, {"x":339, "y":"value_339"}, {"x":340, "y":"value_340"}, {"x":341, "y":"value_341"}, {"x":342, "y":"value_342"}, {"x":343, "y":"value_343"}, {"x":344, "y":"value_344"}, {"x":345, "y":"value_345"}, {"x":346, "y":"value_346"}, {"x":347, "y":"value_347"}, {"x":348, "y":"value_348"}, {"x":349, "y":"value_349"}, {"x":350, "y":"value_350"}, {"x":351, "y":"value_351"}, {"x":352, "y":"value_352"}, {"x":353, "y":"value_353"}, {"x":354, "y":"value_354"}, {"x":355, "y":"value_355"}, {"x":356, "y":"value_356"}, {"x":357, "y":"value_357"}, {"x":358, "y":"value_358"}, {"x":359, "y":"value_359"}, {"x":360, "y":"value_360"}, {"x":361, "y":"value_361"}, {"x":362, "y":"value_362"}, {"x":363, "y":"value_363"}, {"x":364, "y":"value_364"}, {"x":365, "y":"value_365"}, {"x":366, "y":"value_366"}, {"x":367, "y":"value_367"}, {"x":368, "y":"value_368"}, {"x":369, "y":"value_369"}, {"x":370, "y":"value_370"}, {"x":371, "y":"value_371"}, {"x":372, "y":"value_372"}, {"x":373, "y":"value_373"}, {"x":374, "y":"value_374"}, {"x":375, "y":"value_375"}, {"x":376, "y":"value_376"}, {"x":377, "y":"value_377"}, {"x":378, "y":"value_378"}, {"x":379, "y":"value_379"}, {"x":380, "y":"value_380"}, {"x":381, "y":"value_381"}, {"x":382, "y":"value_382"}, {"x":383, "y":"value_383"}, {"x":384, "y":"value_384"}, {"x":385, "y":"value_385"}, {"x":386, "y":"value_386"}, {"x":387, "y":"value_387"}, {"x":388, "y":"value_388"}, {"x":389, "y":"value_389"}, {"x":390, "y":"value_390"}, {"x":391, "y":"value_391"}, {"x":392, "y":"value_392"}, {"x":393, "y":"value_393"}, {"x":394, "y":"value_394"}, {"x":395, "y":"value_395"}, {"x":396, "y":"value_396"}, {"x":397, "y":"value_397"}, {"x":398, "y":"value_398"}, {"x":399, "y":"value_399"}, {"x":400, "y":"value_400"}, {"x":401, "y":"value_401"}, {"x":402, "y":"value_402"}, {"x":403, "y":"value_403"}, {"x":404, "y":"value_404"}, {"x":405, "y":"value_405"}, {"x":406, "y":"value_406"}, {"x":407, "y":"value_407"}, {"x":408, "y":"value_408"}, {"x":409, "y":"value_409"}, {"x":410, "y":"value_410"}, {"x":411, "y":"value_411"}, {"x":412, "y":"value_412"}, {"x":413, "y":"value_413"}, {"x":414, "y":"value_414"}, {"x":415, "y":"value_415"}, {"x":416, "y":"value_416"}, {"x":417, "y":"value_417"}, {"x":418, "y":"value_418"}, {"x":419, "y":"value_419"}, {"x":420, "y":"value_420"}, {"x":421, "y":"value_421"}, {"x":422, "y":"value_422"}, {"x":423, "y":"value_423"}, {"x":424, "y":"value_424"}, {"x":425, "y":"value_425"}, {"x":426, "y":"value_426"}, {"x":427, "y":"value_427"}, {"x":428, "y":"value_428"}, {"x":429, "y":"value_429"}, {"x":430, "y":"value_430"}, {"x":431, "y":"value_431"}, {"x":432, "y":"value_432"}, {"x":433, "y":"value_433"}, {"x":434, "y":"value_434"}, {"x":435, "y":"value_435"}, {"x":436, "y":"value_436"}, {"x":437, "y":"value_437"}, {"x":438, "y":"value_438"}, {"x":439, "y":"value_439"}, {"x":440, "y":"value_440"}, {"x":441, "y":"value_441"}, {"x":442, "y":"value_442"}, {"x":443, "y":"value_443"}, {"x":444, "y":"value_444"}, {"x":445, "y":"value_445"}, {"x":446, "y":"value_446"}, {"x":447, "y":"value_447"}, {"x":448, "y":"value_448"}, {"x":449, "y":"value_449"}, {"x":450, "y":"value_450"}, {"x":451, "y":"value_451"}, {"x":452, "y":"value_452"}, {"x":453, "y":"value_453"}, {"x":454, "y":"value_454"}, {"x":455, "y":"value_455"}, {"x":456, "y":"value_456"}, {"x":457, "y":"value_457"}, {"x":458, "y":"value_458"}, {"x":459, "y":"value_459"}, {"x":460, "y":"value_460"}, {"x":461, "y":"value_461"}, {"x":462, "y":"value_462"}, {"x":463, "y":"value_463"}, {"x":464, "y":"value_464"}, {"x":465, "y":"value_465"}, {"x":466, "y":"value_466"}, {"x":467, "y":"value_467"}, {"x":468, "y":"value_468"}, {"x":469, "y":"value_469"}, {"x":470, "y":"value_470"}, {"x":471, "y":"value_471"}, {"x":472, "y":"value_472"}, {"x":473, "y":"value_473"}, {"x":474, "y":"value_474"}, {"x":475, "y":"value_475"}, {"x":476, "y":"value_476"}, {"x":477, "y":"value_477"}, {"x":478, "y":"value_478"}, {"x":479, "y":"value_479"}, {"x":480, "y":"value_480"}, {"x":481, "y":"value_481"}, {"x":482, "y":"value_482"}, {"x":483, "y":"value_483"}, {"x":484, "y":"value_484"}, {"x":485, "y":"value_485"}, {"x":486, "y":"value_486"}, {"x":487, "y":"value_487"}, {"x":488, "y":"value_488"}, {"x":489, "y":"value_489"}, {"x":490, "y":"value_490"}, {"x":491, "y":"value_491"}, {"x":492, "y":"value_492"}, {"x":493, "y":"value_493"}, {"x":494, "y":"value_494"}, {"x":495, "y":"value_495"}, {"x":496, "y":"value_496"}, {"x":497, "y":"value_497"}, {"x":498, "y":"value_498"}, {"x":499, "y":"value_499"}] 500 +3 [{"x":0, "y":"big_0"}, {"x":1, "y":"big_1"}, {"x":2, "y":"big_2"}, {"x":3, "y":"big_3"}, {"x":4, "y":"big_4"}, {"x":5, "y":"big_5"}, {"x":6, "y":"big_6"}, {"x":7, "y":"big_7"}, {"x":8, "y":"big_8"}, {"x":9, "y":"big_9"}, {"x":10, "y":"big_10"}, {"x":11, "y":"big_11"}, {"x":12, "y":"big_12"}, {"x":13, "y":"big_13"}, {"x":14, "y":"big_14"}, {"x":15, "y":"big_15"}, {"x":16, "y":"big_16"}, {"x":17, "y":"big_17"}, {"x":18, "y":"big_18"}, {"x":19, "y":"big_19"}, {"x":20, "y":"big_20"}, {"x":21, "y":"big_21"}, {"x":22, "y":"big_22"}, {"x":23, "y":"big_23"}, {"x":24, "y":"big_24"}, {"x":25, "y":"big_25"}, {"x":26, "y":"big_26"}, {"x":27, "y":"big_27"}, {"x":28, "y":"big_28"}, {"x":29, "y":"big_29"}, {"x":30, "y":"big_30"}, {"x":31, "y":"big_31"}, {"x":32, "y":"big_32"}, {"x":33, "y":"big_33"}, {"x":34, "y":"big_34"}, {"x":35, "y":"big_35"}, {"x":36, "y":"big_36"}, {"x":37, "y":"big_37"}, {"x":38, "y":"big_38"}, {"x":39, "y":"big_39"}, {"x":40, "y":"big_40"}, {"x":41, "y":"big_41"}, {"x":42, "y":"big_42"}, {"x":43, "y":"big_43"}, {"x":44, "y":"big_44"}, {"x":45, "y":"big_45"}, {"x":46, "y":"big_46"}, {"x":47, "y":"big_47"}, {"x":48, "y":"big_48"}, {"x":49, "y":"big_49"}, {"x":50, "y":"big_50"}, {"x":51, "y":"big_51"}, {"x":52, "y":"big_52"}, {"x":53, "y":"big_53"}, {"x":54, "y":"big_54"}, {"x":55, "y":"big_55"}, {"x":56, "y":"big_56"}, {"x":57, "y":"big_57"}, {"x":58, "y":"big_58"}, {"x":59, "y":"big_59"}, {"x":60, "y":"big_60"}, {"x":61, "y":"big_61"}, {"x":62, "y":"big_62"}, {"x":63, "y":"big_63"}, {"x":64, "y":"big_64"}, {"x":65, "y":"big_65"}, {"x":66, "y":"big_66"}, {"x":67, "y":"big_67"}, {"x":68, "y":"big_68"}, {"x":69, "y":"big_69"}, {"x":70, "y":"big_70"}, {"x":71, "y":"big_71"}, {"x":72, "y":"big_72"}, {"x":73, "y":"big_73"}, {"x":74, "y":"big_74"}, {"x":75, "y":"big_75"}, {"x":76, "y":"big_76"}, {"x":77, "y":"big_77"}, {"x":78, "y":"big_78"}, {"x":79, "y":"big_79"}, {"x":80, "y":"big_80"}, {"x":81, "y":"big_81"}, {"x":82, "y":"big_82"}, {"x":83, "y":"big_83"}, {"x":84, "y":"big_84"}, {"x":85, "y":"big_85"}, {"x":86, "y":"big_86"}, {"x":87, "y":"big_87"}, {"x":88, "y":"big_88"}, {"x":89, "y":"big_89"}, {"x":90, "y":"big_90"}, {"x":91, "y":"big_91"}, {"x":92, "y":"big_92"}, {"x":93, "y":"big_93"}, {"x":94, "y":"big_94"}, {"x":95, "y":"big_95"}, {"x":96, "y":"big_96"}, {"x":97, "y":"big_97"}, {"x":98, "y":"big_98"}, {"x":99, "y":"big_99"}, {"x":100, "y":"big_100"}, {"x":101, "y":"big_101"}, {"x":102, "y":"big_102"}, {"x":103, "y":"big_103"}, {"x":104, "y":"big_104"}, {"x":105, "y":"big_105"}, {"x":106, "y":"big_106"}, {"x":107, "y":"big_107"}, {"x":108, "y":"big_108"}, {"x":109, "y":"big_109"}, {"x":110, "y":"big_110"}, {"x":111, "y":"big_111"}, {"x":112, "y":"big_112"}, {"x":113, "y":"big_113"}, {"x":114, "y":"big_114"}, {"x":115, "y":"big_115"}, {"x":116, "y":"big_116"}, {"x":117, "y":"big_117"}, {"x":118, "y":"big_118"}, {"x":119, "y":"big_119"}, {"x":120, "y":"big_120"}, {"x":121, "y":"big_121"}, {"x":122, "y":"big_122"}, {"x":123, "y":"big_123"}, {"x":124, "y":"big_124"}, {"x":125, "y":"big_125"}, {"x":126, "y":"big_126"}, {"x":127, "y":"big_127"}, {"x":128, "y":"big_128"}, {"x":129, "y":"big_129"}, {"x":130, "y":"big_130"}, {"x":131, "y":"big_131"}, {"x":132, "y":"big_132"}, {"x":133, "y":"big_133"}, {"x":134, "y":"big_134"}, {"x":135, "y":"big_135"}, {"x":136, "y":"big_136"}, {"x":137, "y":"big_137"}, {"x":138, "y":"big_138"}, {"x":139, "y":"big_139"}, {"x":140, "y":"big_140"}, {"x":141, "y":"big_141"}, {"x":142, "y":"big_142"}, {"x":143, "y":"big_143"}, {"x":144, "y":"big_144"}, {"x":145, "y":"big_145"}, {"x":146, "y":"big_146"}, {"x":147, "y":"big_147"}, {"x":148, "y":"big_148"}, {"x":149, "y":"big_149"}, {"x":150, "y":"big_150"}, {"x":151, "y":"big_151"}, {"x":152, "y":"big_152"}, {"x":153, "y":"big_153"}, {"x":154, "y":"big_154"}, {"x":155, "y":"big_155"}, {"x":156, "y":"big_156"}, {"x":157, "y":"big_157"}, {"x":158, "y":"big_158"}, {"x":159, "y":"big_159"}, {"x":160, "y":"big_160"}, {"x":161, "y":"big_161"}, {"x":162, "y":"big_162"}, {"x":163, "y":"big_163"}, {"x":164, "y":"big_164"}, {"x":165, "y":"big_165"}, {"x":166, "y":"big_166"}, {"x":167, "y":"big_167"}, {"x":168, "y":"big_168"}, {"x":169, "y":"big_169"}, {"x":170, "y":"big_170"}, {"x":171, "y":"big_171"}, {"x":172, "y":"big_172"}, {"x":173, "y":"big_173"}, {"x":174, "y":"big_174"}, {"x":175, "y":"big_175"}, {"x":176, "y":"big_176"}, {"x":177, "y":"big_177"}, {"x":178, "y":"big_178"}, {"x":179, "y":"big_179"}, {"x":180, "y":"big_180"}, {"x":181, "y":"big_181"}, {"x":182, "y":"big_182"}, {"x":183, "y":"big_183"}, {"x":184, "y":"big_184"}, {"x":185, "y":"big_185"}, {"x":186, "y":"big_186"}, {"x":187, "y":"big_187"}, {"x":188, "y":"big_188"}, {"x":189, "y":"big_189"}, {"x":190, "y":"big_190"}, {"x":191, "y":"big_191"}, {"x":192, "y":"big_192"}, {"x":193, "y":"big_193"}, {"x":194, "y":"big_194"}, {"x":195, "y":"big_195"}, {"x":196, "y":"big_196"}, {"x":197, "y":"big_197"}, {"x":198, "y":"big_198"}, {"x":199, "y":"big_199"}, {"x":200, "y":"big_200"}, {"x":201, "y":"big_201"}, {"x":202, "y":"big_202"}, {"x":203, "y":"big_203"}, {"x":204, "y":"big_204"}, {"x":205, "y":"big_205"}, {"x":206, "y":"big_206"}, {"x":207, "y":"big_207"}, {"x":208, "y":"big_208"}, {"x":209, "y":"big_209"}, {"x":210, "y":"big_210"}, {"x":211, "y":"big_211"}, {"x":212, "y":"big_212"}, {"x":213, "y":"big_213"}, {"x":214, "y":"big_214"}, {"x":215, "y":"big_215"}, {"x":216, "y":"big_216"}, {"x":217, "y":"big_217"}, {"x":218, "y":"big_218"}, {"x":219, "y":"big_219"}, {"x":220, "y":"big_220"}, {"x":221, "y":"big_221"}, {"x":222, "y":"big_222"}, {"x":223, "y":"big_223"}, {"x":224, "y":"big_224"}, {"x":225, "y":"big_225"}, {"x":226, "y":"big_226"}, {"x":227, "y":"big_227"}, {"x":228, "y":"big_228"}, {"x":229, "y":"big_229"}, {"x":230, "y":"big_230"}, {"x":231, "y":"big_231"}, {"x":232, "y":"big_232"}, {"x":233, "y":"big_233"}, {"x":234, "y":"big_234"}, {"x":235, "y":"big_235"}, {"x":236, "y":"big_236"}, {"x":237, "y":"big_237"}, {"x":238, "y":"big_238"}, {"x":239, "y":"big_239"}, {"x":240, "y":"big_240"}, {"x":241, "y":"big_241"}, {"x":242, "y":"big_242"}, {"x":243, "y":"big_243"}, {"x":244, "y":"big_244"}, {"x":245, "y":"big_245"}, {"x":246, "y":"big_246"}, {"x":247, "y":"big_247"}, {"x":248, "y":"big_248"}, {"x":249, "y":"big_249"}, {"x":250, "y":"big_250"}, {"x":251, "y":"big_251"}, {"x":252, "y":"big_252"}, {"x":253, "y":"big_253"}, {"x":254, "y":"big_254"}, {"x":255, "y":"big_255"}, {"x":256, "y":"big_256"}, {"x":257, "y":"big_257"}, {"x":258, "y":"big_258"}, {"x":259, "y":"big_259"}, {"x":260, "y":"big_260"}, {"x":261, "y":"big_261"}, {"x":262, "y":"big_262"}, {"x":263, "y":"big_263"}, {"x":264, "y":"big_264"}, {"x":265, "y":"big_265"}, {"x":266, "y":"big_266"}, {"x":267, "y":"big_267"}, {"x":268, "y":"big_268"}, {"x":269, "y":"big_269"}, {"x":270, "y":"big_270"}, {"x":271, "y":"big_271"}, {"x":272, "y":"big_272"}, {"x":273, "y":"big_273"}, {"x":274, "y":"big_274"}, {"x":275, "y":"big_275"}, {"x":276, "y":"big_276"}, {"x":277, "y":"big_277"}, {"x":278, "y":"big_278"}, {"x":279, "y":"big_279"}, {"x":280, "y":"big_280"}, {"x":281, "y":"big_281"}, {"x":282, "y":"big_282"}, {"x":283, "y":"big_283"}, {"x":284, "y":"big_284"}, {"x":285, "y":"big_285"}, {"x":286, "y":"big_286"}, {"x":287, "y":"big_287"}, {"x":288, "y":"big_288"}, {"x":289, "y":"big_289"}, {"x":290, "y":"big_290"}, {"x":291, "y":"big_291"}, {"x":292, "y":"big_292"}, {"x":293, "y":"big_293"}, {"x":294, "y":"big_294"}, {"x":295, "y":"big_295"}, {"x":296, "y":"big_296"}, {"x":297, "y":"big_297"}, {"x":298, "y":"big_298"}, {"x":299, "y":"big_299"}, {"x":300, "y":"big_300"}, {"x":301, "y":"big_301"}, {"x":302, "y":"big_302"}, {"x":303, "y":"big_303"}, {"x":304, "y":"big_304"}, {"x":305, "y":"big_305"}, {"x":306, "y":"big_306"}, {"x":307, "y":"big_307"}, {"x":308, "y":"big_308"}, {"x":309, "y":"big_309"}, {"x":310, "y":"big_310"}, {"x":311, "y":"big_311"}, {"x":312, "y":"big_312"}, {"x":313, "y":"big_313"}, {"x":314, "y":"big_314"}, {"x":315, "y":"big_315"}, {"x":316, "y":"big_316"}, {"x":317, "y":"big_317"}, {"x":318, "y":"big_318"}, {"x":319, "y":"big_319"}, {"x":320, "y":"big_320"}, {"x":321, "y":"big_321"}, {"x":322, "y":"big_322"}, {"x":323, "y":"big_323"}, {"x":324, "y":"big_324"}, {"x":325, "y":"big_325"}, {"x":326, "y":"big_326"}, {"x":327, "y":"big_327"}, {"x":328, "y":"big_328"}, {"x":329, "y":"big_329"}, {"x":330, "y":"big_330"}, {"x":331, "y":"big_331"}, {"x":332, "y":"big_332"}, {"x":333, "y":"big_333"}, {"x":334, "y":"big_334"}, {"x":335, "y":"big_335"}, {"x":336, "y":"big_336"}, {"x":337, "y":"big_337"}, {"x":338, "y":"big_338"}, {"x":339, "y":"big_339"}, {"x":340, "y":"big_340"}, {"x":341, "y":"big_341"}, {"x":342, "y":"big_342"}, {"x":343, "y":"big_343"}, {"x":344, "y":"big_344"}, {"x":345, "y":"big_345"}, {"x":346, "y":"big_346"}, {"x":347, "y":"big_347"}, {"x":348, "y":"big_348"}, {"x":349, "y":"big_349"}, {"x":350, "y":"big_350"}, {"x":351, "y":"big_351"}, {"x":352, "y":"big_352"}, {"x":353, "y":"big_353"}, {"x":354, "y":"big_354"}, {"x":355, "y":"big_355"}, {"x":356, "y":"big_356"}, {"x":357, "y":"big_357"}, {"x":358, "y":"big_358"}, {"x":359, "y":"big_359"}, {"x":360, "y":"big_360"}, {"x":361, "y":"big_361"}, {"x":362, "y":"big_362"}, {"x":363, "y":"big_363"}, {"x":364, "y":"big_364"}, {"x":365, "y":"big_365"}, {"x":366, "y":"big_366"}, {"x":367, "y":"big_367"}, {"x":368, "y":"big_368"}, {"x":369, "y":"big_369"}, {"x":370, "y":"big_370"}, {"x":371, "y":"big_371"}, {"x":372, "y":"big_372"}, {"x":373, "y":"big_373"}, {"x":374, "y":"big_374"}, {"x":375, "y":"big_375"}, {"x":376, "y":"big_376"}, {"x":377, "y":"big_377"}, {"x":378, "y":"big_378"}, {"x":379, "y":"big_379"}, {"x":380, "y":"big_380"}, {"x":381, "y":"big_381"}, {"x":382, "y":"big_382"}, {"x":383, "y":"big_383"}, {"x":384, "y":"big_384"}, {"x":385, "y":"big_385"}, {"x":386, "y":"big_386"}, {"x":387, "y":"big_387"}, {"x":388, "y":"big_388"}, {"x":389, "y":"big_389"}, {"x":390, "y":"big_390"}, {"x":391, "y":"big_391"}, {"x":392, "y":"big_392"}, {"x":393, "y":"big_393"}, {"x":394, "y":"big_394"}, {"x":395, "y":"big_395"}, {"x":396, "y":"big_396"}, {"x":397, "y":"big_397"}, {"x":398, "y":"big_398"}, {"x":399, "y":"big_399"}, {"x":400, "y":"big_400"}, {"x":401, "y":"big_401"}, {"x":402, "y":"big_402"}, {"x":403, "y":"big_403"}, {"x":404, "y":"big_404"}, {"x":405, "y":"big_405"}, {"x":406, "y":"big_406"}, {"x":407, "y":"big_407"}, {"x":408, "y":"big_408"}, {"x":409, "y":"big_409"}, {"x":410, "y":"big_410"}, {"x":411, "y":"big_411"}, {"x":412, "y":"big_412"}, {"x":413, "y":"big_413"}, {"x":414, "y":"big_414"}, {"x":415, "y":"big_415"}, {"x":416, "y":"big_416"}, {"x":417, "y":"big_417"}, {"x":418, "y":"big_418"}, {"x":419, "y":"big_419"}, {"x":420, "y":"big_420"}, {"x":421, "y":"big_421"}, {"x":422, "y":"big_422"}, {"x":423, "y":"big_423"}, {"x":424, "y":"big_424"}, {"x":425, "y":"big_425"}, {"x":426, "y":"big_426"}, {"x":427, "y":"big_427"}, {"x":428, "y":"big_428"}, {"x":429, "y":"big_429"}, {"x":430, "y":"big_430"}, {"x":431, "y":"big_431"}, {"x":432, "y":"big_432"}, {"x":433, "y":"big_433"}, {"x":434, "y":"big_434"}, {"x":435, "y":"big_435"}, {"x":436, "y":"big_436"}, {"x":437, "y":"big_437"}, {"x":438, "y":"big_438"}, {"x":439, "y":"big_439"}, {"x":440, "y":"big_440"}, {"x":441, "y":"big_441"}, {"x":442, "y":"big_442"}, {"x":443, "y":"big_443"}, {"x":444, "y":"big_444"}, {"x":445, "y":"big_445"}, {"x":446, "y":"big_446"}, {"x":447, "y":"big_447"}, {"x":448, "y":"big_448"}, {"x":449, "y":"big_449"}, {"x":450, "y":"big_450"}, {"x":451, "y":"big_451"}, {"x":452, "y":"big_452"}, {"x":453, "y":"big_453"}, {"x":454, "y":"big_454"}, {"x":455, "y":"big_455"}, {"x":456, "y":"big_456"}, {"x":457, "y":"big_457"}, {"x":458, "y":"big_458"}, {"x":459, "y":"big_459"}, {"x":460, "y":"big_460"}, {"x":461, "y":"big_461"}, {"x":462, "y":"big_462"}, {"x":463, "y":"big_463"}, {"x":464, "y":"big_464"}, {"x":465, "y":"big_465"}, {"x":466, "y":"big_466"}, {"x":467, "y":"big_467"}, {"x":468, "y":"big_468"}, {"x":469, "y":"big_469"}, {"x":470, "y":"big_470"}, {"x":471, "y":"big_471"}, {"x":472, "y":"big_472"}, {"x":473, "y":"big_473"}, {"x":474, "y":"big_474"}, {"x":475, "y":"big_475"}, {"x":476, "y":"big_476"}, {"x":477, "y":"big_477"}, {"x":478, "y":"big_478"}, {"x":479, "y":"big_479"}, {"x":480, "y":"big_480"}, {"x":481, "y":"big_481"}, {"x":482, "y":"big_482"}, {"x":483, "y":"big_483"}, {"x":484, "y":"big_484"}, {"x":485, "y":"big_485"}, {"x":486, "y":"big_486"}, {"x":487, "y":"big_487"}, {"x":488, "y":"big_488"}, {"x":489, "y":"big_489"}, {"x":490, "y":"big_490"}, {"x":491, "y":"big_491"}, {"x":492, "y":"big_492"}, {"x":493, "y":"big_493"}, {"x":494, "y":"big_494"}, {"x":495, "y":"big_495"}, {"x":496, "y":"big_496"}, {"x":497, "y":"big_497"}, {"x":498, "y":"big_498"}, {"x":499, "y":"big_499"}] 500 + +-- !nested_cross_page2_parquet_q5 -- +1 101 value_101 +1 102 value_102 +1 103 value_103 +1 104 value_104 +1 105 value_105 +1 106 value_106 +1 107 value_107 +1 108 value_108 +1 109 value_109 +1 110 value_110 +1 111 value_111 +1 112 value_112 +1 113 value_113 +1 114 value_114 +1 115 value_115 +1 116 value_116 +1 117 value_117 +1 118 value_118 +1 119 value_119 +1 120 value_120 +1 121 value_121 +1 122 value_122 +1 123 value_123 +1 124 value_124 +1 125 value_125 +1 126 value_126 +1 127 value_127 +1 128 value_128 +1 129 value_129 +1 130 value_130 +1 131 value_131 +1 132 value_132 +1 133 value_133 +1 134 value_134 +1 135 value_135 +1 136 value_136 +1 137 value_137 +1 138 value_138 +1 139 value_139 +1 140 value_140 +1 141 value_141 +1 142 value_142 +1 143 value_143 +1 144 value_144 +1 145 value_145 +1 146 value_146 +1 147 value_147 +1 148 value_148 +1 149 value_149 +1 150 value_150 +1 151 value_151 +1 152 value_152 +1 153 value_153 +1 154 value_154 +1 155 value_155 +1 156 value_156 +1 157 value_157 +1 158 value_158 +1 159 value_159 +1 160 value_160 +1 161 value_161 +1 162 value_162 +1 163 value_163 +1 164 value_164 +1 165 value_165 +1 166 value_166 +1 167 value_167 +1 168 value_168 +1 169 value_169 +1 170 value_170 +1 171 value_171 +1 172 value_172 +1 173 value_173 +1 174 value_174 +1 175 value_175 +1 176 value_176 +1 177 value_177 +1 178 value_178 +1 179 value_179 +1 180 value_180 +1 181 value_181 +1 182 value_182 +1 183 value_183 +1 184 value_184 +1 185 value_185 +1 186 value_186 +1 187 value_187 +1 188 value_188 +1 189 value_189 +1 190 value_190 +1 191 value_191 +1 192 value_192 +1 193 value_193 +1 194 value_194 +1 195 value_195 +1 196 value_196 +1 197 value_197 +1 198 value_198 +1 199 value_199 +1 200 value_200 +1 201 value_201 +1 202 value_202 +1 203 value_203 +1 204 value_204 +1 205 value_205 +1 206 value_206 +1 207 value_207 +1 208 value_208 +1 209 value_209 +1 210 value_210 +1 211 value_211 +1 212 value_212 +1 213 value_213 +1 214 value_214 +1 215 value_215 +1 216 value_216 +1 217 value_217 +1 218 value_218 +1 219 value_219 +1 220 value_220 +1 221 value_221 +1 222 value_222 +1 223 value_223 +1 224 value_224 +1 225 value_225 +1 226 value_226 +1 227 value_227 +1 228 value_228 +1 229 value_229 +1 230 value_230 +1 231 value_231 +1 232 value_232 +1 233 value_233 +1 234 value_234 +1 235 value_235 +1 236 value_236 +1 237 value_237 +1 238 value_238 +1 239 value_239 +1 240 value_240 +1 241 value_241 +1 242 value_242 +1 243 value_243 +1 244 value_244 +1 245 value_245 +1 246 value_246 +1 247 value_247 +1 248 value_248 +1 249 value_249 +1 250 value_250 +1 251 value_251 +1 252 value_252 +1 253 value_253 +1 254 value_254 +1 255 value_255 +1 256 value_256 +1 257 value_257 +1 258 value_258 +1 259 value_259 +1 260 value_260 +1 261 value_261 +1 262 value_262 +1 263 value_263 +1 264 value_264 +1 265 value_265 +1 266 value_266 +1 267 value_267 +1 268 value_268 +1 269 value_269 +1 270 value_270 +1 271 value_271 +1 272 value_272 +1 273 value_273 +1 274 value_274 +1 275 value_275 +1 276 value_276 +1 277 value_277 +1 278 value_278 +1 279 value_279 +1 280 value_280 +1 281 value_281 +1 282 value_282 +1 283 value_283 +1 284 value_284 +1 285 value_285 +1 286 value_286 +1 287 value_287 +1 288 value_288 +1 289 value_289 +1 290 value_290 +1 291 value_291 +1 292 value_292 +1 293 value_293 +1 294 value_294 +1 295 value_295 +1 296 value_296 +1 297 value_297 +1 298 value_298 +1 299 value_299 +1 300 value_300 +1 301 value_301 +1 302 value_302 +1 303 value_303 +1 304 value_304 +1 305 value_305 +1 306 value_306 +1 307 value_307 +1 308 value_308 +1 309 value_309 +1 310 value_310 +1 311 value_311 +1 312 value_312 +1 313 value_313 +1 314 value_314 +1 315 value_315 +1 316 value_316 +1 317 value_317 +1 318 value_318 +1 319 value_319 +1 320 value_320 +1 321 value_321 +1 322 value_322 +1 323 value_323 +1 324 value_324 +1 325 value_325 +1 326 value_326 +1 327 value_327 +1 328 value_328 +1 329 value_329 +1 330 value_330 +1 331 value_331 +1 332 value_332 +1 333 value_333 +1 334 value_334 +1 335 value_335 +1 336 value_336 +1 337 value_337 +1 338 value_338 +1 339 value_339 +1 340 value_340 +1 341 value_341 +1 342 value_342 +1 343 value_343 +1 344 value_344 +1 345 value_345 +1 346 value_346 +1 347 value_347 +1 348 value_348 +1 349 value_349 +1 350 value_350 +1 351 value_351 +1 352 value_352 +1 353 value_353 +1 354 value_354 +1 355 value_355 +1 356 value_356 +1 357 value_357 +1 358 value_358 +1 359 value_359 +1 360 value_360 +1 361 value_361 +1 362 value_362 +1 363 value_363 +1 364 value_364 +1 365 value_365 +1 366 value_366 +1 367 value_367 +1 368 value_368 +1 369 value_369 +1 370 value_370 +1 371 value_371 +1 372 value_372 +1 373 value_373 +1 374 value_374 +1 375 value_375 +1 376 value_376 +1 377 value_377 +1 378 value_378 +1 379 value_379 +1 380 value_380 +1 381 value_381 +1 382 value_382 +1 383 value_383 +1 384 value_384 +1 385 value_385 +1 386 value_386 +1 387 value_387 +1 388 value_388 +1 389 value_389 +1 390 value_390 +1 391 value_391 +1 392 value_392 +1 393 value_393 +1 394 value_394 +1 395 value_395 +1 396 value_396 +1 397 value_397 +1 398 value_398 +1 399 value_399 +1 400 value_400 +1 401 value_401 +1 402 value_402 +1 403 value_403 +1 404 value_404 +1 405 value_405 +1 406 value_406 +1 407 value_407 +1 408 value_408 +1 409 value_409 +1 410 value_410 +1 411 value_411 +1 412 value_412 +1 413 value_413 +1 414 value_414 +1 415 value_415 +1 416 value_416 +1 417 value_417 +1 418 value_418 +1 419 value_419 +1 420 value_420 +1 421 value_421 +1 422 value_422 +1 423 value_423 +1 424 value_424 +1 425 value_425 +1 426 value_426 +1 427 value_427 +1 428 value_428 +1 429 value_429 +1 430 value_430 +1 431 value_431 +1 432 value_432 +1 433 value_433 +1 434 value_434 +1 435 value_435 +1 436 value_436 +1 437 value_437 +1 438 value_438 +1 439 value_439 +1 440 value_440 +1 441 value_441 +1 442 value_442 +1 443 value_443 +1 444 value_444 +1 445 value_445 +1 446 value_446 +1 447 value_447 +1 448 value_448 +1 449 value_449 +1 450 value_450 +1 451 value_451 +1 452 value_452 +1 453 value_453 +1 454 value_454 +1 455 value_455 +1 456 value_456 +1 457 value_457 +1 458 value_458 +1 459 value_459 +1 460 value_460 +1 461 value_461 +1 462 value_462 +1 463 value_463 +1 464 value_464 +1 465 value_465 +1 466 value_466 +1 467 value_467 +1 468 value_468 +1 469 value_469 +1 470 value_470 +1 471 value_471 +1 472 value_472 +1 473 value_473 +1 474 value_474 +1 475 value_475 +1 476 value_476 +1 477 value_477 +1 478 value_478 +1 479 value_479 +1 480 value_480 +1 481 value_481 +1 482 value_482 +1 483 value_483 +1 484 value_484 +1 485 value_485 +1 486 value_486 +1 487 value_487 +1 488 value_488 +1 489 value_489 +1 490 value_490 +1 491 value_491 +1 492 value_492 +1 493 value_493 +1 494 value_494 +1 495 value_495 +1 496 value_496 +1 497 value_497 +1 498 value_498 +1 499 value_499 + +-- !nested_cross_page2_parquet_q6 -- +2 {"small_key":[1, 2, 3]} 1 + +-- !nested_cross_page1_parquet_q1 -- +[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] + +-- !nested_cross_page1_parquet_q2 -- +[1, 2, 3] + +-- !nested_cross_page1_parquet_q3 -- +[6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10] + +-- !nested_cross_page1_parquet_q4 -- +1 1000 +2 3 +3 1000 + +-- !nested_cross_page1_parquet_q5 -- +1 1 3 +2 1 3 +3 6 8 + +-- !nested_cross_page1_parquet_q6 -- +1 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] +3 [6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10] + +-- !nested_cross_page1_parquet_q7 -- +1 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] +2 [1, 2, 3] + +-- !nested_cross_page1_parquet_q8 -- +2 [1, 2, 3] This is a small array with just three elements + +-- !nested_cross_page1_parquet_q9 -- +1 1 5 +2 1 3 +3 6 10 + +-- !nested_cross_page1_parquet_q10 -- +1 [1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5] +3 [6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10, 6, 7, 8, 9, 10] + +-- !nested_cross_page2_parquet_q1 -- +1 [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]] 100 + +-- !nested_cross_page2_parquet_q2 -- +2 [[1, 2], [3, 4], [5, 6]] 3 + +-- !nested_cross_page2_parquet_q3 -- +3 [[10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]] 100 + +-- !nested_cross_page2_parquet_q4 -- +1 [{"x":0, "y":"value_0"}, {"x":1, "y":"value_1"}, {"x":2, "y":"value_2"}, {"x":3, "y":"value_3"}, {"x":4, "y":"value_4"}, {"x":5, "y":"value_5"}, {"x":6, "y":"value_6"}, {"x":7, "y":"value_7"}, {"x":8, "y":"value_8"}, {"x":9, "y":"value_9"}, {"x":10, "y":"value_10"}, {"x":11, "y":"value_11"}, {"x":12, "y":"value_12"}, {"x":13, "y":"value_13"}, {"x":14, "y":"value_14"}, {"x":15, "y":"value_15"}, {"x":16, "y":"value_16"}, {"x":17, "y":"value_17"}, {"x":18, "y":"value_18"}, {"x":19, "y":"value_19"}, {"x":20, "y":"value_20"}, {"x":21, "y":"value_21"}, {"x":22, "y":"value_22"}, {"x":23, "y":"value_23"}, {"x":24, "y":"value_24"}, {"x":25, "y":"value_25"}, {"x":26, "y":"value_26"}, {"x":27, "y":"value_27"}, {"x":28, "y":"value_28"}, {"x":29, "y":"value_29"}, {"x":30, "y":"value_30"}, {"x":31, "y":"value_31"}, {"x":32, "y":"value_32"}, {"x":33, "y":"value_33"}, {"x":34, "y":"value_34"}, {"x":35, "y":"value_35"}, {"x":36, "y":"value_36"}, {"x":37, "y":"value_37"}, {"x":38, "y":"value_38"}, {"x":39, "y":"value_39"}, {"x":40, "y":"value_40"}, {"x":41, "y":"value_41"}, {"x":42, "y":"value_42"}, {"x":43, "y":"value_43"}, {"x":44, "y":"value_44"}, {"x":45, "y":"value_45"}, {"x":46, "y":"value_46"}, {"x":47, "y":"value_47"}, {"x":48, "y":"value_48"}, {"x":49, "y":"value_49"}, {"x":50, "y":"value_50"}, {"x":51, "y":"value_51"}, {"x":52, "y":"value_52"}, {"x":53, "y":"value_53"}, {"x":54, "y":"value_54"}, {"x":55, "y":"value_55"}, {"x":56, "y":"value_56"}, {"x":57, "y":"value_57"}, {"x":58, "y":"value_58"}, {"x":59, "y":"value_59"}, {"x":60, "y":"value_60"}, {"x":61, "y":"value_61"}, {"x":62, "y":"value_62"}, {"x":63, "y":"value_63"}, {"x":64, "y":"value_64"}, {"x":65, "y":"value_65"}, {"x":66, "y":"value_66"}, {"x":67, "y":"value_67"}, {"x":68, "y":"value_68"}, {"x":69, "y":"value_69"}, {"x":70, "y":"value_70"}, {"x":71, "y":"value_71"}, {"x":72, "y":"value_72"}, {"x":73, "y":"value_73"}, {"x":74, "y":"value_74"}, {"x":75, "y":"value_75"}, {"x":76, "y":"value_76"}, {"x":77, "y":"value_77"}, {"x":78, "y":"value_78"}, {"x":79, "y":"value_79"}, {"x":80, "y":"value_80"}, {"x":81, "y":"value_81"}, {"x":82, "y":"value_82"}, {"x":83, "y":"value_83"}, {"x":84, "y":"value_84"}, {"x":85, "y":"value_85"}, {"x":86, "y":"value_86"}, {"x":87, "y":"value_87"}, {"x":88, "y":"value_88"}, {"x":89, "y":"value_89"}, {"x":90, "y":"value_90"}, {"x":91, "y":"value_91"}, {"x":92, "y":"value_92"}, {"x":93, "y":"value_93"}, {"x":94, "y":"value_94"}, {"x":95, "y":"value_95"}, {"x":96, "y":"value_96"}, {"x":97, "y":"value_97"}, {"x":98, "y":"value_98"}, {"x":99, "y":"value_99"}, {"x":100, "y":"value_100"}, {"x":101, "y":"value_101"}, {"x":102, "y":"value_102"}, {"x":103, "y":"value_103"}, {"x":104, "y":"value_104"}, {"x":105, "y":"value_105"}, {"x":106, "y":"value_106"}, {"x":107, "y":"value_107"}, {"x":108, "y":"value_108"}, {"x":109, "y":"value_109"}, {"x":110, "y":"value_110"}, {"x":111, "y":"value_111"}, {"x":112, "y":"value_112"}, {"x":113, "y":"value_113"}, {"x":114, "y":"value_114"}, {"x":115, "y":"value_115"}, {"x":116, "y":"value_116"}, {"x":117, "y":"value_117"}, {"x":118, "y":"value_118"}, {"x":119, "y":"value_119"}, {"x":120, "y":"value_120"}, {"x":121, "y":"value_121"}, {"x":122, "y":"value_122"}, {"x":123, "y":"value_123"}, {"x":124, "y":"value_124"}, {"x":125, "y":"value_125"}, {"x":126, "y":"value_126"}, {"x":127, "y":"value_127"}, {"x":128, "y":"value_128"}, {"x":129, "y":"value_129"}, {"x":130, "y":"value_130"}, {"x":131, "y":"value_131"}, {"x":132, "y":"value_132"}, {"x":133, "y":"value_133"}, {"x":134, "y":"value_134"}, {"x":135, "y":"value_135"}, {"x":136, "y":"value_136"}, {"x":137, "y":"value_137"}, {"x":138, "y":"value_138"}, {"x":139, "y":"value_139"}, {"x":140, "y":"value_140"}, {"x":141, "y":"value_141"}, {"x":142, "y":"value_142"}, {"x":143, "y":"value_143"}, {"x":144, "y":"value_144"}, {"x":145, "y":"value_145"}, {"x":146, "y":"value_146"}, {"x":147, "y":"value_147"}, {"x":148, "y":"value_148"}, {"x":149, "y":"value_149"}, {"x":150, "y":"value_150"}, {"x":151, "y":"value_151"}, {"x":152, "y":"value_152"}, {"x":153, "y":"value_153"}, {"x":154, "y":"value_154"}, {"x":155, "y":"value_155"}, {"x":156, "y":"value_156"}, {"x":157, "y":"value_157"}, {"x":158, "y":"value_158"}, {"x":159, "y":"value_159"}, {"x":160, "y":"value_160"}, {"x":161, "y":"value_161"}, {"x":162, "y":"value_162"}, {"x":163, "y":"value_163"}, {"x":164, "y":"value_164"}, {"x":165, "y":"value_165"}, {"x":166, "y":"value_166"}, {"x":167, "y":"value_167"}, {"x":168, "y":"value_168"}, {"x":169, "y":"value_169"}, {"x":170, "y":"value_170"}, {"x":171, "y":"value_171"}, {"x":172, "y":"value_172"}, {"x":173, "y":"value_173"}, {"x":174, "y":"value_174"}, {"x":175, "y":"value_175"}, {"x":176, "y":"value_176"}, {"x":177, "y":"value_177"}, {"x":178, "y":"value_178"}, {"x":179, "y":"value_179"}, {"x":180, "y":"value_180"}, {"x":181, "y":"value_181"}, {"x":182, "y":"value_182"}, {"x":183, "y":"value_183"}, {"x":184, "y":"value_184"}, {"x":185, "y":"value_185"}, {"x":186, "y":"value_186"}, {"x":187, "y":"value_187"}, {"x":188, "y":"value_188"}, {"x":189, "y":"value_189"}, {"x":190, "y":"value_190"}, {"x":191, "y":"value_191"}, {"x":192, "y":"value_192"}, {"x":193, "y":"value_193"}, {"x":194, "y":"value_194"}, {"x":195, "y":"value_195"}, {"x":196, "y":"value_196"}, {"x":197, "y":"value_197"}, {"x":198, "y":"value_198"}, {"x":199, "y":"value_199"}, {"x":200, "y":"value_200"}, {"x":201, "y":"value_201"}, {"x":202, "y":"value_202"}, {"x":203, "y":"value_203"}, {"x":204, "y":"value_204"}, {"x":205, "y":"value_205"}, {"x":206, "y":"value_206"}, {"x":207, "y":"value_207"}, {"x":208, "y":"value_208"}, {"x":209, "y":"value_209"}, {"x":210, "y":"value_210"}, {"x":211, "y":"value_211"}, {"x":212, "y":"value_212"}, {"x":213, "y":"value_213"}, {"x":214, "y":"value_214"}, {"x":215, "y":"value_215"}, {"x":216, "y":"value_216"}, {"x":217, "y":"value_217"}, {"x":218, "y":"value_218"}, {"x":219, "y":"value_219"}, {"x":220, "y":"value_220"}, {"x":221, "y":"value_221"}, {"x":222, "y":"value_222"}, {"x":223, "y":"value_223"}, {"x":224, "y":"value_224"}, {"x":225, "y":"value_225"}, {"x":226, "y":"value_226"}, {"x":227, "y":"value_227"}, {"x":228, "y":"value_228"}, {"x":229, "y":"value_229"}, {"x":230, "y":"value_230"}, {"x":231, "y":"value_231"}, {"x":232, "y":"value_232"}, {"x":233, "y":"value_233"}, {"x":234, "y":"value_234"}, {"x":235, "y":"value_235"}, {"x":236, "y":"value_236"}, {"x":237, "y":"value_237"}, {"x":238, "y":"value_238"}, {"x":239, "y":"value_239"}, {"x":240, "y":"value_240"}, {"x":241, "y":"value_241"}, {"x":242, "y":"value_242"}, {"x":243, "y":"value_243"}, {"x":244, "y":"value_244"}, {"x":245, "y":"value_245"}, {"x":246, "y":"value_246"}, {"x":247, "y":"value_247"}, {"x":248, "y":"value_248"}, {"x":249, "y":"value_249"}, {"x":250, "y":"value_250"}, {"x":251, "y":"value_251"}, {"x":252, "y":"value_252"}, {"x":253, "y":"value_253"}, {"x":254, "y":"value_254"}, {"x":255, "y":"value_255"}, {"x":256, "y":"value_256"}, {"x":257, "y":"value_257"}, {"x":258, "y":"value_258"}, {"x":259, "y":"value_259"}, {"x":260, "y":"value_260"}, {"x":261, "y":"value_261"}, {"x":262, "y":"value_262"}, {"x":263, "y":"value_263"}, {"x":264, "y":"value_264"}, {"x":265, "y":"value_265"}, {"x":266, "y":"value_266"}, {"x":267, "y":"value_267"}, {"x":268, "y":"value_268"}, {"x":269, "y":"value_269"}, {"x":270, "y":"value_270"}, {"x":271, "y":"value_271"}, {"x":272, "y":"value_272"}, {"x":273, "y":"value_273"}, {"x":274, "y":"value_274"}, {"x":275, "y":"value_275"}, {"x":276, "y":"value_276"}, {"x":277, "y":"value_277"}, {"x":278, "y":"value_278"}, {"x":279, "y":"value_279"}, {"x":280, "y":"value_280"}, {"x":281, "y":"value_281"}, {"x":282, "y":"value_282"}, {"x":283, "y":"value_283"}, {"x":284, "y":"value_284"}, {"x":285, "y":"value_285"}, {"x":286, "y":"value_286"}, {"x":287, "y":"value_287"}, {"x":288, "y":"value_288"}, {"x":289, "y":"value_289"}, {"x":290, "y":"value_290"}, {"x":291, "y":"value_291"}, {"x":292, "y":"value_292"}, {"x":293, "y":"value_293"}, {"x":294, "y":"value_294"}, {"x":295, "y":"value_295"}, {"x":296, "y":"value_296"}, {"x":297, "y":"value_297"}, {"x":298, "y":"value_298"}, {"x":299, "y":"value_299"}, {"x":300, "y":"value_300"}, {"x":301, "y":"value_301"}, {"x":302, "y":"value_302"}, {"x":303, "y":"value_303"}, {"x":304, "y":"value_304"}, {"x":305, "y":"value_305"}, {"x":306, "y":"value_306"}, {"x":307, "y":"value_307"}, {"x":308, "y":"value_308"}, {"x":309, "y":"value_309"}, {"x":310, "y":"value_310"}, {"x":311, "y":"value_311"}, {"x":312, "y":"value_312"}, {"x":313, "y":"value_313"}, {"x":314, "y":"value_314"}, {"x":315, "y":"value_315"}, {"x":316, "y":"value_316"}, {"x":317, "y":"value_317"}, {"x":318, "y":"value_318"}, {"x":319, "y":"value_319"}, {"x":320, "y":"value_320"}, {"x":321, "y":"value_321"}, {"x":322, "y":"value_322"}, {"x":323, "y":"value_323"}, {"x":324, "y":"value_324"}, {"x":325, "y":"value_325"}, {"x":326, "y":"value_326"}, {"x":327, "y":"value_327"}, {"x":328, "y":"value_328"}, {"x":329, "y":"value_329"}, {"x":330, "y":"value_330"}, {"x":331, "y":"value_331"}, {"x":332, "y":"value_332"}, {"x":333, "y":"value_333"}, {"x":334, "y":"value_334"}, {"x":335, "y":"value_335"}, {"x":336, "y":"value_336"}, {"x":337, "y":"value_337"}, {"x":338, "y":"value_338"}, {"x":339, "y":"value_339"}, {"x":340, "y":"value_340"}, {"x":341, "y":"value_341"}, {"x":342, "y":"value_342"}, {"x":343, "y":"value_343"}, {"x":344, "y":"value_344"}, {"x":345, "y":"value_345"}, {"x":346, "y":"value_346"}, {"x":347, "y":"value_347"}, {"x":348, "y":"value_348"}, {"x":349, "y":"value_349"}, {"x":350, "y":"value_350"}, {"x":351, "y":"value_351"}, {"x":352, "y":"value_352"}, {"x":353, "y":"value_353"}, {"x":354, "y":"value_354"}, {"x":355, "y":"value_355"}, {"x":356, "y":"value_356"}, {"x":357, "y":"value_357"}, {"x":358, "y":"value_358"}, {"x":359, "y":"value_359"}, {"x":360, "y":"value_360"}, {"x":361, "y":"value_361"}, {"x":362, "y":"value_362"}, {"x":363, "y":"value_363"}, {"x":364, "y":"value_364"}, {"x":365, "y":"value_365"}, {"x":366, "y":"value_366"}, {"x":367, "y":"value_367"}, {"x":368, "y":"value_368"}, {"x":369, "y":"value_369"}, {"x":370, "y":"value_370"}, {"x":371, "y":"value_371"}, {"x":372, "y":"value_372"}, {"x":373, "y":"value_373"}, {"x":374, "y":"value_374"}, {"x":375, "y":"value_375"}, {"x":376, "y":"value_376"}, {"x":377, "y":"value_377"}, {"x":378, "y":"value_378"}, {"x":379, "y":"value_379"}, {"x":380, "y":"value_380"}, {"x":381, "y":"value_381"}, {"x":382, "y":"value_382"}, {"x":383, "y":"value_383"}, {"x":384, "y":"value_384"}, {"x":385, "y":"value_385"}, {"x":386, "y":"value_386"}, {"x":387, "y":"value_387"}, {"x":388, "y":"value_388"}, {"x":389, "y":"value_389"}, {"x":390, "y":"value_390"}, {"x":391, "y":"value_391"}, {"x":392, "y":"value_392"}, {"x":393, "y":"value_393"}, {"x":394, "y":"value_394"}, {"x":395, "y":"value_395"}, {"x":396, "y":"value_396"}, {"x":397, "y":"value_397"}, {"x":398, "y":"value_398"}, {"x":399, "y":"value_399"}, {"x":400, "y":"value_400"}, {"x":401, "y":"value_401"}, {"x":402, "y":"value_402"}, {"x":403, "y":"value_403"}, {"x":404, "y":"value_404"}, {"x":405, "y":"value_405"}, {"x":406, "y":"value_406"}, {"x":407, "y":"value_407"}, {"x":408, "y":"value_408"}, {"x":409, "y":"value_409"}, {"x":410, "y":"value_410"}, {"x":411, "y":"value_411"}, {"x":412, "y":"value_412"}, {"x":413, "y":"value_413"}, {"x":414, "y":"value_414"}, {"x":415, "y":"value_415"}, {"x":416, "y":"value_416"}, {"x":417, "y":"value_417"}, {"x":418, "y":"value_418"}, {"x":419, "y":"value_419"}, {"x":420, "y":"value_420"}, {"x":421, "y":"value_421"}, {"x":422, "y":"value_422"}, {"x":423, "y":"value_423"}, {"x":424, "y":"value_424"}, {"x":425, "y":"value_425"}, {"x":426, "y":"value_426"}, {"x":427, "y":"value_427"}, {"x":428, "y":"value_428"}, {"x":429, "y":"value_429"}, {"x":430, "y":"value_430"}, {"x":431, "y":"value_431"}, {"x":432, "y":"value_432"}, {"x":433, "y":"value_433"}, {"x":434, "y":"value_434"}, {"x":435, "y":"value_435"}, {"x":436, "y":"value_436"}, {"x":437, "y":"value_437"}, {"x":438, "y":"value_438"}, {"x":439, "y":"value_439"}, {"x":440, "y":"value_440"}, {"x":441, "y":"value_441"}, {"x":442, "y":"value_442"}, {"x":443, "y":"value_443"}, {"x":444, "y":"value_444"}, {"x":445, "y":"value_445"}, {"x":446, "y":"value_446"}, {"x":447, "y":"value_447"}, {"x":448, "y":"value_448"}, {"x":449, "y":"value_449"}, {"x":450, "y":"value_450"}, {"x":451, "y":"value_451"}, {"x":452, "y":"value_452"}, {"x":453, "y":"value_453"}, {"x":454, "y":"value_454"}, {"x":455, "y":"value_455"}, {"x":456, "y":"value_456"}, {"x":457, "y":"value_457"}, {"x":458, "y":"value_458"}, {"x":459, "y":"value_459"}, {"x":460, "y":"value_460"}, {"x":461, "y":"value_461"}, {"x":462, "y":"value_462"}, {"x":463, "y":"value_463"}, {"x":464, "y":"value_464"}, {"x":465, "y":"value_465"}, {"x":466, "y":"value_466"}, {"x":467, "y":"value_467"}, {"x":468, "y":"value_468"}, {"x":469, "y":"value_469"}, {"x":470, "y":"value_470"}, {"x":471, "y":"value_471"}, {"x":472, "y":"value_472"}, {"x":473, "y":"value_473"}, {"x":474, "y":"value_474"}, {"x":475, "y":"value_475"}, {"x":476, "y":"value_476"}, {"x":477, "y":"value_477"}, {"x":478, "y":"value_478"}, {"x":479, "y":"value_479"}, {"x":480, "y":"value_480"}, {"x":481, "y":"value_481"}, {"x":482, "y":"value_482"}, {"x":483, "y":"value_483"}, {"x":484, "y":"value_484"}, {"x":485, "y":"value_485"}, {"x":486, "y":"value_486"}, {"x":487, "y":"value_487"}, {"x":488, "y":"value_488"}, {"x":489, "y":"value_489"}, {"x":490, "y":"value_490"}, {"x":491, "y":"value_491"}, {"x":492, "y":"value_492"}, {"x":493, "y":"value_493"}, {"x":494, "y":"value_494"}, {"x":495, "y":"value_495"}, {"x":496, "y":"value_496"}, {"x":497, "y":"value_497"}, {"x":498, "y":"value_498"}, {"x":499, "y":"value_499"}] 500 +3 [{"x":0, "y":"big_0"}, {"x":1, "y":"big_1"}, {"x":2, "y":"big_2"}, {"x":3, "y":"big_3"}, {"x":4, "y":"big_4"}, {"x":5, "y":"big_5"}, {"x":6, "y":"big_6"}, {"x":7, "y":"big_7"}, {"x":8, "y":"big_8"}, {"x":9, "y":"big_9"}, {"x":10, "y":"big_10"}, {"x":11, "y":"big_11"}, {"x":12, "y":"big_12"}, {"x":13, "y":"big_13"}, {"x":14, "y":"big_14"}, {"x":15, "y":"big_15"}, {"x":16, "y":"big_16"}, {"x":17, "y":"big_17"}, {"x":18, "y":"big_18"}, {"x":19, "y":"big_19"}, {"x":20, "y":"big_20"}, {"x":21, "y":"big_21"}, {"x":22, "y":"big_22"}, {"x":23, "y":"big_23"}, {"x":24, "y":"big_24"}, {"x":25, "y":"big_25"}, {"x":26, "y":"big_26"}, {"x":27, "y":"big_27"}, {"x":28, "y":"big_28"}, {"x":29, "y":"big_29"}, {"x":30, "y":"big_30"}, {"x":31, "y":"big_31"}, {"x":32, "y":"big_32"}, {"x":33, "y":"big_33"}, {"x":34, "y":"big_34"}, {"x":35, "y":"big_35"}, {"x":36, "y":"big_36"}, {"x":37, "y":"big_37"}, {"x":38, "y":"big_38"}, {"x":39, "y":"big_39"}, {"x":40, "y":"big_40"}, {"x":41, "y":"big_41"}, {"x":42, "y":"big_42"}, {"x":43, "y":"big_43"}, {"x":44, "y":"big_44"}, {"x":45, "y":"big_45"}, {"x":46, "y":"big_46"}, {"x":47, "y":"big_47"}, {"x":48, "y":"big_48"}, {"x":49, "y":"big_49"}, {"x":50, "y":"big_50"}, {"x":51, "y":"big_51"}, {"x":52, "y":"big_52"}, {"x":53, "y":"big_53"}, {"x":54, "y":"big_54"}, {"x":55, "y":"big_55"}, {"x":56, "y":"big_56"}, {"x":57, "y":"big_57"}, {"x":58, "y":"big_58"}, {"x":59, "y":"big_59"}, {"x":60, "y":"big_60"}, {"x":61, "y":"big_61"}, {"x":62, "y":"big_62"}, {"x":63, "y":"big_63"}, {"x":64, "y":"big_64"}, {"x":65, "y":"big_65"}, {"x":66, "y":"big_66"}, {"x":67, "y":"big_67"}, {"x":68, "y":"big_68"}, {"x":69, "y":"big_69"}, {"x":70, "y":"big_70"}, {"x":71, "y":"big_71"}, {"x":72, "y":"big_72"}, {"x":73, "y":"big_73"}, {"x":74, "y":"big_74"}, {"x":75, "y":"big_75"}, {"x":76, "y":"big_76"}, {"x":77, "y":"big_77"}, {"x":78, "y":"big_78"}, {"x":79, "y":"big_79"}, {"x":80, "y":"big_80"}, {"x":81, "y":"big_81"}, {"x":82, "y":"big_82"}, {"x":83, "y":"big_83"}, {"x":84, "y":"big_84"}, {"x":85, "y":"big_85"}, {"x":86, "y":"big_86"}, {"x":87, "y":"big_87"}, {"x":88, "y":"big_88"}, {"x":89, "y":"big_89"}, {"x":90, "y":"big_90"}, {"x":91, "y":"big_91"}, {"x":92, "y":"big_92"}, {"x":93, "y":"big_93"}, {"x":94, "y":"big_94"}, {"x":95, "y":"big_95"}, {"x":96, "y":"big_96"}, {"x":97, "y":"big_97"}, {"x":98, "y":"big_98"}, {"x":99, "y":"big_99"}, {"x":100, "y":"big_100"}, {"x":101, "y":"big_101"}, {"x":102, "y":"big_102"}, {"x":103, "y":"big_103"}, {"x":104, "y":"big_104"}, {"x":105, "y":"big_105"}, {"x":106, "y":"big_106"}, {"x":107, "y":"big_107"}, {"x":108, "y":"big_108"}, {"x":109, "y":"big_109"}, {"x":110, "y":"big_110"}, {"x":111, "y":"big_111"}, {"x":112, "y":"big_112"}, {"x":113, "y":"big_113"}, {"x":114, "y":"big_114"}, {"x":115, "y":"big_115"}, {"x":116, "y":"big_116"}, {"x":117, "y":"big_117"}, {"x":118, "y":"big_118"}, {"x":119, "y":"big_119"}, {"x":120, "y":"big_120"}, {"x":121, "y":"big_121"}, {"x":122, "y":"big_122"}, {"x":123, "y":"big_123"}, {"x":124, "y":"big_124"}, {"x":125, "y":"big_125"}, {"x":126, "y":"big_126"}, {"x":127, "y":"big_127"}, {"x":128, "y":"big_128"}, {"x":129, "y":"big_129"}, {"x":130, "y":"big_130"}, {"x":131, "y":"big_131"}, {"x":132, "y":"big_132"}, {"x":133, "y":"big_133"}, {"x":134, "y":"big_134"}, {"x":135, "y":"big_135"}, {"x":136, "y":"big_136"}, {"x":137, "y":"big_137"}, {"x":138, "y":"big_138"}, {"x":139, "y":"big_139"}, {"x":140, "y":"big_140"}, {"x":141, "y":"big_141"}, {"x":142, "y":"big_142"}, {"x":143, "y":"big_143"}, {"x":144, "y":"big_144"}, {"x":145, "y":"big_145"}, {"x":146, "y":"big_146"}, {"x":147, "y":"big_147"}, {"x":148, "y":"big_148"}, {"x":149, "y":"big_149"}, {"x":150, "y":"big_150"}, {"x":151, "y":"big_151"}, {"x":152, "y":"big_152"}, {"x":153, "y":"big_153"}, {"x":154, "y":"big_154"}, {"x":155, "y":"big_155"}, {"x":156, "y":"big_156"}, {"x":157, "y":"big_157"}, {"x":158, "y":"big_158"}, {"x":159, "y":"big_159"}, {"x":160, "y":"big_160"}, {"x":161, "y":"big_161"}, {"x":162, "y":"big_162"}, {"x":163, "y":"big_163"}, {"x":164, "y":"big_164"}, {"x":165, "y":"big_165"}, {"x":166, "y":"big_166"}, {"x":167, "y":"big_167"}, {"x":168, "y":"big_168"}, {"x":169, "y":"big_169"}, {"x":170, "y":"big_170"}, {"x":171, "y":"big_171"}, {"x":172, "y":"big_172"}, {"x":173, "y":"big_173"}, {"x":174, "y":"big_174"}, {"x":175, "y":"big_175"}, {"x":176, "y":"big_176"}, {"x":177, "y":"big_177"}, {"x":178, "y":"big_178"}, {"x":179, "y":"big_179"}, {"x":180, "y":"big_180"}, {"x":181, "y":"big_181"}, {"x":182, "y":"big_182"}, {"x":183, "y":"big_183"}, {"x":184, "y":"big_184"}, {"x":185, "y":"big_185"}, {"x":186, "y":"big_186"}, {"x":187, "y":"big_187"}, {"x":188, "y":"big_188"}, {"x":189, "y":"big_189"}, {"x":190, "y":"big_190"}, {"x":191, "y":"big_191"}, {"x":192, "y":"big_192"}, {"x":193, "y":"big_193"}, {"x":194, "y":"big_194"}, {"x":195, "y":"big_195"}, {"x":196, "y":"big_196"}, {"x":197, "y":"big_197"}, {"x":198, "y":"big_198"}, {"x":199, "y":"big_199"}, {"x":200, "y":"big_200"}, {"x":201, "y":"big_201"}, {"x":202, "y":"big_202"}, {"x":203, "y":"big_203"}, {"x":204, "y":"big_204"}, {"x":205, "y":"big_205"}, {"x":206, "y":"big_206"}, {"x":207, "y":"big_207"}, {"x":208, "y":"big_208"}, {"x":209, "y":"big_209"}, {"x":210, "y":"big_210"}, {"x":211, "y":"big_211"}, {"x":212, "y":"big_212"}, {"x":213, "y":"big_213"}, {"x":214, "y":"big_214"}, {"x":215, "y":"big_215"}, {"x":216, "y":"big_216"}, {"x":217, "y":"big_217"}, {"x":218, "y":"big_218"}, {"x":219, "y":"big_219"}, {"x":220, "y":"big_220"}, {"x":221, "y":"big_221"}, {"x":222, "y":"big_222"}, {"x":223, "y":"big_223"}, {"x":224, "y":"big_224"}, {"x":225, "y":"big_225"}, {"x":226, "y":"big_226"}, {"x":227, "y":"big_227"}, {"x":228, "y":"big_228"}, {"x":229, "y":"big_229"}, {"x":230, "y":"big_230"}, {"x":231, "y":"big_231"}, {"x":232, "y":"big_232"}, {"x":233, "y":"big_233"}, {"x":234, "y":"big_234"}, {"x":235, "y":"big_235"}, {"x":236, "y":"big_236"}, {"x":237, "y":"big_237"}, {"x":238, "y":"big_238"}, {"x":239, "y":"big_239"}, {"x":240, "y":"big_240"}, {"x":241, "y":"big_241"}, {"x":242, "y":"big_242"}, {"x":243, "y":"big_243"}, {"x":244, "y":"big_244"}, {"x":245, "y":"big_245"}, {"x":246, "y":"big_246"}, {"x":247, "y":"big_247"}, {"x":248, "y":"big_248"}, {"x":249, "y":"big_249"}, {"x":250, "y":"big_250"}, {"x":251, "y":"big_251"}, {"x":252, "y":"big_252"}, {"x":253, "y":"big_253"}, {"x":254, "y":"big_254"}, {"x":255, "y":"big_255"}, {"x":256, "y":"big_256"}, {"x":257, "y":"big_257"}, {"x":258, "y":"big_258"}, {"x":259, "y":"big_259"}, {"x":260, "y":"big_260"}, {"x":261, "y":"big_261"}, {"x":262, "y":"big_262"}, {"x":263, "y":"big_263"}, {"x":264, "y":"big_264"}, {"x":265, "y":"big_265"}, {"x":266, "y":"big_266"}, {"x":267, "y":"big_267"}, {"x":268, "y":"big_268"}, {"x":269, "y":"big_269"}, {"x":270, "y":"big_270"}, {"x":271, "y":"big_271"}, {"x":272, "y":"big_272"}, {"x":273, "y":"big_273"}, {"x":274, "y":"big_274"}, {"x":275, "y":"big_275"}, {"x":276, "y":"big_276"}, {"x":277, "y":"big_277"}, {"x":278, "y":"big_278"}, {"x":279, "y":"big_279"}, {"x":280, "y":"big_280"}, {"x":281, "y":"big_281"}, {"x":282, "y":"big_282"}, {"x":283, "y":"big_283"}, {"x":284, "y":"big_284"}, {"x":285, "y":"big_285"}, {"x":286, "y":"big_286"}, {"x":287, "y":"big_287"}, {"x":288, "y":"big_288"}, {"x":289, "y":"big_289"}, {"x":290, "y":"big_290"}, {"x":291, "y":"big_291"}, {"x":292, "y":"big_292"}, {"x":293, "y":"big_293"}, {"x":294, "y":"big_294"}, {"x":295, "y":"big_295"}, {"x":296, "y":"big_296"}, {"x":297, "y":"big_297"}, {"x":298, "y":"big_298"}, {"x":299, "y":"big_299"}, {"x":300, "y":"big_300"}, {"x":301, "y":"big_301"}, {"x":302, "y":"big_302"}, {"x":303, "y":"big_303"}, {"x":304, "y":"big_304"}, {"x":305, "y":"big_305"}, {"x":306, "y":"big_306"}, {"x":307, "y":"big_307"}, {"x":308, "y":"big_308"}, {"x":309, "y":"big_309"}, {"x":310, "y":"big_310"}, {"x":311, "y":"big_311"}, {"x":312, "y":"big_312"}, {"x":313, "y":"big_313"}, {"x":314, "y":"big_314"}, {"x":315, "y":"big_315"}, {"x":316, "y":"big_316"}, {"x":317, "y":"big_317"}, {"x":318, "y":"big_318"}, {"x":319, "y":"big_319"}, {"x":320, "y":"big_320"}, {"x":321, "y":"big_321"}, {"x":322, "y":"big_322"}, {"x":323, "y":"big_323"}, {"x":324, "y":"big_324"}, {"x":325, "y":"big_325"}, {"x":326, "y":"big_326"}, {"x":327, "y":"big_327"}, {"x":328, "y":"big_328"}, {"x":329, "y":"big_329"}, {"x":330, "y":"big_330"}, {"x":331, "y":"big_331"}, {"x":332, "y":"big_332"}, {"x":333, "y":"big_333"}, {"x":334, "y":"big_334"}, {"x":335, "y":"big_335"}, {"x":336, "y":"big_336"}, {"x":337, "y":"big_337"}, {"x":338, "y":"big_338"}, {"x":339, "y":"big_339"}, {"x":340, "y":"big_340"}, {"x":341, "y":"big_341"}, {"x":342, "y":"big_342"}, {"x":343, "y":"big_343"}, {"x":344, "y":"big_344"}, {"x":345, "y":"big_345"}, {"x":346, "y":"big_346"}, {"x":347, "y":"big_347"}, {"x":348, "y":"big_348"}, {"x":349, "y":"big_349"}, {"x":350, "y":"big_350"}, {"x":351, "y":"big_351"}, {"x":352, "y":"big_352"}, {"x":353, "y":"big_353"}, {"x":354, "y":"big_354"}, {"x":355, "y":"big_355"}, {"x":356, "y":"big_356"}, {"x":357, "y":"big_357"}, {"x":358, "y":"big_358"}, {"x":359, "y":"big_359"}, {"x":360, "y":"big_360"}, {"x":361, "y":"big_361"}, {"x":362, "y":"big_362"}, {"x":363, "y":"big_363"}, {"x":364, "y":"big_364"}, {"x":365, "y":"big_365"}, {"x":366, "y":"big_366"}, {"x":367, "y":"big_367"}, {"x":368, "y":"big_368"}, {"x":369, "y":"big_369"}, {"x":370, "y":"big_370"}, {"x":371, "y":"big_371"}, {"x":372, "y":"big_372"}, {"x":373, "y":"big_373"}, {"x":374, "y":"big_374"}, {"x":375, "y":"big_375"}, {"x":376, "y":"big_376"}, {"x":377, "y":"big_377"}, {"x":378, "y":"big_378"}, {"x":379, "y":"big_379"}, {"x":380, "y":"big_380"}, {"x":381, "y":"big_381"}, {"x":382, "y":"big_382"}, {"x":383, "y":"big_383"}, {"x":384, "y":"big_384"}, {"x":385, "y":"big_385"}, {"x":386, "y":"big_386"}, {"x":387, "y":"big_387"}, {"x":388, "y":"big_388"}, {"x":389, "y":"big_389"}, {"x":390, "y":"big_390"}, {"x":391, "y":"big_391"}, {"x":392, "y":"big_392"}, {"x":393, "y":"big_393"}, {"x":394, "y":"big_394"}, {"x":395, "y":"big_395"}, {"x":396, "y":"big_396"}, {"x":397, "y":"big_397"}, {"x":398, "y":"big_398"}, {"x":399, "y":"big_399"}, {"x":400, "y":"big_400"}, {"x":401, "y":"big_401"}, {"x":402, "y":"big_402"}, {"x":403, "y":"big_403"}, {"x":404, "y":"big_404"}, {"x":405, "y":"big_405"}, {"x":406, "y":"big_406"}, {"x":407, "y":"big_407"}, {"x":408, "y":"big_408"}, {"x":409, "y":"big_409"}, {"x":410, "y":"big_410"}, {"x":411, "y":"big_411"}, {"x":412, "y":"big_412"}, {"x":413, "y":"big_413"}, {"x":414, "y":"big_414"}, {"x":415, "y":"big_415"}, {"x":416, "y":"big_416"}, {"x":417, "y":"big_417"}, {"x":418, "y":"big_418"}, {"x":419, "y":"big_419"}, {"x":420, "y":"big_420"}, {"x":421, "y":"big_421"}, {"x":422, "y":"big_422"}, {"x":423, "y":"big_423"}, {"x":424, "y":"big_424"}, {"x":425, "y":"big_425"}, {"x":426, "y":"big_426"}, {"x":427, "y":"big_427"}, {"x":428, "y":"big_428"}, {"x":429, "y":"big_429"}, {"x":430, "y":"big_430"}, {"x":431, "y":"big_431"}, {"x":432, "y":"big_432"}, {"x":433, "y":"big_433"}, {"x":434, "y":"big_434"}, {"x":435, "y":"big_435"}, {"x":436, "y":"big_436"}, {"x":437, "y":"big_437"}, {"x":438, "y":"big_438"}, {"x":439, "y":"big_439"}, {"x":440, "y":"big_440"}, {"x":441, "y":"big_441"}, {"x":442, "y":"big_442"}, {"x":443, "y":"big_443"}, {"x":444, "y":"big_444"}, {"x":445, "y":"big_445"}, {"x":446, "y":"big_446"}, {"x":447, "y":"big_447"}, {"x":448, "y":"big_448"}, {"x":449, "y":"big_449"}, {"x":450, "y":"big_450"}, {"x":451, "y":"big_451"}, {"x":452, "y":"big_452"}, {"x":453, "y":"big_453"}, {"x":454, "y":"big_454"}, {"x":455, "y":"big_455"}, {"x":456, "y":"big_456"}, {"x":457, "y":"big_457"}, {"x":458, "y":"big_458"}, {"x":459, "y":"big_459"}, {"x":460, "y":"big_460"}, {"x":461, "y":"big_461"}, {"x":462, "y":"big_462"}, {"x":463, "y":"big_463"}, {"x":464, "y":"big_464"}, {"x":465, "y":"big_465"}, {"x":466, "y":"big_466"}, {"x":467, "y":"big_467"}, {"x":468, "y":"big_468"}, {"x":469, "y":"big_469"}, {"x":470, "y":"big_470"}, {"x":471, "y":"big_471"}, {"x":472, "y":"big_472"}, {"x":473, "y":"big_473"}, {"x":474, "y":"big_474"}, {"x":475, "y":"big_475"}, {"x":476, "y":"big_476"}, {"x":477, "y":"big_477"}, {"x":478, "y":"big_478"}, {"x":479, "y":"big_479"}, {"x":480, "y":"big_480"}, {"x":481, "y":"big_481"}, {"x":482, "y":"big_482"}, {"x":483, "y":"big_483"}, {"x":484, "y":"big_484"}, {"x":485, "y":"big_485"}, {"x":486, "y":"big_486"}, {"x":487, "y":"big_487"}, {"x":488, "y":"big_488"}, {"x":489, "y":"big_489"}, {"x":490, "y":"big_490"}, {"x":491, "y":"big_491"}, {"x":492, "y":"big_492"}, {"x":493, "y":"big_493"}, {"x":494, "y":"big_494"}, {"x":495, "y":"big_495"}, {"x":496, "y":"big_496"}, {"x":497, "y":"big_497"}, {"x":498, "y":"big_498"}, {"x":499, "y":"big_499"}] 500 + +-- !nested_cross_page2_parquet_q5 -- +1 101 value_101 +1 102 value_102 +1 103 value_103 +1 104 value_104 +1 105 value_105 +1 106 value_106 +1 107 value_107 +1 108 value_108 +1 109 value_109 +1 110 value_110 +1 111 value_111 +1 112 value_112 +1 113 value_113 +1 114 value_114 +1 115 value_115 +1 116 value_116 +1 117 value_117 +1 118 value_118 +1 119 value_119 +1 120 value_120 +1 121 value_121 +1 122 value_122 +1 123 value_123 +1 124 value_124 +1 125 value_125 +1 126 value_126 +1 127 value_127 +1 128 value_128 +1 129 value_129 +1 130 value_130 +1 131 value_131 +1 132 value_132 +1 133 value_133 +1 134 value_134 +1 135 value_135 +1 136 value_136 +1 137 value_137 +1 138 value_138 +1 139 value_139 +1 140 value_140 +1 141 value_141 +1 142 value_142 +1 143 value_143 +1 144 value_144 +1 145 value_145 +1 146 value_146 +1 147 value_147 +1 148 value_148 +1 149 value_149 +1 150 value_150 +1 151 value_151 +1 152 value_152 +1 153 value_153 +1 154 value_154 +1 155 value_155 +1 156 value_156 +1 157 value_157 +1 158 value_158 +1 159 value_159 +1 160 value_160 +1 161 value_161 +1 162 value_162 +1 163 value_163 +1 164 value_164 +1 165 value_165 +1 166 value_166 +1 167 value_167 +1 168 value_168 +1 169 value_169 +1 170 value_170 +1 171 value_171 +1 172 value_172 +1 173 value_173 +1 174 value_174 +1 175 value_175 +1 176 value_176 +1 177 value_177 +1 178 value_178 +1 179 value_179 +1 180 value_180 +1 181 value_181 +1 182 value_182 +1 183 value_183 +1 184 value_184 +1 185 value_185 +1 186 value_186 +1 187 value_187 +1 188 value_188 +1 189 value_189 +1 190 value_190 +1 191 value_191 +1 192 value_192 +1 193 value_193 +1 194 value_194 +1 195 value_195 +1 196 value_196 +1 197 value_197 +1 198 value_198 +1 199 value_199 +1 200 value_200 +1 201 value_201 +1 202 value_202 +1 203 value_203 +1 204 value_204 +1 205 value_205 +1 206 value_206 +1 207 value_207 +1 208 value_208 +1 209 value_209 +1 210 value_210 +1 211 value_211 +1 212 value_212 +1 213 value_213 +1 214 value_214 +1 215 value_215 +1 216 value_216 +1 217 value_217 +1 218 value_218 +1 219 value_219 +1 220 value_220 +1 221 value_221 +1 222 value_222 +1 223 value_223 +1 224 value_224 +1 225 value_225 +1 226 value_226 +1 227 value_227 +1 228 value_228 +1 229 value_229 +1 230 value_230 +1 231 value_231 +1 232 value_232 +1 233 value_233 +1 234 value_234 +1 235 value_235 +1 236 value_236 +1 237 value_237 +1 238 value_238 +1 239 value_239 +1 240 value_240 +1 241 value_241 +1 242 value_242 +1 243 value_243 +1 244 value_244 +1 245 value_245 +1 246 value_246 +1 247 value_247 +1 248 value_248 +1 249 value_249 +1 250 value_250 +1 251 value_251 +1 252 value_252 +1 253 value_253 +1 254 value_254 +1 255 value_255 +1 256 value_256 +1 257 value_257 +1 258 value_258 +1 259 value_259 +1 260 value_260 +1 261 value_261 +1 262 value_262 +1 263 value_263 +1 264 value_264 +1 265 value_265 +1 266 value_266 +1 267 value_267 +1 268 value_268 +1 269 value_269 +1 270 value_270 +1 271 value_271 +1 272 value_272 +1 273 value_273 +1 274 value_274 +1 275 value_275 +1 276 value_276 +1 277 value_277 +1 278 value_278 +1 279 value_279 +1 280 value_280 +1 281 value_281 +1 282 value_282 +1 283 value_283 +1 284 value_284 +1 285 value_285 +1 286 value_286 +1 287 value_287 +1 288 value_288 +1 289 value_289 +1 290 value_290 +1 291 value_291 +1 292 value_292 +1 293 value_293 +1 294 value_294 +1 295 value_295 +1 296 value_296 +1 297 value_297 +1 298 value_298 +1 299 value_299 +1 300 value_300 +1 301 value_301 +1 302 value_302 +1 303 value_303 +1 304 value_304 +1 305 value_305 +1 306 value_306 +1 307 value_307 +1 308 value_308 +1 309 value_309 +1 310 value_310 +1 311 value_311 +1 312 value_312 +1 313 value_313 +1 314 value_314 +1 315 value_315 +1 316 value_316 +1 317 value_317 +1 318 value_318 +1 319 value_319 +1 320 value_320 +1 321 value_321 +1 322 value_322 +1 323 value_323 +1 324 value_324 +1 325 value_325 +1 326 value_326 +1 327 value_327 +1 328 value_328 +1 329 value_329 +1 330 value_330 +1 331 value_331 +1 332 value_332 +1 333 value_333 +1 334 value_334 +1 335 value_335 +1 336 value_336 +1 337 value_337 +1 338 value_338 +1 339 value_339 +1 340 value_340 +1 341 value_341 +1 342 value_342 +1 343 value_343 +1 344 value_344 +1 345 value_345 +1 346 value_346 +1 347 value_347 +1 348 value_348 +1 349 value_349 +1 350 value_350 +1 351 value_351 +1 352 value_352 +1 353 value_353 +1 354 value_354 +1 355 value_355 +1 356 value_356 +1 357 value_357 +1 358 value_358 +1 359 value_359 +1 360 value_360 +1 361 value_361 +1 362 value_362 +1 363 value_363 +1 364 value_364 +1 365 value_365 +1 366 value_366 +1 367 value_367 +1 368 value_368 +1 369 value_369 +1 370 value_370 +1 371 value_371 +1 372 value_372 +1 373 value_373 +1 374 value_374 +1 375 value_375 +1 376 value_376 +1 377 value_377 +1 378 value_378 +1 379 value_379 +1 380 value_380 +1 381 value_381 +1 382 value_382 +1 383 value_383 +1 384 value_384 +1 385 value_385 +1 386 value_386 +1 387 value_387 +1 388 value_388 +1 389 value_389 +1 390 value_390 +1 391 value_391 +1 392 value_392 +1 393 value_393 +1 394 value_394 +1 395 value_395 +1 396 value_396 +1 397 value_397 +1 398 value_398 +1 399 value_399 +1 400 value_400 +1 401 value_401 +1 402 value_402 +1 403 value_403 +1 404 value_404 +1 405 value_405 +1 406 value_406 +1 407 value_407 +1 408 value_408 +1 409 value_409 +1 410 value_410 +1 411 value_411 +1 412 value_412 +1 413 value_413 +1 414 value_414 +1 415 value_415 +1 416 value_416 +1 417 value_417 +1 418 value_418 +1 419 value_419 +1 420 value_420 +1 421 value_421 +1 422 value_422 +1 423 value_423 +1 424 value_424 +1 425 value_425 +1 426 value_426 +1 427 value_427 +1 428 value_428 +1 429 value_429 +1 430 value_430 +1 431 value_431 +1 432 value_432 +1 433 value_433 +1 434 value_434 +1 435 value_435 +1 436 value_436 +1 437 value_437 +1 438 value_438 +1 439 value_439 +1 440 value_440 +1 441 value_441 +1 442 value_442 +1 443 value_443 +1 444 value_444 +1 445 value_445 +1 446 value_446 +1 447 value_447 +1 448 value_448 +1 449 value_449 +1 450 value_450 +1 451 value_451 +1 452 value_452 +1 453 value_453 +1 454 value_454 +1 455 value_455 +1 456 value_456 +1 457 value_457 +1 458 value_458 +1 459 value_459 +1 460 value_460 +1 461 value_461 +1 462 value_462 +1 463 value_463 +1 464 value_464 +1 465 value_465 +1 466 value_466 +1 467 value_467 +1 468 value_468 +1 469 value_469 +1 470 value_470 +1 471 value_471 +1 472 value_472 +1 473 value_473 +1 474 value_474 +1 475 value_475 +1 476 value_476 +1 477 value_477 +1 478 value_478 +1 479 value_479 +1 480 value_480 +1 481 value_481 +1 482 value_482 +1 483 value_483 +1 484 value_484 +1 485 value_485 +1 486 value_486 +1 487 value_487 +1 488 value_488 +1 489 value_489 +1 490 value_490 +1 491 value_491 +1 492 value_492 +1 493 value_493 +1 494 value_494 +1 495 value_495 +1 496 value_496 +1 497 value_497 +1 498 value_498 +1 499 value_499 + +-- !nested_cross_page2_parquet_q6 -- +2 {"small_key":[1, 2, 3]} 1 + diff --git a/regression-test/suites/external_table_p0/hive/test_parquet_nested_types.groovy b/regression-test/suites/external_table_p0/hive/test_parquet_nested_types.groovy new file mode 100644 index 000000000000000..2e8073e260b39b7 --- /dev/null +++ b/regression-test/suites/external_table_p0/hive/test_parquet_nested_types.groovy @@ -0,0 +1,154 @@ +// 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_parquet_nested_types", "p0,external,hive,external_docker,external_docker_hive") { + String enabled = context.config.otherConfigs.get("enableHiveTest") + if (enabled == null || !enabled.equalsIgnoreCase("true")) { + logger.info("disable Hive test.") + return; + } + + for (String hivePrefix : ["hive2", "hive3"]) { + String hms_port = context.config.otherConfigs.get(hivePrefix + "HmsPort") + String catalog_name = "${hivePrefix}_test_parquet_nested_types" + String externalEnvIp = context.config.otherConfigs.get("externalEnvIp") + + sql """drop catalog if exists ${catalog_name}""" + sql """create catalog if not exists ${catalog_name} properties ( + "type"="hms", + 'hive.metastore.uris' = 'thrift://${externalEnvIp}:${hms_port}' + );""" + logger.info("catalog " + catalog_name + " created") + sql """switch ${catalog_name};""" + logger.info("switched to catalog " + catalog_name) + + sql """ use multi_catalog """ + + qt_nested_cross_page1_parquet_q1 """select array_col from nested_cross_page1_parquet where id = 1""" + + qt_nested_cross_page1_parquet_q2 """select array_col from nested_cross_page1_parquet where id = 2""" + + qt_nested_cross_page1_parquet_q3 """select array_col from nested_cross_page1_parquet where id = 3""" + + qt_nested_cross_page1_parquet_q4 """ + SELECT id, array_size(array_col) as arr_size + FROM nested_cross_page1_parquet + ORDER BY id + """ + + qt_nested_cross_page1_parquet_q5 """ + SELECT id, array_col[1] as first_elem, array_col[3] as third_elem + FROM nested_cross_page1_parquet + ORDER BY id + """ + + qt_nested_cross_page1_parquet_q6 """ + SELECT id, array_col + FROM nested_cross_page1_parquet + WHERE array_size(array_col) > 100 + ORDER BY id + """ + + qt_nested_cross_page1_parquet_q7 """ + SELECT id, array_col + FROM nested_cross_page1_parquet + WHERE array_contains(array_col, 1) + ORDER BY id + """ + + qt_nested_cross_page1_parquet_q8 """ + SELECT id, array_col, description + FROM nested_cross_page1_parquet + WHERE id > 1 AND array_size(array_col) < 100 + ORDER BY id + """ + + qt_nested_cross_page1_parquet_q9 """ + SELECT + id, + array_min(array_col) as min_val, + array_max(array_col) as max_val + FROM nested_cross_page1_parquet + ORDER BY id + """ + + qt_nested_cross_page1_parquet_q10 """ + SELECT id, array_col + FROM nested_cross_page1_parquet + WHERE description LIKE '%large array%' + ORDER BY id + """ + + qt_nested_cross_page2_parquet_q1 """ + SELECT + id, + nested_array_col, + array_size(nested_array_col) as outer_size + FROM nested_cross_page2_parquet + WHERE id = 1 + """ + + qt_nested_cross_page2_parquet_q2 """ + SELECT + id, + nested_array_col, + array_size(nested_array_col) as outer_size + FROM nested_cross_page2_parquet + WHERE id = 2 + """ + + qt_nested_cross_page2_parquet_q3 """ + SELECT + id, + nested_array_col, + array_size(nested_array_col) as outer_size + FROM nested_cross_page2_parquet + WHERE id = 3 + """ + + qt_nested_cross_page2_parquet_q4 """ + SELECT + id, + array_struct_col, + array_size(array_struct_col) as struct_arr_size + FROM nested_cross_page2_parquet + WHERE description LIKE '%large%' + """ + + qt_nested_cross_page2_parquet_q5 """ + SELECT + id, + item_x as x_value, + item_y as y_value + FROM nested_cross_page2_parquet + LATERAL VIEW EXPLODE(array_struct_col) tmp AS item_x, item_y + WHERE id = 1 AND item_x > 100 + """ + + qt_nested_cross_page2_parquet_q6 """ + SELECT + id, + map_array_col, + array_size(map_array_col) as map_size + FROM nested_cross_page2_parquet + WHERE id = 2 + """ + + sql """drop catalog ${catalog_name};""" + } +} +