)]}'
{
  "log": [
    {
      "commit": "de645f3e8145f9a5a2ccc513e76797b57e223d5f",
      "tree": "c26acbb54933f7966a3f3cd308e5ca1a0dc28cb0",
      "parents": [
        "0170994c7fce572ce77c556ace1178986393a6ca"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 21 14:17:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 14:17:08 2026 +0800"
      },
      "message": "Bump org.apache.tomcat.embed:tomcat-embed-core from 9.0.117 to 9.0.118 in /server (#138)\n\n* Bump org.apache.tomcat.embed:tomcat-embed-core in /server\n\nBumps org.apache.tomcat.embed:tomcat-embed-core from 9.0.117 to 9.0.118.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.tomcat.embed:tomcat-embed-core\n  dependency-version: 9.0.118\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Update server/build.gradle\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: Dianjin Wang \u003cwangdianjin@gmail.com\u003e"
    },
    {
      "commit": "0170994c7fce572ce77c556ace1178986393a6ca",
      "tree": "196341f89d6bc0fd622879595a22b529e74103ac",
      "parents": [
        "8de4e56ba7758464616c3a5a3954844a9b791d86"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 10:42:56 2026 +0000"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jul 21 10:13:09 2026 +0800"
      },
      "message": "Bump golang.org/x/crypto from 0.21.0 to 0.52.0 in /cli\n\nBumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.21.0 to 0.52.0.\n- [Commits](https://github.com/golang/crypto/compare/v0.21.0...v0.52.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/crypto\n  dependency-version: 0.52.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "8de4e56ba7758464616c3a5a3954844a9b791d86",
      "tree": "bf204c0f4d21d5e600e8397266ef7467c5b8f5c8",
      "parents": [
        "9ca00566e892ff18802e0cc558ea4ffc967aa6a8"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Sat Jul 18 09:32:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 09:32:00 2026 +0800"
      },
      "message": "CI: add PXF convenience package build workflow (#133)\n\n* CI: add PXF convenience package build workflow\n\nAdd a new GitHub Actions workflow to build DEB/RPM convenience packages\nfrom ASF-approved Apache Cloudberry PXF source release tarballs, and test\nthem against Cloudberry built from its official source release.\n\n* Bring Rocky10 / Ubuntu 24.04 support back"
    },
    {
      "commit": "9ca00566e892ff18802e0cc558ea4ffc967aa6a8",
      "tree": "873c4143c74218c2ae2adce4b2ce6666b39774e6",
      "parents": [
        "70527be0125d72667728b116b0b093a02b71fc6a"
      ],
      "author": {
        "name": "Yice",
        "email": "1095824838@qq.com",
        "time": "Fri Jul 17 14:13:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 14:13:25 2026 +0800"
      },
      "message": "ci: harden Rocky 9 baseline (TZ pin + retry pkg installs + raise HDFS timeout) (#130)\n\n* ci: harden Rocky 9 baseline (TZ pin + HDFS write tuning)\n\nRocky 9 CI has been consistently red since #78 introduced Rocky 9 support\non 2026-03-26. This commit addresses two orthogonal Rocky 9 stability\nissues in one topic, so the reproducibility story stays coherent.\n\nTZ pin (Etc/GMT-1)\n------------------\nParquetTypeConverter.java encodes/decodes INT96 timestamps using\nZoneId.systemDefault() in both bytesToTimestamp() and\ngetBinaryFromTimestamp(). Ubuntu 22.04 inherits Europe/London (BST \u003d\nUTC+1 in summer) from the base image; Rocky 9 defaults to UTC. Same\nParquet input, different timestamp strings, and the .ans expected values\n(calibrated to Ubuntu output) diff on Rocky 9.\n\nPinning TZ\u003dEtc/GMT-1 (fixed UTC+1, no DST) in both distros\u0027 compose\nfiles makes JVM systemDefault() identical everywhere, matches the\nPGOPTIONS timezone\u003d\u0027GMT-1\u0027 already set by run_tests.sh, and preserves\nexisting .ans values (Ubuntu summer already emits UTC+1).\n\nHDFS write tuning\n-----------------\nHdfsWritableTextTest multi-block variants timed out or silently dropped\nwrites on shared GHA free runners. Root cause is a combination of slow\nDataNode ACK under noisy-neighbor I/O contention (default 60s socket\ntimeout kicks in) and unnecessarily large test payloads (1.2 GB) for a\n\u0027multi-block\u0027 assertion that only needs to cross a block boundary a\nhandful of times.\n\n* dfs.client.socket-timeout: 60s -\u003e 180s. Absorbs GHA ACK jitter (worst\n  observed ~90s) without dragging out failure detection when a DataNode\n  is genuinely dead.\n* dfs.blocksize: 128 MB -\u003e 16 MB. Multi-block tests hit boundaries at\n  1/8 the data volume; the boundary code paths (LineRecordReader\n  cross-block splits) are exercised the same way. 16 MB (not 4 MB)\n  leaves headroom for textFormatWideRowsInsert\u0027s 10 MiB rows to fit in\n  one block, avoiding a Rocky 9-only write/read comparison bug at\n  cross-block row boundaries.\n* HdfsWritableTextTest data volume: 15000x1000 rows (~1.2 GB) -\u003e\n  1000x1000 rows (~80 MB). 5 blocks at 16 MB each still exercises\n  multi-block reader/writer paths.\n\nAll changes are in CI configuration and test fixtures. No PXF Java\nsource, no shipped artifacts, zero customer-facing risk.\n\nRelated to #17.\n\n* ci: cache \u0026 retry external downloads\n\nCI jobs fail intermittently due to transient upstream unavailability of\nnetwork dependencies pulled at build/test time. Symptoms observed on\napache/cloudberry-pxf#130 across four rounds of retries:\n\n* Rocky HPC SIG dnf mirrorlist returning empty (spurious dnf install\n  failures during container bring-up)\n* Maven Central returning 5xx on artifactregistry-maven-wagon-*.pom\n* maven.top-q.co.il (single-source repo for JSystem test framework)\n  returning 504 for jsystemCore-*.pom\n* mcr.microsoft.com returning transient 5xx during testcontainers\u0027\n  runtime pull of mssql/server:2019-latest for JdbcMssqlTest\n\nNone of these are our upstreams, but blaming them isn\u0027t a fix; the\npurpose of #130 (and #17) is to make CI green regardless of external\nservice jitter. Two complementary strategies:\n\n1. Retry package-manager installs (shell layer)\n--------------------------------------------------\nAdd a shared retry() helper in utils.sh (3 attempts, 15s delay) and\nwrap the network-touching install/update commands in entrypoint.sh,\nbuild_pxf.sh, and build_cloudberrry.sh:\n\n  * sudo apt update / sudo apt install / sudo apt-get install\n  * sudo dnf install\n\nLocal file installs (rpm -Uvh $file, dpkg -i $file) are left as-is.\n\n2. Cache external artifacts across CI runs (workflow layer)\n-------------------------------------------------------------\n* Maven local repository (~/.m2/repository) — cached with a key derived\n  from automation/pom.xml hash, restored across three job matrices:\n    - pxf-test          (container mvn)\n    - pxf-test-rocky9   (container mvn)\n    - pxf-testcontainer-test (host mvn)\n  Container jobs bind-mount ${GITHUB_WORKSPACE}/.m2 into the pxf-cbdb-dev\n  container as /home/gpadmin/.m2 so both mvn invocations share one\n  cache. Once warm, Maven Central + top-q.co.il are never contacted on\n  reruns.\n\n* MSSQL testcontainer image (mcr.microsoft.com/mssql/server:2019-latest)\n  — saved as a tarball and cached. On cache miss, retries the docker\n  pull 3 times with backoff before failing. Only enabled for the\n  pxf-jdbc TC group (the only consumer).\n\nAll changes are scoped to CI infrastructure. No non-official Maven\nmirrors are configured (Apache release policy). Cache keys are branch-\nscoped by GHA automatically, so PR reruns immediately benefit while\nmain-branch cache stays isolated.\n\nRelated to #17.\n\n* ci: raise HDFS DataNode startup wait to 180s\n\nTest PXF Rocky9 - smoke intermittently fails with \u0027DataNode not\navailable after 90s\u0027 in entrypoint.sh\u0027s wait_for_datanode helper. The\nsmoke test is the first test group run against a freshly booted\npxf-cbdb-dev container and starts the entire Hadoop/Hive/HBase stack\ncold — NameNode, DataNode, Hive metastore, HiveServer2, HBase\nmaster/regionserver — all competing for CPU and I/O on a shared GHA\nrunner.\n\nDataNode registration path breakdown:\n  1. JVM cold start (class load + JIT + GC warmup)\n  2. DataNode scans /data/dn/dfs/data for existing block metadata\n  3. DataNode registers with NameNode (sends block report)\n  4. NameNode ACKs, exits safe mode, marks DataNode Live\n  5. \u0027hdfs dfsadmin -report\u0027 shows \u0027Live datanodes: 1\u0027\n\nOn healthy GHA runners this cycle completes in 20-40s. Under I/O\ncontention (overlay2 file I/O slowness + noisy-neighbor CPU\nstarvation) it can stretch to 90-180s. The prior 90s/attempt * 2\nattempts \u003d 180s total budget is on the edge and intermittently\ninsufficient.\n\nRaise per-attempt wait from 90s to 180s (max_attempts unchanged at 2,\ntotal budget 360s). Healthy runs are unaffected — the loop exits as\nsoon as DataNode reports Live. Only the tail latency budget grows.\n\nRelated to #17."
    },
    {
      "commit": "70527be0125d72667728b116b0b093a02b71fc6a",
      "tree": "a9e58fd65d429bec139a7ad300a7f36922bfac06",
      "parents": [
        "4d10c4980801de6359118fd0fecf10e3f81e5eff"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Wed Jul 15 23:13:24 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 23:13:24 2026 +0300"
      },
      "message": "Update gradle wrapper to 8.14.4 to support Java 21 (#109)\n\nI am not sure that I understand Gradle Compatibility Matrix[1]. However it seems that Gradle 8.x should work with java ranging from Java 8 to Java 21 well.\n\n[1] https://docs.gradle.org/current/userguide/compatibility.html"
    },
    {
      "commit": "4d10c4980801de6359118fd0fecf10e3f81e5eff",
      "tree": "d714b92012175b1576a4405164d9351b130e41e6",
      "parents": [
        "ed7c85743d9dabf94a32d2fa3a1baff14636ef96"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Mon Jul 13 13:09:40 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 15:09:40 2026 +0500"
      },
      "message": "Testcontainers: run PxfExtensionTest in testcontainers (#125)\n\nUse TestContainers for \"pxf_extension\" test group:\n1. use TestContainers\n2. explicitly specify extension version - so, there is no need in SQL file manipulation\n3. remove \u0027SELECT\u0027 from test - we don\u0027t care about external-table 2.0 (pre PXF 6.7)."
    },
    {
      "commit": "ed7c85743d9dabf94a32d2fa3a1baff14636ef96",
      "tree": "007e9dbd0ae9de01ab35bf0e38ba77c54d3594b8",
      "parents": [
        "75cf1f61795bacf58f2f1e36eb97e57f8f935324"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Fri Jul 10 05:17:56 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 10 10:17:56 2026 +0800"
      },
      "message": "Explicit dependencies in pxf-hdfs (#122)\n\n* Fix ZSTD compression support with Parquet\n* add snappy\n* aircompressor is a runtime dependency"
    },
    {
      "commit": "75cf1f61795bacf58f2f1e36eb97e57f8f935324",
      "tree": "5cc35b3e562029e0480e8089085815b365f6c4ad",
      "parents": [
        "68ed30467edc3987a4f5e8fe25f801a8d6273e21"
      ],
      "author": {
        "name": "Sanikadze",
        "email": "Sanikadze@ya.ru",
        "time": "Wed Jul 01 11:51:31 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 16:51:31 2026 +0800"
      },
      "message": "Bump log4j to 2.25.4 (#121)\n\nBump log4j from 2.17.2 to 2.25.4. Closes CVE-2026-34480\n\nSigned-off-by: Sanikadze \u003ckavun.alexsander@gmail.com\u003e\nCo-authored-by: Sanikadze \u003ckavun.alexsander@gmail.com\u003e"
    },
    {
      "commit": "68ed30467edc3987a4f5e8fe25f801a8d6273e21",
      "tree": "c71916c98570d2c9075e8299d1838a0ba30b2066",
      "parents": [
        "9c4d1c73b01c4fe491a5df2aaedbff89698cbcd7"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Thu Jun 18 09:38:56 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 09:38:56 2026 +0300"
      },
      "message": "Bump HBase version (#120)\n\nUpdate `hbase-client` from `2.3.7` to `2.5.15` (to version with hadoop3 support):\n* Still use hadoop 2 version.\n* Update dependencies, where it changed\n* Automation tests: upgrade hbase to 2.5.15 as well\n\nThis should prepare PXF migration to Hadoop 3.x"
    },
    {
      "commit": "9c4d1c73b01c4fe491a5df2aaedbff89698cbcd7",
      "tree": "eb31c4ba714d6505c751e81fa1f90217b0299855",
      "parents": [
        "174807bae855b20c9397ce7188b82772006e26ae"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jun 16 12:06:54 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jun 16 20:37:48 2026 +0800"
      },
      "message": "Update gradle/actions/dependency-submission to v6.1.0\n\nv5.0.0 is no longer in the Apache infrastructure-actions allowlist\n(actions.yml). Bump to v6.1.0 which is already trusted.\n\nSee:\n - https://github.com/apache/infrastructure-actions/blob/2b6ec5f38ac73c7c5970f3b4f863e8d15bf12d7d/actions.yml#L424-L438\n"
    },
    {
      "commit": "174807bae855b20c9397ce7188b82772006e26ae",
      "tree": "515c59634fad1a523daec687537514eda946db4e",
      "parents": [
        "f3b92e6f12345f69341e0f92fde664f452549439"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Mon Jun 15 17:50:59 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 17:50:59 2026 +0300"
      },
      "message": "Update S3-related tests to run in Testcontainers (#117)\n\nFix S3-related tests from #86:\n\n- Add `MinIOContainer` and `S3Application` to manage MinIO\n- Generate fixtures via `SmallDataFactory` (prefer composition over inheritance)\n- Migrate `CloudAccessTest` and `S3SelectTest` to TestContainers suite.\n- Pre-bake test `s3`/`s3-invalid` PXF server configs into image. \n- Move S3 tests from the singlecluster to the testcontainers pipeline (`pxf-s3`) and delete the unused legacy MinIO scripting.\n- Replace s3a client with aws S3 client in tests data management."
    },
    {
      "commit": "f3b92e6f12345f69341e0f92fde664f452549439",
      "tree": "9311b23f6d2830d4966b16512c4c33b7966224ce",
      "parents": [
        "dff2632d2a364f466b83682439c3ae97e655c1b7"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Jun 11 15:30:37 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Jun 11 22:35:09 2026 +0800"
      },
      "message": "NOTICE: add the original PXF NOTICE\n\nFor Apache license files, we need to keep the original NOTICE file\ncontent if there is one.\n\nSeem as https://github.com/apache/cloudberry-backup/pull/102\n"
    },
    {
      "commit": "dff2632d2a364f466b83682439c3ae97e655c1b7",
      "tree": "3bca6ca6428c9fa1c01eaeefd9c792b3389180e3",
      "parents": [
        "33a191410a8e2dfa221f14aa2473f512f8bd7713"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jun 09 15:36:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 15:36:13 2026 +0800"
      },
      "message": "docs: update the docs for cloudberry-site (#114)\n\n* chore(docs): remove Bookbinder build stack\n\nThe PXF documentation is moving to the Apache Cloudberry website at\ncloudberry.apache.org/docs (built by apache/cloudberry-site, Docusaurus).\nThis repository keeps the Markdown sources under docs/content/ but no longer\nships its own build pipeline. Drop the Bookbinder/Middleman scaffolding under\ndocs/book/ that would otherwise become unmaintained.\n\nSubsequent commits convert the Markdown sources to a Docusaurus-friendly\nlayout, refresh docs/README.md, and add a docs lint workflow.\n\n* docs: convert PXF docs to Docusaurus-compatible Markdown\n\nConvert the upstream Bookbinder-flavoured PXF documentation under\ndocs/content/ into a layout that the Apache Cloudberry website\n(apache/cloudberry-site, Docusaurus) can consume directly.\n\nChanges per file:\n\n* Rename .html.md.erb -\u003e .md. The .erb sources contained no ERB template\n  code, so removing both suffixes is a no-op for content while letting\n  Markdown tooling pick the files up.\n* Rewrite intra-doc links from `(foo.html)` and `(foo.html#anchor)` to\n  Docusaurus-style relative paths like `(./foo.md)` or\n  `(../administering/cfg_server.md#about-the-pxf-fs-basepath-property)`.\n  Same-page bare anchors `(#foo)` are also remapped, including a fix for the\n  upstream typo `(#procedure.html)` in pxf_kerbhdfs.md.\n* Replace heading anchor blocks of the form\n  `## \u003ca id\u003d\"suppplat\"\u003e\u003c/a\u003e Supported Platforms` with plain headings, since\n  Docusaurus auto-generates slug-based anchors. Cross-file references that\n  used the old IDs are rewritten to the new slug. Stand-alone `\u003ca id\u003e` tags\n  (table captions, mid-section deep links) are preserved as MDX-friendly\n  invisible anchors.\n* Add `description` and `sidebar_position` frontmatter to every page so the\n  Docusaurus sidebar can be auto-generated and pages get sensible meta tags.\n  Page titles that referenced \"Greenplum® Platform Extension Framework\" are\n  rebranded to \"Apache Cloudberry Platform Extension Framework\".\n* Reorganise the previously-flat `docs/content/` into category sub-directories\n  matching the legacy subnav: `intro/`, `administering/`, `access-hadoop/`,\n  `access-objectstores/`, `access-jdbc/`, `access-nfs/`, `troubleshooting/`,\n  `upgrade/`, plus the existing `ref/`. Each carries a `_category_.json` for\n  the Docusaurus sidebar.\n* Rebrand prose: \"Greenplum Database\" -\u003e \"Apache Cloudberry\" and bare\n  \"Greenplum\" (where it refers to the deployment, not a specific Greenplum\n  release/version) -\u003e \"Apache Cloudberry\". Compatibility tables, transition\n  notes, and other historical references that need to keep the original wording\n  are preserved via a small set of guard patterns.\n* Tweak raw HTML so MDX v3 can render it: `class\u003d\"...\"` -\u003e `className\u003d\"...\"`,\n  and `\u003ca href\u003d\"foo.html\"\u003e` rewritten the same way as Markdown links.\n\nA few warnings remain that reflect pre-existing dead links upstream\n(e.g. `#s3_override_ext_ext`, `init_pxf.html`, `#topic1` in ref pages); these\nare flagged for follow-up but kept as-is so the diff is mechanical.\n\n* docs: refresh docs/README.md for the Docusaurus-based publishing flow\n\nThe previous README described the now-deleted Bookbinder build under\ndocs/book/. Replace it with a brief authoring guide that points at\napache/cloudberry-site as the source of the rendered documentation and\ndocuments the conventions used by the Markdown sources (frontmatter,\nrelative links, image placement, category metadata).\n\n* Mv docs/content/ to docs/\n\n* Fix broken links"
    },
    {
      "commit": "33a191410a8e2dfa221f14aa2473f512f8bd7713",
      "tree": "918e5da1ae5ba1c1d63225d298d4397829467838",
      "parents": [
        "d6eba0d5b14dec49636b2a4f578fe8d344673336"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Mon Jun 08 11:31:48 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 16:31:48 2026 +0800"
      },
      "message": "Observability: Add gp_session_id and gp_command_count to MDC (#111)\n\n* Observability: Add gp_session_id and gp_command_count to MDC\n* review: add new parameters to log4j2"
    },
    {
      "commit": "d6eba0d5b14dec49636b2a4f578fe8d344673336",
      "tree": "313ed6beb03662515ea3b5754f56afc03ce1c9e8",
      "parents": [
        "207e67eae73f9a069ba469c9a1d8c9c6a1b73e95"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Mon Jun 01 12:12:11 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 14:12:11 2026 +0500"
      },
      "message": "cloudberry-pxf currently supports only cloudberry-2.x (#112)\n\n1. Use cloudberry 2.x in CI\n2. trying to workaround Rocky Linux issues with modular filtering"
    },
    {
      "commit": "207e67eae73f9a069ba469c9a1d8c9c6a1b73e95",
      "tree": "f53bf03add6554bcf48faefa436a810f24785957",
      "parents": [
        "1f79fccdbb3f3259dad886cd8e6f3b36fc27a1fe"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon May 18 15:40:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 12:40:11 2026 +0500"
      },
      "message": "Upgrade Go toolchain to 1.25 (#110)\n\n- CI workflow: GO_VERSION 1.24 -\u003e 1.25\n- Dockerfile: GO_VERSION 1.24.0 -\u003e 1.25.0\n- go.mod: go 1.24 -\u003e go 1.25\n- Documentation: Update minimum Go version requirement"
    },
    {
      "commit": "1f79fccdbb3f3259dad886cd8e6f3b36fc27a1fe",
      "tree": "c056321f46babc03b14ff37e9a533306eb4dd8a9",
      "parents": [
        "2789f811bb94ff155cc1b5076cda63a07ee73b34"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Mon Apr 20 13:02:46 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 13:02:46 2026 +0500"
      },
      "message": "Testcontainers: Fixes for JDBC test suite (#108)\n\nIn this PR following issues addressed:\n* Docker image size reduced from 4.52G to 3.34G (github provides 10G cache)\n* Runs MS SQL tests with FDW plugin\n* Always specify username/password for PostgreSQL JDBC tests (required for hardened PXF versions)\n* minor cleanups"
    },
    {
      "commit": "2789f811bb94ff155cc1b5076cda63a07ee73b34",
      "tree": "07ae5866e18982ba10380bbf24445248c24b5b79",
      "parents": [
        "b3c58b3c07b27f4f8048f7b45c0b84ca7ddf3aff"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Sun Apr 19 19:40:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 19:40:19 2026 +0800"
      },
      "message": "fix: support filter pushdown for numeric columns with integer constants\n\nWhen a numeric column is compared with an integer constant (e.g.,\n  biz_dt \u003d 20260331), PostgreSQL wraps the constant in an implicit\n  int4 -\u003e numeric type cast FuncExpr. The filter extraction code in\n  both the FDW path (fdw/pxf_filter.c) and the external table path\n  (external-table/src/pxffilters.c) only recognized plain Const\n  nodes, so these predicates were silently dropped and the query\n  fell back to a full scan on the remote source.\n\n  Before matching the Var+Const pattern, run eval_const_expressions()\n  on any operand that is neither a Var nor a Const. This folds the\n  implicit cast into a plain Const, after which the existing filter\n  serialization path can push the predicate down unchanged.\n\n  Fix is applied symmetrically in OpExprToPxfFilter (FDW) and\n  opexpr_to_pxffilter (external table). Neither function mutates\n  the original plan tree; only the local leftop/rightop pointers\n  are redirected at the simplified Const.\n\n  Test coverage:\n  * Extend FilterPushDownTest and FDW_FilterPushDownTest regression\n    suites with c3 \u003d 5, c3 \u003c 5, c3 \u003e 1, c3 \u003c\u003d 2, c3 \u003e\u003d 5, c3 \u003c\u003e 5,\n    and c3 BETWEEN 1 AND 5, covering the full set of supported\n    scalar operators when the constant type differs from the column\n    type.\n  * Synchronize the int-const block across both test segments of\n    FilterPushDownTest.sql and its expected output."
    },
    {
      "commit": "b3c58b3c07b27f4f8048f7b45c0b84ca7ddf3aff",
      "tree": "47f47b6d56d22b01401c6b18bbbf5f0237d37997",
      "parents": [
        "c3c759b62a8ef0e2a4d59c476cb882ed7cbed814"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Thu Apr 16 12:38:01 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 12:38:01 2026 +0500"
      },
      "message": "Testcontainers: Add MS SQL JDBC tests (#106)\n\n### Add Microsoft SQL JDBC tests\n\nAdd new tests to cover Cloudberry -\u003e PXF -\u003e JDBC path. In this test we are verifying that main data Cloudberry and MS SQL types can be converted back and forth.\n\nTest covers MS SQL 2019 and 2022 versions."
    },
    {
      "commit": "c3c759b62a8ef0e2a4d59c476cb882ed7cbed814",
      "tree": "86c0b452d7d5bd6a128ef44c9fc5139e94081f9d",
      "parents": [
        "c8e39e19aacc0a5a5deb4a8065927afd7d82f725"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Wed Apr 15 21:46:52 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 21:46:52 2026 +0500"
      },
      "message": "Docs: update JDBC-related docs (#107)\n\n* Docs: update JDBC-related docs\n\n* review"
    },
    {
      "commit": "c8e39e19aacc0a5a5deb4a8065927afd7d82f725",
      "tree": "397fe1f61ded6cb300f1c5a78f00e2ce121ed071",
      "parents": [
        "ccea789115fe65eb119a7bf886f4d68e30022f1f"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Wed Apr 15 08:37:23 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 08:37:23 2026 +0500"
      },
      "message": "Automation: run HBASE in standalone mode (#95)\n\nStart HBase only for test groups that require it (hbase, proxy) instead of launching it as part of the default Hadoop stack. This frees RAM for all other test groups.        \n   \nAdditionally, run HBase in standalone mode:                                                                                                                                   \n * No separate RegionServer process                        \n * No separate ZooKeeper process                                                                                                                                               \n * No dependency on HDFS"
    },
    {
      "commit": "ccea789115fe65eb119a7bf886f4d68e30022f1f",
      "tree": "3d7107bc27f27f51918e3722fe060e61a8ca24de",
      "parents": [
        "3935e9b9dd41dd5cc9523cfff16daa23f3f27006"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Apr 15 10:15:50 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 10:15:50 2026 +0800"
      },
      "message": "Bump org.apache.tomcat.embed:tomcat-embed-core from 9.0.72 to 9.0.117 in /server (#105)\n\n* Bump org.apache.tomcat.embed:tomcat-embed-core in /server\n\nBumps org.apache.tomcat.embed:tomcat-embed-core from 9.0.72 to 9.0.117.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.tomcat.embed:tomcat-embed-core\n  dependency-version: 9.0.117\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\n\n* Update server/build.gradle\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: Dianjin Wang \u003cwangdianjin@gmail.com\u003e"
    },
    {
      "commit": "3935e9b9dd41dd5cc9523cfff16daa23f3f27006",
      "tree": "e4ad30066c843cb2508ccfbaaf4fbd16590ccd50",
      "parents": [
        "076aae6c1ddf4e478da83fae053f492e90e3bac7"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Tue Apr 14 12:12:03 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 12:12:03 2026 +0500"
      },
      "message": "Testcontainers: Add Oracle JDBC test (#104)\n\nAdd new tests to cover Cloudberry -\u003e PXF -\u003e JDBC path. In this test we are verifying that main data Cloudberry and Oracle types can be converted back and forth.\n\nTest covers Oracle 23 (only supported by Testcontainers version)."
    },
    {
      "commit": "076aae6c1ddf4e478da83fae053f492e90e3bac7",
      "tree": "9384629eb49aaa55a13feee362e463e4b25bc4ec",
      "parents": [
        "b5711436acf3aca8d87585792536908ed8832635"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Apr 13 10:56:44 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Apr 13 14:54:32 2026 +0800"
      },
      "message": "Fix dependency submission action to use commit SHA\n\nUse pinned commit hash (4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2) instead\nof version tag @v5 to comply with Apache GitHub Actions policy.\n\nFixes #101\n"
    },
    {
      "commit": "b5711436acf3aca8d87585792536908ed8832635",
      "tree": "1edb05190ae662b6e66e5ec14fda38f30ef7b95b",
      "parents": [
        "a02fe8c3e890077f78c1ff0b10ea23af5cd572d2"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Sat Apr 11 19:59:56 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Apr 13 14:12:59 2026 +0800"
      },
      "message": "Align release artifact naming with Apache incubator conventions\n\nUpdate cloudberry-pxf-release.sh to generate artifact filenames\nwithout RC suffix (e.g., apache-cloudberry-pxf-2.1.0-incubating-src.tar.gz)\nwhile keeping RC identifier in directory names only.\n\nBenefits:\n- Simplifies promotion process after vote passes\n- No need to rename files for checksums/signatures\n- Consistent with best practices from other ASF Incubator projects\n- Files are ready for final release from RC stage, can use `svn mv` to\n  promote the RC artifacts to the final version.\n\nExample structure:\n  dev/incubator/cloudberry/2.1.0-incubating-rc1/\n    apache-cloudberry-pxf-2.1.0-incubating-src.tar.gz\n"
    },
    {
      "commit": "a02fe8c3e890077f78c1ff0b10ea23af5cd572d2",
      "tree": "c4634abf9aedbfdcc542b1897e32f38ca86c6046",
      "parents": [
        "d35ba21aad9331965e3235d372a6d175190afe33"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Apr 13 10:22:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 10:22:34 2026 +0800"
      },
      "message": "Upgrade Go toolchain to 1.24 (#99)\n\n- CI workflow: GO_VERSION 1.21 -\u003e 1.24\n- Dockerfile: GO_VERSION 1.21.13 -\u003e 1.24.0\n- go.mod: go 1.21.3 -\u003e go 1.24\n- Documentation: Update minimum Go version requirement\n* Refactor ci/singlecluster/Dockerfile to use GO_VERSION variable\n\nSee: https://github.com/apache/cloudberry-pxf/issues/96"
    },
    {
      "commit": "d35ba21aad9331965e3235d372a6d175190afe33",
      "tree": "3fd554213711748a9bfcdeb2ba421b97532f29d2",
      "parents": [
        "4fdba99817c9bcd8b38cdf12a807592d7dcc1ecb"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Sat Apr 11 11:15:06 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 09:15:06 2026 +0300"
      },
      "message": "CI: add caching for testcontainer images (#98)\n\nSpeed up our CI pipeline:\n* cache testcontainer images\n* do not rebuild singlecluster image on every test run\n* allow gradle parallel builds It was disabled for gradle 4.x in https://github.com/apache/cloudberry-pxf/commit/124115d1733fcea7c91514c98b2c58a1a0aaf81f"
    },
    {
      "commit": "4fdba99817c9bcd8b38cdf12a807592d7dcc1ecb",
      "tree": "b0b05677cef7dd587764eb2ff16700acd459b590",
      "parents": [
        "da54b0426ea29f486acbe600c4cddcd938369497"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Thu Apr 09 19:09:06 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 19:09:06 2026 +0500"
      },
      "message": "Testcontainers: Add ClickHouse JDBC test (#97)\n\n### Add ClickHouse JDBC tests\n\nAdd new tests to cover Cloudberry -\u003e PXF -\u003e JDBC path. In this test we are verifying that main data Cloudberry and ClickHouse types can be converted back and forth.\n\nTest covers ClickHouse 24.x and 26.x versions. Open-source ClickHouse has short support lifetime.\n\nI have tested following clickhouse-jdbc drivers:\n* 0.6.x (`jdbc-v1`) - works well with old ClickHouse versions. In ClickHouse 25.10 `jdbc-v1` got broken https://github.com/ClickHouse/clickhouse-java/issues/2636 and all queries raised an \"Magic is not correct\" error message.\n* 0.9.4 - fixes \"Magic\" issues, however has issue with String \u003c-\u003e bytea conversion `ERROR: PXF server error : Method: getBytes(\"bin\") encountered an exception.`\n* 0.9.7+ - works well\n\n### Add jdbc-pxf-drivers project\n\nAdd new `jdbc-pxf-drivers` project to server. It excluded from default DEB-package build. Explicit actions required to install jdbc-drivers.\n\n### Side quest\n\nCloudberry FDW serializes rows as Greenplum CSV \u003d\u003e PXF `TextRecordReader` parses the CSV stream via univocity CSV parser \u003d\u003e for `BYTEA` columns it calls `pgUtilities.parseByteaLiteral()` \u003d\u003e which returns a `ByteBuffer`."
    },
    {
      "commit": "da54b0426ea29f486acbe600c4cddcd938369497",
      "tree": "9b48af52723fb4462836c36922a4a7c8d98627ec",
      "parents": [
        "3942c55e9ee88d6fff301e68b315bb41833ed3a4"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Fri Apr 03 17:06:34 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 17:06:34 2026 +0500"
      },
      "message": "CI: cache deb and rpm for month (#94)\n\n**Cache CPU-heavy CI steps:**\n* DEB build\n* RPM build\n\nThis should speed up our CI pipelines and reduce github actions quota usage.\n\n**Implementations details:**\n* Github cache has 7 days TTL. Every build will reset expiration timeout. In order to force CI to build cloudberry from time to time - I am explicitly specifying current month in a cache key.\n* keep both: `actions/cache` and `actions/actions/upload-artifact`. In case cache eviction happens during build (e.g. hit 10Gb limit) we will still have running builds.\n* cache reused between `main` and other PRs (but not between PRs). So, cache will be filled only during builds in `main`."
    },
    {
      "commit": "3942c55e9ee88d6fff301e68b315bb41833ed3a4",
      "tree": "3d6babf1364a08d02e8e5ce084d78d7dcde1c16b",
      "parents": [
        "d9bded07dcfc8d3cba334bfee8fd655330944f55"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Apr 03 10:28:50 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Apr 03 17:13:00 2026 +0800"
      },
      "message": "Add procps dependency to RPM/DEB for pxf stop command\n\nThe pxf script uses the \u0027ps\u0027 command in the isRunning() function\nto check if the PXF process is running. However, minimal container\nimages like Rocky Linux 9 do not include the \u0027ps\u0027 command by default.\n\nThis causes the \u0027pxf stop\u0027 command to fail with:\n  /usr/local/cloudberry-pxf/bin/pxf: line 162: ps: command not found\n\nAdd explicit package dependencies to ensure the \u0027ps\u0027 command is\navailable when PXF is installed:\n- RPM packages: procps-ng\n- DEB packages: procps\n\nThe \u0027ps\u0027 command is used in:\n- server/pxf-service/src/scripts/pxf:162 (isRunning function)\n"
    },
    {
      "commit": "d9bded07dcfc8d3cba334bfee8fd655330944f55",
      "tree": "b705fe7d182c494107f670c30f797c6c9b700842",
      "parents": [
        "b968bbe8b4d430a5ec88e7df3d644cb852ca90e9"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Fri Apr 03 11:24:33 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 11:24:33 2026 +0500"
      },
      "message": "Run JDBC tests in Testcontainers (MVP) (#91)\n\n* Run JDBC test in Testcontainers\n* both Ubuntu 22.04 and  Rocky Linux 9"
    },
    {
      "commit": "b968bbe8b4d430a5ec88e7df3d644cb852ca90e9",
      "tree": "be8e33891cc35cdd70b4230c1fcacec3e0863c59",
      "parents": [
        "7cfe382014ca63ed2206668582eb46fd1bc29720"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Apr 02 17:25:50 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Apr 03 09:36:04 2026 +0800"
      },
      "message": "Include license files in all package distributions\n\nAdd NOTICE, DISCLAIMER, and LICENSE files to the stage target\nin Makefile to ensure they are included in all package formats\n(tar, rpm, and deb). This ensures proper license attribution and\ncompliance with Apache Software Foundation requirements for all\ndistribution methods.\n\nPreviously, these files were not copied during the packaging\nprocess, which could lead to incomplete license information in\ndistributed packages.\n"
    },
    {
      "commit": "7cfe382014ca63ed2206668582eb46fd1bc29720",
      "tree": "355c018ae17ad2f19dff93181a8366c3d144baf7",
      "parents": [
        "55165b1d1124555cd79de2cf055d3fad220beead"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Mar 31 17:17:30 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Apr 01 10:12:44 2026 +0800"
      },
      "message": "Include `-incubating` in extracted directory name\n\nUpdate release script to append `-incubating` suffix to the\nextracted directory name, ensuring consistency with Apache\nrelease naming conventions.\n\nExample output:\n- Tarball: apache-cloudberry-pxf-2.1.0-incubating-rc2-src.tar.gz\n- Extracted: apache-cloudberry-pxf-2.1.0-incubating/\n"
    },
    {
      "commit": "55165b1d1124555cd79de2cf055d3fad220beead",
      "tree": "197464e588d287ac9888264b69dd26d06649d979",
      "parents": [
        "5d13cad04d64c4dee1efe0742e63f4989884415e"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Fri Mar 27 12:30:41 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 27 12:30:41 2026 +0500"
      },
      "message": "Partially revert 48302989 to fix pxf_regress (#87)\n\n* Partially revert 4830298\n* Add `@Test(enabled\u003dfalse)` to failed tests"
    },
    {
      "commit": "5d13cad04d64c4dee1efe0742e63f4989884415e",
      "tree": "39fdf0bc3dcceaf39b96e93542e21c813c00b9aa",
      "parents": [
        "df8568f91326df1ce0b8bf97dbf630e5d7490a8f"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Thu Mar 26 20:53:27 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 20:53:27 2026 +0800"
      },
      "message": "ci: add Rocky 9 support for CI and Docker build environment (#78) \n\n- Unify CI scripts from ubuntu/ to common/, supporting both Ubuntu and Rocky/RHEL\n- via auto-detection of package manager (apt-get vs dnf)\n- Add Rocky 9 Docker Compose and RPM build script (rocky9/)\n- Parameterize singlecluster Dockerfile with ARG BASE_IMAGE for multi-distro builds\n- Add Rocky 9 singlecluster image build job to GitHub Actions workflow\n- Cross-platform JAVA_HOME auto-detection in build_pxf.sh"
    },
    {
      "commit": "df8568f91326df1ce0b8bf97dbf630e5d7490a8f",
      "tree": "b20208e529cf482f6166102d755086018bbae494",
      "parents": [
        "c064f7b1f528118da5af98e9b1f122f025f4bf31"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Thu Mar 26 17:10:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 14:10:22 2026 +0500"
      },
      "message": "fix: add Parquet UUID type support for read/write (#71)\n\n* fix: add Parquet UUID type support for read/write\n\n  - Add UUID (OID 2950) handling by mapping UUID to FIXED_LEN_BYTE_ARRAY primitive type. \n  - UUIDARRAY is also supported.\n  - Add BYTEA fallback for unknown FIXED_LEN_BYTE_ARRAY logical types\n  - Add uuid_types.parquet test fixture and corresponding unit tests"
    },
    {
      "commit": "c064f7b1f528118da5af98e9b1f122f025f4bf31",
      "tree": "80b82184f6bd03a4b8a015768a18690b6a7bf7ce",
      "parents": [
        "a159cf16df177f81a4a1b43d3e6159cd6be8030f"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Mon Mar 23 19:13:40 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 22:13:40 2026 +0800"
      },
      "message": "Add Java 17 support (#72)\n\n  * Upgrade Gradle from 6.8.2 to 7.6.6\n  * Replace gradle-lombok plugin with io.freefair.lombok 6.6.3\n  * Upgrade io.spring.dependency-management to 1.0.15.RELEASE\n  * Add -Xlint:-removal to suppress Security Manager deprecation warnings on Java 17+\n  * Add --add-opens JVM flags for JEP 486 module access (build and runtime)\n  * Add CI matrix job for Java 8, 11, 17 compatibility testing\n  * Remove server test group from automation (covered by java-compatibility-test)\n  * Refactor build_pxf.sh to use per-component install targets"
    },
    {
      "commit": "a159cf16df177f81a4a1b43d3e6159cd6be8030f",
      "tree": "5d15f644ace16ec0db43d280eaaa9859c73e07a4",
      "parents": [
        "0b7379308f1ed9b84b252c9f92cd0997b68ebe2d"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Mar 23 19:17:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 14:17:44 2026 +0300"
      },
      "message": "Brand: update pxf_fdw Makefile description (#75)\n\n* Brand: update pxf_fdw Makefile description\n* update pxf_fdw.control"
    },
    {
      "commit": "0b7379308f1ed9b84b252c9f92cd0997b68ebe2d",
      "tree": "f1aeb864023e2683608c394f5562849e3934eb89",
      "parents": [
        "982f4877e0fc20334e3c0587d95d1bcfc0640527"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Mar 04 10:57:01 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Mar 23 10:57:35 2026 +0800"
      },
      "message": "Fix release tarball base version naming\n\nFor RC tags like X.Y.Z-incubating-rcN, generate the source tarball\nfilename and top-level directory using VERSION_FILE (without -rcN).\n\n$VERSION_FILE is input from the file version.\n\nThis keeps the voted bits ready for promotion without rebuilding and\navoids -rcN showing up in the extracted source directory.\n"
    },
    {
      "commit": "982f4877e0fc20334e3c0587d95d1bcfc0640527",
      "tree": "3068b8f80d85da9fef24ff020c5218f828888aee",
      "parents": [
        "4f961d2a01846f81cf40901570b2e1974e2cb959"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Mar 10 11:38:31 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Mar 23 10:55:56 2026 +0800"
      },
      "message": "Bump version to 2.2.0-SNAPSHOT\n"
    },
    {
      "commit": "4f961d2a01846f81cf40901570b2e1974e2cb959",
      "tree": "2f299fbc2b690f9fedb4a9bba6b17be7b9b8de83",
      "parents": [
        "5ca0e7f3fedeacd8b74e661dfe9e390e2382ce1f"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Wed Mar 18 13:39:26 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 16:39:26 2026 +0800"
      },
      "message": "Fix Dependency submission workflow. (#83)\n\nAdd download `gradle-wrapper.jar` step to the Dependency Submission workflow. This should fix the regression in workflow that was introduced recently."
    },
    {
      "commit": "5ca0e7f3fedeacd8b74e661dfe9e390e2382ce1f",
      "tree": "4e266489c98daf4105cb8cd477fe35eed39c6a4f",
      "parents": [
        "36a77ba7a821b164e6d4cb8c0d51f3111cfa28d9"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Mar 18 14:15:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 14:15:47 2026 +0800"
      },
      "message": "ASF: update files to make ASF compliance (#80)\n\nThis commit updates our licensing documentation to strictly follow\nApache Software Foundation (ASF) release guidelines and automates\ncompliance verification.\n\nChanges include:\n- Replaced verbose file-by-file lists in the LICENSE file with\n  high-level directory summaries for modules inherited from the\n  original pxf-archive (such as fdw, external-table, server, cli,\n  load, etc.).\n- Retained the Dremio copyright attribution in the LICENSE file.\n- Added the apache-rat-plugin to pom.xml with proper exclusions and\n  custom Greenplum/VMware license family configurations.\n- Introduced a GitHub Actions workflow to run Apache RAT audits\n  automatically on PRs and updates.\n- Add the standard Apache License Header to the files created by the\n  Cloudberry community\n- Update README.md for gradle-wrapper.jar"
    },
    {
      "commit": "36a77ba7a821b164e6d4cb8c0d51f3111cfa28d9",
      "tree": "ff762222e5baee55082b65c3868e0e6e7da8cbd9",
      "parents": [
        "e3d8a0bb43b48a3e0e7b4aeafd2c1cd041339c6e"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Wed Mar 18 07:42:14 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 10:42:14 2026 +0800"
      },
      "message": "ASF: remove gradle-wrapper.jar file to make ASF compliant (#81)\n\n* Remove gradle wrapper from ASF Releases and leave it in git repository (mimic apache/calcite project).\n* Fetch gradle wrapper during build phase (mimic apache/nessie)\n* add gradle wrapper and gradle distribution checksum validation. Checksums from https://gradle.org/release-checksums/"
    },
    {
      "commit": "e3d8a0bb43b48a3e0e7b4aeafd2c1cd041339c6e",
      "tree": "b2e38a62a422fc90f2a8e53615cbd3f5014db8c2",
      "parents": [
        "cb17cddc5d56424204da9c7cccbedd8b83fd49dd"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Mar 10 12:10:09 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Mar 11 18:06:29 2026 +0800"
      },
      "message": "Update Makefile to include fdw in DEB/RPM\n"
    },
    {
      "commit": "cb17cddc5d56424204da9c7cccbedd8b83fd49dd",
      "tree": "5ea7a29676e3417eff6fb5a3aaa0c1f508148eb2",
      "parents": [
        "c379399922ae851021ea363072b1b37a6e51a029"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Mar 02 17:57:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 02 17:57:43 2026 +0800"
      },
      "message": "Add cloudberry-pxf ASF release script (#68)\n\n"
    },
    {
      "commit": "c379399922ae851021ea363072b1b37a6e51a029",
      "tree": "04788871df9eba678b1fe3c7dc8cba32cd230a09",
      "parents": [
        "21da190b8b2614251d17f1f321baca8dfea57329"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Tue Feb 24 07:45:22 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 24 10:45:22 2026 +0800"
      },
      "message": "Bump Parquet version from 1.12.3 to 1.15.2\n\n### Useful changes in Parquet 1.12.x -\u003e 1.15.x\n* Support LZ4_RAW codec\n* Implement vectored IO in Parquet file format\n* More optimal memory usage in compression codecs\n\nDependency tree changes are small:\n```\n+--- org.apache.parquet:parquet-column:1.15.1\n|    +--- org.apache.parquet:parquet-common:1.15.1\n|    |    +--- org.apache.parquet:parquet-format-structures:1.15.1\n|    +--- org.apache.parquet:parquet-encoding:1.15.1\n|    |    +--- org.apache.parquet:parquet-common:1.15.1 (*)\n+--- org.apache.parquet:parquet-hadoop:1.15.1\n|    +--- org.apache.parquet:parquet-column:1.15.1 (*)\n|    +--- org.apache.parquet:parquet-format-structures:1.15.1 (*)\n|    +--- org.apache.parquet:parquet-common:1.15.1 (*)\n|    +--- org.xerial.snappy:snappy-java:1.1.10.7\n|    +--- io.airlift:aircompressor:2.0.2\n|    +--- commons-pool:commons-pool:1.6\n|    +--- com.github.luben:zstd-jni:1.5.6-6\n+--- org.apache.parquet:parquet-jackson:1.15.1\n+--- org.apache.parquet:parquet-generator:1.15.1\n+--- org.apache.parquet:parquet-pig:1.15.1\n|    +--- org.apache.parquet:parquet-column:1.15.1 (*)\n|    +--- org.apache.parquet:parquet-hadoop:1.15.1 (*)\n|    +--- org.apache.parquet:parquet-common:1.15.1 (*)\n\\--- org.apache.parquet:parquet-format:2.10.0\n```\n\nIt has its own thrift library shaded. It doesn\u0027t depend on protobuf.\n`parquet-hadoop` in fact expects that there is `hadoop-client`, `hadoop-common`, `hadoop-annotations` and  `hadoop-mapreduce-client-core` provided.\n"
    },
    {
      "commit": "21da190b8b2614251d17f1f321baca8dfea57329",
      "tree": "49c2b44c6d4a119a46beac30834e1828a1e8ddcc",
      "parents": [
        "2b01f810b3456d6252aef81299b6f049ffd27a99"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Mon Feb 16 22:19:01 2026 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Feb 24 10:28:04 2026 +0800"
      },
      "message": "docs - pxf_fdw works with HDFS data sources\n"
    },
    {
      "commit": "2b01f810b3456d6252aef81299b6f049ffd27a99",
      "tree": "fb13afc1ed5dff5e07811779d7df54d7acd82f05",
      "parents": [
        "50e908b42f6ec0404f438860a36c2ee20ce6d167"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Feb 10 18:17:47 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Sat Feb 14 08:08:42 2026 +0800"
      },
      "message": "Package: update deb/rpm name formart\n\nUpdate the name format from `cloudberry-pxf-*` to `apache-cloudberry-pxf-incubating` for the deb/rpm files.\n"
    },
    {
      "commit": "50e908b42f6ec0404f438860a36c2ee20ce6d167",
      "tree": "56e7cf437f424ae197c2d01c58893565afe93972",
      "parents": [
        "6a0682e4aea6f88f56aeca35d2ed1e0c21ec6580"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Fri Feb 13 04:50:32 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 07:50:32 2026 +0800"
      },
      "message": "Update HBASE to 2.3.7 in PXF (#62)\n\n### hbase-client update\n\nUpdate `hbase-client` from `1.3.2` to `2.3.7` (latest version with minimal 3rd-party library updates) with following decision made:\n* Use hadoop 2 version - Despite of the fact that we are using hadoop 3 in automation tests, we still using hadoop2 libs for all other connectors.\n* Use shaded version of libraries when it relocates java-packages to new namespaces\n* Use non-shaded version of libraries when it just bundles several jars to single fat-jar. Fat jars hides dependencies from gradle, however puts classes on classpath. This will lead to unpredictable issues.\n\nFortunately, `hbase-client:2.3.7` depends on `hadoop-2.10.0` that we are using! No changes here.\n\n### update details\n\n```\nruntimeClasspath - Runtime classpath of source set \u0027main\u0027.\n\\--- org.apache.hbase:hbase-client:2.3.7\n     +--- org.apache.hbase.thirdparty:hbase-shaded-protobuf:3.3.0\n     +--- org.apache.hbase:hbase-common:2.3.7\n     |    +--- org.apache.hbase:hbase-logging:2.3.7\n     |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0\n     |    |    \\--- com.google.errorprone:error_prone_annotations:2.3.4\n     |    +--- org.apache.hbase.thirdparty:hbase-shaded-gson:3.3.0\n     |    +--- org.apache.hbase.thirdparty:hbase-shaded-netty:3.3.0\n     |    +--- commons-codec:commons-codec:1.13\n     |    +--- org.apache.commons:commons-lang3:3.9\n     |    +--- commons-io:commons-io:2.11.0\n     |    +--- com.google.protobuf:protobuf-java:2.5.0\n     |    +--- org.apache.htrace:htrace-core4:4.2.0-incubating\n     |    +--- org.apache.commons:commons-crypto:1.0.0\n     |    +--- org.apache.yetus:audience-annotations:0.5.0\n     |    \\--- org.apache.hadoop:hadoop-common:2.10.0 -\u003e 2.10.2\n     +--- org.apache.hbase:hbase-hadoop-compat:2.3.7\n     |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)\n     |    +--- org.apache.hbase:hbase-metrics-api:2.3.7\n     |    |    +--- org.apache.hbase:hbase-common:2.3.7 (*)\n     |    |    +--- org.apache.commons:commons-lang3:3.9\n     |    |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)\n     +--- org.apache.hbase:hbase-hadoop2-compat:2.3.7\n     |    +--- org.apache.hbase:hbase-hadoop-compat:2.3.7 (*)\n     |    +--- org.apache.hbase:hbase-common:2.3.7 (*)\n     |    +--- org.apache.hbase:hbase-metrics:2.3.7\n     |    |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)\n     |    |    +--- org.apache.hbase:hbase-common:2.3.7 (*)\n     |    |    +--- org.apache.hbase:hbase-metrics-api:2.3.7 (*)\n     |    |    +--- io.dropwizard.metrics:metrics-core:3.2.6\n     |    +--- org.apache.hbase:hbase-metrics-api:2.3.7 (*)\n     |    +--- org.apache.hadoop:hadoop-common:2.10.0 -\u003e 2.10.2 (*)\n     |    +--- javax.activation:javax.activation-api:1.2.0\n     |    +--- org.apache.commons:commons-lang3:3.9\n     |    +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)\n     +--- org.apache.hbase:hbase-protocol-shaded:2.3.7\n     |    +--- org.apache.hbase.thirdparty:hbase-shaded-protobuf:3.3.0\n     +--- org.apache.hbase:hbase-protocol:2.3.7\n     |    +--- com.google.protobuf:protobuf-java:2.5.0\n     +--- commons-codec:commons-codec:1.13\n     +--- commons-io:commons-io:2.11.0\n     +--- org.apache.commons:commons-lang3:3.9\n     +--- org.slf4j:slf4j-api:1.7.30 -\u003e 1.7.36\n     +--- org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:3.3.0 (*)\n     +--- com.google.protobuf:protobuf-java:2.5.0\n     +--- org.apache.hbase.thirdparty:hbase-shaded-netty:3.3.0\n     +--- org.apache.zookeeper:zookeeper:3.5.7 (*)\n     +--- org.apache.htrace:htrace-core4:4.2.0-incubating\n     +--- org.jruby.jcodings:jcodings:1.0.18\n     +--- org.jruby.joni:joni:2.1.11\n     |    \\--- org.jruby.jcodings:jcodings:1.0.13 -\u003e 1.0.18\n     +--- io.dropwizard.metrics:metrics-core:3.2.6 (*)\n     +--- org.apache.commons:commons-crypto:1.0.0\n     +--- org.apache.yetus:audience-annotations:0.5.0\n     +--- org.apache.hadoop:hadoop-auth:2.10.0 -\u003e 2.10.2 (*)\n     \\--- org.apache.hadoop:hadoop-common:2.10.0 -\u003e 2.10.2 (*)\n\n(*) - dependencies omitted (listed previously)\n```\n\n### Other changes\n\n* Automation tests: upgrade hbase to 2.3.7"
    },
    {
      "commit": "6a0682e4aea6f88f56aeca35d2ed1e0c21ec6580",
      "tree": "138d43d0f4d559a50b1c9c316800439e4bd66ff7",
      "parents": [
        "da1253e9454e6b97fdc02998f8212b17be96ed62"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Feb 09 14:54:07 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Feb 09 17:09:38 2026 +0800"
      },
      "message": "Package: update rpm and deb package files\n\nMain changes are included:\n  * Rename package from pxf-gpX to cloudberry-pxf\n  * Update installation paths to /usr/local/cloudberry-pxf-[VERSION]\n  * Remove legacy pxf-gp7.spec and pxf-cbdb1.spec files\n  * Update DEBIAN package control files with new naming\n  * Standardize package configuration based on cloudberry-pxf.spec\n"
    },
    {
      "commit": "da1253e9454e6b97fdc02998f8212b17be96ed62",
      "tree": "b648629ccfad48ce5c3732b448a70aab6271795a",
      "parents": [
        "0d605aaaf11fe7551a8fe69aa55c1155cd2245b7"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Feb 09 14:30:50 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Feb 09 17:09:38 2026 +0800"
      },
      "message": "ASF: Update Apache compliance and branding migration\n\nThis commit implements comprehensive changes to align the project with Apache\nSoftware Foundation incubation requirements and complete the migration from\nGreenplum to Apache Cloudberry branding.\n\n- Add DISCLAIMER file as required for Apache incubating projects\n- Update LICENSE file with comprehensive list of 245 files containing\n  Apache License headers, organized by module (FDW, External Table,\n  Server, Documentation, CI/Test templates)\n- Add Apache License headers to GitHub workflow files\n- Update CONTRIBUTING.md with Apache project contribution guidelines\n\n- Update README.md with Apache Cloudberry branding and simplified content\n- Update documentation templates in docs/content/ to use Cloudberry\n- Update automation and testing documentation\n- Migrate server scripts and Java components references\n\n- Update CI/CD workflows with proper Apache licensing\n- Clean up legacy CI documentation (remove ci/README.md)\n- Update build system references in Makefile\n- Enhance installation scripts to support both Cloudberry 2.0 and 2.1+\n\n- Add transition guide for Cloudberry migration\n- Update all user-facing documentation with correct branding\n- Simplify README.md focusing on essential information\n- Update book configuration for documentation generation\n\nThis change ensures full compliance with Apache incubation requirements\nwhile completing the transition to Apache Cloudberry ecosystem.\n"
    },
    {
      "commit": "0d605aaaf11fe7551a8fe69aa55c1155cd2245b7",
      "tree": "4197f05b610940e945b49a374813f81907cbd35f",
      "parents": [
        "ab7f902672ec6a579657e157d210cd912b5c210f"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Fri Feb 06 11:57:12 2026 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Sat Feb 07 09:48:21 2026 +0800"
      },
      "message": "docs - pxf works with ORC using Foreign Data Wrapper\n"
    },
    {
      "commit": "ab7f902672ec6a579657e157d210cd912b5c210f",
      "tree": "3c778331571c0575b19a3b131c5e78e1f4bc6501",
      "parents": [
        "0376ea75226a1dbd73f68af8df5278424a3c47af"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Fri Feb 06 08:26:56 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 06 11:26:56 2026 +0800"
      },
      "message": "Update parquet to 1.12.3 in PXF\n\nUpdate parquet to 1.12.3 (latest version with hadoop-client-2.x)\n* Add support for ZSTD compression\n* Temporary declare LZO as not supported. It causes following error in both current and in pre-upgrade builds:\n   ```\n   ERROR:  PXF server error : Class com.hadoop.compression.lzo.LzoCodec was not found  (seg1 10.11.0.131:6000 pid\u003d2567556)\n   ```\n* Add tests to cover different types of compression"
    },
    {
      "commit": "0376ea75226a1dbd73f68af8df5278424a3c47af",
      "tree": "d81dda36fbaccce3c67b242784f111cbb4b58c7d",
      "parents": [
        "29cb92d1f99e9d1d04f5342c3e08e289265cf0e3"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Thu Feb 05 12:50:26 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 15:50:26 2026 +0800"
      },
      "message": "docs - pxf works with ORC using Foreign Data Wrapper (#52)\n\nAdd examples on how to use PXF foreign data wrappers to access ORC files on S3/HDFS."
    },
    {
      "commit": "29cb92d1f99e9d1d04f5342c3e08e289265cf0e3",
      "tree": "2be37b44233ad3ca0f38eb49a4bafd023fec7939",
      "parents": [
        "88405c86a0513a593b007fb13cbe4bd3e75a9b2d"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Feb 05 15:13:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 15:13:43 2026 +0800"
      },
      "message": "Remove dev files from source dir\n\n* Remove obsoleted files under `dev` dir\n* Move `dev/start_minio.bash` to `ci/docker/pxf-cbdb-dev/ubuntu/script/start_minio.bash`\n\nSee: https://github.com/apache/cloudberry-pxf/issues/48"
    },
    {
      "commit": "88405c86a0513a593b007fb13cbe4bd3e75a9b2d",
      "tree": "699b217a6dbfd30293eed35568f2feaf1035f116",
      "parents": [
        "44b9dad2c247edf9f8f7557156abf272450842ae"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Feb 04 14:28:50 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Feb 05 15:09:12 2026 +0800"
      },
      "message": "Update Makefile and cloudberry-pxf for Apache Cloudberry\n"
    },
    {
      "commit": "44b9dad2c247edf9f8f7557156abf272450842ae",
      "tree": "e5f9e02743230b3daad227cbe479b4ae017644b5",
      "parents": [
        "54e342626e1e938723b4405e181e72ebfbba280d"
      ],
      "author": {
        "name": "Ed Espino",
        "email": "espino@apache.org",
        "time": "Thu Aug 29 00:41:27 2024 -0700"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Feb 05 15:09:12 2026 +0800"
      },
      "message": "Release support\n\nCherry-pick from 609435fa28ffeb2f659c6779c3ed90f150a5cb44\n"
    },
    {
      "commit": "54e342626e1e938723b4405e181e72ebfbba280d",
      "tree": "8d859469a3c8a1a0819b44e74b77b236186d6315",
      "parents": [
        "2e5b2fe9e8f4479380dad5a87aa9f47f14ffbcf1"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Thu Feb 05 09:03:41 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 12:03:41 2026 +0800"
      },
      "message": "Upgrade Apache ORC library in PXF\n\n* Bump Apache `ORC` library to 1.7.11\n   In theory, we can bump up to 1.9.8. However pxf-hbase tests fail with new protobuf-3.x. For now, let\u0027s move fast rather than struggle in dependency hell.\n\n* Bump `ORC`\u0027s dependencies to support `zstd` compression and tests for compression.\n   Surprisingly, according to documentation, `zstd` should work well. However, old `aircompressor:0.8` doesn\u0027t have the ZStd codec, and attempting to use it will lead to an error."
    },
    {
      "commit": "2e5b2fe9e8f4479380dad5a87aa9f47f14ffbcf1",
      "tree": "b31c33106ca9808c37d473afcf4e21c67002d870",
      "parents": [
        "d5750728a88b352309d8bbbe5050705747b4f95f"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Feb 05 10:20:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 05 10:20:02 2026 +0800"
      },
      "message": "Update go-libs url to `apache/cloudberry-go-libs` (#47)\n\n* Update go-libs url to `apache/cloudberry-go-libs`\n* Run go mod tidy to update go.mod and go.sum file\n* Update cluster_test.go\n* Remove the nil check for `failedCommand` in GenerateOutput function.\nAfter replacing greenplum-db/go-libs with apache/cloudberry-go-libs,\nthe `FailedCommands` field type changed from `[]*cluster.ShellCommand`\n(pointer slice) to `[]cluster.ShellCommand` (value slice).\n\nIn Go, struct values cannot be compared to nil, which caused the\nbuild error:\n```\n  invalid operation: failedCommand \u003d\u003d nil (mismatched types\n  cluster.ShellCommand and untyped nil)\n```\nThis nil check is no longer needed because:\n1. Value-type slice elements are always valid structs, never nil\n2. The NewRemoteOutput function only appends commands with non-nil\n   errors to FailedCommands, so empty iterations won\u0027t occur"
    },
    {
      "commit": "d5750728a88b352309d8bbbe5050705747b4f95f",
      "tree": "e5d209ff0ce6587f589e5aa0028d21bea5b14b82",
      "parents": [
        "f9dcc03debf6c31dac9560dc4d8541854ef6e3d7"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Wed Feb 04 07:10:12 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 04 10:10:12 2026 +0800"
      },
      "message": "Upgrade Apache AVRO library in PXF\n\n* Bump `avro` library to the latest java-8 compatible version.\n* Bump `avro` and its dependencies in automation tests.\n* Add support for `zstandard` compression codec and test covering all supported codecs.\n* Update documentation."
    },
    {
      "commit": "f9dcc03debf6c31dac9560dc4d8541854ef6e3d7",
      "tree": "bfcc0570ae5c32dea839225f719f87b34e631093",
      "parents": [
        "19ffc632b29e7c18e173e64389ad705006b0604d"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Wed Jan 28 16:52:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 16:52:23 2026 +0800"
      },
      "message": "feat: cleanup the PG_VERSION_NUM logic in source files (#41)\n\n"
    },
    {
      "commit": "19ffc632b29e7c18e173e64389ad705006b0604d",
      "tree": "eca4f95fb0574912aaeb846a004357cf79d08d03",
      "parents": [
        "be0c08fa52556a2daa70c668b8d913e1b3f587c5"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Jan 28 13:53:44 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Jan 28 15:32:24 2026 +0800"
      },
      "message": "CI: allow concurrent workflows on main branch\n\nPreviously, CI workflows triggered by pushes to the main branch were grouped\nby `${{ github.workflow }}-${{ github.ref }}` with `cancel-in-progress: true`.\nAs a result, when multiple PRs were merged in a short period of time, a newly\nmerged commit would cancel the CI workflow of the previous commit.\n\nThis change removes the cancellation behavior so that CI workflows for\ndifferent commits on the main branch can run in parallel. This ensures that\neach merged commit is fully validated by CI and avoids losing test results\ndue to automatic cancellation.\n\nNo changes to the CI steps themselves; only the workflow concurrency behavior\nis adjusted.\n"
    },
    {
      "commit": "be0c08fa52556a2daa70c668b8d913e1b3f587c5",
      "tree": "56167aa445ac51ccf0f2bb04ed58e53b3122143f",
      "parents": [
        "e991beb1b3d692aa742c2729e47773e3c778f14e"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Jan 28 13:42:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 13:42:28 2026 +0800"
      },
      "message": "Refactor: rename Java packages from `org.greenplum` to `org.apache.cloudberry`\n\nThis commit performs a global rebranding of the Java package structure to\nalign with the Apache Cloudberry project naming conventions and the\nofficial domain (cloudberry.apache.org).\n\nKey changes:\n* Renamed all Java package declarations and import statements from\n  \u0027org.greenplum\u0027 to \u0027org.apache.cloudberry\u0027.\n* Restructured physical directory paths from \u0027org/greenplum/\u0027 to\n  \u0027org/apache/cloudberry/\u0027 across all modules (server and automation).\n* Updated build configurations:\n  - Gradle \u0027group\u0027 in server/build.gradle\n  - Maven \u0027groupId\u0027 and dependencies in automation/pom.xml\n* Adjusted configuration files including:\n  - pxf-profiles-default.xml\n  - application.properties\n  - log4j2.xml / log4j.properties\n* Updated SQL scripts, test expected outputs (.ans, .out), and CI\n  entrypoint scripts.\n* Add breaking changes notes to the docs/content\n\nThis is a structural refactoring with no changes to functional logic.\nBut please note this will be a breaking change for developers."
    },
    {
      "commit": "e991beb1b3d692aa742c2729e47773e3c778f14e",
      "tree": "2099b8a2c39bcafeb4acec27351f9e13ea6a03d1",
      "parents": [
        "dac417b7900b8b1ef9aa030141008d176694332b"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Wed Jan 28 11:05:08 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 28 11:05:08 2026 +0800"
      },
      "message": "feat: Re-adapt cloudberry/pxf_fdw to Cloudberry (#31)\n\nCo-authored-by: Nikolay Antonov \u003costinru@gmail.com\u003e"
    },
    {
      "commit": "dac417b7900b8b1ef9aa030141008d176694332b",
      "tree": "fc53b5d93af01cb46390a0bc5bf9701034a15ab9",
      "parents": [
        "bfa51494b4faaffe8366a7ecee2d41833e7d396b"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jan 27 15:32:30 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Jan 28 09:57:21 2026 +0800"
      },
      "message": "Enforce linear commit history for main\n"
    },
    {
      "commit": "bfa51494b4faaffe8366a7ecee2d41833e7d396b",
      "tree": "87cefdde0a8b9f14189b058ed5b22ee89a103ddb",
      "parents": [
        "82db02688dc0ea0322778d5d2331175d0882fd9e"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Jan 26 18:20:34 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jan 27 16:10:12 2026 +0800"
      },
      "message": "CI: remove legacy Concourse CI, and rename `concourse` to `ci`\n\nMigrate from Concourse CI to GitHub Actions and remove legacy Greenplum 5/6\nsupport files for Apache Cloudberry compatibility.\n\nChanges:\n- Remove .github/workflows/create-release-on-tag.yml\n- Rename concourse/ to ci/, keeping only:\n  - ci/singlecluster/ (Hadoop test environment)\n  - ci/docker/pxf-cbdb-dev/ubuntu/ (Docker Compose + scripts)\n- Remove Concourse-specific files:\n  - pipelines/, tasks/, scripts/, terraform/, ansible/, settings/\n  - docker/{pxf-dev-base,pxf-dev-server,pxf-build-base,docs,sandbox,rpmrebuild}/\n- Remove Greenplum 5/6 RPM specs (package/pxf-gp{5,6}.spec)\n- Remove obsolete dev scripts:\n  - IPA/multinode Hadoop setup\n  - Dataproc cluster management\n  - create-release-branch.bash, rebuild_pxf.bash, set_up_gpadmin_user.bash\n- Remove downloads/README.md\n- Update path references in:\n  - .github/workflows/pxf-ci.yml\n  - README.md, cli/README.md, automation/README.Docker.md, docs/README.md\n  - ci/docker/pxf-cbdb-dev/ubuntu/script/{entrypoint.sh,entrypoint_kerberos.sh}\n"
    },
    {
      "commit": "82db02688dc0ea0322778d5d2331175d0882fd9e",
      "tree": "7ff8dba91508efd5115f15aa0e9c4d07f337d518",
      "parents": [
        "9eb45ace8a937bc642527b5da8d413e217ddacfa"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jan 27 12:18:01 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jan 27 14:18:45 2026 +0800"
      },
      "message": "ASF: update NOTICE \u0026 LICENSE files\n"
    },
    {
      "commit": "9eb45ace8a937bc642527b5da8d413e217ddacfa",
      "tree": "7bfe219fea28abda12081e802a5f33cee066b1db",
      "parents": [
        "148836dc8c918b93067c97b5d2ccad43c666d7b6"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Jan 26 17:41:07 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jan 27 14:17:10 2026 +0800"
      },
      "message": "ASF: update community files to follow ASF rules\n\nThis commit includes updates on these files:\n\n  .github/ISSUE_TEMPLATE/bug-report.yml\n  .github/ISSUE_TEMPLATE/config.yml\n  .github/pull_request_template.md\n  CODE-OF-CONDUCT.md\n  CONTRIBUTING.md\n  SECURITY.md\n"
    },
    {
      "commit": "148836dc8c918b93067c97b5d2ccad43c666d7b6",
      "tree": "766ee0e4be9f954d659395cea14e6766ce1300be",
      "parents": [
        "3b6d93dacb78576b0c97df9610f93c2418b9b145"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Fri Jan 23 20:06:02 2026 +0400"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Sat Jan 24 15:30:54 2026 +0800"
      },
      "message": "Fix: Always run PXF Automation tests when PR created\n"
    },
    {
      "commit": "3b6d93dacb78576b0c97df9610f93c2418b9b145",
      "tree": "fff46b253bfc4d946ad23064f75fcd5b091a7669",
      "parents": [
        "60d38b0c2d7a85f6112d5693a4ea25153a487ae0"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Tue Jan 20 19:29:12 2026 +0400"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Jan 21 17:17:56 2026 +0800"
      },
      "message": "Add dependency-submission workflow to collect gradle dependencies\n"
    },
    {
      "commit": "60d38b0c2d7a85f6112d5693a4ea25153a487ae0",
      "tree": "93f2e8b9c0b015ee8bafc291921b2b4d4d317e9f",
      "parents": [
        "a3e52c55bbe0fe6b7d00efee8b2f5666e10e8041"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Dec 22 17:48:04 2025 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Jan 20 11:58:06 2026 +0800"
      },
      "message": "asf.yaml: add active contributors as collaborators\n\nIn this commit, we added the following active contributors as\ncollaborators for this project:\n\n * Mulily0513\n * MisterRaindrop\n * ostinru\n"
    },
    {
      "commit": "a3e52c55bbe0fe6b7d00efee8b2f5666e10e8041",
      "tree": "59f089a20f20fbc873aca3c42cfadf0aea363af7",
      "parents": [
        "5ec3492218c70ad615f190df35b4d86ba4997b88"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Thu Jan 15 14:51:52 2026 +0400"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Jan 16 16:13:10 2026 +0800"
      },
      "message": "Automation: add README on how to run tests\n"
    },
    {
      "commit": "5ec3492218c70ad615f190df35b4d86ba4997b88",
      "tree": "d75ce09354f07aa82ba3cb42202e4ac1d709aab1",
      "parents": [
        "a932ece6bc578395f309c8664d1715c2fa1b6960"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "liuxiaoyu@hashdata.cn",
        "time": "Thu Jan 15 11:53:07 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Jan 16 14:00:27 2026 +0800"
      },
      "message": "Fix: gpdb test add pxf env and fix cloudtest null point\n"
    },
    {
      "commit": "a932ece6bc578395f309c8664d1715c2fa1b6960",
      "tree": "3d324d52655414767303e02ec87b8e0dad411f22",
      "parents": [
        "2b2959c32dec367ed5a0b7ded39d8ed0d8e1984f"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "liuxiaoyu@hashdata.cn",
        "time": "Thu Jan 15 09:51:27 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Jan 15 18:09:47 2026 +0800"
      },
      "message": "Fix: external table regress allow demo text resolver to handle multiple fields\n\n- adjust DemoTextResolver to serialize multi-column records by joining fields\n- preserve legacy single-field end-of-stream semantics\n- update DemoResolverTest expectation to cover multi-field output\n"
    },
    {
      "commit": "2b2959c32dec367ed5a0b7ded39d8ed0d8e1984f",
      "tree": "2cadc2273deb6284b41a36e59a959ecd52c6d5cf",
      "parents": [
        "fdf58f3fae1818163ab5dd7e06093b5df421f29e"
      ],
      "author": {
        "name": "huluhuifeng",
        "email": "1095824838@qq.com",
        "time": "Wed Dec 31 07:25:55 2025 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Dec 31 11:09:31 2025 +0800"
      },
      "message": "Fix: Add load/performance/extension test groups and align env/test expectations\n\n- add bench_test and pxf_extension_test in run_tests.sh, plus matrix entries for bench and pxf_extension in CI\n- bump surefire heap to 4G to avoid OOM\n- update gpupgrade expected outputs to new PXF_HOME paths and JSON formatter error text\n- make ProtocolUtils/HiveBaseTest/JdbcHiveTest/OrcWriteTest/ParquetWriteTest more robust to env defaults (protocol, creds, hive JDBC URL)\n- keep MultiServerTest running under HDFS with a safe working directory fallback\n- set distribution key and INSERT pattern for performance test data load\n"
    },
    {
      "commit": "fdf58f3fae1818163ab5dd7e06093b5df421f29e",
      "tree": "6bf9b4f3d3c998c5f797dce91bc9ca49e0ff1373",
      "parents": [
        "5394ead50270ebfb5445beec5c1d3ac837eda689"
      ],
      "author": {
        "name": "huluhuifeng",
        "email": "1095824838@qq.com",
        "time": "Mon Dec 22 18:37:32 2025 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Dec 31 11:09:31 2025 +0800"
      },
      "message": "Fix: Add load/performance/extension test groups and align env/test expectations\n\n- add bench_test and pxf_extension_test in run_tests.sh, plus matrix entries for bench and pxf_extension in CI\n- bump surefire heap to 4G to avoid OOM\n- update gpupgrade expected outputs to new PXF_HOME paths and JSON formatter error text\n- make ProtocolUtils/HiveBaseTest/JdbcHiveTest/OrcWriteTest/ParquetWriteTest more robust to env defaults (protocol, creds, hive JDBC URL)\n- keep MultiServerTest running under HDFS with a safe working directory fallback\n- set distribution key and INSERT pattern for performance test data load\n"
    },
    {
      "commit": "5394ead50270ebfb5445beec5c1d3ac837eda689",
      "tree": "61c8421a6d52d4de8ce9c65dd138e33bb1802e1c",
      "parents": [
        "f3a7e030c7402df3d9dc092dcbdee08ac3e13f65"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Wed Dec 24 19:58:39 2025 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 26 11:04:15 2025 +0800"
      },
      "message": "Automation: upgrade testng to reduce amount of SKIPPED tests\n\nOld TestNG versions has bug https://github.com/testng-team/testng/issues/739 - when `@BeforeClass(alwaysRun \u003d true)` fails - all tests are marked as SKIPPED despite of `alwaysRun \u003d true`. Fixed in 6.9.5+.\n"
    },
    {
      "commit": "f3a7e030c7402df3d9dc092dcbdee08ac3e13f65",
      "tree": "2ef42d29827e6188bcd3a0bf800570872809e709",
      "parents": [
        "f923ce564f8c92647b9761d1b9abc843cf5cafbb"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Mon Dec 22 01:27:20 2025 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 26 11:04:15 2025 +0800"
      },
      "message": "Automation: wait for files to be copied in Hive tests\n"
    },
    {
      "commit": "f923ce564f8c92647b9761d1b9abc843cf5cafbb",
      "tree": "f68f1eb83298898ac4ff60a031a4b20fe53344a2",
      "parents": [
        "fbd6d65a33f3568c99aa23baa857bde3294f8ae1"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Sun Dec 21 23:28:04 2025 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 26 11:04:15 2025 +0800"
      },
      "message": "Automation: save automation logs\n"
    },
    {
      "commit": "fbd6d65a33f3568c99aa23baa857bde3294f8ae1",
      "tree": "6f5d2c09f964ead0df0e310dabed144426c521dc",
      "parents": [
        "112bcd1cf443d650c83a0b28316b85eafc4dbcd3"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Sun Dec 21 20:57:46 2025 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 26 11:04:15 2025 +0800"
      },
      "message": "Automation: Fail whole test-group when we have single failed test\n"
    },
    {
      "commit": "112bcd1cf443d650c83a0b28316b85eafc4dbcd3",
      "tree": "b22e06930e4c12c35c03e01be8505f6dc2b95175",
      "parents": [
        "7e7f496e0cab18bda9090f9cd26f5a05a1baf398"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@gmail.com",
        "time": "Sun Dec 21 20:12:07 2025 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 26 11:04:15 2025 +0800"
      },
      "message": "Automation: add timeout on test phase\n\nTests may stuck for some reason and github will kill CI pipeline leaving\nus without any clue what happened.\nThis change limits time for each step to run. When timeout raised -\ngithub will kill single step, and other steps will collect results and\nwill provide test reports with logs.\n"
    },
    {
      "commit": "7e7f496e0cab18bda9090f9cd26f5a05a1baf398",
      "tree": "7c58b05dbb399ddf785a3ffd64d56c8fe458a271",
      "parents": [
        "387bab649122910b8386b8fae1aaa25e67b8c6de"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 19 18:29:14 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Add external-table to test matrix\n"
    },
    {
      "commit": "387bab649122910b8386b8fae1aaa25e67b8c6de",
      "tree": "c4bbd65c903bcb3a7cff5fdb5f256c5ca0379d31",
      "parents": [
        "b2209859f96819024ce69f22ff753bdc2116a634"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 19 17:29:17 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Reuse run_tests.sh for single test group execution instead of new script\n"
    },
    {
      "commit": "b2209859f96819024ce69f22ff753bdc2116a634",
      "tree": "c563862ff143bb6f8e70271c6c7ae7561944442e",
      "parents": [
        "d61f5b0e39d5c09fc54e06bc1ce3624b74dad33f"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 19 16:21:49 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Add run_single_test.sh with proper env setup, add missing test groups, and detailed test summary\n"
    },
    {
      "commit": "d61f5b0e39d5c09fc54e06bc1ce3624b74dad33f",
      "tree": "9e5e2b4b5c75e8746400a56749569df03223cf95",
      "parents": [
        "d5040cea6e42e5e6d0c8b79f8b10acf4b2e8233a"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 19 15:36:32 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Parallelize tests using matrix strategy for faster CI\n"
    },
    {
      "commit": "d5040cea6e42e5e6d0c8b79f8b10acf4b2e8233a",
      "tree": "7bcc436615b666a4b6ddc0bfba7cf03182d0550d",
      "parents": [
        "e35d434d89e7f479cd900b8d37f060581c823cca"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Dec 19 11:42:41 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Update CI workflow to make it run\n"
    },
    {
      "commit": "e35d434d89e7f479cd900b8d37f060581c823cca",
      "tree": "279f6aad2bbfbb205b98ca07e1fee86cf6b95ccd",
      "parents": [
        "0f8adcc5e4ca494446ec717a6579f68d7ba402ab"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Fri Dec 19 10:51:04 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Update .github/workflows/pxf-ci.yml\n\nCo-authored-by: Dianjin Wang \u003cwangdianjin@gmail.com\u003e"
    },
    {
      "commit": "0f8adcc5e4ca494446ec717a6579f68d7ba402ab",
      "tree": "68dd6095fbfacb679455cc28c02d505bbe29825f",
      "parents": [
        "6e5b832b5e9c06a5d752b0ad52d7b779a42c83ed"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Fri Dec 19 10:50:58 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Update .github/workflows/pxf-ci.yml\n\nCo-authored-by: Dianjin Wang \u003cwangdianjin@gmail.com\u003e"
    },
    {
      "commit": "6e5b832b5e9c06a5d752b0ad52d7b779a42c83ed",
      "tree": "97fdc07c8cf15e71aada73b32e1d5025c7c0c640",
      "parents": [
        "483029896080525372cce935beab5685d76e63f8"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "liuxiaoyu@hashdata.cn",
        "time": "Fri Dec 19 09:28:39 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "this is github action test commit\n"
    },
    {
      "commit": "483029896080525372cce935beab5685d76e63f8",
      "tree": "395469a25ef8d1df92bf37b25502908af84a4935",
      "parents": [
        "b0de1f4c9e9043e127a9d4389fb87efdddd76382"
      ],
      "author": {
        "name": "huluhuifeng",
        "email": "1095824838@qq.com",
        "time": "Thu Nov 27 23:55:38 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Fix: stabilize base/feature automation test\n\n- Add Kerberos docker entrypoint to bootstrap secure singlecluster + PXF，\n- Improve run_tests.sh env/test runner (MinIO/S3A setup, gpupgrade helpers, hooks)\n- Harden automation/regress comparisons and expected outputs to reduce noise/flakes\n- Update pxf-pre/post-gpupgrade scripts to work with Cloudberry env\n"
    },
    {
      "commit": "b0de1f4c9e9043e127a9d4389fb87efdddd76382",
      "tree": "1685258d03caa7a0f2c7a7322a64560ca5a0f5fb",
      "parents": [
        "9ca5f55c9106c45dd9b3bd47f06a7b8e9819ec95"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "liuxiaoyu@hashdata.cn",
        "time": "Tue Dec 16 09:14:28 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "feat(ci): improve workflow automation and test reporting\n\n- Enhance CI workflow scripts and build process\n- Add detailed test reporting with statistics\n- Fix permission and disk space issues\n- Optimize Java memory and add debug logging\n- Update entrypoint for database initialization\n"
    },
    {
      "commit": "9ca5f55c9106c45dd9b3bd47f06a7b8e9819ec95",
      "tree": "61c01bb5cb62a7b91fa80adfaa4c3f1376007bb2",
      "parents": [
        "ca5f49fff5417fcbfe3cac0f3e7e1d6efc02a407"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "liuxiaoyu@hashdata.cn",
        "time": "Wed Dec 17 22:41:19 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "feat: Add MinIO S3 support and improve Docker test environment\n\n- Configure S3/MinIO integration with PXF servers\n- Add Parquet profile support in pxf-profiles.xml\n- Update cloud access test cases to use MinIO protocol\n- Configure Gradle and Go to use aliyun mirrors for faster builds\n- Improve Docker entrypoint with MinIO deployment\n- Update test utilities to support protocol switching (s3/minio/hdfs)\n- Fix OutOfMemory test server configuration\n"
    },
    {
      "commit": "ca5f49fff5417fcbfe3cac0f3e7e1d6efc02a407",
      "tree": "cb4c90ac3bb3ea6cde3f8efdd43e422ebdbc81a4",
      "parents": [
        "c13994d7d6b67951e69412cb515d5f8f45badaa1"
      ],
      "author": {
        "name": "huluhuifeng",
        "email": "1095824838@qq.com",
        "time": "Sun Nov 23 10:29:42 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "fix smoke hdfs hive hcatalog hcfs test group\n"
    },
    {
      "commit": "c13994d7d6b67951e69412cb515d5f8f45badaa1",
      "tree": "c8145d35372013e484b853fe1e9e81d64054740c",
      "parents": [
        "deee1e14ec3875800ffe1faea14840c51f570a0e"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "liuxiaoyu@hashdata.cn",
        "time": "Thu Dec 18 17:39:03 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "update pxf-ci.yml and pxf build branch use merge-with-upstream branch\n"
    },
    {
      "commit": "deee1e14ec3875800ffe1faea14840c51f570a0e",
      "tree": "8ab6c610d6b1c6dd9f5a19527d90a65d24239ec3",
      "parents": [
        "a43e9e2bf78459be57e812aff99ac07283927b63"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Wed Nov 19 22:06:52 2025 +0800"
      },
      "committer": {
        "name": "Max Yang",
        "email": "79948451+my-ship-it@users.noreply.github.com",
        "time": "Mon Dec 22 15:03:22 2025 +0800"
      },
      "message": "Add a basic pxf ci and summary test result\n"
    },
    {
      "commit": "a43e9e2bf78459be57e812aff99ac07283927b63",
      "tree": "7f837b0158b5c6da111cb6da55e9ff38fcf96f49",
      "parents": [
        "8839ece689f91d39d7aedc09bf1f5ad5ead80ce2"
      ],
      "author": {
        "name": "Max Yang",
        "email": "yangyu@hashdata.cn",
        "time": "Tue Jun 24 21:09:38 2025 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Dec 18 16:21:00 2025 +0800"
      },
      "message": "Modify operator precedence.\n"
    },
    {
      "commit": "8839ece689f91d39d7aedc09bf1f5ad5ead80ce2",
      "tree": "415d506c84f66a3657dc30ff06f4abc1918ea3bf",
      "parents": [
        "42dddc466f9e10ba355ffbad90ffe70e14e31519"
      ],
      "author": {
        "name": "WANG Weinan",
        "email": "wangweinan@hashdata.cn",
        "time": "Tue Jun 24 18:36:44 2025 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Dec 18 16:21:00 2025 +0800"
      },
      "message": "Fix stack overflow in add_projection_desc_httpheader_pg12\n"
    },
    {
      "commit": "42dddc466f9e10ba355ffbad90ffe70e14e31519",
      "tree": "a8b85c14ad0bda4d99978eb712c0699cd81a4589",
      "parents": [
        "26c0920e3513c12a2caeb1255c5ae9a54a7d9fbe"
      ],
      "author": {
        "name": "Bradford D. Boyle",
        "email": "bradfordb@vmware.com",
        "time": "Mon Sep 19 13:27:48 2022 -0700"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Dec 18 16:21:00 2025 +0800"
      },
      "message": "Relax the requirement that C string length matches Java string length (#870)\n\nCommit 94f8ccad added a check that the length of received strings (as\r\ndetermined by strnlen) matched the length of the string as determined by\r\nthe Java-based PXF service; if they did not, this was treated as a fatal\r\nerror. Some users have reported that they have ORC/Parquet files with\r\nstrings that contain ASCCII NUL-bytes. These strings would not have a\r\nstrnlen calculate length that matches with the Java string lenght.\r\n\r\nThis commit removes the requirements that the lengths be equal and\r\ninstead logs a debug message when they do not match.\r\n\r\nAuthored-by: Bradford D. Boyle \u003cbradfordb@vmware.com\u003e"
    },
    {
      "commit": "26c0920e3513c12a2caeb1255c5ae9a54a7d9fbe",
      "tree": "095eff9ecb36317c49a9214bc27b5f825d3ac7cf",
      "parents": [
        "45efced0e188cb782098ddd50bf06f97397c3de5"
      ],
      "author": {
        "name": "Alexander Denissov",
        "email": "denalex@users.noreply.github.com",
        "time": "Thu Sep 15 17:00:27 2022 -0700"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Dec 18 16:21:00 2025 +0800"
      },
      "message": "added specs for gpdb7-rhel8-test-pxf docker image (#867)\n"
    },
    {
      "commit": "45efced0e188cb782098ddd50bf06f97397c3de5",
      "tree": "8c9149496605134c60303e6ab53028f43e8cece0",
      "parents": [
        "e021d6ff86ee02ad1d15c06709e0af60c4d05f69"
      ],
      "author": {
        "name": "Ashuka Xue",
        "email": "axue@vmware.com",
        "time": "Thu Sep 15 15:21:14 2022 -0700"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Dec 18 16:21:00 2025 +0800"
      },
      "message": "ci: allow existing artifacts to remain if there is no pivnet product (#868)\n\nIn the case that there is no pivnet artifact to pull down, do not error\nout. Instead, keep whatever artifact was already present in the bucket.\n"
    }
  ],
  "next": "e021d6ff86ee02ad1d15c06709e0af60c4d05f69"
}
