)]}'
{
  "log": [
    {
      "commit": "12ae4ec8bc5499e83608f45cec72390083e03e8d",
      "tree": "faac6c5068df7d24338ff94a2c17679a96809cce",
      "parents": [
        "fc2a4099486ebaa784be40f2c1607c56eb695c57"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Tue Sep 22 18:48:39 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 18:48:39 2026 +0500"
      },
      "message": "CI: propagate automation build failures (#159)\n\nFix three issues that hid missing automation coverage or prevented tests from running:\n\n- Remove `|| true` from all 11 automation `make GROUP\u003d...` invocations in `run_tests.sh`. Compilation and other nonzero make failures now propagate to CI instead of producing a false-green result with no Surefire reports.\n  Surefire already uses `testFailureIgnore\u003dtrue`, so ordinary Java test failures still allow report collection and are detected by the subsequent CI result checks. Workflow artifact collection steps retain `if: always()`. Other best-effort cleanup and diagnostic commands are unchanged.\n\n- Add missing class-level `@WorksWithFDW` to `PxfFdwExtensionTest`.\n\n- Stop overriding `JAVA_HOME` with Java 8 in `bench_prepare_env()`. Load and performance tests now retain the Java 11 environment selected by the runner."
    },
    {
      "commit": "fc2a4099486ebaa784be40f2c1607c56eb695c57",
      "tree": "67e2892295ac866c35eb0dcd038b131c29fbffd0",
      "parents": [
        "02eae0020f6e0129eb76cbf56c632bbc69630c88"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Tue Sep 22 06:05:27 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 09:05:27 2026 +0800"
      },
      "message": "Remove smoke test group (#152)\n\nConsolidate duplicate smoke and regression coverage into the automation test suites.\n\n- Move filter pushdown, proxy, Hive read, and multi-block scenarios into the appropriate feature groups\n- Add FDW coverage for Hive reads and large multi-block writes\n- Enable supported Hive automation scenarios in FDW mode\n- Log SQL regression diffs directly in CI output\n- Remove the obsolete regression harness, smoke group, and related CI entries"
    },
    {
      "commit": "02eae0020f6e0129eb76cbf56c632bbc69630c88",
      "tree": "05981df9a63be91656439a76c63a7a687d6ab550",
      "parents": [
        "52925a83da06092fd4ea02f73fdab02438a2e850"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Sep 15 19:09:06 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Sep 16 17:02:41 2026 +0800"
      },
      "message": "Remove org.json, an ASF Category X dependency\n\norg.json:json:20090211 is declared in pxf-hive as an\n`implementation` dependency, so it is packed into the pxf-service\nSpring Boot application JAR and ships inside every convenience RPM,\nDEB and tarball we publish.\n\nIts license carries the \"The Software shall be used for Good, not\nEvil\" clause. The ASF moved the JSON license to Category X on\n2016-11-03, which forbids it in any Apache release, source or\nbinary. This is a release blocker that documentation cannot fix:\nthe dependency has to go.\n\nNothing in PXF references org.json. The declaration is annotated\n\"transitive dependency required by MapR\", which does not apply to\nApache Cloudberry. Remove it along with its dependencyManagement\npin.\n\nVerified on Rocky 9: the build succeeds, the full unit test suite\nstays green (1807 tests, 0 failures), and the application JAR drops\nfrom 153 bundled JARs to 152 with json-20090211.jar gone.\n\nSee: https://www.apache.org/legal/resolved.html#category-x\n\nBackpatch-through: REL_2_STABLE\n"
    },
    {
      "commit": "52925a83da06092fd4ea02f73fdab02438a2e850",
      "tree": "68002d6a6934d6340d15c7045050ee34efe03569",
      "parents": [
        "7dc3ebbb1be3c36584655859d23107fb410b6c79"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Sep 15 12:12:41 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Sep 15 19:19:18 2026 +0800"
      },
      "message": "Remove license pointer text from NOTICE\n\nJustin Mclean noted during the 2.2.0-rc1 IPMC vote that the NOTICE files\nof the cloudberry-backup and cloudberry-go-libs components carry Apache\nlicense boilerplate, and that NOTICE is reserved for notifications that\nare legally required.  He did not review this repository, but the same\nissue is here in a milder form.\n\nThe text came from upstream: github.com/greenplum-db/pxf-archive ships a\nNOTICE whose body is the VMware attribution followed by two paragraphs\npointing at the license, and both were copied in when the code was\ndonated.\n\nSection 4(d) of the Apache License asks for \"the attribution notices\ncontained within such NOTICE file\", not the file itself, and\ninfra.apache.org/licensing-howto.html is explicit that a bundled\ndependency\u0027s NOTICE \"must be analyzed and the relevant portions bubbled\nup\", and that one should \"keep NOTICE as brief and simple as possible\"\nand \"not add anything to NOTICE which is not legally required\".\n\nThe two paragraphs removed here:\n\n    This product is licensed to you under the Apache 2.0 license (the\n    \"License\"). You may not use this product except in compliance with\n    the Apache 2.0 License.\n\n    This product may include a number of subcomponents with separate\n    copyright notices and license terms. Your use of these subcomponents\n    is subject to the terms and conditions of the subcomponent\u0027s license,\n    as noted in the LICENSE file.\n\nare not attribution notices.  The first restates the license, which\nLICENSE already conveys; the second points at LICENSE for subcomponent\nterms, which is where a reader would look anyway.\n\nThe Apache HAWQ and VMware attributions are untouched.\n\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "7dc3ebbb1be3c36584655859d23107fb410b6c79",
      "tree": "7b68ee7cd17f38f872ab78f9eecac95fc233a371",
      "parents": [
        "01d3fd9c289a54363b132e3c2ca060ed89b280a8"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Sep 15 14:49:08 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Sep 15 17:09:49 2026 +0800"
      },
      "message": "Fix MinIO image pull by using quay.io registry\n\nThe pxf-s3 Testcontainers jobs fail while starting MinIO:\n\n  ContainerFetchException: Can\u0027t get Docker image:\n  RemoteDockerImage(imageName\u003dminio/minio:RELEASE.2024-11-07T00-52-20Z)\n  Caused by: NotFoundException: Status 404: pull access denied for\n  minio/minio, repository does not exist or may require \u0027docker login\u0027\n\nThe minio namespace is gone from Docker Hub: both minio/minio and\nminio/mc now return \"object not found\", so pinning a digest would\nnot help either. Other Docker Hub images such as alpine:3.17 still\npull fine in the same job, so this is not rate limiting.\n\nMinIO still publishes the community image on quay.io, where the\npinned tag remains available as a six-architecture manifest list.\nOnly the registry host changes here, the tag is left alone on\npurpose: the image content stays identical, so the container\nsettings and test behaviour are unaffected. Bumping the MinIO\nversion is a separate concern.\n\nNote that quay.io is still an upstream we do not control. A\nfollow-up could mirror the image into a registry owned by the\nproject, similar to the image caching already used for MSSQL.\n\nBackpatch-through: REL_2_STABLE\n"
    },
    {
      "commit": "01d3fd9c289a54363b132e3c2ca060ed89b280a8",
      "tree": "f5309b17c4efc1b985764a6026ff89c0c86dc460",
      "parents": [
        "fdaad42eeb68fc8cad8f423736b49461f0beda30"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Sep 11 10:26:19 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Fri Sep 11 17:02:06 2026 +0800"
      },
      "message": "CI: bump gradle/actions/dependency-submission to v6.3.0\n\nThe pinned v6.1.0 SHA is not in the ASF allowed-actions list, so the\nDependency Submission job is blocked on every push to main. v6.3.0 is\nthe only entry for this action without an expires_at, so it will not\nneed another bump on a schedule.\n"
    },
    {
      "commit": "fdaad42eeb68fc8cad8f423736b49461f0beda30",
      "tree": "c1a7f229051a26a8019d8f395b6f9c13879ca307",
      "parents": [
        "5872786bbdefcdfc0d482697d28a9649e4205f22"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Fri Sep 11 07:12:08 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 11 10:12:08 2026 +0800"
      },
      "message": "PXF3: require java 11 to run PXF (#146)"
    },
    {
      "commit": "5872786bbdefcdfc0d482697d28a9649e4205f22",
      "tree": "d53fca490a228195d6b5e7f6cfc23b8c771114e7",
      "parents": [
        "2bca7138100089f891aa2be2d1c8a5e6298a237d"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Thu Sep 10 15:25:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 15:25:03 2026 +0800"
      },
      "message": "Fix confusing build failure when javac is missing (#151)\n\n* Fix confusing build failure when javac is missing\n\nThe server module needs javac, but Gradle starts happily on a JRE and\nonly fails later at :pxf-api:compileJava with \"Toolchain installation\n... does not provide the required capabilities: [JAVA_COMPILER]\", which\nnever mentions a JDK. Check for javac before invoking Gradle so the\nbuild stops with an actionable message instead.\n\nInstalling the JDK afterwards is not enough on its own: the Gradle\ndaemon caches JVM metadata for its whole lifetime, so a daemon started\nwhile only the JRE was present replays the same error. Both the new\ncheck and the README now say to run ./gradlew --stop.\n\nAlso correct the JDK prerequisites: record that 8, 11, 17 and 21 are\nsupported, as the java-compatibility-test CI matrix already exercises,\nnote that 1.8 support will be removed in PXF 3.0, and fix the example\nJAVA_HOME, which used a RHEL-style path that does not exist on\nDebian/Ubuntu.\n\nFixes #150\n\n* Improve the build troubleshooting\n* Address the comment"
    },
    {
      "commit": "2bca7138100089f891aa2be2d1c8a5e6298a237d",
      "tree": "232c1c77a4022ed1d2281c365b8f38362ff02514",
      "parents": [
        "659bd362c493d1d97a94a612b70a652554783a57"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Sep 07 17:34:17 2026 +0800"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Tue Sep 08 11:11:56 2026 +0800"
      },
      "message": "CLI: bypass HTTP proxy when probing the local PXF endpoints\n\nThe pxf script probes the running service with curl over localhost:\n\n    until $curl --silent --connect-timeout 1 -I \"http://localhost:$PXF_PORT\" | grep \u0027PXF Server\u0027\n\ncurl does not bypass proxies for localhost, so when http_proxy is set in\nthe environment -- common on hosts that need a proxy to fetch build\ndependencies -- the probe is sent to the proxy, which cannot reach the\nloopback interface of the PXF host and answers 502 Bad Gateway. The grep\nnever matches, so `pxf start` retries for all 300 attempts while the\nservice is up and healthy, and `pxf status` reports \"PXF is down\" for\nthe same reason. `pxf stop` is affected too: the POST to\n/actuator/shutdown fails silently and it falls back to SIGTERM/SIGKILL\ninstead of shutting down gracefully.\n\nAll three endpoints are by definition local to the host, so they should\nnever be routed through a proxy. Pass --noproxy \u0027*\u0027 to each of them.\n"
    },
    {
      "commit": "659bd362c493d1d97a94a612b70a652554783a57",
      "tree": "4b1b20190be39f8b9c6f923f638a46f835e9e5d7",
      "parents": [
        "1ada3f179d51231df61ceeb3b8f068d2e1b13c10"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@yandex-team.ru",
        "time": "Mon Sep 07 12:04:13 2026 +0500"
      },
      "committer": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Mon Sep 07 21:42:55 2026 +0800"
      },
      "message": "Bump version to 3.0.0-SNAPSHOT\n"
    },
    {
      "commit": "1ada3f179d51231df61ceeb3b8f068d2e1b13c10",
      "tree": "13bd0e2302aa638206902400cc89748d6484bd55",
      "parents": [
        "f37c1644b5b3b91699d04aaea51a97ddb2d0650f"
      ],
      "author": {
        "name": "Jinbao Chen",
        "email": "chenjinbao1989@gmail.com",
        "time": "Mon Sep 07 02:57:07 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 14:57:07 2026 +0800"
      },
      "message": "CI: support native extensions on Cloudberry 2.x and main\n\nMake the PXF native extensions compatible with both Cloudberry 2.x\n(PostgreSQL 14) and Cloudberry main (PostgreSQL 16).\n\nUse Node pointers for makeString() results so the same source works\nbefore and after PostgreSQL split the Value node types, and include\narpa/inet.h for the byte-order helper declarations.\n\nExtend the Rocky 9 CI workflow to:\n- build Cloudberry RPMs for both REL_2_STABLE and main\n- scope RPM caches and artifacts by Cloudberry ref and commit\n- record and verify the Cloudberry build identity and PostgreSQL major\n- build native extensions against both PostgreSQL 14 and 16\n- force clean native builds in test containers to avoid reusing\n  incompatible host objects\n\nCo-authored-by: Jinbao Chen \u003cchenjinbao1989@gmail.com\u003e\nCo-authored-by: liuxiaoyu \u003cxliu19163@gmail.com\u003e"
    },
    {
      "commit": "f37c1644b5b3b91699d04aaea51a97ddb2d0650f",
      "tree": "9b6b58baef9353f5672fff5d5676d3d130fd2e44",
      "parents": [
        "3f1a6048740778bd0ff574ec02733cf7f810cc71"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Mon Sep 07 08:23:35 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 11:23:35 2026 +0800"
      },
      "message": "automation: remove `hcatalog` test (#145)\n\n* automation: move retained hcatalog tests to hive\n* automation: remove hcatalog tests"
    },
    {
      "commit": "3f1a6048740778bd0ff574ec02733cf7f810cc71",
      "tree": "cead2a626a46cb5743b7997fb81e741067537628",
      "parents": [
        "960722588cdb6aeef1ad6541bf5829c93680148c"
      ],
      "author": {
        "name": "liuxiaoyu",
        "email": "45345701+MisterRaindrop@users.noreply.github.com",
        "time": "Thu Sep 03 14:58:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 09:58:03 2026 +0300"
      },
      "message": "Fix cancelled reads being reported as completed (#143)"
    },
    {
      "commit": "960722588cdb6aeef1ad6541bf5829c93680148c",
      "tree": "930d3fc850028e8c1e1aa533f7a806c162857e24",
      "parents": [
        "3b5dead7146b8fea280c5e596c8bf52e9efeaaa9"
      ],
      "author": {
        "name": "Dianjin Wang",
        "email": "wangdianjin@gmail.com",
        "time": "Wed Sep 02 14:50:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 14:50:01 2026 +0800"
      },
      "message": "CI: add Rocky 10 support (#136)\n\n* CI: add Rocky 10 support\n\nMirror the existing Rocky 9 lane for Rocky 10 so the two distros run the\nsame jobs with the same test scope:\n\n- build-cloudberry-rpm-rocky10 builds the Cloudberry RPM on the Rocky 10\n  build image and publishes it as its own artifact/cache.\n- build-docker-images-rocky10 builds the singlecluster image.\n- pxf-test-rocky10 runs the same 16 test groups as pxf-test-rocky9.\n- rocky10 is added to the testcontainer image matrix and to the\n  testcontainer test matrix.\n- test-summary gains a Rocky 10 section.\n\nThe Rocky 10 jobs are derived from the Rocky 9 ones by substituting the\ndistro identifiers only, so the two matrices cannot drift apart.\n\nRHEL/Rocky 10 dropped OpenJDK 8 and 11 from its repositories (only 21 and\n25 remain), but Hadoop 3.1.2 still needs JDK 8 and the PXF server builds\nwith JDK 11. Both images therefore pull Temurin 8/11 from the Adoptium\nrepository on 10+ and expose them under the /usr/lib/jvm/java-1.8.0-openjdk\nand /usr/lib/jvm/java-11-openjdk names the CI scripts already resolve\nJAVA_HADOOP and JAVA_BUILD to, so no script needs a Rocky 10 special case.\nThe Adoptium package layout has changed names across releases, so the JDK\nhome is discovered with rpm -ql rather than hardcoded, and the resulting\nsymlinks are verified at image build time. Older releases keep using the\ndistro OpenJDK packages unchanged.\n\nFor the same reason the shared entrypoint no longer asks dnf for the\nOpenJDK 8/11 packages on 10+ -- the image already provides them.\n\n* CI: disable rpath QA when building the Rocky 10 Cloudberry RPM\n\nRHEL/Rocky 10 runs check-rpaths as part of the default %install\npost-processing chain, which RHEL 9 never invokes. Cloudberry links its\nlibraries with a RUNPATH into $INSTALL_PREFIX/lib on purpose, and the\nplpython3 modules additionally carry /usr/lib64 and /ext/python/lib, so\nthe check aborts the build:\n\n  ERROR 0002: file \u0027.../lib/postgresql/hstore.so\u0027 contains an invalid\n              runpath \u0027/usr/local/cloudberry-db/lib\u0027\n  ERROR 0001: file \u0027.../lib/postgresql/plpython3.so\u0027 contains a standard\n              runpath \u0027/usr/lib64\u0027\n  error: Bad exit status from /var/tmp/rpm-tmp.X7bvEp (%install)\n\nThis RPM only ever installs Cloudberry into a CI container and is never\npublished, so set QA_RPATHS to switch the rpath QA off entirely, which\nleaves the Rocky 10 lane behaving like the Rocky 9 one.\n\nVerified against the apache/incubator-cloudberry:cbdb-build-rocky10-latest\nimage with a REL_2_STABLE checkout: the build script fails at check-rpaths\nwithout QA_RPATHS and produces apache-cloudberry-db-99.0.0-1.el10.x86_64.rpm\nwith it, check-rpaths still running but reporting no errors. The same probe\non the Rocky 9 image shows check-rpaths is never invoked there.\n\n* CI: stop naming ssh-dss in the sshd config on Rocky 10\n\nOpenSSH 9.8 removed DSA support entirely and RHEL/Rocky 10 ships 9.9, so\nthe key types the automation sshd config asks for no longer parse there:\n\n  /etc/ssh/sshd_config.d/pxf-automation.conf line 2: Bad key types\n  \u0027+ssh-rsa,ssh-dss\u0027.\n\nsshd rejects the whole file and exits, which took down every Rocky 10 job\nin both lanes -- the 16 pxf-test-rocky10 jobs failed in \"Start Services\",\nand the 6 rocky10 testcontainer jobs failed with \"entrypoint.sh failed\n(exit 1)\" out of PXFCloudberryContainer, since both entrypoints write the\nsame file.\n\nAsk for ssh-dss only when the local sshd still knows it, so Ubuntu and\nRocky 9 keep the exact configuration they have today while Rocky 10 gets\nssh-rsa alone. ssh-keygen -A does not generate DSA host keys on either\nrelease, so nothing is lost. The KEX line is unchanged: Rocky 10 still\noffers the group1-sha1 / group-exchange-sha1 / group14-sha1 algorithms\nthe Ganymed SSH-2 client needs.\n\nAlso validate the configuration with sshd -t before starting and echo the\nlog on failure. This failure produced nothing but \"Failed to start sshd,\ncheck /tmp/sshd.log\" in CI, with the log never printed and the parse error\nnever captured.\n\nVerified on apache/incubator-cloudberry:cbdb-build-rocky10-latest: sshd -t\nrejects \u0027+ssh-rsa,ssh-dss\u0027 and accepts \u0027+ssh-rsa\u0027, and a full run of the\nshared entrypoint against that image now reports \"sshd key types: ssh-rsa\"\nfollowed by \"sshd is running on port 22\", then installs Cloudberry and\nbrings up the demo cluster. The same probe on the Rocky 9 image shows\nssh-dss is still supported and the config is unchanged there.\n\n* CI: make the automation sshd drop-in win over the crypto policy\n\nThe automation framework talks SSH through Ganymed SSH-2 (ch.ethz.ssh2),\nwhich only knows the ssh-rsa / ssh-dss host key algorithms. On Rocky 10\nevery Hadoop-dependent test group failed to reach the cluster:\n\n  java.io.IOException: There was a problem while connecting to localhost:22\n      at ch.ethz.ssh2.Connection.connect(Connection.java:805)\n      at ...cluster.SingleCluster.init(SingleCluster.java:37)\n\nsshd was running and the KEX algorithms negotiated fine; the handshake\ndied on the host key:\n\n  debug1: kex: algorithm: diffie-hellman-group14-sha1\n  debug1: kex: host key algorithm: (no match)\n  Unable to negotiate: no matching host key type found.\n    Their offer: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519\n\nssh-rsa was missing from the offer even though pxf-automation.conf asks\nfor it, because sshd keeps the FIRST value it obtains for a keyword and\nthe drop-ins are read in name order:\n\n  40-redhat-crypto-policies.conf   -\u003e Include .../opensshserver.config\n  50-redhat.conf\n  pxf-automation.conf              -\u003e HostKeyAlgorithms +ssh-rsa (ignored)\n\nSo the crypto policy always won and our directive never applied. Rocky 9\ndid not notice because its image has no 40-redhat-crypto-policies.conf and\nits LEGACY policy still carries ssh-rsa; Rocky 10 removed SHA-1 from every\npolicy, leaving nothing to enable it.\n\nWrite the file as 01-pxf-automation.conf so it is read before the crypto\npolicy include, and drop any file left under the old name.\n\nVerified on both build images by replaying setup_ssh and connecting with\nexactly the algorithm set Ganymed offers: ssh-rsa appears in sshd -T on\nboth, and the connection succeeds on Rocky 9 (ssh-rsa,ssh-dss) as well as\nRocky 10 (ssh-rsa). Confirmed in the live rocky10 container that the\nrename turns the failing handshake into a successful gpadmin login."
    },
    {
      "commit": "3b5dead7146b8fea280c5e596c8bf52e9efeaaa9",
      "tree": "5c9c856fc79db455905e1218516bb6da89b6e28b",
      "parents": [
        "c1cb16745078e40284684226ed1d7393c690f26d"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Sat Aug 29 16:17:58 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 16:17:58 2026 +0500"
      },
      "message": "Observability: pxf_stat_activity and pxf_cancel_backend (#124)\n\n### Add `pxf_stat_activity`\n\nAdd `pxf_stat_activity` to help DBAs find out what happening inside PXF server.\n\n```\npostgres\u003d# select * from pxf_stat_activity ;\n-[ RECORD 1 ]-+---------------------------------------------------------\nsegment_id    | 1\nsession_id    | 57997\ncommand_count | 8\nxid           | 57997-0000000008\noperation     | READ_BRIDGE\nusename       | gpadmin\nserver        | ostinru-test\nprofile       | s3:parquet\nschema_name   | public\ntable_name    | test_blob_read\ndata_source   | ostinru-test/topics/cuscom.email.created.v1/2026-05-29/*\nquery_start   | 2026-06-23 16:16:48.318+03\npxf_host      | example.com\n```\n\n### Add `pxf_cancel_backend` and `pxf_interrupt_backend`\n\nAdd `pxf_cancel_backend` and `pxf_interrupt_backend` to allow killing running queries.\n\n### Update tests\n\n1. Update pxfExtension tests - use testconatiners.\n2. Explicitly define extension version. So, there is no need in sql file manipulations."
    },
    {
      "commit": "c1cb16745078e40284684226ed1d7393c690f26d",
      "tree": "729df894d09aa895e16a3f8490555eff6a81f57c",
      "parents": [
        "f200e80283ee2afdaa451f1289f9089df80a07bd"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Wed Aug 05 05:41:29 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 05 08:41:29 2026 +0800"
      },
      "message": "Reduce amount of logs we produce in CI (#140)\n\n* CI: introduce maximum length for test report messages\n* truncate in table reporting"
    },
    {
      "commit": "f200e80283ee2afdaa451f1289f9089df80a07bd",
      "tree": "08cf55bd6b662e4abe9a136e67a5a450c286d594",
      "parents": [
        "de645f3e8145f9a5a2ccc513e76797b57e223d5f"
      ],
      "author": {
        "name": "Nikolay Antonov",
        "email": "ostinru@apache.org",
        "time": "Fri Jul 31 12:48:59 2026 +0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 12:48:59 2026 +0500"
      },
      "message": "Reduce amount of tests we run in CI (#139)\n\nIn #136 it is planned to add 20+ Github Action Steps. And we agreed (#113) that we should keep number of tests we run under control. This PR reduces amount of test steps we run:\n1. Remove `sanity` tests group (few tests here)\n2. Remove `jdbc` test group (no tests in the group)\n3. Run \u0027features\u0027 and \u0027gpdb\u0027 tests together - test groups shares 80% of the tests:\n   | Group | Tests count |\n   |--------|--------|\n   | `features` total | 329 |\n   | `gpdb` total | 321 |\n   | `features` \u0026 `gpdb` | 264 |\n   | `features` only | 65 | \n   | `gpdb` only | 57 |"
    },
    {
      "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"
    }
  ],
  "next": "b2209859f96819024ce69f22ff753bdc2116a634"
}
