From da3445324e1e5adf28cc4d9d1ba340174dc89841 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Fri, 31 Jan 2025 18:52:54 +0900 Subject: [PATCH 1/8] GH-45402: [CI][DEV][Ruby] Reformat codes before apply lint --- .../test/dataset/test-file-system-dataset.rb | 18 +++++++++--------- c_glib/test/test-array.rb | 3 ++- c_glib/test/test-chunked-array-datum.rb | 5 ++++- c_glib/test/test-large-list-array.rb | 8 ++++---- c_glib/test/test-record-batch-datum.rb | 5 ++++- c_glib/test/test-struct-field-options.rb | 3 ++- c_glib/test/test-uint-array-builder.rb | 12 ++++++------ dev/release/01-prepare-test.rb | 3 ++- dev/release/post-12-bump-versions-test.rb | 3 ++- dev/tasks/homebrew-formulae/apache-arrow.rb | 3 ++- .../test/each-raw-record/test-map-array.rb | 4 +++- .../test/raw-records/test-map-array.rb | 3 ++- ruby/red-arrow/test/test-table.rb | 8 ++++---- ruby/red-arrow/test/values/test-map-array.rb | 3 ++- 14 files changed, 48 insertions(+), 33 deletions(-) diff --git a/c_glib/test/dataset/test-file-system-dataset.rb b/c_glib/test/dataset/test-file-system-dataset.rb index 96deedf6b4e..25c50ef9e4f 100644 --- a/c_glib/test/dataset/test-file-system-dataset.rb +++ b/c_glib/test/dataset/test-file-system-dataset.rb @@ -91,15 +91,15 @@ def create_dataset dataset = @factory.finish expected_table = build_table(count: [ - build_int32_array([1, 10]), - build_int32_array([2]), - build_int32_array([3]), - ], - label: [ - build_string_array(["a", "a"]), - build_string_array(["b"]), - build_string_array(["c"]), - ]) + build_int32_array([1, 10]), + build_int32_array([2]), + build_int32_array([3]), + ], + label: [ + build_string_array(["a", "a"]), + build_string_array(["b"]), + build_string_array(["c"]), + ]) return dataset, expected_table end diff --git a/c_glib/test/test-array.rb b/c_glib/test/test-array.rb index aa129a4749a..61db83c776a 100644 --- a/c_glib/test/test-array.rb +++ b/c_glib/test/test-array.rb @@ -119,7 +119,8 @@ def test_to_s sub_test_case("#view") do def test_valid assert_equal(build_float_array([0.0, 1.5, -2.5, nil]), - build_int32_array([0, 1069547520, -1071644672, nil]).view(Arrow::FloatDataType.new)) + build_int32_array([0, 1069547520, -1071644672, nil]) + .view(Arrow::FloatDataType.new)) end def test_invalid diff --git a/c_glib/test/test-chunked-array-datum.rb b/c_glib/test/test-chunked-array-datum.rb index b82f3eed8a7..c27b5438ea9 100644 --- a/c_glib/test/test-chunked-array-datum.rb +++ b/c_glib/test/test-chunked-array-datum.rb @@ -49,7 +49,10 @@ def test_false end def test_to_string - assert_equal("ChunkedArray([\n" + " [\n" + " true,\n" + " false\n" + " ]\n" + "])", @datum.to_s) + assert_equal("ChunkedArray([\n" + + " [\n" + " true,\n" + + " false\n" + " ]\n" + "])", + @datum.to_s) end def test_value diff --git a/c_glib/test/test-large-list-array.rb b/c_glib/test/test-large-list-array.rb index 2f7efab5a07..fa9c92ec87d 100644 --- a/c_glib/test/test-large-list-array.rb +++ b/c_glib/test/test-large-list-array.rb @@ -88,10 +88,10 @@ def test_value_length def test_value_offsets array = build_large_list_array(Arrow::Int8DataType.new, - [ - [-29, 29], - [-1, 0, 1], - ]) + [ + [-29, 29], + [-1, 0, 1], + ]) assert_equal([0, 2, 5], array.value_offsets) end diff --git a/c_glib/test/test-record-batch-datum.rb b/c_glib/test/test-record-batch-datum.rb index ec572e0f130..48735e2e7da 100644 --- a/c_glib/test/test-record-batch-datum.rb +++ b/c_glib/test/test-record-batch-datum.rb @@ -49,7 +49,10 @@ def test_false end def test_to_string - assert_equal("RecordBatch(visible: [\n" + " true,\n" + " false\n" + " ]\n" + ")", @datum.to_s) + assert_equal("RecordBatch(visible: [\n" + + " true,\n" + " false\n" + + " ]\n" + ")", + @datum.to_s) end def test_value diff --git a/c_glib/test/test-struct-field-options.rb b/c_glib/test/test-struct-field-options.rb index 4a614de6df6..f9b492fc4da 100644 --- a/c_glib/test/test-struct-field-options.rb +++ b/c_glib/test/test-struct-field-options.rb @@ -42,7 +42,8 @@ def test_set_dot_path end def test_set_invalid - message = "[struct-field-options][set-field-ref]: Invalid: Dot path '[foo]' contained an unterminated index" + message = "[struct-field-options][set-field-ref]: " + + "Invalid: Dot path '[foo]' contained an unterminated index" assert_raise(Arrow::Error::Invalid.new(message)) do @options.field_ref = "[foo]" end diff --git a/c_glib/test/test-uint-array-builder.rb b/c_glib/test/test-uint-array-builder.rb index 89621189b45..3aa3a1c488d 100644 --- a/c_glib/test/test-uint-array-builder.rb +++ b/c_glib/test/test-uint-array-builder.rb @@ -32,9 +32,9 @@ def test_uint16 values = [0, border_value] assert_equal(build_uint_array([*values, nil]), Arrow::UInt16Array.new(3, - Arrow::Buffer.new(values.pack("S*")), - Arrow::Buffer.new([0b011].pack("C*")), - -1)) + Arrow::Buffer.new(values.pack("S*")), + Arrow::Buffer.new([0b011].pack("C*")), + -1)) end def test_uint32 @@ -42,9 +42,9 @@ def test_uint32 values = [0, border_value] assert_equal(build_uint_array([*values, nil]), Arrow::UInt32Array.new(3, - Arrow::Buffer.new(values.pack("L*")), - Arrow::Buffer.new([0b011].pack("C*")), - -1)) + Arrow::Buffer.new(values.pack("L*")), + Arrow::Buffer.new([0b011].pack("C*")), + -1)) end def test_uint64 diff --git a/dev/release/01-prepare-test.rb b/dev/release/01-prepare-test.rb index 2081d7ab9d9..11beb7707aa 100644 --- a/dev/release/01-prepare-test.rb +++ b/dev/release/01-prepare-test.rb @@ -264,7 +264,8 @@ def test_version_pre_tag "-

