)]}'
{
  "log": [
    {
      "commit": "2c9fbb360e32cf19045f68ac27eee9b593c966f5",
      "tree": "b3e3627b25e8906c942e4c0e840ebc8eceee7533",
      "parents": [
        "ed6aa0594d6fafbe12c55da0ee31c25d25f722c0"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@apache.org",
        "time": "Mon Jul 27 22:07:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 22:07:01 2026 +0200"
      },
      "message": "Revert \"GH-3574: Statistics.toParquetStatistics always set null_count(#3575)\" (#3688)\n\nThis reverts commit 63aebcc0cf3684ba6c9dc2b7243c6007d3a1269f."
    },
    {
      "commit": "ed6aa0594d6fafbe12c55da0ee31c25d25f722c0",
      "tree": "abdc9c575428a1dd94042e6f6257889855e1adac",
      "parents": [
        "24ee4d34ec690fa62854eebc87952867d04bdfc9"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Jul 27 15:45:02 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 21:45:02 2026 +0200"
      },
      "message": "MINOR: Verify LICENSE and NOTICE in published JARs (#3689)"
    },
    {
      "commit": "24ee4d34ec690fa62854eebc87952867d04bdfc9",
      "tree": "3b458c1914431e0ea7e96698ac5d23331586255d",
      "parents": [
        "15fdfc1dfc62c9006d15453b70ea35176b69c208"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Jul 27 14:10:14 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 20:10:14 2026 +0200"
      },
      "message": "PARQUET: Include license files in packaged JARs (#3686)"
    },
    {
      "commit": "15fdfc1dfc62c9006d15453b70ea35176b69c208",
      "tree": "aa35b0c16f6a28fed42f04920412cddc46bf769e",
      "parents": [
        "83c2c80d49c57b1ae180df45229ee01dbceddc1e"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Mon Jul 27 14:00:03 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 20:00:03 2026 +0200"
      },
      "message": "chore: Update copyright year in NOTICE file (#3685)"
    },
    {
      "commit": "83c2c80d49c57b1ae180df45229ee01dbceddc1e",
      "tree": "9fb06dccfb552773df4d55718b18ab7773ea3d03",
      "parents": [
        "a52c34bfa26fa5c2fb4f7bcb829b1f76e5b4b62b"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jul 22 11:18:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 17:18:57 2026 +0800"
      },
      "message": "GH-3618: Ban JUnit4 imports (#3681)"
    },
    {
      "commit": "a52c34bfa26fa5c2fb4f7bcb829b1f76e5b4b62b",
      "tree": "65fe8782fff3ae2962fa1eca90049130f0741fca",
      "parents": [
        "49843ee14003a8ee31e374d6fb90370d9461935c"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jul 22 03:54:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 09:54:42 2026 +0800"
      },
      "message": "GH-3618 Migrate parquet-hadoop to JUnit5 (#3676)"
    },
    {
      "commit": "49843ee14003a8ee31e374d6fb90370d9461935c",
      "tree": "f233324b432b94f755d9304697ebccda8083abee",
      "parents": [
        "5e2ad0969c7f411613671c5ef054d399995de5f9"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:57:08 2026 +0200"
      },
      "committer": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:57:08 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "5e2ad0969c7f411613671c5ef054d399995de5f9",
      "tree": "3fd033f42ba1a8f541825df2af44548dae87162e",
      "parents": [
        "cc73e0fb67ce5cab238c9e63f1e8815c2769c298"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:57:02 2026 +0200"
      },
      "committer": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:57:02 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare release apache-parquet-1.18.0-rc1\n"
    },
    {
      "commit": "cc73e0fb67ce5cab238c9e63f1e8815c2769c298",
      "tree": "f233324b432b94f755d9304697ebccda8083abee",
      "parents": [
        "0162a4ec7a5719818afbfb1c0209d0dea0c14881"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:49:54 2026 +0200"
      },
      "committer": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:49:54 2026 +0200"
      },
      "message": "Revert \"[maven-release-plugin] prepare release apache-parquet-1.18.0-rc1\"\n\nThis reverts commit 0162a4ec7a5719818afbfb1c0209d0dea0c14881.\n"
    },
    {
      "commit": "0162a4ec7a5719818afbfb1c0209d0dea0c14881",
      "tree": "3fd033f42ba1a8f541825df2af44548dae87162e",
      "parents": [
        "387113a40106db94ab95aac70a4d226e49be8eeb"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:46:01 2026 +0200"
      },
      "committer": {
        "name": "Fokko Driesprong",
        "email": "fokko@driesprong.frl",
        "time": "Mon Jul 20 15:46:01 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare release apache-parquet-1.18.0-rc1\n"
    },
    {
      "commit": "387113a40106db94ab95aac70a4d226e49be8eeb",
      "tree": "f233324b432b94f755d9304697ebccda8083abee",
      "parents": [
        "79491452dfe2d76961d33f948ff2da6b1becb77f"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@apache.org",
        "time": "Mon Jul 20 14:48:26 2026 +0200"
      },
      "committer": {
        "name": "Fokko Driesprong",
        "email": "fokko@apache.org",
        "time": "Mon Jul 20 14:48:26 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare for next development iteration\n"
    },
    {
      "commit": "79491452dfe2d76961d33f948ff2da6b1becb77f",
      "tree": "3fd033f42ba1a8f541825df2af44548dae87162e",
      "parents": [
        "07812b9e3ea4f9a2bd7bf613c75edbc87825deb7"
      ],
      "author": {
        "name": "Fokko Driesprong",
        "email": "fokko@apache.org",
        "time": "Mon Jul 20 14:48:21 2026 +0200"
      },
      "committer": {
        "name": "Fokko Driesprong",
        "email": "fokko@apache.org",
        "time": "Mon Jul 20 14:48:21 2026 +0200"
      },
      "message": "[maven-release-plugin] prepare release apache-parquet-1.18.0-rc1\n"
    },
    {
      "commit": "07812b9e3ea4f9a2bd7bf613c75edbc87825deb7",
      "tree": "f233324b432b94f755d9304697ebccda8083abee",
      "parents": [
        "82414e2a8aa969ad3cc2e3d9569db9f3fca3cd40"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Mon Jul 20 09:28:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 15:28:42 2026 +0800"
      },
      "message": "Fix CI due to silent merge conflict with AssertJ migration (#3677)"
    },
    {
      "commit": "82414e2a8aa969ad3cc2e3d9569db9f3fca3cd40",
      "tree": "06cb9d7b9f10da884388baeb038f726cfd7b0eca",
      "parents": [
        "f1c18d8231bf182ce34b98ac6e774a303a6c09ae"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Mon Jul 20 08:22:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 14:22:46 2026 +0800"
      },
      "message": "GH-3618: Migrate multiple modules to JUnit5 (#3673)"
    },
    {
      "commit": "f1c18d8231bf182ce34b98ac6e774a303a6c09ae",
      "tree": "1a233be58afd03c93b007b7b73f7f81917859d0b",
      "parents": [
        "9eabc56b6494b452dd5bfff2108b7fb8c414ba2b"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Mon Jul 20 08:22:16 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 14:22:16 2026 +0800"
      },
      "message": "GH-3652: Use assertThat checks in parquet-hadoop tests (#3666)"
    },
    {
      "commit": "9eabc56b6494b452dd5bfff2108b7fb8c414ba2b",
      "tree": "b405fa81955be6a643f9da81ef83db47c238984a",
      "parents": [
        "390b90d007d35983919fb722b5ad140a5a216f13"
      ],
      "author": {
        "name": "Kevin Liu",
        "email": "kevinjqliu@users.noreply.github.com",
        "time": "Sun Jul 19 01:40:17 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 07:40:17 2026 +0200"
      },
      "message": "GH-3671: Keep files readable when they use future logical types (#3669)"
    },
    {
      "commit": "390b90d007d35983919fb722b5ad140a5a216f13",
      "tree": "140364f10ee66e90b4c52099ede7c0d34d618b12",
      "parents": [
        "b6fb9e2f4d08961d32d88ff6e45f454d16c32255"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Fri Jul 17 07:40:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 13:40:47 2026 +0800"
      },
      "message": "GH-3615: Use assertThat checks in parquet-format-structures/parquet-encoding/parquet-thrift tests (#3650)"
    },
    {
      "commit": "b6fb9e2f4d08961d32d88ff6e45f454d16c32255",
      "tree": "d2a3962287ed1383b37495041c560a76575a6bc4",
      "parents": [
        "87c6685b404941a6739697d1747f649072bba389"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Fri Jul 17 04:14:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 10:14:19 2026 +0800"
      },
      "message": "GH-3615: Use assertThat checks in parquet-column tests (#3664)"
    },
    {
      "commit": "87c6685b404941a6739697d1747f649072bba389",
      "tree": "2e809690ece7f16801e54c49250933a12b93f8e0",
      "parents": [
        "3da694f58575dc37bd889c10ff175047f7ba161f"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Thu Jul 16 17:24:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 23:24:42 2026 +0800"
      },
      "message": "GH-3652: Use assertThat checks in parquet-cli tests (#3661)"
    },
    {
      "commit": "3da694f58575dc37bd889c10ff175047f7ba161f",
      "tree": "218b1177b115176d8e7b257f296772043e4830cc",
      "parents": [
        "7a8ea6c439acf4b2b58c6dd59917513b33ac170e"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Thu Jul 16 17:22:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 23:22:55 2026 +0800"
      },
      "message": "GH-3652: Use assertThat checks in parquet-avro tests (#3660)"
    },
    {
      "commit": "7a8ea6c439acf4b2b58c6dd59917513b33ac170e",
      "tree": "10e187b9ef3f27f9ede3eef2a2d4241c9be44d99",
      "parents": [
        "fa5045d435d9c6d877dbb7d874257fac4245b607"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Thu Jul 16 17:18:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 23:18:55 2026 +0800"
      },
      "message": "GH-3652: Use assertThat checks in parquet-common tests (#3654)"
    },
    {
      "commit": "fa5045d435d9c6d877dbb7d874257fac4245b607",
      "tree": "0bcceb8d92cf8c1a32877334b72f5bad8b550201",
      "parents": [
        "5922bf431d2ee6f656825b57eca82a5f5bf4967d"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Tue Jul 14 21:01:24 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 10:01:24 2026 +0800"
      },
      "message": "Set up default protection ruleset for default and release branches (#3563)"
    },
    {
      "commit": "5922bf431d2ee6f656825b57eca82a5f5bf4967d",
      "tree": "3c69dce1875cdbcfac5cc590e819bd04766d352f",
      "parents": [
        "f954a72714b9a9c858bea8b016bc189deeb501fc"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jul 14 13:45:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 13:45:22 2026 +0200"
      },
      "message": "Fix CI caused by a silent merge conflict (#3665)"
    },
    {
      "commit": "f954a72714b9a9c858bea8b016bc189deeb501fc",
      "tree": "6dee88eba2db7af3ff017636f7f40e07d8805f64",
      "parents": [
        "6e1750252cd2a3c8ea7cc28fe4550faf11d74f18"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jul 14 11:06:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:06:09 2026 +0800"
      },
      "message": "GH-3652: Use assertThat checks in parquet-plugins/parquet-protobuf tests (#3653)"
    },
    {
      "commit": "6e1750252cd2a3c8ea7cc28fe4550faf11d74f18",
      "tree": "71913b7cf43a7f23f192aca2d97fd8b6c146c028",
      "parents": [
        "09bd18683120cc503f4b1dd4f3cab57a8256146a"
      ],
      "author": {
        "name": "Anas Khan",
        "email": "anxkhn28@gmail.com",
        "time": "Tue Jul 14 14:35:52 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:05:52 2026 +0800"
      },
      "message": "MINOR: Fix VariantUtil.getByte() Javadoc copied from getShort() (#3649)\n\nThe Javadoc on the package-private VariantUtil.getByte() was copied\nverbatim from getShort() and never adjusted. It listed SHORT as a\nsupported type and documented an @return of \"short value\", but the\nmethod only accepts the BYTE/INT8 type and returns a byte.\n\nCorrect the doc to describe Type.BYTE and an @return of \"The byte\nvalue\". No behavioral change.\n\nSigned-off-by: Anas Khan \u003c83116240+anxkhn@users.noreply.github.com\u003e"
    },
    {
      "commit": "09bd18683120cc503f4b1dd4f3cab57a8256146a",
      "tree": "49fbf50482dc9a957ae5a6004b64031148c6ace5",
      "parents": [
        "d676501a58472cb03b5184fb53223a37be92b18a"
      ],
      "author": {
        "name": "Anas Khan",
        "email": "anxkhn28@gmail.com",
        "time": "Tue Jul 14 14:35:35 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:05:35 2026 +0800"
      },
      "message": "MINOR: Fix withLogicalTypeAnnotation Javadoc @return description (#3648)\n\nThe @return tag on PrimitiveType.withLogicalTypeAnnotation read\n\"a new PrimitiveType with the same fields and a new id null\", which was a\nmangled copy-paste from the sibling withId(int) method. The method does not\nassign a new id: it returns a copy carrying the given logical type annotation\nwhile preserving the existing id via getId(). Correct the description to match\nthe actual behavior.\n\nSigned-off-by: Anas Khan \u003c83116240+anxkhn@users.noreply.github.com\u003e"
    },
    {
      "commit": "d676501a58472cb03b5184fb53223a37be92b18a",
      "tree": "b4b3989c08ecd730e368e669d344e157b701431f",
      "parents": [
        "5e14d7cd43403a95d331be8791e8792dbf38683d"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jul 14 11:05:22 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:05:22 2026 +0800"
      },
      "message": "GH-3644: Handle NoClassDefFoundError in DynMethods (#3645)"
    },
    {
      "commit": "5e14d7cd43403a95d331be8791e8792dbf38683d",
      "tree": "4005c46207142ab7b0c19de2711fc2114e0414e4",
      "parents": [
        "5c360ff5d879d3567f23cea3290894712fb336d9"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jul 14 11:05:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:05:12 2026 +0800"
      },
      "message": "GH-3637: Fix corrupt output when reusing a dictionary writer across row groups after fallback (#3638)"
    },
    {
      "commit": "5c360ff5d879d3567f23cea3290894712fb336d9",
      "tree": "fdca60b7968396b96ac09362e2a90ccfc0064036",
      "parents": [
        "2a87957256bc193438fd6ec7742dbfc9883d99bf"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jul 14 10:59:27 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:59:27 2026 +0800"
      },
      "message": "GH-3659: Throw IAE when dealing with odd-length/invalid hex string in Parquet CLI (#3642)"
    },
    {
      "commit": "2a87957256bc193438fd6ec7742dbfc9883d99bf",
      "tree": "6b2de4b41077ddd107e19cae93550e4205de9528",
      "parents": [
        "8e4f571630276201d6db97e28c635fcce7f44270"
      ],
      "author": {
        "name": "emkornfield",
        "email": "emkornfield@gmail.com",
        "time": "Mon Jul 13 21:28:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 21:28:13 2026 -0700"
      },
      "message": "Add SECURITY.md (#3643)\n\nStarts sketching security model."
    },
    {
      "commit": "8e4f571630276201d6db97e28c635fcce7f44270",
      "tree": "fae4d75731116d827dfde05d75f117f37bfdfad6",
      "parents": [
        "06ed267b9abdcf6aee2e04fca4d02d04494f7b1a"
      ],
      "author": {
        "name": "mengna-lin",
        "email": "mengna_lin@apple.com",
        "time": "Mon Jul 13 19:34:50 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 10:34:50 2026 +0800"
      },
      "message": "PARQUET-3459: Per column compression (#3526)"
    },
    {
      "commit": "06ed267b9abdcf6aee2e04fca4d02d04494f7b1a",
      "tree": "8505d281758981f39edc7adca5dd04dab5e12c62",
      "parents": [
        "fd840fb2271aaaa7f5d61d7ccc5a9c278606a901"
      ],
      "author": {
        "name": "Peter Toth",
        "email": "peter.toth@gmail.com",
        "time": "Tue Jul 14 04:31:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 10:31:44 2026 +0800"
      },
      "message": "GH-3596: Add `RowRanges.Builder` for incremental construction from selected row indices (#3597)\n\n### Rationale for this change\n\nOpening up APIs needed by a later materialization feature in Spark. External readers need to assemble a RowRanges incrementally from a stream of selected row indices (e.g. produced by a downstream filter or join) without having to know page boundaries ahead of time.\n\n### What changes are included in this PR?\n\nAdds a Builder to RowRanges that takes a strictly-increasing sequence of selected row indices via addSelected(long) and coalesces consecutive indices into Range entries. Out-of-order or duplicate calls throw IllegalArgumentException.\n\nRecreate org.apache.parquet.internal.filter2.columnindex.RowRanges as a\ndeprecated subclass of the relocated org.apache.parquet.filter2.columnindex.RowRanges\nso the released ParquetFileReader#readFilteredRowGroup(int, RowRanges) signature\nkeeps linking. Add a deprecated readFilteredRowGroup overload taking the old\ninternal type that delegates to the new one, and drop the japicmp exclusions for\nthat method now that it is compatible. Other internal-only surfaces (RowRanges\nstatics, Range, ColumnIndexFilter return types) remain relocated without a bridge.\n\nAdds a range-level Builder.addSelectedRange(from, to) (addSelectedRow now\ndelegates to it), so RowRanges can be built from page ranges through the\npublic API. create() is reimplemented on top of the builder and moved to\nthe deprecated internal.RowRanges shim, where the released 1.17\ninternal.RowRanges.create(...) signature lived. The public RowRanges no\nlonger references the internal OffsetIndex, and ColumnIndexFilter now builds\nvia the public builder rather than a deprecated method.\n\nBehavior note: the builder rejects overlapping ranges instead of silently\nunioning them (as the old add() did). Offset-index pages never overlap, so\nthe filter path is unaffected; TestRowRanges#testCreate is updated to feed\nrealistic adjacent (non-overlapping) page ranges.\n\n### Are these changes tested?\n\nYes. TestRowRanges covers single/multiple/coalesced ranges, the empty builder case, and the out-of-order/duplicate rejection paths.\n\n### Are there any user-facing changes?\n\nNo.\n\nCloses #3596\n\n---------\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@gmail.com\u003e\nCo-authored-by: Peter Toth \u003cp_toth@apple.com\u003e"
    },
    {
      "commit": "fd840fb2271aaaa7f5d61d7ccc5a9c278606a901",
      "tree": "2799e581fc0fb0a3bf04dc417381f159f9629522",
      "parents": [
        "8298c775434ec481b8af974c5e4617992242ea9b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 13 22:46:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 22:46:18 2026 +0800"
      },
      "message": "Bump com.fasterxml.jackson.core:jackson-databind from 2.22.0 to 2.22.1 (#3658)\n\nBumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.22.0 to 2.22.1.\n- [Commits](https://github.com/FasterXML/jackson/commits)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-databind\n  dependency-version: 2.22.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8298c775434ec481b8af974c5e4617992242ea9b",
      "tree": "9149aa9d68befd472852bbaabed594367bbce8d5",
      "parents": [
        "263038add7547eb51294d3f7f015e0df6729f0c0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 12 16:32:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 16:32:38 2026 +0800"
      },
      "message": "Bump jackson.version from 2.22.0 to 2.22.1 (#3656)\n\nBumps `jackson.version` from 2.22.0 to 2.22.1.\n\nUpdates `com.fasterxml.jackson.core:jackson-core` from 2.22.0 to 2.22.1\n- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.22.0...jackson-core-2.22.1)\n\nUpdates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.22.0 to 2.22.1\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-core\n  dependency-version: 2.22.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310\n  dependency-version: 2.22.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "263038add7547eb51294d3f7f015e0df6729f0c0",
      "tree": "d3d419e683ababdf9098653579b4bdee16d7510a",
      "parents": [
        "b25bf1ed8f9b06e18454f781a18e921546cd3d9b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 12 12:32:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 12:32:29 2026 +0800"
      },
      "message": "Bump com.google.api.grpc:proto-google-common-protos from 2.72.0 to 2.73.0 (#3657)\n\n* Bump com.google.api.grpc:proto-google-common-protos\n\nBumps [com.google.api.grpc:proto-google-common-protos](https://github.com/googleapis/sdk-platform-java) from 2.72.0 to 2.73.0.\n- [Release notes](https://github.com/googleapis/sdk-platform-java/releases)\n- [Changelog](https://github.com/googleapis/sdk-platform-java/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/googleapis/sdk-platform-java/compare/gax/v2.72.0...gax/2.73.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.api.grpc:proto-google-common-protos\n  dependency-version: 2.73.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Preserve NaN bits in plain encoding\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "b25bf1ed8f9b06e18454f781a18e921546cd3d9b",
      "tree": "0373c94e78fba7013072f2ec613f39d21a599dc8",
      "parents": [
        "5cb0ef6751639749fb97d3ae6250f12ad1bda925"
      ],
      "author": {
        "name": "Ismaël Mejía",
        "email": "iemejia@gmail.com",
        "time": "Sat Jul 11 22:47:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 22:47:35 2026 +0200"
      },
      "message": "GH-3530: Optimize PLAIN with direct ByteBuffer I/O (#3565)\n\n* GH-3530: Optimize PLAIN encoding and decoding with direct ByteBuffer I/O\n\nReplace ByteBufferInputStream and LittleEndianDataInputStream wrappers\nwith direct ByteBuffer access for all PLAIN value readers and writers.\n\nReaders (PlainValuesReader, BooleanPlainValuesReader,\nBinaryPlainValuesReader, FixedLenByteArrayPlainValuesReader) now hold a\nlittle-endian ByteBuffer obtained from initFromPage() and call\ngetInt/getLong/getFloat/getDouble directly, eliminating per-value stream\noverhead.\n\nWriters (PlainValuesWriter, BooleanPlainValuesWriter,\nFixedLenByteArrayPlainValuesWriter) write through\nCapacityByteArrayOutputStream\u0027s new writeInt/writeLong methods, which\nput values directly into the NIO slab buffer in little-endian order,\navoiding temporary byte-array allocation.\n\nSupporting changes:\n- CapacityByteArrayOutputStream: allocate slabs with ByteOrder.LITTLE_ENDIAN,\n  add writeInt(int) and writeLong(long) for single-value NIO writes.\n- BytesInput: add zero-copy writeTo(ByteBuffer) and toByteArray() using\n  bulk ByteBuffer.get() instead of stream copy.\n- LittleEndianDataOutputStream: batch single-byte writes into single\n  write(buf, 0, N) calls for writeShort/writeInt.\n\nIncludes JMH benchmarks (PlainEncodingBenchmark, PlainDecodingBenchmark)\ncovering all 7 primitive types for both encoding and decoding.\n\n* GH-3530: Address review comments on PLAIN encoding readers\n\n- Wrap RuntimeException in ParquetDecodingException in all read/skip\n  methods to preserve existing error contract\n- Extract EMPTY_LE_BUFFER constant for empty page initialization\n- Add bounds check in BooleanPlainValuesReader.readBoolean()\n- Use Math.multiplyExact in skip(int n) to detect overflow\n\n* GH-3530: Migrate BytesInput internal calls away from deprecated toByteArray/toByteBuffer\n\n- Base-class toInputStream() now tries getInternalByteBuffer() first\n  for zero-copy path before falling back to deprecated toByteBuffer()\n- ByteArrayBytesInput: add getInternalByteBuffer() and toInputStream()\n  overrides to avoid unnecessary copy through BAOS\n- Add @SuppressWarnings(\"deprecation\") on intentional deprecated overrides"
    },
    {
      "commit": "5cb0ef6751639749fb97d3ae6250f12ad1bda925",
      "tree": "b5202f578c8ffe203804e6c0800da7ecafef7e74",
      "parents": [
        "3dfe50436b7853cdf1c2a79d710bf83b4d73332f"
      ],
      "author": {
        "name": "Anas Khan",
        "email": "anxkhn28@gmail.com",
        "time": "Sun Jul 12 01:58:41 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 22:28:41 2026 +0200"
      },
      "message": "MINOR: Fix PrimitiveStringifier class Javadoc (#3651)\n\nThe class-level Javadoc of PrimitiveStringifier stated that the overloaded\nstringify(...) methods not implemented for the related types throw\n{@link OperationNotSupportedException}. That link resolved to the checked\njavax.naming.OperationNotSupportedException, which these unchecked methods\ncannot throw, and it contradicted every method\u0027s own @throws tag. In fact all\noverloads throw java.lang.UnsupportedOperationException.\n\nPoint the class Javadoc at UnsupportedOperationException and drop the now-unused\njavax.naming import. Documentation-only, no behavioral change."
    },
    {
      "commit": "3dfe50436b7853cdf1c2a79d710bf83b4d73332f",
      "tree": "33571eb08261ab9f2005dcfcc57b2c39d825310f",
      "parents": [
        "95250a9bcbf877f6091df9ddb26bf3337c4c1a3b"
      ],
      "author": {
        "name": "Nathanael Law",
        "email": "njlaw@xyrodian.com",
        "time": "Sat Jul 11 10:01:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 18:01:28 2026 +0800"
      },
      "message": "GH-3621: Replace the previous field in the queue instead of appending to the queue (#3622)"
    },
    {
      "commit": "95250a9bcbf877f6091df9ddb26bf3337c4c1a3b",
      "tree": "bc64ded60e9ae8496368c0a9aaa3c0eedf29aeba",
      "parents": [
        "02337f29a1bd9dc08f8edf4d9d9f18b2c79547ba"
      ],
      "author": {
        "name": "Ismaël Mejía",
        "email": "iemejia@gmail.com",
        "time": "Sat Jul 11 08:02:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 08:02:07 2026 +0200"
      },
      "message": "GH-3475: Fix parquet-vector compatiblity with Java \u003e 17 (#3476)\n\n* GH-3475: Fix parquet-vector compatiblity with Java \u003e 17\n\nReplace the ByteBuffer-specific vector loads with local helpers that copy the required bytes and then call ByteVector.fromArray. This removes the dependency on JDK-specific ByteVector.fromByteBuffer entry points, which can fail with NoSuchMethodError on newer runtimes.\n\nAssisted-by: OpenCode:gpt-5.4\n\n* GH-3475: Address review comments on parquet-vector ByteBuffer load helpers\n\nMirror OpenJDK 17\u0027s masked fromByteBuffer fast path: read the full\nspecies.length() window into a backing array, then let\nByteVector.fromArray(..., mask) apply the mask. Matches the JDK\nsemantics for arbitrary mask shapes (not just contiguous-prefix\nmasks) and keeps array.length \u003d\u003d species.length(), satisfying the\nbounds-check precondition that the masked fromArray overload may\nmake.\n\nAdd a heap-buffer fast path: when input.hasArray() is true, load\ndirectly from the backing byte[] via ByteVector.fromArray. This\navoids the per-call ByteBuffer.duplicate() and the intermediate\nbyte[] allocation/copy that the previous workaround introduced as a\nregression versus the original ByteVector.fromByteBuffer code path.\nThe direct (off-heap) buffer case still falls back to a small\nscratch array; addressing it requires ByteVector.fromMemorySegment,\nwhich is only available on JDK 19+ and cannot be called from\n--release 17 sources.\n\n* GH-3475: Address second round of review comments\n\n- Restore trailing blank line in .gitignore\n- Fix masked fromByteBuffer direct-buffer path: allocate species.length()\n  array but only copy mask.trueCount() bytes, preserving JDK 17 masked-load\n  bounds semantics (only masked-on lanes must be in bounds)\n- Refactor vector-plugins.yml install step to use SPOTLESS_ARGS pattern\n  matching the verify step\n- Add unit tests for direct and read-only ByteBuffer unpack paths\n\nAssisted-by: GitHub Copilot:claude-opus-4.6\n\n* Fix OOM in TestByteBitPacking512VectorLE on CI\n\nThe 512-bit vector tests were allocating arrays of 268 million elements\n(~1 GB each) and iterating through the entire value space (up to 524K\nchunks for bitWidth\u003d32). On the JDK 21 CI runner — which has AVX-512\nsupport so the tests are not skipped — the heap was exceeded, causing\nOutOfMemoryError in the DirectByteBuffer and ReadOnlyByteBuffer tests.\n\nReduce itemMax from 268435456 to 8192 (still 512+ vector iterations per\nchunk) and only test the first and last chunks via a stream filter.\nThis covers both low-range and high-range boundary values while keeping\nmemory trivial (~33 KB per array) and runtime under 1 second.\n\nAssisted-by: GitHub Copilot:claude-opus-4.6\n\n* Fix Spotless formatting in TestByteBitPacking512VectorLE\n\nAssisted-by: OpenCode:claude-opus-4.6\n\n---------\n\nCo-authored-by: Fokko Driesprong \u003cfokko@apache.org\u003e"
    },
    {
      "commit": "02337f29a1bd9dc08f8edf4d9d9f18b2c79547ba",
      "tree": "a4804cc84687dcf8228dd4a7e132edf6c73fe1b0",
      "parents": [
        "ea349cd3e97538574604ee15248713f0c35dd0d9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 11 07:41:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 07:41:21 2026 +0200"
      },
      "message": "Bump org.apache:apache from 38 to 39 (#3646)\n\nBumps [org.apache:apache](https://github.com/apache/maven-apache-parent) from 38 to 39.\n- [Release notes](https://github.com/apache/maven-apache-parent/releases)\n- [Commits](https://github.com/apache/maven-apache-parent/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache:apache\n  dependency-version: \u002739\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ea349cd3e97538574604ee15248713f0c35dd0d9",
      "tree": "bf34a0e2c5f6b06d6e7899c5645c0d204e0ab663",
      "parents": [
        "59a688fb71ff142f9414aadd0474d63eccc7c4d2"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jul 08 15:39:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 21:39:28 2026 +0800"
      },
      "message": "GH-3615: Replace @Test(expected\u003d...) with assertThatThrownBy() checks (#3636)"
    },
    {
      "commit": "59a688fb71ff142f9414aadd0474d63eccc7c4d2",
      "tree": "58409b3e5aebe3f4afee0b1c9ce200a5e31fc225",
      "parents": [
        "1e3338484eebe41d80d86e63da4428eb91c4d416"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jul 08 15:39:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 21:39:06 2026 +0800"
      },
      "message": "GH-3615: Use assertThat checks in parquet-variant tests (#3617)"
    },
    {
      "commit": "1e3338484eebe41d80d86e63da4428eb91c4d416",
      "tree": "0465f3719b68aa2379d1aeaf729465e95c19ba68",
      "parents": [
        "053a851fea6558748f81e9e33f1af9ab7eac31f1"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jul 08 15:38:43 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 21:38:43 2026 +0800"
      },
      "message": "GH-3639: Don\u0027t drop row groups for IN(..., null) when num_nulls is not set (#3640)"
    },
    {
      "commit": "053a851fea6558748f81e9e33f1af9ab7eac31f1",
      "tree": "fd1be36b85d30dfa8e7fd55f4993c9ded2bebaca",
      "parents": [
        "cf81fa22d9cc3f3eea738106c056acd0ec3a55bd"
      ],
      "author": {
        "name": "Aurélien Pupier",
        "email": "apupier@ibm.com",
        "time": "Sun Jul 05 08:23:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 08:23:48 2026 +0200"
      },
      "message": "Restrict trigger push branch for GitHub Workflow (#3641)\n\nFeature branches rarely need their own CI runs: the code is already\ntested when a pull request is opened against a release branch. If the\npush trigger has no branch restriction and pull_request is also\nconfigured, every push to a branch with an open PR runs the workflow\ntwice: once for the push and once for the PR synchronisation.\n\nAlways give the push trigger an explicit list of branches: this stops\nbranches created from a release branch from inheriting its workflow\nruns.\n\nsee https://cwiki.apache.org/confluence/pages/viewpage.action?pageId\u003d430408443#GitHubActionsRecommendedPractices-Restrictthepushtriggertospecificbranches\n\nSigned-off-by: Aurélien Pupier \u003capupier@ibm.com\u003e"
    },
    {
      "commit": "cf81fa22d9cc3f3eea738106c056acd0ec3a55bd",
      "tree": "94d6efe97642f9bd620a8ff3fa5507b82082dfe6",
      "parents": [
        "f0030bd360ff6c7fd1a2bc8f56d3016b1e5549b6"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Fri Jul 03 14:05:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 20:05:49 2026 +0800"
      },
      "message": "GH-3615: Introduce AssertJ for testing (#3616)"
    },
    {
      "commit": "f0030bd360ff6c7fd1a2bc8f56d3016b1e5549b6",
      "tree": "c5e0d63c6b85f63a33324f63736f1a1bd2f05da0",
      "parents": [
        "75aed2896dbf7d90da8014caab10fe4e27a1ded8"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jun 30 17:05:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 23:05:47 2026 +0800"
      },
      "message": "GH-3625: Compute dataSize correctly when dealing with duplicate keys (#3626)"
    },
    {
      "commit": "75aed2896dbf7d90da8014caab10fe4e27a1ded8",
      "tree": "f7ac348e6ae2485908b3fd4d51fb798a9db7c461",
      "parents": [
        "52c0a5e8c5ff7680cc299ce5aad60acef3a9054d"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Tue Jun 30 17:05:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 30 23:05:17 2026 +0800"
      },
      "message": "GH-3628: prevent NPE \u0026 unclosed releaser (#3629)"
    },
    {
      "commit": "52c0a5e8c5ff7680cc299ce5aad60acef3a9054d",
      "tree": "1c8e9685a88d3d4dfbf8db00f9bb6bb8f93501b6",
      "parents": [
        "0b1da61cc705dc4539a765b4a08a7d00d315fc97"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 29 10:25:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 10:25:15 2026 +0800"
      },
      "message": "Bump org.cyclonedx:cyclonedx-maven-plugin from 2.9.1 to 2.9.2 (#3635)\n\nBumps [org.cyclonedx:cyclonedx-maven-plugin](https://github.com/CycloneDX/cyclonedx-maven-plugin) from 2.9.1 to 2.9.2.\n- [Release notes](https://github.com/CycloneDX/cyclonedx-maven-plugin/releases)\n- [Commits](https://github.com/CycloneDX/cyclonedx-maven-plugin/compare/cyclonedx-maven-plugin-2.9.1...cyclonedx-maven-plugin-2.9.2)\n\n---\nupdated-dependencies:\n- dependency-name: org.cyclonedx:cyclonedx-maven-plugin\n  dependency-version: 2.9.2\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0b1da61cc705dc4539a765b4a08a7d00d315fc97",
      "tree": "a181bfe4308e74aca47067e9d6225d72fc1c30cc",
      "parents": [
        "a7b28bba2ca305b6f4e18cec266bacd579327304"
      ],
      "author": {
        "name": "André Rouél",
        "email": "andre.rouel@gmail.com",
        "time": "Thu Jun 25 22:49:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 22:49:05 2026 +0200"
      },
      "message": "GH-3542: Fix `LocalInputFile` `ByteBuffer` read methods (#3543)\n\nSummary\nRoot cause (parquet-common/src/main/java/org/apache/parquet/io/LocalInputFile.java)\nBoth read(ByteBuffer) and readFully(ByteBuffer) called:\nbuf.put(buffer, buf.position() + buf.arrayOffset(), buf.remaining());\nTwo independent bugs:\n1. Wrong put overload semantics. ByteBuffer.put(byte[] src, int offset, int length) reads src[offset..offset+length]. The code passed buf.position() + buf.arrayOffset() as the source offset, but the source is the freshly-allocated buffer array whose indices have no relationship to buf.position() or buf.arrayOffset(). On heap buffers with position\u003d0 and arrayOffset\u003d0 this happens to work; any other state reads from the wrong offset (or throws ArrayIndexOutOfBoundsException).\n2. arrayOffset() is not universally defined. Direct buffers, memory-mapped buffers, and read-only views all throw UnsupportedOperationException from arrayOffset(). Any Parquet consumer passing such a buffer (which is exactly what the steampipe integration test triggers via ParquetFileReader.readFooter) blows up at the first call.\n3. Partial-read accounting. read(ByteBuffer) unconditionally copied buf.remaining() bytes regardless of how many read(byte[]) actually returned, corrupting the destination buffer on short reads / EOF.\nFix\n- readFully(ByteBuffer) → buf.put(buffer) (straight array-to-buffer copy, no arrayOffset()).\n- read(ByteBuffer) → only put read bytes when read \u003e 0, return read (including -1 at EOF).\nTests added\nTestLocalInputOutput gained 8 regression cases in parquet-common/src/test/java/org/apache/parquet/io/:\n- readFullyIntoHeapByteBuffer — baseline happy path.\n- readFullyIntoHeapByteBufferWithNonZeroPosition — exercises the old wrong-source-offset bug.\n- readFullyIntoDirectByteBuffer — direct buffers; arrayOffset() would have thrown.\n- readFullyIntoReadOnlyByteBuffer — read-only views; asserts ReadOnlyBufferException (correct JDK behaviour after the fix).\n- readIntoHeapByteBuffer — baseline.\n- readIntoByteBufferAdvancesPositionByBytesRead — exercises the partial-read accounting bug.\n- readIntoByteBufferReturnsMinusOneAtEof — EOF signalling.\n- readIntoDirectByteBuffer — direct buffer read path."
    },
    {
      "commit": "a7b28bba2ca305b6f4e18cec266bacd579327304",
      "tree": "02e3c24ee946edbb9ec89e227c52152aaf178d18",
      "parents": [
        "071a84122f8c147554e56f44b073402e8a6347cc"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Thu Jun 25 22:42:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 22:42:37 2026 +0200"
      },
      "message": "GH-3618: Upgrade JUnit4 to JUnit 5.14.4 (#3619)"
    },
    {
      "commit": "071a84122f8c147554e56f44b073402e8a6347cc",
      "tree": "94af2449c9a62fa1aa2c8bc65546ae6c320db5a9",
      "parents": [
        "b8b86e0b929f21d694a9f1d20f8fd6b0d51149ee"
      ],
      "author": {
        "name": "Gang Wu",
        "email": "ustcwg@gmail.com",
        "time": "Thu Jun 25 16:17:58 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 16:17:58 2026 +0800"
      },
      "message": "PARQUET-2249: Add IEEE-754 total order and nan count for floating types (#3393)\n\n### Rationale for this change\n\nThis implements the parquet-format IEEE 754 total order column-order work from apache/parquet-format#514 in parquet-java. The existing type-defined order remains the default.\n\nWhile adding the new order, this also fixes floating-point NaN handling so parquet-java preserves the exact FLOAT, DOUBLE, and FLOAT16 bit patterns supplied by applications, including NaN sign and payload bits. Filters are updated to avoid false negatives when NaN semantics cannot be answered safely from metadata.\n\n### What changes are included in this PR?\n\n- Add IEEE_754_TOTAL_ORDER support for FLOAT, DOUBLE, and FLOAT16, including comparators that distinguish -0/+0 and NaN bit patterns.\n- Add floating-point nan_count support in statistics and column indexes, with IEEE-754-specific statistics implementations.\n- Preserve raw floating-point bit patterns in parquet-java floating encodings, including dictionary and byte-stream-split paths.\n- Update statistics, column-index, dictionary, bloom-filter, and record-level filtering so NaN values are handled conservatively where required.\n- Add coverage for statistics, column indexes, dictionary filtering, bloom filtering, record-level filtering, Float16, and parquet-testing interop files.\n\n### Are these changes tested?\n\nYes. This PR adds focused unit and end-to-end tests for the new column order, NaN counts, NaN filtering behavior, raw-bit preservation, and interop with parquet-testing files.\n\n### Are there any user-facing changes?\n\nYes. Users can opt into IEEE_754_TOTAL_ORDER for floating columns. The default column order is unchanged, and existing files remain readable. Filtering around NaN values may be more conservative to avoid dropping data that can still match.\n\nCloses #406"
    },
    {
      "commit": "b8b86e0b929f21d694a9f1d20f8fd6b0d51149ee",
      "tree": "a5f4a701c168ecdb5d71840850587af6f668e4bc",
      "parents": [
        "cd2572dca329a170288e92db9f8d5e6ac1b4a053"
      ],
      "author": {
        "name": "Keuin",
        "email": "keuinx@gmail.com",
        "time": "Wed Jun 24 14:24:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:24:16 2026 +0800"
      },
      "message": "GH-3585: Fix DataPageHeaderV2.num_nulls\u003d-1 when column statistics are disabled (#3586)"
    },
    {
      "commit": "cd2572dca329a170288e92db9f8d5e6ac1b4a053",
      "tree": "ff2f9309ae17039c024593559b9772f5ac0044a0",
      "parents": [
        "ec1b8661c913312e16b21327f9b6f7ac1d16f492"
      ],
      "author": {
        "name": "Peter Toth",
        "email": "peter.toth@gmail.com",
        "time": "Wed Jun 24 08:23:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:23:55 2026 +0800"
      },
      "message": "GH-3598: Expose `getRowRanges(int)` (#3599)\n\n### Rationale for this change\n\nOpening up APIs needed by a later materialization feature in Spark. External readers (e.g. a Spark-side scanner) need (a) the column-index-derived row ranges that may pass the configured filter for a row group, and (b) a metadata-only estimate of the on-disk compressed bytes those ranges correspond to for the currently requested columns, so they can plan I/O without reading column data.\n\n### What changes are included in this PR?\n\n- `getRowRanges(int blockIndex)`: made public; returns row ranges that may pass the configured filter. With no filter, shortcuts to all rows of the row group.\n- `getCompressedBytesForRowRanges(int blockIndex, RowRanges rowRanges)`: metadata-only sum of compressed page sizes for the reader\u0027s currently requested columns whose pages overlap the given row ranges. Dictionary pages are not represented in OffsetIndex and are therefore excluded.\n\n### Are these changes tested?\n\nYes. `TestParquetFileReaderRowRanges` covers: no-filter row ranges cover all rows, empty ranges short-circuit to 0, full ranges equal the per-page OffsetIndex sum and are strictly less than the column-chunk total (proving dictionary-page exclusion), and partial ranges fall between 0 and the full total.\n\n### Are there any user-facing changes?\n\nNo.\n\nCloses #3598\n\nCo-authored-by: Matt Butrovich \u003cmbutrovich@gmail.com\u003e\nCo-authored-by: Peter Toth \u003cp_toth@apple.com\u003e"
    },
    {
      "commit": "ec1b8661c913312e16b21327f9b6f7ac1d16f492",
      "tree": "e8a57c7ecb3647d65f517c76761fdc5a6470edcc",
      "parents": [
        "6129423db38721c9de79448543af9d09f174cf66"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jun 24 08:23:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:23:25 2026 +0800"
      },
      "message": "Bump com.squareup.okhttp3:okhttp from 4.12.0 to 5.4.0 (#3630)"
    },
    {
      "commit": "6129423db38721c9de79448543af9d09f174cf66",
      "tree": "bc618d6892a630c1bc3f8e134d98194229c5005b",
      "parents": [
        "8db1c67f7f8a79bca9bd8bb5b4d330f8329380f8"
      ],
      "author": {
        "name": "Eduard Tudenhoefner",
        "email": "etudenhoefner@gmail.com",
        "time": "Wed Jun 24 08:23:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:23:00 2026 +0800"
      },
      "message": "GH-3627: Add missing onAppend() to VariantBuilder#appendUUIDBytes (#3624)"
    },
    {
      "commit": "8db1c67f7f8a79bca9bd8bb5b4d330f8329380f8",
      "tree": "b53871bd6e451bc13dc2c6e13a4301eb8831faed",
      "parents": [
        "393727e6d14b8ce2a485659a635dca0a2996341a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 24 14:21:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:21:47 2026 +0800"
      },
      "message": "Bump commons-logging:commons-logging from 1.3.6 to 1.4.0 (#3623)\n\nBumps [commons-logging:commons-logging](https://github.com/apache/commons-logging) from 1.3.6 to 1.4.0.\n- [Changelog](https://github.com/apache/commons-logging/blob/master/RELEASE-NOTES.txt)\n- [Commits](https://github.com/apache/commons-logging/compare/rel/commons-logging-1.3.6...rel/commons-logging-1.4.0)\n\n---\nupdated-dependencies:\n- dependency-name: commons-logging:commons-logging\n  dependency-version: 1.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "393727e6d14b8ce2a485659a635dca0a2996341a",
      "tree": "72e288f65fbbf55e2d565fe525a651c60eaf0ea7",
      "parents": [
        "aaff5db42a59ad1e528e88d2d236c1793f95c010"
      ],
      "author": {
        "name": "Gang Wu",
        "email": "ustcwg@gmail.com",
        "time": "Wed Jun 24 14:21:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:21:00 2026 +0800"
      },
      "message": "GH-3632: Fix record-level notIn evaluation (#3631)"
    },
    {
      "commit": "aaff5db42a59ad1e528e88d2d236c1793f95c010",
      "tree": "30ab943a55a461de03dab2f2cb1102ce585acf79",
      "parents": [
        "f280d557509da65df7e205dce6898bce9b4a396e"
      ],
      "author": {
        "name": "André Rouél",
        "email": "andre.rouel@gmail.com",
        "time": "Sun Jun 21 21:23:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 21 21:23:19 2026 +0200"
      },
      "message": "GH-3489: Fix Binary.copy() for direct ByteBuffer-backed values (#3490)\n\nWhy\n\nBinary.copy() is a no-op for ByteBufferBackedBinary instances when isBackingBytesReused is false, returning this instead of a heap-backed copy. When the off-heap decompression path is enabled, column readers produce ByteBufferBackedBinary values that are zero-copy views into Arena-managed direct buffers. Code that calls copy() to take ownership of the data -- such as DictionaryValuesWriter.writeBytes() -- silently receives the original object still pointing into the direct buffer. When the source PageReadStore is closed and the Arena is freed, those Binary values become dangling references, causing IllegalStateException: Already closed on subsequent access.\n\nWhat\n\nOverride copy() in Binary.ByteBufferBackedBinary to always materialize to a heap-backed Binary via fromConstantByteArray(getBytes()) when the backing ByteBuffer is direct. Heap-backed ByteBuffer values delegate to the existing super.copy() behavior to avoid unnecessary copies. The change is in parquet-column/src/main/java/org/apache/parquet/io/api/Binary.java."
    },
    {
      "commit": "f280d557509da65df7e205dce6898bce9b4a396e",
      "tree": "d537b007652caf1ed4e9f51cc199f055cc40fd4e",
      "parents": [
        "ff06a26c86c571cf392e021d81bb743c724f686c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Jun 18 21:31:10 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 21:31:10 2026 +0200"
      },
      "message": "Bump com.fasterxml.jackson.core:jackson-annotations from 2.21 to 2.22 (#3604)\n\nBumps [com.fasterxml.jackson.core:jackson-annotations](https://github.com/FasterXML/jackson) from 2.21 to 2.22.\n- [Commits](https://github.com/FasterXML/jackson/commits)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-annotations\n  dependency-version: \u00272.22\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ff06a26c86c571cf392e021d81bb743c724f686c",
      "tree": "e01d0dbdbf4e3db416b18d2032bfe0d021bbe132",
      "parents": [
        "4a31240256cc14452481e8214413e46ee9c26bdb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Jun 17 09:37:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 09:37:01 2026 +0800"
      },
      "message": "Bump jackson.version from 2.21.4 to 2.22.0 (#3605)\n\nBumps `jackson.version` from 2.21.4 to 2.22.0.\n\nUpdates `com.fasterxml.jackson.core:jackson-core` from 2.21.4 to 2.22.0\n- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.21.4...jackson-core-2.22.0)\n\nUpdates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.21.4 to 2.22.0\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-core\n  dependency-version: 2.22.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310\n  dependency-version: 2.22.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4a31240256cc14452481e8214413e46ee9c26bdb",
      "tree": "9ed3acca063306a7099fcc70489886d3f2af9b56",
      "parents": [
        "f60fe813928fe8c89b65b654190661699ec417c6"
      ],
      "author": {
        "name": "Ismaël Mejía",
        "email": "iemejia@gmail.com",
        "time": "Tue Jun 16 23:06:03 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 23:06:03 2026 +0200"
      },
      "message": "Simplify CI: collapse codec matrix and add zstd coverage (#3580)\n\nRemove the codec matrix dimension from CI Hadoop 3 workflow. The codec\nsplit only parameterized a single integration test (FileEncodingsIT)\nwhile duplicating the entire build+test suite, wasting ~46% of billable\nCI minutes for \u003c1 min of parallelized test execution.\n\nNow all codecs (uncompressed, brotli, gzip, snappy, zstd) run in a\nsingle verify step per JDK version. Also adds zstd to the test matrix."
    },
    {
      "commit": "f60fe813928fe8c89b65b654190661699ec417c6",
      "tree": "29f4def359a2633a2313a2f94dddbea6bea34ba1",
      "parents": [
        "9a34da82bcd956d47d1ca8d959ca7fef05e84274"
      ],
      "author": {
        "name": "Aaron Niskode-Dossett",
        "email": "aniskodedossett@etsy.com",
        "time": "Tue Jun 16 16:04:35 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 23:04:35 2026 +0200"
      },
      "message": "MINOR: Remove Java 8 direct buffer cleaner path (#3591)\n\n* Remove Java 8 direct buffer cleaner path\n\n* comment tweak"
    },
    {
      "commit": "9a34da82bcd956d47d1ca8d959ca7fef05e84274",
      "tree": "f66262dcf2c0be984fed5884e5ea7fd83083c0c7",
      "parents": [
        "63aebcc0cf3684ba6c9dc2b7243c6007d3a1269f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 16 22:49:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 22:49:17 2026 +0200"
      },
      "message": "Bump com.fasterxml.jackson.core:jackson-databind from 2.21.4 to 2.22.0 (#3606)\n\nBumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.21.4 to 2.22.0.\n- [Commits](https://github.com/FasterXML/jackson/commits)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-databind\n  dependency-version: 2.22.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "63aebcc0cf3684ba6c9dc2b7243c6007d3a1269f",
      "tree": "c39678f536055a72335c06affc0dde06465d40a2",
      "parents": [
        "65884b558785da1c05f9398a83a12390e3b2d7f5"
      ],
      "author": {
        "name": "Mahdi Dibaiee",
        "email": "mdibaiee@pm.me",
        "time": "Tue Jun 16 15:42:11 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 22:42:11 2026 +0800"
      },
      "message": "GH-3574: Statistics.toParquetStatistics always set null_count(#3575)"
    },
    {
      "commit": "65884b558785da1c05f9398a83a12390e3b2d7f5",
      "tree": "ac49306ad86ee2681cfc2427f672596f3c15fe8a",
      "parents": [
        "e09e169c6341233397e7d02ac25ae4cd4683175e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jun 15 09:44:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 09:44:23 2026 +0800"
      },
      "message": "Bump com.google.api.grpc:proto-google-common-protos (#3602)\n\nBumps [com.google.api.grpc:proto-google-common-protos](https://github.com/googleapis/sdk-platform-java) from 2.71.0 to 2.72.0.\n- [Release notes](https://github.com/googleapis/sdk-platform-java/releases)\n- [Changelog](https://github.com/googleapis/sdk-platform-java/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/googleapis/sdk-platform-java/compare/gax/v2.71.0...gax/v2.72.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.api.grpc:proto-google-common-protos\n  dependency-version: 2.72.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e09e169c6341233397e7d02ac25ae4cd4683175e",
      "tree": "f410ec30670578005b7acda143c770b20ffea9b5",
      "parents": [
        "05fa1a3b05ab3b2a9ce26746a8f6409fa275838d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jun 14 12:28:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 12:28:08 2026 +0800"
      },
      "message": "Bump com.github.luben:zstd-jni from 1.5.7-9 to 1.5.7-11 (#3613)\n\nBumps [com.github.luben:zstd-jni](https://github.com/luben/zstd-jni) from 1.5.7-9 to 1.5.7-11.\n- [Commits](https://github.com/luben/zstd-jni/compare/v1.5.7-9...v1.5.7-11)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.luben:zstd-jni\n  dependency-version: 1.5.7-11\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "05fa1a3b05ab3b2a9ce26746a8f6409fa275838d",
      "tree": "d3132f9d0f8fcb6934127bbce9ecbed29ed9d686",
      "parents": [
        "7469faa48a2da332331b1b23b7771c2958b3178d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jun 14 12:27:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 14 12:27:38 2026 +0800"
      },
      "message": "Bump protobuf.version from 4.35.0 to 4.35.1 (#3612)\n\nBumps `protobuf.version` from 4.35.0 to 4.35.1.\n\nUpdates `com.google.protobuf:protobuf-java` from 4.35.0 to 4.35.1\n- [Release notes](https://github.com/protocolbuffers/protobuf/releases)\n- [Commits](https://github.com/protocolbuffers/protobuf/commits)\n\nUpdates `com.google.protobuf:protobuf-java-util` from 4.35.0 to 4.35.1\n\n---\nupdated-dependencies:\n- dependency-name: com.google.protobuf:protobuf-java\n  dependency-version: 4.35.1\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: com.google.protobuf:protobuf-java-util\n  dependency-version: 4.35.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7469faa48a2da332331b1b23b7771c2958b3178d",
      "tree": "ca9737c7665d5dce4a851c4261fd0b717de4c5f6",
      "parents": [
        "65f7adef548f9ab52e5790feba1a5ae44f7ad3f7"
      ],
      "author": {
        "name": "Gang Wu",
        "email": "ustcwg@gmail.com",
        "time": "Sat Jun 13 20:16:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 20:16:38 2026 +0800"
      },
      "message": "Bump parquet-format to 2.13.0 (#3611)"
    },
    {
      "commit": "65f7adef548f9ab52e5790feba1a5ae44f7ad3f7",
      "tree": "45d485ca98baff893228fefc1a47a7996ff9a071",
      "parents": [
        "9d9ddcaeeeda3e06dbc5d8bf5e2aef061d27ec6c"
      ],
      "author": {
        "name": "YangJie",
        "email": "yangjie01@baidu.com",
        "time": "Mon Jun 08 13:59:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 13:59:07 2026 +0800"
      },
      "message": "GH-3398: Fix potential ClassLoader leak caused by ThreadLocal lambda in Binary (#3447)"
    },
    {
      "commit": "9d9ddcaeeeda3e06dbc5d8bf5e2aef061d27ec6c",
      "tree": "cc177fd63f62c6784c1c6b1e391ef52a7844ab71",
      "parents": [
        "e090dfee5262b83d93a92a3bbeb555b8377b3011"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 02 09:45:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:45:28 2026 +0800"
      },
      "message": "Bump jackson.version from 2.21.3 to 2.21.4 (#3594)\n\nBumps `jackson.version` from 2.21.3 to 2.21.4.\n\nUpdates `com.fasterxml.jackson.core:jackson-core` from 2.21.3 to 2.21.4\n- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.21.3...jackson-core-2.21.4)\n\nUpdates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.21.3 to 2.21.4\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-core\n  dependency-version: 2.21.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310\n  dependency-version: 2.21.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Gang Wu \u003custcwg@gmail.com\u003e"
    },
    {
      "commit": "e090dfee5262b83d93a92a3bbeb555b8377b3011",
      "tree": "baa4b88f0307dfa771fa406335902a0882279919",
      "parents": [
        "d7acd21d63ede09e4db387e4356aa15b47d6da7d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 02 09:44:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:44:30 2026 +0800"
      },
      "message": "Bump com.fasterxml.jackson.core:jackson-databind from 2.21.3 to 2.21.4 (#3593)\n\nBumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.21.3 to 2.21.4.\n- [Commits](https://github.com/FasterXML/jackson/commits)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-databind\n  dependency-version: 2.21.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d7acd21d63ede09e4db387e4356aa15b47d6da7d",
      "tree": "0d552b5a16cdd928d3c9e046f9d2d98ba33ab425",
      "parents": [
        "7a3e7426f69957f39e693f8b7d814da7874d6a1c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jun 02 09:43:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 09:43:15 2026 +0800"
      },
      "message": "Bump com.github.siom79.japicmp:japicmp-maven-plugin (#3592)\n\nBumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.26.0 to 0.26.1.\n- [Release notes](https://github.com/siom79/japicmp/releases)\n- [Changelog](https://github.com/siom79/japicmp/blob/master/release.py)\n- [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.26.0...japicmp-base-0.26.1)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin\n  dependency-version: 0.26.1\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7a3e7426f69957f39e693f8b7d814da7874d6a1c",
      "tree": "a51f54245dc7fea0131b3dc74fc9ac3558737042",
      "parents": [
        "fb5d512114c2394b40348fb71dacbc179bf4d577"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 31 22:38:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 31 22:38:13 2026 +0200"
      },
      "message": "Bump org.apache:apache from 37 to 38 (#3564)\n\nBumps [org.apache:apache](https://github.com/apache/maven-apache-parent) from 37 to 38.\n- [Release notes](https://github.com/apache/maven-apache-parent/releases)\n- [Commits](https://github.com/apache/maven-apache-parent/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache:apache\n  dependency-version: \u002738\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fb5d512114c2394b40348fb71dacbc179bf4d577",
      "tree": "ee2c555d5bc0c6fefe8171d9c3f375aa417a9fe5",
      "parents": [
        "dc3f1ac73f7ec07a8bf354af22e5ae3b68f0354f"
      ],
      "author": {
        "name": "Steve Loughran",
        "email": "stevel@cloudera.com",
        "time": "Sat May 30 06:41:34 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 07:41:34 2026 +0200"
      },
      "message": "GH-3572: Bump Apache Thrift to 0.23.0 (#3589)\n\n* GH-3572\n\nBump thrift to 0.23\n\nAdded instructions in docs as to where to find the\ngpg/sha signatures and a link to the thrift team KEYS file.\n\n* Thrift 0.23 now checks limits (good!) on read write and depth\n\nBut it means: if you don\u0027t supply a TTransport to TProtocol ctor\nyou hit an NPE during IO whenever those limits are validated.\n\nAdd a StubTTransport which no-ops the read range check and\ndeclares there\u0027s no limit on depth checking.\n\n* Spotless\n\n* review feedback"
    },
    {
      "commit": "dc3f1ac73f7ec07a8bf354af22e5ae3b68f0354f",
      "tree": "48d51ed943146883640f1d2129e3c366c9be6147",
      "parents": [
        "23b0fe55d481e6664af8490dc3e0b1628be1a7ef"
      ],
      "author": {
        "name": "Divjot Arora",
        "email": "divjot.arora@gmail.com",
        "time": "Sat May 30 07:40:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 07:40:07 2026 +0200"
      },
      "message": "GH-3587: Fix `parquet.thrift.string.size.limit` validation (#3588)"
    },
    {
      "commit": "23b0fe55d481e6664af8490dc3e0b1628be1a7ef",
      "tree": "03b7c22e110e7675c2721f39ef05f1e518610ca0",
      "parents": [
        "b8f33308534e990003e48a2e66036ccc83fd5db4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 30 07:39:25 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 30 07:39:25 2026 +0200"
      },
      "message": "Bump protobuf.version from 4.34.1 to 4.35.0 (#3582)\n\nBumps `protobuf.version` from 4.34.1 to 4.35.0.\n\nUpdates `com.google.protobuf:protobuf-java` from 4.34.1 to 4.35.0\n- [Release notes](https://github.com/protocolbuffers/protobuf/releases)\n- [Commits](https://github.com/protocolbuffers/protobuf/commits)\n\nUpdates `com.google.protobuf:protobuf-java-util` from 4.34.1 to 4.35.0\n\n---\nupdated-dependencies:\n- dependency-name: com.google.protobuf:protobuf-java\n  dependency-version: 4.35.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n- dependency-name: com.google.protobuf:protobuf-java-util\n  dependency-version: 4.35.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b8f33308534e990003e48a2e66036ccc83fd5db4",
      "tree": "fcc74b0f41134a9cbe0a27cc9af3662f43017b5e",
      "parents": [
        "8931c1c55f1fba399dd75139f75bcde0b84137c0"
      ],
      "author": {
        "name": "Mikhail Melnik",
        "email": "89072299+mikhail-melnik@users.noreply.github.com",
        "time": "Wed May 27 21:11:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 21:11:18 2026 +0200"
      },
      "message": "GH-3573: Fix VariantUtil string decoding to use explicit UTF-8 charset (#3576)\n\n* Fix VariantUtil string decoding to use explicit UTF-8 charset\n\n* Apply Spotless formatting\n\n* Add tests for non-ASCII string values, object keys and metadata map"
    },
    {
      "commit": "8931c1c55f1fba399dd75139f75bcde0b84137c0",
      "tree": "7b8534b44c0dd74b207fc5ee48349c310a75d63f",
      "parents": [
        "cc1524210238901e94524b3c1d81f22c830e7ba8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon May 25 10:06:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 10:06:53 2026 +0800"
      },
      "message": "Bump com.github.siom79.japicmp:japicmp-maven-plugin (#3583)\n\nBumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.25.7 to 0.26.0.\n- [Release notes](https://github.com/siom79/japicmp/releases)\n- [Changelog](https://github.com/siom79/japicmp/blob/master/release.py)\n- [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.25.7...japicmp-base-0.26.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin\n  dependency-version: 0.26.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cc1524210238901e94524b3c1d81f22c830e7ba8",
      "tree": "e8e901953e0cd1b11e58c70326ea6c80ba8af5c2",
      "parents": [
        "7be05b4702df78ae0c0c6b44adc6b7b7af2d931f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon May 25 09:52:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 25 09:52:01 2026 +0800"
      },
      "message": "Bump com.github.luben:zstd-jni from 1.5.7-8 to 1.5.7-9 (#3581)\n\nBumps [com.github.luben:zstd-jni](https://github.com/luben/zstd-jni) from 1.5.7-8 to 1.5.7-9.\n- [Commits](https://github.com/luben/zstd-jni/compare/v1.5.7-8...v1.5.7-9)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.luben:zstd-jni\n  dependency-version: 1.5.7-9\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7be05b4702df78ae0c0c6b44adc6b7b7af2d931f",
      "tree": "50cb8a085bf9c361303fe3dd573264ff518f175a",
      "parents": [
        "94284873f403766504748d9c79f82961b77d80af"
      ],
      "author": {
        "name": "Neelesh Salian",
        "email": "nssalian@users.noreply.github.com",
        "time": "Tue May 19 03:15:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 12:15:05 2026 +0200"
      },
      "message": "Optimizing Variant read path with lazy caching (#3481)\n\n* Fix thread-safety in Variant lazy caches and add comments\n\nCo-authored-by: Steve Loughran \u003cstevel@cloudera.com\u003e\n\n* Remove unnecessary volatile fields and fix PR comments\n\n* Add readUnsignedLittleEndian for bulk ByteBuffer reads and concurrency javadoc\n\n* PR comments\n\n---------\n\nCo-authored-by: Steve Loughran \u003cstevel@cloudera.com\u003e"
    },
    {
      "commit": "94284873f403766504748d9c79f82961b77d80af",
      "tree": "4982e1d5b4f84ae39f0fdfa11eac7b96d20b0ed6",
      "parents": [
        "3e05546cb5a4d443b87c9c01abe8f04a71e29318"
      ],
      "author": {
        "name": "André Rouél",
        "email": "andre.rouel@gmail.com",
        "time": "Mon May 18 06:04:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 06:04:13 2026 +0200"
      },
      "message": "GH-3484: Eliminate per-page heap allocation for CRC32 (#3485)\n\n* GH-3484 Eliminate per-page heap allocation for CRC32 checksums when using direct `ByteBufferAllocator`\n\nWhy this is safe\n\n- CRC32.update(ByteBuffer) exists since Java 9, processes bytes from position to limit, advancing position.\n- toByteBuffer(releaser) returns either a slice() of the internal buffer (independent position) or a freshly allocated copy. Either way, the original BytesInput is unaffected for the subsequent buf.collect() call, because ByteBufferBytesInput.writeInto() uses buffer.duplicate().\n- When the allocator is direct, toByteBuffer(releaser) returns the direct buffer directly -- zero heap copy. When the allocator is heap-based, behavior is functionally equivalent to the old toByteArray() path.\n- The releaser field already exists on ColumnChunkPageWriter (line 124) and manages buffer lifecycle.\n\n* GH-3484 Release CRC32 ByteBuffers per page to avoid leak across column chunk\n\nThe previous change reused the ColumnChunkPageWriter\u0027s long-lived\nByteBufferReleaser for the CRC32 update buffers. That releaser only\ncloses when the column chunk writer closes (end of row group), so\nevery per-page allocation made by BytesInput.toByteBuffer(releaser)\naccumulated until then. With many pages in a single large column\nchunk this exhausted the heap (TestLargeColumnChunk OOM in CI).\n\nScope each CRC update to a try-with-resources ByteBufferReleaser so\nallocated buffers are returned to the allocator immediately after\ncrc.update(). writePageV2 shares one per-page releaser across the\nthree updates."
    },
    {
      "commit": "3e05546cb5a4d443b87c9c01abe8f04a71e29318",
      "tree": "1b0e5a3d00f93854085ad88c1661a21160afc99c",
      "parents": [
        "c7e7acbd463178039ec29bcfafe41f91c6a4d65b"
      ],
      "author": {
        "name": "Robert Yokota",
        "email": "rayokota@gmail.com",
        "time": "Fri May 15 11:45:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 20:45:32 2026 +0200"
      },
      "message": "Fix `ByteBuffer` handling in `VariantUtil` and `VariantBuilder` (#3472)"
    },
    {
      "commit": "c7e7acbd463178039ec29bcfafe41f91c6a4d65b",
      "tree": "396f76c1be655c9cfb6ad42dcf257f07234c8b9e",
      "parents": [
        "e440cffcfeea0954fc7450421f9e23806dbcee13"
      ],
      "author": {
        "name": "alexeyroytman",
        "email": "33158117+alexeyroytman@users.noreply.github.com",
        "time": "Tue May 12 21:33:04 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 20:33:04 2026 +0200"
      },
      "message": "GH-3482: parquet-hadoop tests to work behind a web proxy (#3483)\n\n* parquet-hadoop tests to work behind a web proxy\n\n* parquet-hadoop to use separate JVM propertied not to clash with existing CI\n\n* syntax fix\n\n* parquet-hadoop: another test provisioned to run behind a web proxy\n\n* safer condition, catching NPE at InterOpTester.java\n\n* better proxy misconfig diagnostic for testing\n\noffered by Copilot\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "e440cffcfeea0954fc7450421f9e23806dbcee13",
      "tree": "e33c3ba6a10c679b7bb16a69d4a3a676ae04d6cc",
      "parents": [
        "b9c11afc9354af962aa378b2fdd6815d9586b080"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 12 15:46:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 15:46:58 2026 +0200"
      },
      "message": "Bump actions/stale from 9 to 10 (#3527)\n\nBumps [actions/stale](https://github.com/actions/stale) from 9 to 10.\n- [Release notes](https://github.com/actions/stale/releases)\n- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/stale/compare/v9...v10)\n\n---\nupdated-dependencies:\n- dependency-name: actions/stale\n  dependency-version: \u002710\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b9c11afc9354af962aa378b2fdd6815d9586b080",
      "tree": "b0c5f5a21777b2cadaa582f56dccbf1c4205df77",
      "parents": [
        "28593d5e46b228c389ebac5a6ae82b46a1c1c6b8"
      ],
      "author": {
        "name": "gaurav7261",
        "email": "142777151+gaurav7261@users.noreply.github.com",
        "time": "Tue May 12 13:11:43 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 15:41:43 2026 +0800"
      },
      "message": "GH-3414: Add parseJson to VariantBuilder for JSON-to-Variant conversion (#3415)\n\n Move parseJson and helpers from VariantBuilder into dedicated VariantJsonParser\n class to isolate Jackson dependency. Add StreamReadConstraints to JsonFactory\n for safety against malicious input. Revert NOTICE (cross-ASF credit not needed).\n Add edge-case tests: empty input, non-JSON, incomplete array, large object.\n\n Ported from Apache Spark\u0027s VariantBuilder.parseJson."
    },
    {
      "commit": "28593d5e46b228c389ebac5a6ae82b46a1c1c6b8",
      "tree": "e4565ee6d622dd318dae9bf26207dce4f658b93c",
      "parents": [
        "492b6863a5a5f8a8be88d58d86703b676ec63c9b"
      ],
      "author": {
        "name": "Steve Loughran",
        "email": "stevel@cloudera.com",
        "time": "Mon May 11 19:52:17 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 20:52:17 2026 +0200"
      },
      "message": "GH-3451: Add JMH benchmark for variants (#3452)\n\n* GH-3451. Add a JMH benchmark for variants\n\nInitial impl.\n\n* WiP: add a deeper version.\n\n* revert plans for a deeper version\n\n* fixes to this benchmark (copilot review)\n\n* deser to recurse down\n* include uuid and bigdecimal\n* reset counter on benchmark setup\n\n* Measure parquet write/read costs.\n\niterations of class code and #of rows are the same\nfor easy compare of overheads.\n\n* WiP, on a file read/write benchmark\n\nUsing the same structure as the iceberg tests do\n\n* building a projection schema\n\n* projection works\n\n* Test to validate impact of lean schema against unshredded files.\n\npainful.\n\n* GH-561 ongoing work\n\n* GH-561 profile driven review of VariantConverters.\n\n* GH-561 Variant benchmarks\n\n* Move under variant package to access private members\n* add \"variant\" group to run.sh\n* new benchmark VariantConverterBenchmark\n\n* spotless\n\n* Benchmark enhancements\n\n* UUIDs in projection benchmark.\n* col4 var column now a long string and named as such.\n* builder and converter benchmarks use @OperationsPerInvocation\n  rather than internal iterators.\n\n* revert production code enhancement.\n\nincluding pulling a benchmark from VariantConverters.\n\nPull the warmup/measurement times to a shared constant.\nIf someone thinks the numbers should be bigger: one place to change."
    },
    {
      "commit": "492b6863a5a5f8a8be88d58d86703b676ec63c9b",
      "tree": "a3f60e18083011ed4ced205681915ea559b4a672",
      "parents": [
        "69947b982947870166877026bd568d27c5582e94"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 09:48:57 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 09:48:57 2026 +0200"
      },
      "message": "Bump com.google.api.grpc:proto-google-common-protos (#3553)\n\nBumps [com.google.api.grpc:proto-google-common-protos](https://github.com/googleapis/sdk-platform-java) from 2.68.0 to 2.71.0.\n- [Release notes](https://github.com/googleapis/sdk-platform-java/releases)\n- [Changelog](https://github.com/googleapis/sdk-platform-java/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/googleapis/sdk-platform-java/compare/v2.68.0...gax/v2.71.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.google.api.grpc:proto-google-common-protos\n  dependency-version: 2.71.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "69947b982947870166877026bd568d27c5582e94",
      "tree": "bd04d2bac33a9deb8a0dfefddd469165efb0340d",
      "parents": [
        "d70b8ed5fd93d5725311a75ec8808a2398c8a6f6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 09:48:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 09:48:36 2026 +0200"
      },
      "message": "Bump com.github.siom79.japicmp:japicmp-maven-plugin (#3554)\n\nBumps [com.github.siom79.japicmp:japicmp-maven-plugin](https://github.com/siom79/japicmp) from 0.25.6 to 0.25.7.\n- [Release notes](https://github.com/siom79/japicmp/releases)\n- [Changelog](https://github.com/siom79/japicmp/blob/master/release.py)\n- [Commits](https://github.com/siom79/japicmp/compare/japicmp-base-0.25.6...japicmp-base-0.25.7)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.siom79.japicmp:japicmp-maven-plugin\n  dependency-version: 0.25.7\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d70b8ed5fd93d5725311a75ec8808a2398c8a6f6",
      "tree": "b1adb08515f710270f2dfc46ab3b8442c032d58e",
      "parents": [
        "ce1d3dae1752123b9669c678dfd7d62be67d052f"
      ],
      "author": {
        "name": "Russell Spitzer",
        "email": "russell.spitzer@GMAIL.COM",
        "time": "Thu May 07 20:46:31 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 08 09:46:31 2026 +0800"
      },
      "message": "MINOR: Fix Spotless formatting in TestCompressionCodec (#3551)\n\nConsolidate the try-with-resources allocator declaration in\ntestLz4RawHeapDecompressorCanCopyLargePage onto a single line so the\nfile passes spotless:check. Master CI has been failing on this since\nGH-3478 (#3486)."
    },
    {
      "commit": "ce1d3dae1752123b9669c678dfd7d62be67d052f",
      "tree": "908c0d6e1b7285fc7e16d088fc0b14d3f953b1f1",
      "parents": [
        "26fa3530f29f42a15ee0f74adf659fbc84662fe7"
      ],
      "author": {
        "name": "Russell Spitzer",
        "email": "russell.spitzer@GMAIL.COM",
        "time": "Wed May 06 16:21:24 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 23:21:24 2026 +0200"
      },
      "message": "GH-3545: Update pom.xml SCM URLs to parquet-java (#3546)\n\nThe repository was renamed from apache/parquet-mr to\napache/parquet-java but the SCM block was never updated."
    },
    {
      "commit": "26fa3530f29f42a15ee0f74adf659fbc84662fe7",
      "tree": "1c511b277fe5cc50774974d34463420e4018ca36",
      "parents": [
        "9b56a1284b3e1897c8063c084e5ae25436d0f461"
      ],
      "author": {
        "name": "Anupam Yadav",
        "email": "anupamy030@gmail.com",
        "time": "Wed May 06 13:28:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 22:28:31 2026 +0200"
      },
      "message": "GH-3261: Fix integer overflow in CapacityByteArrayOutputStream (#3525)\n\nThe overflow check in addSlab() used bytesUsed which is not updated until\nafter addSlab() returns in write(). This caused the overflow guard to miss\ncases where bytesAllocated + nextSlabSize exceeds Integer.MAX_VALUE.\n\nFix:\n- Use bytesAllocated instead of bytesUsed for the overflow check, since\n  bytesAllocated is always up to date when addSlab() is called.\n- Cap nextSlabSize when it would cause bytesAllocated to overflow, instead\n  of letting Math.addExact throw an uncaught ArithmeticException.\n\nCo-authored-by: Anupam Yadav \u003canupamya@amazon.com\u003e"
    },
    {
      "commit": "9b56a1284b3e1897c8063c084e5ae25436d0f461",
      "tree": "fb0e9a4bd03689fc183cf5cb42c0d6e3a16413ee",
      "parents": [
        "b38a6f9ef981114fccb143ac1fa7d4596df1cb84"
      ],
      "author": {
        "name": "André Rouél",
        "email": "andre.rouel@gmail.com",
        "time": "Wed May 06 21:56:38 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 21:56:38 2026 +0200"
      },
      "message": "GH-3497: Fix thread-unsafe singleton in `DefaultValuesWriterFactory` (#3498)\n\n`DefaultValuesWriterFactory` delegates to static singleton instances of `DefaultV1ValuesWriterFactory` and `DefaultV2ValuesWriterFactory`. These singletons store a mutable `parquetProperties` reference via `initialize()`, which gets overwritten by whichever `ParquetProperties` instance calls it last. When multiple Parquet writers run concurrently in the same JVM, the merger\u0027s column writers end up using the appender\u0027s `ByteBufferAllocator`. When the appender is closed and its allocator released, the merger crashes with `IllegalStateException: Already closed` on direct ByteBuffer access because its encoder slabs were allocated from a now-closed arena.\n\nReplace the static final `DEFAULT_V1_WRITER_FACTORY` and `DEFAULT_V2_WRITER_FACTORY` singletons in `DefaultValuesWriterFactory` with fresh instances created per `initialize()` call. This ensures each `ParquetProperties` instance (and its allocator) is isolated to its own factory, eliminating cross-contamination between concurrent writers sharing the same JVM."
    },
    {
      "commit": "b38a6f9ef981114fccb143ac1fa7d4596df1cb84",
      "tree": "65f0a9614981c6379cc15e499f65cee4ecfd50bc",
      "parents": [
        "2346fdbed480a362d9aa5242955ae85fac656e4e"
      ],
      "author": {
        "name": "Anupam Yadav",
        "email": "anupamy030@gmail.com",
        "time": "Wed May 06 12:54:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 21:54:03 2026 +0200"
      },
      "message": "GH-3478: Fix LZ4_RAW heap decompression (#3486)\n\nEagerly materialize the decompressed stream for LZ4_RAW in CodecFactory,\nmatching the existing pattern used for ZSTD. Without this, the lazy\nStreamBytesInput.writeInto() path reads via Channels.newChannel() in\n~8KB chunks, but LZ4_RAW requires all compressed input in a single\nbuffer for one-shot decompression.\n\nAdded a regression test that compresses and decompresses a 16KB page\nthrough the CodecFactory heap path, then calls BytesInput.copy() to\nexercise the chunked materialization code path. The test fails without\nthe fix and passes with it.\n\nCo-authored-by: Anupam Yadav \u003canupamya@amazon.com\u003e"
    },
    {
      "commit": "2346fdbed480a362d9aa5242955ae85fac656e4e",
      "tree": "ff25e13a9174de8120a0acf679f8c9860b129225",
      "parents": [
        "e25110263a2d3f8f932da5ef75ea623675e1934f"
      ],
      "author": {
        "name": "André Rouél",
        "email": "andre.rouel@gmail.com",
        "time": "Wed May 06 21:30:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 21:30:32 2026 +0200"
      },
      "message": "GH-3464: Improve `DeltaByteArrayWriter.writeBytes` (#3465)\n\n* GH-3464 Improve `DeltaByteArrayWriter.writeBytes` to avoid unnecessary allocation and scalar prefix comparison\n\n* GH-3464 Add regression test\n\n* Update DeltaByteArrayWriter.java"
    },
    {
      "commit": "e25110263a2d3f8f932da5ef75ea623675e1934f",
      "tree": "e8fad14415d677c3ed258b47ad57255c54ad8e61",
      "parents": [
        "eb8c0d1c75e7703b35bb575b073af3ee980cb28e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 05 16:56:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 16:56:49 2026 +0800"
      },
      "message": "Bump com.github.luben:zstd-jni from 1.5.7-7 to 1.5.7-8 (#3541)\n\nBumps [com.github.luben:zstd-jni](https://github.com/luben/zstd-jni) from 1.5.7-7 to 1.5.7-8.\n- [Commits](https://github.com/luben/zstd-jni/compare/v1.5.7-7...v1.5.7-8)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.luben:zstd-jni\n  dependency-version: 1.5.7-8\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "eb8c0d1c75e7703b35bb575b073af3ee980cb28e",
      "tree": "ef7c4a4c4521720c2839d9a631c9d6db6cdccbb6",
      "parents": [
        "5eabf456cf2447dd185211d36fa680e948843972"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 05 16:42:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 16:42:24 2026 +0800"
      },
      "message": "Bump commons-io:commons-io from 2.21.0 to 2.22.0 (#3528)\n\nBumps commons-io:commons-io from 2.21.0 to 2.22.0.\n\n---\nupdated-dependencies:\n- dependency-name: commons-io:commons-io\n  dependency-version: 2.22.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5eabf456cf2447dd185211d36fa680e948843972",
      "tree": "e98a32c9ee96f88391d16537bd04895f9148cf7e",
      "parents": [
        "c34123fb0f7eca1d255420d9090741a653fa38f0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue May 05 14:40:48 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 14:40:48 2026 +0800"
      },
      "message": "Bump jackson.version from 2.21.2 to 2.21.3 (#3538)\n\n* Bump jackson.version from 2.21.2 to 2.21.3\n\nBumps `jackson.version` from 2.21.2 to 2.21.3.\n\nUpdates `com.fasterxml.jackson.core:jackson-core` from 2.21.2 to 2.21.3\n- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.21.2...jackson-core-2.21.3)\n\nUpdates `com.fasterxml.jackson.datatype:jackson-datatype-jsr310` from 2.21.2 to 2.21.3\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-core\n  dependency-version: 2.21.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310\n  dependency-version: 2.21.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Bump `jackson-databind` as well\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\nCo-authored-by: Fokko Driesprong \u003cfokko@apache.org\u003e"
    },
    {
      "commit": "c34123fb0f7eca1d255420d9090741a653fa38f0",
      "tree": "19975593131ab9b5a8a014b693ba9f04f73c5068",
      "parents": [
        "53d78425403d1900191f6da956fd67ada729c296"
      ],
      "author": {
        "name": "0x26res",
        "email": "arthur.andres@gmail.com",
        "time": "Tue May 05 06:38:46 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 05 07:38:46 2026 +0200"
      },
      "message": "GH-3112: Fix reading of proto Uint32Value (#3113)\n\n* Fix reading of proto Uint32Value\n\n* Add test for overflow\n\n* Apply spotless\n\n* Roll back change to original test\n\n* Better uint32 example\n\n---------\n\nCo-authored-by: aandres3 \u003caandres@tradewelltech.co\u003e"
    },
    {
      "commit": "53d78425403d1900191f6da956fd67ada729c296",
      "tree": "c4fb8a0835b9a027401bef1361cd6e259376c683",
      "parents": [
        "8ec46d22b86043b53db01c06739728f1f97c169a"
      ],
      "author": {
        "name": "Chungmin Lee",
        "email": "chungmin@chungminlee.com",
        "time": "Fri May 01 08:44:35 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 23:44:35 2026 +0800"
      },
      "message": "GH-3457: Validate column index for null_pages/null_counts contradiction (#3458)\n\n* Validate column index for null_pages/null_counts contradiction\n\nA null_pages entry of true indicates the page consists entirely of null values;\na corresponding null_counts entry of zero contradicts this, as it indicates the\npage has no null values at all. This inconsistency is a sign of invalid metadata\nthat would cause incorrect page skipping during column index filtering —\nthe reader treats such pages as all-null and silently excludes them from query\nresults for predicates requiring non-null values.\n\nAdd validation in ColumnIndexBuilder.build(PrimitiveType) to detect this\ncontradiction and return null, consistent with the existing pattern for invalid\nmin/max values. The null propagates through the read path, causing the filter to\nfall back to reading all pages for the affected column.\n\nAlso fix a pre-existing NPE in the static build() method where build(type)\ncould return null but was not null-checked before accessing boundaryOrder.\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "8ec46d22b86043b53db01c06739728f1f97c169a",
      "tree": "012ce75f6512cf57f113cb0647d45f78f27ed82e",
      "parents": [
        "d7047a9057545b5279432813e2f7117e15fb57d1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 29 15:49:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 29 15:49:17 2026 +0200"
      },
      "message": "Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 (#3434)\n\nBumps [org.codehaus.mojo:build-helper-maven-plugin](https://github.com/mojohaus/build-helper-maven-plugin) from 3.6.0 to 3.6.1.\n- [Release notes](https://github.com/mojohaus/build-helper-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/build-helper-maven-plugin/compare/3.6.0...3.6.1)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.mojo:build-helper-maven-plugin\n  dependency-version: 3.6.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    }
  ],
  "next": "d7047a9057545b5279432813e2f7117e15fb57d1"
}