#{@previous_r_version} (release)

", "+

#{@release_version}.9000 (dev)

", "+

#{@release_version} (release)

", - "+

#{@previous_r_version}

", + "+

" + + "#{@previous_r_version}

", ] ], }, diff --git a/dev/release/post-12-bump-versions-test.rb b/dev/release/post-12-bump-versions-test.rb index 229dc7e1e1b..188e8d3e0fd 100644 --- a/dev/release/post-12-bump-versions-test.rb +++ b/dev/release/post-12-bump-versions-test.rb @@ -302,7 +302,8 @@ def test_version_post_tag "-

#{@previous_r_version} (release)

", "+

#{@release_version}.9000 (dev)

", "+

#{@release_version} (release)

", - "+

#{@previous_r_version}

", + "+

" + + "#{@previous_r_version}

", ], ], }, diff --git a/dev/tasks/homebrew-formulae/apache-arrow.rb b/dev/tasks/homebrew-formulae/apache-arrow.rb index caf82b8db89..ab76e389124 100644 --- a/dev/tasks/homebrew-formulae/apache-arrow.rb +++ b/dev/tasks/homebrew-formulae/apache-arrow.rb @@ -110,7 +110,8 @@ def install return 0; } EOS - system ENV.cxx, "test.cpp", "-std=c++17", "-I#{include}", "-L#{lib}", "-larrow", "-o", "test" + system ENV.cxx, "test.cpp", "-std=c++17", "-I#{include}", "-L#{lib}", + "-larrow", "-o", "test" system "./test" end end diff --git a/ruby/red-arrow/test/each-raw-record/test-map-array.rb b/ruby/red-arrow/test/each-raw-record/test-map-array.rb index f256543a853..8187d8fd2af 100644 --- a/ruby/red-arrow/test/each-raw-record/test-map-array.rb +++ b/ruby/red-arrow/test/each-raw-record/test-map-array.rb @@ -271,7 +271,9 @@ def test_time64_nano unit = Arrow::TimeUnit::NANO records = [ # 00:10:00.123456789 - [{"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), "key2" => nil}], + [{"key1" => Arrow::Time.new(unit, + (60 * 10) * 1_000_000_000 + 123_456_789), + "key2" => nil}], [nil], ] target = build({ diff --git a/ruby/red-arrow/test/raw-records/test-map-array.rb b/ruby/red-arrow/test/raw-records/test-map-array.rb index c9d3f06ee04..3c88c31b70f 100644 --- a/ruby/red-arrow/test/raw-records/test-map-array.rb +++ b/ruby/red-arrow/test/raw-records/test-map-array.rb @@ -271,7 +271,8 @@ def test_time64_nano unit = Arrow::TimeUnit::NANO records = [ # 00:10:00.123456789 - [{"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), "key2" => nil}], + [{"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), + "key2" => nil}], [nil], ] target = build({ diff --git a/ruby/red-arrow/test/test-table.rb b/ruby/red-arrow/test/test-table.rb index a69e9261568..2117e60df9c 100644 --- a/ruby/red-arrow/test/test-table.rb +++ b/ruby/red-arrow/test/test-table.rb @@ -1521,10 +1521,10 @@ def setup ["key2_right", [100, 20]], ["string", ["1-100", "2-20"]], ]), - table1.join(table2, - ["key1", "key2"], - left_suffix: "_left", - right_suffix: "_right")) + table1.join(table2, + ["key1", "key2"], + left_suffix: "_left", + right_suffix: "_right")) end end end diff --git a/ruby/red-arrow/test/values/test-map-array.rb b/ruby/red-arrow/test/values/test-map-array.rb index 401c2f33aaa..76fb6218046 100644 --- a/ruby/red-arrow/test/values/test-map-array.rb +++ b/ruby/red-arrow/test/values/test-map-array.rb @@ -263,7 +263,8 @@ def test_time64_nano unit = Arrow::TimeUnit::NANO values = [ # 00:10:00.123456789 - {"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), "key2" => nil}, + {"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), + "key2" => nil}, nil, ] target = build({ From 911b6d671fc6c1a47f9f91381285a4cb7e714612 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sat, 1 Feb 2025 22:10:32 +0900 Subject: [PATCH 2/8] GH-45402: [CI][DEV][Ruby] Reformat codes before apply lint --- c_glib/test/test-array.rb | 4 ++-- c_glib/test/test-chunked-array-datum.rb | 12 ++++++++---- c_glib/test/test-record-batch-datum.rb | 11 +++++++---- c_glib/test/test-record-batch.rb | 8 ++++++-- dev/tasks/homebrew-formulae/apache-arrow.rb | 3 +-- .../red-arrow/test/each-raw-record/test-map-array.rb | 7 +++---- 6 files changed, 27 insertions(+), 18 deletions(-) diff --git a/c_glib/test/test-array.rb b/c_glib/test/test-array.rb index 61db83c776a..18a54a29631 100644 --- a/c_glib/test/test-array.rb +++ b/c_glib/test/test-array.rb @@ -118,9 +118,9 @@ def test_to_s sub_test_case("#view") do def test_valid + int32_array = build_int32_array([0, 1069547520, -1071644672, nil]) assert_equal(build_float_array([0.0, 1.5, -2.5, nil]), - build_int32_array([0, 1069547520, -1071644672, nil]) - .view(Arrow::FloatDataType.new)) + int32_array.view(Arrow::FloatDataType.new)) end def test_invalid diff --git a/c_glib/test/test-chunked-array-datum.rb b/c_glib/test/test-chunked-array-datum.rb index c27b5438ea9..56c5160cd08 100644 --- a/c_glib/test/test-chunked-array-datum.rb +++ b/c_glib/test/test-chunked-array-datum.rb @@ -49,10 +49,14 @@ def test_false end def test_to_string - assert_equal("ChunkedArray([\n" + - " [\n" + " true,\n" + - " false\n" + " ]\n" + "])", - @datum.to_s) + assert_equal(<<-CHUNKED_ARRAY.chomp, @datum.to_s) +ChunkedArray([ + [ + true, + false + ] +]) + CHUNKED_ARRAY end def test_value diff --git a/c_glib/test/test-record-batch-datum.rb b/c_glib/test/test-record-batch-datum.rb index 48735e2e7da..e4ddd14a9da 100644 --- a/c_glib/test/test-record-batch-datum.rb +++ b/c_glib/test/test-record-batch-datum.rb @@ -49,10 +49,13 @@ def test_false end def test_to_string - assert_equal("RecordBatch(visible: [\n" + - " true,\n" + " false\n" + - " ]\n" + ")", - @datum.to_s) + assert_equal(<<-RECORD_BATCH.chomp, @datum.to_s) +RecordBatch(visible: [ + true, + false + ] +) + RECORD_BATCH end def test_value diff --git a/c_glib/test/test-record-batch.rb b/c_glib/test/test-record-batch.rb index 90f72c3d522..986956f78ec 100644 --- a/c_glib/test/test-record-batch.rb +++ b/c_glib/test/test-record-batch.rb @@ -243,7 +243,8 @@ def setup end def test_valid - record_batch = Arrow::RecordBatch.new(@schema, @n_rows, [@uint8_value, @valid_name_value]) + record_batch = Arrow::RecordBatch.new(@schema, @n_rows, + [@uint8_value, @valid_name_value]) assert do record_batch.validate_full @@ -253,7 +254,10 @@ def test_valid def test_invalid message = "[record-batch][validate-full]: Invalid: " + "In column 1: Invalid: Invalid UTF8 sequence at string index 0" - record_batch = Arrow::RecordBatch.new(@schema, @n_rows, [@uint8_value, @invalid_name_value]) + record_batch = Arrow::RecordBatch.new(@schema, @n_rows, + [@uint8_value, + @invalid_name_value] + ) assert_raise(Arrow::Error::Invalid.new(message)) do record_batch.validate_full diff --git a/dev/tasks/homebrew-formulae/apache-arrow.rb b/dev/tasks/homebrew-formulae/apache-arrow.rb index ab76e389124..caf82b8db89 100644 --- a/dev/tasks/homebrew-formulae/apache-arrow.rb +++ b/dev/tasks/homebrew-formulae/apache-arrow.rb @@ -110,8 +110,7 @@ def install return 0; } EOS - system ENV.cxx, "test.cpp", "-std=c++17", "-I#{include}", "-L#{lib}", - "-larrow", "-o", "test" + system ENV.cxx, "test.cpp", "-std=c++17", "-I#{include}", "-L#{lib}", "-larrow", "-o", "test" system "./test" end end diff --git a/ruby/red-arrow/test/each-raw-record/test-map-array.rb b/ruby/red-arrow/test/each-raw-record/test-map-array.rb index 8187d8fd2af..2637086b209 100644 --- a/ruby/red-arrow/test/each-raw-record/test-map-array.rb +++ b/ruby/red-arrow/test/each-raw-record/test-map-array.rb @@ -269,11 +269,10 @@ def test_time64_micro def test_time64_nano unit = Arrow::TimeUnit::NANO + # 00:10:00.123456789 + value = Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789) records = [ - # 00:10:00.123456789 - [{"key1" => Arrow::Time.new(unit, - (60 * 10) * 1_000_000_000 + 123_456_789), - "key2" => nil}], + [{"key1" => value, "key2" => nil}], [nil], ] target = build({ From d72df75e6661b7dd78ccdb3439484162051ea003 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 2 Feb 2025 00:44:10 +0900 Subject: [PATCH 3/8] GH-45402: [CI][DEV][Ruby] Reformat codes before apply lint --- ruby/red-arrow/test/raw-records/test-map-array.rb | 6 +++--- ruby/red-arrow/test/values/test-map-array.rb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/ruby/red-arrow/test/raw-records/test-map-array.rb b/ruby/red-arrow/test/raw-records/test-map-array.rb index 3c88c31b70f..c7137c07f06 100644 --- a/ruby/red-arrow/test/raw-records/test-map-array.rb +++ b/ruby/red-arrow/test/raw-records/test-map-array.rb @@ -269,10 +269,10 @@ def test_time64_micro def test_time64_nano unit = Arrow::TimeUnit::NANO + # 00:10:00.123456789 + value = Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789) records = [ - # 00:10:00.123456789 - [{"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), - "key2" => nil}], + [{"key1" => value, "key2" => nil}], [nil], ] target = build({ diff --git a/ruby/red-arrow/test/values/test-map-array.rb b/ruby/red-arrow/test/values/test-map-array.rb index 76fb6218046..a97b8d6510e 100644 --- a/ruby/red-arrow/test/values/test-map-array.rb +++ b/ruby/red-arrow/test/values/test-map-array.rb @@ -261,10 +261,10 @@ def test_time64_micro def test_time64_nano unit = Arrow::TimeUnit::NANO + # 00:10:00.123456789 + key1_value = Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789) values = [ - # 00:10:00.123456789 - {"key1" => Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789), - "key2" => nil}, + {"key1" => key1_value, "key2" => nil}, nil, ] target = build({ From c71f7b61966b6d87a11ed62743f9903a9df78e7c Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 2 Feb 2025 11:17:52 +0900 Subject: [PATCH 4/8] Update c_glib/test/test-record-batch.rb Co-authored-by: Sutou Kouhei --- c_glib/test/test-record-batch.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/c_glib/test/test-record-batch.rb b/c_glib/test/test-record-batch.rb index 986956f78ec..ec59681972f 100644 --- a/c_glib/test/test-record-batch.rb +++ b/c_glib/test/test-record-batch.rb @@ -254,10 +254,8 @@ def test_valid def test_invalid message = "[record-batch][validate-full]: Invalid: " + "In column 1: Invalid: Invalid UTF8 sequence at string index 0" - record_batch = Arrow::RecordBatch.new(@schema, @n_rows, - [@uint8_value, - @invalid_name_value] - ) + columns = [@uint8_value, @invalid_name_value] + record_batch = Arrow::RecordBatch.new(@schema, @n_rows, columns) assert_raise(Arrow::Error::Invalid.new(message)) do record_batch.validate_full From 3d15bf3e4a8de4ea9c8dc5c4dd697ba0db1a9acc Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 2 Feb 2025 11:22:31 +0900 Subject: [PATCH 5/8] GH-45402: [CI][DEV][Ruby] Reformat codes before apply lint --- c_glib/test/test-chunked-array-datum.rb | 4 ++-- c_glib/test/test-record-batch-datum.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/c_glib/test/test-chunked-array-datum.rb b/c_glib/test/test-chunked-array-datum.rb index 56c5160cd08..99e35fc57b0 100644 --- a/c_glib/test/test-chunked-array-datum.rb +++ b/c_glib/test/test-chunked-array-datum.rb @@ -49,14 +49,14 @@ def test_false end def test_to_string - assert_equal(<<-CHUNKED_ARRAY.chomp, @datum.to_s) + assert_equal(<<-DATUM.chomp, @datum.to_s) ChunkedArray([ [ true, false ] ]) - CHUNKED_ARRAY + DATUM end def test_value diff --git a/c_glib/test/test-record-batch-datum.rb b/c_glib/test/test-record-batch-datum.rb index e4ddd14a9da..c50e50f9029 100644 --- a/c_glib/test/test-record-batch-datum.rb +++ b/c_glib/test/test-record-batch-datum.rb @@ -49,13 +49,13 @@ def test_false end def test_to_string - assert_equal(<<-RECORD_BATCH.chomp, @datum.to_s) + assert_equal(<<-DATUM.chomp, @datum.to_s) RecordBatch(visible: [ true, false ] ) - RECORD_BATCH + DATUM end def test_value From 35d901432edafffd36ca62973f500d8ab0c78420 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Sun, 2 Feb 2025 21:49:40 +0900 Subject: [PATCH 6/8] GH-45402: [CI][DEV][Ruby] Reformat codes before apply lint --- c_glib/test/test-record-batch.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/c_glib/test/test-record-batch.rb b/c_glib/test/test-record-batch.rb index ec59681972f..ff821ddf028 100644 --- a/c_glib/test/test-record-batch.rb +++ b/c_glib/test/test-record-batch.rb @@ -243,8 +243,8 @@ def setup end def test_valid - record_batch = Arrow::RecordBatch.new(@schema, @n_rows, - [@uint8_value, @valid_name_value]) + columns = [@uint8_value, @valid_name_value] + record_batch = Arrow::RecordBatch.new(@schema, @n_rows, columns) assert do record_batch.validate_full From 08c2153982f3a032801c3ce8c393627dd999f406 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Mon, 3 Feb 2025 10:43:01 +0900 Subject: [PATCH 7/8] Update ruby/red-arrow/test/values/test-map-array.rb Co-authored-by: Sutou Kouhei --- ruby/red-arrow/test/values/test-map-array.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/red-arrow/test/values/test-map-array.rb b/ruby/red-arrow/test/values/test-map-array.rb index a97b8d6510e..af4279ef534 100644 --- a/ruby/red-arrow/test/values/test-map-array.rb +++ b/ruby/red-arrow/test/values/test-map-array.rb @@ -264,7 +264,7 @@ def test_time64_nano # 00:10:00.123456789 key1_value = Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789) values = [ - {"key1" => key1_value, "key2" => nil}, + {"key1" => value, "key2" => nil}, nil, ] target = build({ From a162aa4b8c73184a8595bcbb899c2c380ff3db97 Mon Sep 17 00:00:00 2001 From: Hiroyuki Sato Date: Mon, 3 Feb 2025 10:43:09 +0900 Subject: [PATCH 8/8] Update ruby/red-arrow/test/values/test-map-array.rb Co-authored-by: Sutou Kouhei --- ruby/red-arrow/test/values/test-map-array.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/red-arrow/test/values/test-map-array.rb b/ruby/red-arrow/test/values/test-map-array.rb index af4279ef534..54e7fecfcc6 100644 --- a/ruby/red-arrow/test/values/test-map-array.rb +++ b/ruby/red-arrow/test/values/test-map-array.rb @@ -262,7 +262,7 @@ def test_time64_micro def test_time64_nano unit = Arrow::TimeUnit::NANO # 00:10:00.123456789 - key1_value = Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789) + value = Arrow::Time.new(unit, (60 * 10) * 1_000_000_000 + 123_456_789) values = [ {"key1" => value, "key2" => nil}, nil,