)]}'
{
  "log": [
    {
      "commit": "f435772b22ed1be2f9c6ae84d954e4bfd29e7c4c",
      "tree": "50153501d7f5a109a4472c504fc792ab26861598",
      "parents": [
        "1c7047bd387aa221c05a43413cc98bb2a91c83af"
      ],
      "author": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Thu Jul 23 13:40:30 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jul 24 06:17:54 2026 +0000"
      },
      "message": "IMPALA-15211: Fix file count for iceberg_lineitem_sixblocks in test_web_pages.py\n\nIMPALA-15197 introduced shuffling by file path for unpartitioned\nIceberg V2 tables as well, it caused iceberg_lineitem_sixblocks to\ncontain only 2 files (1 data, 1 delete), and it broke test_web_pages.py.\n\nThis patch fixes the assertion on the number of files.\n\nChange-Id: I1c09c6a127d1324272dd18f500756d44a7ee6a25\nReviewed-on: http://gerrit.cloudera.org:8080/24628\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "1c7047bd387aa221c05a43413cc98bb2a91c83af",
      "tree": "3cd2459074a77abed39cc53ddfab4fdf20d20c38",
      "parents": [
        "df496831fdc845eb87cbffc25b806a2570ee40f7"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Wed Jul 22 17:59:59 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Thu Jul 23 22:09:13 2026 +0000"
      },
      "message": "IMPALA-15206: Skip coverage directory for test_no_unsupported_operations\n\nOn code coverage builds, the frontend test coverage output includes\nJava code. Some Java files reference CannotAccessFieldException, so\nthat trips up TestBannedLogMessages::test_no_unsupported_operations().\nThis changes test_no_unsupported_operations() to exclude the coverage\ndirectory.\n\nTesting:\n - Ran CatalogdMetaProviderTest with code coverage, then ran\n   test_banned_log_messages.py. This failed consistently before\n   this change and now passes.\n\nChange-Id: I91ab869e3b1bf1e84a91bbdfd62d9b6d95b5db96\nReviewed-on: http://gerrit.cloudera.org:8080/24624\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "df496831fdc845eb87cbffc25b806a2570ee40f7",
      "tree": "fcfbadfec9d2838272d179c2f8ff4708eb8a0c43",
      "parents": [
        "f325f7406410a2356568a5f20752e56797989e64"
      ],
      "author": {
        "name": "Gowthami Bisati",
        "email": "gbisatis24@gmail.com",
        "time": "Sun Jul 05 08:41:30 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 23 16:35:29 2026 +0000"
      },
      "message": "IMPALA-5924: Formatting TBLPROPERTIES in SHOW CREATE TABLE\n\nWhen we run SHOW CREATE TABLE via Impala-shell output displays the\nTBLPROPERTIES in a single line which makes it difficult to read\nthrough all the properties.\n\nChange:\nModified ToSqlUtils.java to wrap reconstructed TBLPROPERTIES into a\nclean multi-line, indented layout instead of outputting them as a\nsingle dense line.\n\nModified ToSqlTest.java to update the expected string assertions to\nmatch the new multi-line format.\n\nModified test_kudu.py and LocalCatalogTest.java to match the expected DDL output.\n\nExample:\nBefore this change, TBLPROPERTIES were formatted on a single line in\nSHOW CREATE TABLE output:\n  TBLPROPERTIES (\u0027OBJCAPABILITIES\u0027\u003d\u0027HIVEMANAGEDINSERTREAD...\u0027, ...)\n\nAfter this change, they are cleanly wrapped:\n  TBLPROPERTIES (\n    \u0027OBJCAPABILITIES\u0027\u003d\u0027EXTREAD,EXTWRITE\u0027,\n    \u0027TRANSLATED_TO_EXTERNAL\u0027\u003d\u0027TRUE\u0027,\n    \u0027external.table.purge\u0027\u003d\u0027TRUE\u0027\n  )\n\nThis improves the readability of generated DDL statements when\nexecuting SHOW CREATE TABLE or viewing view definitions via\nimpala-shell.\n\nTesting Performed:\n- Updated expected string outputs in ToSqlTest.java to account for the\n  new whitespace layouts.\n- Verified frontend changes compile cleanly using checkstyle.\n- Ran mvn clean package -DskipTests (BUILD SUCCESS).\n- Ran focus testing suite: mvn test -Dtest\u003dToSqlTest\n  (BUILD SUCCESS).\n- Ran idempotency integrity validation suite:\n  mvn test -Dtest\u003dToSqlUtilsTest (BUILD SUCCESS).\n- python3 bin/jenkins/critique-gerrit-review.py --dryrun\n- tests/run-tests.py query_test/test_kudu.py\n- mvn -Dtest\u003dLocalCatalogTest#testHbaseTable test\n- This change will list the TBLPROPERTIES for Hbase tables as well.\n- bin/impala-py.test --exploration_strategy\u003dexhaustive\\\n  tests/custom_cluster/test_workload_mgmt_init.py\n\nChange-Id: Ic198d0a42cf3636fe612460c12d8c8000a313ef1\nSigned-off-by: Gowthami Bisati \u003cgbisatis24@gmail.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24554\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "f325f7406410a2356568a5f20752e56797989e64",
      "tree": "aa6042b3b169d9d4f947e3eddcbd9c1425651ddc",
      "parents": [
        "4a0caf3eeff9aaf9dfd5ed0671d8f336f8a9439f"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Wed Jul 22 21:26:10 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Thu Jul 23 16:06:44 2026 +0000"
      },
      "message": "IMPALA-15045: Deflake TestHS2.test_long_polling_full_sleep\n\nTestHS2.test_long_polling_full_sleep has a check of the\ntiming of a single call to GetOperationStatus. On some\nslow build types (particularly UBSAN on ARM), the call is\ntaking longer than the expected 100ms. The highest time seen\nin the failing tests is a little above 200ms. To avoid this\nflakiness, this increases the threshold to 250ms for slow\nbuild types. This is still well short of the runtime of\nthe query.\n\nTesting:\n - Ran locally\n\nChange-Id: I2c24ca5e3caad74136ed7c6d0ad16c24ea627966\nReviewed-on: http://gerrit.cloudera.org:8080/24627\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Arnab Karmakar \u003carnabk1108@gmail.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\n"
    },
    {
      "commit": "4a0caf3eeff9aaf9dfd5ed0671d8f336f8a9439f",
      "tree": "fa78c6e3dc8e113985de5f56f43271247fd60db1",
      "parents": [
        "7b1e0fe07b58961a095d39bee7b6b36ca73716e9"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Wed Jul 22 19:47:51 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Thu Jul 23 16:02:02 2026 +0000"
      },
      "message": "IMPALA-15208: Bump wait time for TestAsyncDDL.test_get_operation_status_for_async_ddl\n\nAfter the fix for IMPALA-13690, there has been occasional\nflakiness where TestAsyncDDL.test_get_operation_status_for_async_ddl\nis timing out waiting for the query to transition from RUNNING\nto FINISHED. It currently waits 5 seconds, which is 2 seconds\nfor the sleep in the query plus another 3 seconds as a buffer.\nThese failures tend to happen on slower build types like\nASAN and code coverage. The actual execution time of the query\nis not really what we are testing, so this bumps the wait time\nto 12 seconds (2 for the sleep plus 10 seconds as a buffer).\n\nTesting:\n - Ran TestAsyncDDL.test_get_operation_status_for_async_ddl\n   locally\n\nChange-Id: I547b8c0ccce79ebedb2b9a61e4d09e18b4acbbf8\nReviewed-on: http://gerrit.cloudera.org:8080/24625\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Arnab Karmakar \u003carnabk1108@gmail.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\n"
    },
    {
      "commit": "7b1e0fe07b58961a095d39bee7b6b36ca73716e9",
      "tree": "751beb25a3c2022a35969ee9402738ff59e25a5f",
      "parents": [
        "60a0e9a03e382c63d8be479c83bf46a74920e284"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Wed Jul 22 16:33:31 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Thu Jul 23 16:00:48 2026 +0000"
      },
      "message": "IMPALA-15207: Fix MetaProviderDecoratorTest for code coverage builds\n\nMetaProviderDecoratorTest.testMetaProviderMethodCount tests\nthat MetaProvider has a specific number of public methods.\nJacoco code coverage adds its own \u0027$jacocoInit\u0027 method, and\nthis throws the count off. This filters out Jacoco\u0027s method\nto avoid the discrepancy.\n\nTesting:\n - Ran MetaProviderDecoratorTest.testMetaProviderMethodCount\n   with code coverage\n\nChange-Id: I74576817db5f4f7550cce3740061cd6cde1afea1\nReviewed-on: http://gerrit.cloudera.org:8080/24623\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\n"
    },
    {
      "commit": "60a0e9a03e382c63d8be479c83bf46a74920e284",
      "tree": "bf36439f234bdfc9a30737a0036519b218d5ec9a",
      "parents": [
        "7180a1c51ecd5ae999accd5fbaafdd75d8ec4adb"
      ],
      "author": {
        "name": "Daniel Vanko",
        "email": "dvanko@cloudera.com",
        "time": "Fri Jul 17 10:19:44 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 23 14:06:11 2026 +0000"
      },
      "message": "IMPALA-5961: Read generated TPC-DS test data as ISO-8859-1\n\nThe TPC-DS data generator (dsdgen) emits some string columns in\nISO-8859-1 (Latin-1) rather than UTF-8. For example,\ncustomer.c_birth_country holds country names whose accented letters\nare single Latin-1 bytes (e.g. 0xD4 for O-circumflex in \"COTE\nD\u0027IVOIRE\") that are not valid UTF-8, which will cause data-load failure\nif PARQUET_ANNOTATE_STRINGS_UTF8 is turned on (IMPALA-12675).\n\nTag the TPC-DS text tables with the serde property\n\u0027serialization.encoding\u0027\u003d\u0027ISO-8859-1\u0027 so Impala decodes the raw data\nfiles to UTF-8 on read -- including when the derived Parquet (and\nother format) tables are populated from the text tables via\nINSERT ... SELECT. The raw dsdgen output is kept as-is on disk, and\nthis exercises the serialization.encoding feature (IMPALA-10319) in\nthe standard data load.\n\nThe property is applied via ALTER TABLE ... SET SERDEPROPERTIES in the\nLOAD section rather than at CREATE: Impala\u0027s CREATE does not accept a\ncustom SERDE, and \u0027serialization.encoding\u0027 is honored only from serde\nproperties (not TBLPROPERTIES). The LOAD section is the text-only load\nphase, so the ALTER runs before the derived tables read the data.\n\nChange-Id: Ic72dd4ad641083c22e8759160251b620e9da605c\nAssisted-by: Claude Opus 4.8 (Claude Code)\nReviewed-on: http://gerrit.cloudera.org:8080/24585\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "7180a1c51ecd5ae999accd5fbaafdd75d8ec4adb",
      "tree": "dae9caa8a8f77b08ffce44a5d3612425a6791f56",
      "parents": [
        "59556c90257b598e2bf7a1adee421de07565c0ad"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Fri Jul 17 09:19:06 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 23 12:15:46 2026 +0000"
      },
      "message": "IMPALA-15149: Add type-aware Trino result verification\n\nCollect output metadata through PREPARE and DESCRIBE OUTPUT using the\nexisting Trino CLI. Normalize Trino types to the query test vocabulary,\nverify optional TYPES sections, and use actual types for value comparisons\neven when TYPES is absent.\n\nAdd focused coverage for metadata parsing, normalization, empty results,\ntype mismatches, update mode, floating-point comparison, and non-finite\nFLOAT/DOUBLE values. Document the new authoring contract and exercise it in\nan interop test.\n\nAssisted-by: gpt-5.6-sol (OpenAI Codex)\nChange-Id: I9effef8938a02567a4a9adc7d4fa78917a2f6d8c\nReviewed-on: http://gerrit.cloudera.org:8080/24595\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "59556c90257b598e2bf7a1adee421de07565c0ad",
      "tree": "d81b35eb7c6fb1683e634a57712a45f174faf340",
      "parents": [
        "c4fe178bac387c82dda0e79e48dced999d8a7fdf"
      ],
      "author": {
        "name": "Anubhav Jindal",
        "email": "anubhav301294@gmail.com",
        "time": "Wed Jul 22 14:18:24 2026 -0700"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Wed Jul 22 22:02:02 2026 +0000"
      },
      "message": "IMPALA-15204: Upgrade operator Kopf for Python 3.14\n\nUpgrade the operator\u0027s Kopf dependency to a Python 3.14-compatible\nrelease so runtime reconcile logging does not fail with NoneType lock\nerrors.\n\nTesting:\n- python3 -m py_compile operator/impala-operator/main.py\n- docker run --rm -v /Users/anubhav/Desktop/impala-upstream-clean:/repo \\\n  -w /repo/operator/impala-operator python:3.14.6-slim sh -lc \\\n  \u0027python -m pip install --no-cache-dir -r requirements.txt \u0026\u0026 \\\n   python -c \"from kopf._core.engines.posting import K8sPoster; \\\n   h\u003dK8sPoster(); print(h.lock is None)\"\u0027 (prints False)\n\nChange-Id: I68bd973ff7a6ddb1f70fb819537c47025d80efc7\nAssisted-by: GPT-5.3 (Cursor)\nReviewed-on: http://gerrit.cloudera.org:8080/24621\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "c4fe178bac387c82dda0e79e48dced999d8a7fdf",
      "tree": "914b3573a82f7f8d20f18f96f2ff149275cbd440",
      "parents": [
        "848ef4735f49e9707456ffd0f0f2079f2e83414c"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Tue Jun 30 15:03:25 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 22 13:04:17 2026 +0000"
      },
      "message": "IMPALA-15054: Set EXPAND_COMPLEX_TYPES to true by default\n\nFlips the default of the EXPAND_COMPLEX_TYPES query option from false to\ntrue so that \u0027*\u0027 expressions include complex-typed (ARRAY/MAP/STRUCT)\ncolumns by default.\n\n- common/thrift/Query.thrift: change the default to true.\n- Docs: update the EXPAND_COMPLEX_TYPES default and rationale, rework\n  the complex-types SELECT * example, add an Impala 5.0.x\n  incompatible-changes entry, and clarify the Iceberg metadata-tables\n  note.\n- SelectStmt.java: refresh stale comments (the empty-select-list\n  invariant in analyzeStarItem still holds under the new default).\n\nTest handling for the behaviour change. Where a query specifically uses\nthe collection-join/unnest syntax, expands a struct via \u0027.*\u0027, or is a\ndedicated/paired complex-type test, EXPAND_COMPLEX_TYPES is pinned to\nfalse so the query keeps its previous meaning; incidental top-level\n\u0027SELECT *\u0027 tests adopt the new default and their expected results are\nregenerated.\n\nChange-Id: I6cf01f0b6bb3b5fa2aa770c77bc772abf9cc84b2\nAssisted-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24543\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "848ef4735f49e9707456ffd0f0f2079f2e83414c",
      "tree": "36aeb56f96dbc554f1f1c423cd122d9c159d668c",
      "parents": [
        "407be0e24e0ac1422f762f790de378e15b01cc7a"
      ],
      "author": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Fri Jul 10 14:53:56 2026 +0200"
      },
      "committer": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Wed Jul 22 11:48:53 2026 +0000"
      },
      "message": "IMPALA-2210: Make Parquet the default file format\n\nChange the default value of the DEFAULT_FILE_FORMAT query option from\nTEXT to PARQUET. This affects all CREATE TABLE statements that do not\nspecify an explicit STORED AS clause, including plain CREATE TABLE,\nCREATE TABLE AS SELECT, CREATE TABLE LIKE PARQUET, and CREATE TABLE\nwith CLUSTERED BY.\n\nChange-Id: I46a5d16dfd780aae41623ebfc9742dfbd2a596ea\nAssisted-by: Claude Sonnet 4.5 (OpenCode)\nReviewed-on: http://gerrit.cloudera.org:8080/24569\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Zoltan Borok-Nagy \u003cboroknagyz@cloudera.com\u003e\n"
    },
    {
      "commit": "407be0e24e0ac1422f762f790de378e15b01cc7a",
      "tree": "043599e2e2106ce8e6b4b434da819c103ae966f9",
      "parents": [
        "01ca03c317ebf0371c54d2f2cc5194ef0b7fdbfc"
      ],
      "author": {
        "name": "m-sanjana19",
        "email": "malhotrasanjana1993@gmail.com",
        "time": "Mon Jun 22 22:30:32 2026 +0530"
      },
      "committer": {
        "name": "Noemi Pap-Takacs",
        "email": "npaptakacs@cloudera.com",
        "time": "Wed Jul 22 11:40:12 2026 +0000"
      },
      "message": "IMPALA-14156: [DOCS] Documentation for query options\n\nAdds documentation for the following query options, following the\nexisting descriptions in ImpalaService.thrift:\n- COMPUTE_PROCESSING_COST\n- PROCESSING_COST_MIN_THREADS\n- MAX_FRAGMENT_INSTANCES_PER_NODE\n\nChange-Id: I435c5eb65d049558eb6ec3fea1bc1572cba0669d\nReviewed-on: http://gerrit.cloudera.org:8080/24492\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Peter Rozsa \u003cprozsa@cloudera.com\u003e\nReviewed-by: Noemi Pap-Takacs \u003cnpaptakacs@cloudera.com\u003e\n"
    },
    {
      "commit": "01ca03c317ebf0371c54d2f2cc5194ef0b7fdbfc",
      "tree": "3c943c06882dc5d9fd7667bc58349f48d2d8e144",
      "parents": [
        "d4b0c117e6b18b88d071ae5164bc5d39c92925d8"
      ],
      "author": {
        "name": "Anubhav Jindal",
        "email": "anubhavjindal30@gmail.com",
        "time": "Tue May 26 14:45:51 2026 -0700"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Tue Jul 21 23:00:48 2026 +0000"
      },
      "message": "IMPALA-14982: Add Impala-on-K8s deployment guide\n\nAdd a generic deployment guide for running Impala on Kubernetes with\nboth Helm and operator workflows, including optional component toggles.\n\nDocument LDAP bind-pattern escaping for Helm/operator flows, add explicit\nnamespace creation in the operator workflow, include shared warehouse RWX\nstorage guidance and fallback override instructions, and include\ntroubleshooting steps for HMS permissions and metastore event polling\ncompatibility.\n\nAdd an ASF license header for the new markdown guide.\n\nTesting:\n- N/A (documentation-only change)\n\nChange-Id: I0a7d1a2f0254209143f05bd417c64410cc282985\nAssisted-by: GPT-5.3 (Cursor)\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24364\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "d4b0c117e6b18b88d071ae5164bc5d39c92925d8",
      "tree": "56153caf638b4164446aa1b0fe08166c4d69e173",
      "parents": [
        "779a8771b96ca5b8adee0123ad4bf89418a56f40"
      ],
      "author": {
        "name": "Anubhav Jindal",
        "email": "anubhavjindal30@gmail.com",
        "time": "Tue May 26 14:41:16 2026 -0700"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Tue Jul 21 22:56:49 2026 +0000"
      },
      "message": "IMPALA-14981: Add operator reconciler packaging\n\nAdd the operator reconciliation implementation and packaging assets needed\nto run chart-backed Impala and optional LDAP reconciliation.\n\nHandle LDAP disable transitions declaratively by uninstalling an existing\nLDAP release when ldapEnabled is set to false.\n\nAdd ASF license headers to the new operator source and packaging files.\n\nTesting:\n- python3 -m py_compile operator/impala-operator/main.py\n- kubectl config current-context (k3d-impala-live)\n- kubectl apply -f operator/impala-operator/manifests/crd-impalacluster.yaml\n- kubectl apply -f operator/impala-operator/manifests/rbac.yaml\n- kubectl create namespace impala-14981-live\n- /tmp/impala-op-venv/bin/python reconcile driver invoking _ensure_namespace, _ensure_ldap, and _ensure_impala in operator/impala-operator/main.py with spec.set persistence.accessModes[0]\u003dReadWriteOnce\n- kubectl rollout status deployment/impala-14981-live-impala-{statestored,catalogd,impalad,hms} -n impala-14981-live\n- helm -n impala-14981-live status impala-14981-live (STATUS: deployed)\n- kubectl get pods -n impala-14981-live (all core pods Running/Ready)\n- helm create /tmp/ldap-dummy-14981 \u0026\u0026 helm upgrade --install impala-ldap-14981-live /tmp/ldap-dummy-14981 -n impala-14981-live\n- /tmp/impala-op-venv/bin/python reconcile driver invoking _ensure_ldap with ldapEnabled\u003dfalse and ldapReleaseName\u003dimpala-ldap-14981-live\n- helm -n impala-14981-live status impala-ldap-14981-live (fails after operator path; release removed)\n\nChange-Id: I9b66e32b00724221ead2f4975802a26b2be7e248\nAssisted-by: GPT-5.3 (Cursor)\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24363\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "779a8771b96ca5b8adee0123ad4bf89418a56f40",
      "tree": "fec4b0cf02a608b130e7c3ed5422b8ecb648fe6c",
      "parents": [
        "450aad373856167c18136adce92749550a979a71"
      ],
      "author": {
        "name": "Arnab Karmakar",
        "email": "arnabk1108@gmail.com",
        "time": "Fri Jun 05 03:15:11 2026 -0700"
      },
      "committer": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Tue Jul 21 08:04:38 2026 +0000"
      },
      "message": "IMPALA-14783: Add time travel support for SHOW FILES on Iceberg tables\n\nExtends SHOW FILES to accept FOR SYSTEM_TIME AS OF and FOR SYSTEM_VERSION\nAS OF clauses for Iceberg tables.\nReuses the existing opt_asof grammar rule shared with SELECT time-travel.\n\nSyntax:\nSHOW FILES IN \u003ctable\u003e\n    [FOR SYSTEM_VERSION AS OF \u003cinteger_literal\u003e |\n     FOR SYSTEM_TIME AS OF \u003ctimestamp_expr\u003e]\n    [PARTITION (\u003cfilter\u003e)]\n\nThe time-travel clause is placed before the optional PARTITION clause.\nBoth can be combined to filter filesby snapshot and partition\nsimultaneously.\n\nTesting:\n- ParserTest: positive cases for new syntax and negative cases with\n  invalid snapshot IDs.\n- AnalyzeDDLTest: analysis-level validation with snapshot IDs,\n  timestamps and partition filters. Negative cases with non-Iceberg tables.\n- E2E tests with dynamic snapshot IDs and timestamps;\n  covers version-based, timestamp-based, now(), partition filter combos,\n  SELECT consistency checks, and negative cases\n\nChange-Id: I09215c4527cdc585af5340d5bb573d9da877a0c9\nReviewed-on: http://gerrit.cloudera.org:8080/24405\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Peter Rozsa \u003cprozsa@cloudera.com\u003e\n"
    },
    {
      "commit": "450aad373856167c18136adce92749550a979a71",
      "tree": "435f93fc3207b296a5d05f224e8bc4799f911f39",
      "parents": [
        "b38852802b493b69159b1c0230e992f3e7237b28"
      ],
      "author": {
        "name": "Yida Wu",
        "email": "yida.wu@cloudera.com",
        "time": "Fri Jun 26 22:36:58 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jul 21 05:59:19 2026 +0000"
      },
      "message": "IMPALA-15121: Fix query failure when catalogd is in standby mode during HA failover\n\nDuring a catalogd HA failover, an impalad coordinator might try\nto fetch metadata from a catalogd that was previously in active\nmode but has just restarted and in standby mode now. In this\ncase, the metadata request is rejected with a standby mode\nerror, causing the query to fail.\n\nThis change recognizes the standby mode rejection error and\nconverts it into an InconsistentMetadataFetchException, allowing\nthe existing Frontend retry mechanism to retry the metadata\nfetch. As a result, the query retries against the new active\ncatalogd at the end instead of failing.\n\nAdded thrift error code CATALOG_IN_STANDBY_MODE for rejection\non standby mode.\n\nTests:\nAdded a new ee test test_standby_retry_during_failover.\nPassed core tests.\n\nChange-Id: Ia511e22a596733e6a2dd752894d6da43e91faca6\nReviewed-on: http://gerrit.cloudera.org:8080/24600\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "b38852802b493b69159b1c0230e992f3e7237b28",
      "tree": "cd7a096d0915f941e6b2a695cbab2c61480a57d5",
      "parents": [
        "60b03fd36fc19acf8ca5bce029285ab7aaac2af8"
      ],
      "author": {
        "name": "Fang-Yu Rao",
        "email": "fangyu.rao@cloudera.com",
        "time": "Wed May 20 18:52:19 2026 -0700"
      },
      "committer": {
        "name": "Fang-Yu Rao",
        "email": "fangyu.rao@cloudera.com",
        "time": "Tue Jul 21 00:28:11 2026 +0000"
      },
      "message": "IMPALA-14954: Support ADMIN OPTION clause for GRANT/REVOKE ROLE\n\nThis patch adds the support of WITH ADMIN OPTION clause for the GRANT\nROLE statement, and the support of ADMIN OPTION FOR clause for the\nREVOKE ROLE statement. Specifically, to allow a principal\n\u003cprincipal_name\u003e to grant/revoke a role \u003crole_name\u003e to/from another\nprincipal, an administrator could execute the following, where\n\u003cprincipal_type\u003e could be GROUP or USER.\n\n GRANT ROLE \u003crole_name\u003e TO \u003cprincipal_type\u003e \u003cprincipal_name\u003e WITH\n ADMIN OPTION\n\nSimilarly, to revoke the ADMIN OPTION of the role \u003crole_name\u003e from the\nprincipal \u003cprincipal_name\u003e without revoking the role \u003crole_name\u003e, an\nadministrator could execute the following. The syntax is the same as\nwhat Apache Hive supports as in HIVE-6252.\n\n REVOKE ADMIN OPTION FOR \u003crole_name\u003e FROM \u003cprincipal_type\u003e\n \u003cprincipal_name\u003e\n\nThis patch also adds the column of \u0027grant_option\u0027 to the result\nof the SHOW ROLE GRANT GROUP/USER statements. Note that we do not add\nthe columns of \u0027grant_time\u0027 and \u0027grantor\u0027 because of the issue reported\nin RANGER-5612.\n\nTesting:\n - Added and revised some end-to-end tests to verify the functionality\n   of the added clauses.\n - Revised ToSqlTest#testGrantRevokeRoleStmt() to include the newly\n   supported clauses.\n\nGenerated-by: The changes to sql-parser.cup were by Cursor AI\n(gemini-3.1-pro).\n\nChange-Id: I8e7c9ba091bc15271c7a3ef34ca06a38630d5bb6\nReviewed-on: http://gerrit.cloudera.org:8080/24337\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Fang-Yu Rao \u003cfangyu.rao@cloudera.com\u003e\n"
    },
    {
      "commit": "60b03fd36fc19acf8ca5bce029285ab7aaac2af8",
      "tree": "979953d8c84346c5a0e92441daea1bd1121d7983",
      "parents": [
        "bd13998f7da0b86403c033235c7c1ae9ce55c11b"
      ],
      "author": {
        "name": "Jiyoung Yoo",
        "email": "jiyoung@cloudera.com",
        "time": "Wed Jul 15 11:06:47 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jul 20 23:12:45 2026 +0000"
      },
      "message": "IMPALA-15117: Optimize getFirstLevelAcidDirPath\n\nIn the original implementation of AcidUtils.getFirstLevelAcidDirPath(),\nthe FileSystem.isDirectory() API was called recursively for each path\ncomponent. This introduced unnecessary RPC overhead during table loading.\n\nThis change refactors the logic to leverage Path string operations by\ntraversing upwards from the file\u0027s parent directory to detect the ACID\ndirectory structure.\n\n1. Eliminated FileSystem.isDirectory() RPCs:\n   Since the input filePath is guaranteed to be a valid data file\n   during metadata load, we can assume that all of its parent paths\n   are directories\n\n2. Preserved backward compatibility:\n   The original recursive behavior handled nested subdirectories\n   inside ACID folders. To maintain the same behavior, this change\n   preserves the exact same path-merging logic (e.g., returning\n   \"delta_000001_000001_0000/sub_dir\" for a file path like\n   \"partition_dir/delta_000001_000001_0000/sub_dir/filename\")\n\nTesting:\n- Passed core tests.\n- Added AcidUtilsTest.testGetFirstLevelAcidDirPath.\n\nChange-Id: I390183039181bb62d6818c8e869738ddf01c2f6b\nReviewed-on: http://gerrit.cloudera.org:8080/24588\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "bd13998f7da0b86403c033235c7c1ae9ce55c11b",
      "tree": "392a85e659da31734b68144adaff9d232031cc90",
      "parents": [
        "6cfd91924119a726d6f70a04477bd8dea125a080"
      ],
      "author": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Mon Jul 20 11:02:17 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jul 20 22:19:43 2026 +0000"
      },
      "message": "IMPALA-15197: Shuffle Iceberg position deletes by file path for V2 tables\n\nAn UPDATE/DELETE with a join on an unpartitioned Iceberg V2 table could\nsilently produce a duplicate row instead of failing with \"Duplicated row in\nDELETE sink.\" when the join matched a target row more than once.\n\nIcebergBufferedDeleteSink detects duplicate position deletes per fragment\ninstance, but unpartitioned V2 tables did not shuffle by data file path, so\nduplicate deletes for the same file could land on different instances and go\nundetected. This shuffles by INPUT__FILE__NAME for all unpartitioned Iceberg\ntables.\n\nTesting:\n - Updated iceberg-v2-delete and iceberg-v2-update planner tests.\n\nChange-Id: I2391cae4aa73eace9b902b31af55f3c461c20057\nAssisted-by: Claude Opus 4.8 (OpenCode)\nReviewed-on: http://gerrit.cloudera.org:8080/24610\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "6cfd91924119a726d6f70a04477bd8dea125a080",
      "tree": "8184628640678297b36e150033800eba4733defd",
      "parents": [
        "834a77f4cf3612f2a98f3b749d005c8e0623ca8b"
      ],
      "author": {
        "name": "Daniel Vanko",
        "email": "dvanko@cloudera.com",
        "time": "Wed Feb 04 16:59:16 2026 +0100"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jul 20 12:19:36 2026 +0000"
      },
      "message": "IMPALA-13810: Generate lineage records for UPDATE and MERGE statements\n\nThis patch enables lineage generation for UPDATE statements on Iceberg\nand Kudu tables. Lineage will not include virtual columns in case of\nIceberg tables, or the auto incrementing id column in case of Kudu\ntables.\n\nIt also enables lineage generation for MERGE statements which are\ncurrently only valid on Iceberg tables. DELETE-only MERGE statements\ndo not produce lineage, similar to DELETE statements.\n\nAdded a new check to the test framework, to be able to validate queries\nthat shouldn\u0027t produce lineage. An empty (whitespace-only) LINEAGE\nsection will fail the test if the query produces lineage.\n\nTesting:\n * added new e2e tests\n\nChange-Id: Icba79f756509438455bfbf3067733f6f29284220\nAssisted-by: Claude Opus 4.7 (Claude Code)\nReviewed-on: http://gerrit.cloudera.org:8080/24137\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "834a77f4cf3612f2a98f3b749d005c8e0623ca8b",
      "tree": "f4545c487acd9805bf2b3aed8409c780f5a6ab19",
      "parents": [
        "cd653ccaaca65815cf5a43ec38e4230113ab306d"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Fri Jun 19 13:07:10 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jul 17 23:37:13 2026 +0000"
      },
      "message": "IMPALA-15088: Add ReadOnlyIntGauge\n\nAdd ReadOnlyIntGauge as the common read-only interface for integer\ngauge metrics.\n\nSumGauge, NegatedGauge, MemTracker consumption metrics, and malloc\nmemory metric accessors now use the read-only interface. This lets both\nIntGauge and FunctionGauge satisfy code that only needs GetValue().\n\nReplace the derived tcmalloc total-bytes-reserved and overhead metric\nclasses with FunctionGauge instances.\n\nTesting:\n- git diff --check asf-gerrit/master..HEAD\n- python3 bin/jenkins/critique-gerrit-review.py --dryrun\n- focused Linux build: MallocUtilGoogleTcmalloc\n- focused Linux build: unified-be-test-executable\n- focused Linux test: MetricsTest.* (46 tests)\n\nAssisted-by: OpenAI Codex\nChange-Id: Ida124aa3225ee07cf30e9f0a481477474a50c4dd\nReviewed-on: http://gerrit.cloudera.org:8080/24485\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "cd653ccaaca65815cf5a43ec38e4230113ab306d",
      "tree": "c4cbec7fdf8446529912fda35ad75bbb975b43fe",
      "parents": [
        "3dcd7c4936abc22d10368c6dca6b0bd973010027"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Thu Jul 09 16:16:15 2026 +0200"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Fri Jul 17 08:50:58 2026 +0000"
      },
      "message": "IMPALA-15158: Replace ColumnType.is_binary_ with an enum\n\nThis is preparation for adding new types that piggy-back\non STRING (GEOMETRY/GEOGRAPHY). The new types will be\navailable only in Parquet, so adding the actual types\nlater should not need to modify unrelated file formats.\n\nChange-Id: I667138dac8afdd117dea8ed90a85927352f73269\nReviewed-on: http://gerrit.cloudera.org:8080/24567\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    },
    {
      "commit": "3dcd7c4936abc22d10368c6dca6b0bd973010027",
      "tree": "2492d00d3d72ea8670510ac1268dd3391f7ccf2d",
      "parents": [
        "525362c780a87da6de0410d905f60f9f8fdc1faf"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Tue Jun 23 13:41:13 2026 -0700"
      },
      "committer": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Fri Jul 17 02:23:18 2026 +0000"
      },
      "message": "IMPALA-15135: Calcite planner: added support for Kudu tables\n\nThis commit enables the Calcite planner to support queries on\nKudu tables. Highlights include:\n\n- The Kudu tables can have an auto_incrementing_id column that\ndoes not show up when a \"select *\" is done on the query. Special\nlogic has been added to support this. If the user expliclity selects\nthe auto_incrementing_id column, the query will fall back to the\noriginal planner (IMPALA-15136 has been filed for this).\n\n- A small refactor was done for PrunedPartitionHelper to handle\nKudu tables because it does not support code in the HdfsPartitionPruner.\n\n- A small refactor was done in CalciteDb to handle FeKuduTable\n\n- IMPALA-15134 has been filed on an issue where the cardinality on\nthe KuduScan table is different from the original planner.\n\n- Added some code in the test framework to handle the section\nCALCITE_PLANNER_RUNTIME_PROFILE for when a table format is specified.\n\nChange-Id: Ie22a66f0edad195cade74a8447efc83a8ce526f7\nReviewed-on: http://gerrit.cloudera.org:8080/24528\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Steve Carlin \u003cscarlin@cloudera.com\u003e\n"
    },
    {
      "commit": "525362c780a87da6de0410d905f60f9f8fdc1faf",
      "tree": "b2474adbc6d55d9372625ee9761599c64e967b8e",
      "parents": [
        "b9ac487b7e3d9033420e83f1677cac1c21d676cc"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Mon Jul 13 23:10:17 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 16 20:43:54 2026 +0000"
      },
      "message": "IMPALA-15184: Switch tpcds json from bzip to zstd\n\nbzip is very slow, and it is enough to test it on\nsmaller data (already covered in functional text).\nSwitching to zstd, which did not have its own db.\n\nFrom dataload logs before change:\nLoading TPC-H data OK (Took: 5 min 39 sec)\nLoading TPC-DS data OK (Took: 22 min 33 sec)\nLoading functional-query data OK (Took: 30 min 43 sec)\n\nAfter change:\nLoading TPC-H data OK (Took: 5 min 22 sec)\nLoading TPC-DS data OK (Took: 13 min 49 sec)\nLoading functional-query data OK (Took: 27 min 30 sec)\n\nTotal dataload time is decreased from ~35m to ~30m.\n\nThe longest leg functional-query also decreased, likely\ndue to less contention on the max 2 parallel Hive queries\n(see IMPALA-15185 for details on Hive parallelism).\n\nChange-Id: Ia5e787619cc9f2b1cd30d40440aecd20fcef4117\nReviewed-on: http://gerrit.cloudera.org:8080/24586\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "b9ac487b7e3d9033420e83f1677cac1c21d676cc",
      "tree": "35e1ff740ada1f83a1221cc7b71fe91cd04076e7",
      "parents": [
        "ecc7381315bb7098fca0b6d8a0fa0af8093f4b3b"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Fri Jun 12 16:16:17 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 16 20:32:53 2026 +0000"
      },
      "message": "IMPALA-15096: Do not escape raw text profiles\n\nText profiles downloaded from the WebUI are served through raw_text.tmpl\nafter setting Webserver::ENABLE_RAW_HTML_KEY. The template still used\nescaped Mustache substitution, so profile text with characters such as\n\u0027\u003c\u0027, \u0027\u003e\u0027, and apostrophes was downloaded with HTML entities.\n\nRender contents unescaped only when __raw__ is present. This preserves\nescaped output for non-raw users of the template. Add tests for raw and\nnon-raw rendering.\n\nUpdate WebUI profile download tests, including LDAP coverage, to expect\nraw text from /query_profile_plain_text.\n\nTesting:\n- git diff --check asf-gerrit/master..HEAD\n- python3 -m py_compile tests/webserver/test_web_pages.py\n  tests/custom_cluster/test_web_pages.py\n- python3 bin/jenkins/critique-gerrit-review.py --dryrun\n- Verified html.unescape(rf_profile_web.txt) matches rf_profile.txt\n  using the IMPALA-15096 attachments\n- Ran be/build/latest/util/webserver-test with a gtest filter for\n  RawTextTemplateDoesNotEscapeRawContents and\n  RawTextTemplateEscapesNonRawContents\n\nAssisted-by: GPT-5 (Codex)\nChange-Id: I07965b7c550af6d136e4c343da84f77374e236ed\nReviewed-on: http://gerrit.cloudera.org:8080/24453\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "ecc7381315bb7098fca0b6d8a0fa0af8093f4b3b",
      "tree": "1a1a1f860bbf3cbcef77f26e28647eb5136f799e",
      "parents": [
        "6da4ba8a504ab725aa102cf5d424b1286be06243"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Wed Apr 01 20:17:00 2026 -0700"
      },
      "committer": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Thu Jul 16 18:15:41 2026 +0000"
      },
      "message": "IMPALA-14912: Calcite Planner: Fix date string parsing\n\nThis commit fixes parsing for the following date strings SQL\nselect DATE \u00271999-01-01\u0027;\nselect DATE \"1999-01-01\";\n\nThis essentially reverts an earlier fix, IMPALA-13525, which was\nway more complicated than it needed to be. The Impala StringLiteral\nalready handles escaped strings, so there is no need to remove the\nescapes within the Calcite parser.  The changes in Parser.jj reflect\nthe major part of the reversion, as well as removing the ParserUtil.java\nfile.\n\nA change also had to be made in the ImpalaRexExecutor where the constant\nfolding was done. This completes the UTF-8 constant folding commit for\nthe Calcite Planner (IMPALA-10349)\n\nOne more change was made with the unhex function. Unhex can return a\nnon-UTF8 string. Impala can handle this in a StringLiteral, but Calcite\ncannot. Because of this, the constant folding for unhex when the string\nis non-UTF8 is done at physical node creation time rather than during\nthe optimization phase.\n\nChange-Id: Ia08071193f86423a0e548c6b6690993afdad6272\nReviewed-on: http://gerrit.cloudera.org:8080/24218\nReviewed-by: Aman Sinha \u003camsinha@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "6da4ba8a504ab725aa102cf5d424b1286be06243",
      "tree": "a8bea2f4477d50a000c80f70228c1fc3a1445bac",
      "parents": [
        "371cad3e015e48a80b32de0104491b2fd4696e29"
      ],
      "author": {
        "name": "David Rorke",
        "email": "drorke@cloudera.com",
        "time": "Wed Jul 15 15:04:00 2026 -0700"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Thu Jul 16 12:49:06 2026 +0000"
      },
      "message": "IMPALA-15187: Reduce excessive Trino memory allocation\n\nThe impala-minicluster-trino image used for Trino interop tests is attempting to\nallocate 50GB for the JVM during startup leading to container startup failures.\n\nThe 50GB allocation (on a 64 GB host) is the result of the following settings in\n/etc/trino/jvm.config which will allocate 80% of host memory during startup:\n\n-XX:InitialRAMPercentage\u003d80\n-XX:MaxRAMPercentage\u003d80\n\nThe fix is to reduce these percentages to something more reasonable:\n\n-XX: InitialRAMPercentage\u003d10\n-XX: MaxRAMPercentage\u003d30\nChange-Id: I692e5363054b045018d3b4cecf24e6b6c4a4c269\nReviewed-on: http://gerrit.cloudera.org:8080/24589\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    },
    {
      "commit": "371cad3e015e48a80b32de0104491b2fd4696e29",
      "tree": "4418e9994c4dcfb75d590d8c7392e97beda7e0ff",
      "parents": [
        "d51c3c12fbfa1cbfe348b64f9e6006b3f45f9b56"
      ],
      "author": {
        "name": "Noemi Pap-Takacs",
        "email": "npaptakacs@cloudera.com",
        "time": "Fri Jul 10 17:04:54 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 15 19:04:24 2026 +0000"
      },
      "message": "IMPALA-13953: Remove deprecated flag use_local_tz_for_unix_timestamp_conversions\n\nIMPALA-10171 added USE_LOCAL_TZ_FOR_UNIX_TIMESTAMP_CONVERSIONS\nquery option to override backend flag with the same name.\nThis change moved the startup flag to the graveyard and updated\nthe documentation to use the query option instead.\n\nDeprecated the convert_legacy_hive_parquet_utc_timestamps\nstartup flag as it also has a corresponding query option that\noverrides its value. See IMPALA-10171.\n\nTesting:\n - removed tests/custom_cluster/test_local_tz_conversion.py\n   because its tests are all covered by test_exprs.py\n - added disable_codegen test dimension to test_exprs.py\n\nAssisted-by: Claude Opus 4.6\nChange-Id: I1245783ba45a42f02f649ac122c1ce74938f5141\nReviewed-on: http://gerrit.cloudera.org:8080/24571\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "d51c3c12fbfa1cbfe348b64f9e6006b3f45f9b56",
      "tree": "b4981ba8b305c89f2e23a92ccff5d42c43dc1d75",
      "parents": [
        "21cd965f1670580f96d0ea846d9a2e83f66a2176"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Sat Jul 04 14:02:13 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 15 18:56:15 2026 +0000"
      },
      "message": "IMPALA-15154: Copy Hive ESRI geospatial UDFs into Impala\n\nCopy the ST_* geospatial functions and their support classes from\nHive\u0027s org.apache.hadoop.hive.ql.udf.esri package into Impala under\norg.apache.impala.hive.geospatial.esri, changing only the package name.\nThis decouples Impala from Hive\u0027s geospatial code so it can be modified\nindependently (e.g. to accept WKB serialization in a later commit).\n\nThe copy is based on upstream Hive commit\nada31342bbd6465c8fa497cd095cebbeaf291b4c, which brings two behavioral\nchanges compared to the previous CDP dependency:\n- HIVE-29323: ST_ConvexHull no longer wraps its result in MULTIPOLYGON\n- HIVE-29352: new ST_DistanceSphere function (great-circle distance)\n\nesri-geometry-api (the underlying geometry library) is added as a\ndirect fe dependency instead of being picked up transitively\nthrough Hive.\n\nRegistration is repointed to the copied classes:\nHiveEsriGeospatialBuiltins imports the new package and registers\nST_DistanceSphere, and gen_geospatial_udf_wrappers.py generates\nwrappers for the new package. All ST_* and utility files are\nbyte-identical to Hive with the exception of package name.\n\nAlso cleans up project.build.sourceEncoding in pom files because it\nwas redundantly declared.\n\nChange-Id: I7d078e6ee961c76b10915da6be5b86966ad9cefb\nAssisted-by: Claude Opus 4.8\nReviewed-on: http://gerrit.cloudera.org:8080/24547\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "21cd965f1670580f96d0ea846d9a2e83f66a2176",
      "tree": "ae17ade539f254e7feef6246b82dbd3b6c5acf49",
      "parents": [
        "ba4dfc90bbaa75bf7ce0412b7171ae7aade30028"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Mon Jul 13 16:03:19 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jul 13 22:05:24 2026 +0000"
      },
      "message": "IMPALA-15176: Fix Trino tests where $HOSTNAME is fqdn\n\nIf node.id is unset, Trino uses $HOSTNAME, which can be a problem\nif it is fqdn, because . is not allowed in node.id.\nFixed this by setting node.id to impala-minicluster-trino.\n\nAlso added more diagnostics to Trino cluster startup to make\ninvestigating similar problems easier.\n\nAssisted-by: Cloude Opus 4.8\nChange-Id: I6778d8b85d3d3565a49dd88df1a4209bcde3a82b\nReviewed-on: http://gerrit.cloudera.org:8080/24580\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "ba4dfc90bbaa75bf7ce0412b7171ae7aade30028",
      "tree": "1ef03b085ed145f2ec64a6a760cb39ed88c101c9",
      "parents": [
        "db609c28284a28eda8c8f97158c2de2f12b9a69e"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Wed Apr 01 17:28:08 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Mon Jul 13 15:33:52 2026 +0000"
      },
      "message": "IMPALA-14904: Calcite planner: Enable width_bucket function\n\nThis commit enables the width_bucket function. The code for\nresolving/coercing decimal operand types had to be refactored and\nmodified.\n\nThe following fixes were needed to enable this:\n\n- The config.fmpp now treats width_bucket as a non-reserved word so\nthat it can be parsed as a function name.\n\n- After IMPALA-14903, the return type is no longer modified, so no check is\nneeded within CoerceNodes when resolving the function.\n\n- If the operand for the aggregation function in CoerceNodes is a decimal,\nit will simply derive the operand from the input if the function has a decimal\nwildcard as an operand. If the decimal type is explicitly specified for the\naggregate function, a cast may be needed, so the type returned by the UDF\nfunction is used.\n\n- CoerceNodes now checks the precision and scale for casting in addition to\njust the datatype\n\n- CoerceOperandShuttle coerces the decimal operands\n   - If it is a binary arithmetic or binary comparison, there is no need for\n   coercing since the backend can handle different decimal types for these\n   functions\n   - If the return type is a decimal, then the common type has already been\n   determined through inferReturnType in the validation stage and this can\n   be used.\n   - If the return type is something other than a decimal, the common type\n   is derived, and an exception is thrown if there is no common type. This\n   is tested within the test_decimal_fuzz.py e2e test.\n\n- A small fix was made to the FunctionResolver which now uses the actual\ndatatypes instead of a \u0027normalized\u0027 wildcard type for resolving.\n\n- There are several instances where the TypeCompatibility.DEFAULT is used,\nbut this is incorrect for Decimal V2, which is the only mode supported\nby the Calcite planner. The TypeCompatibility.STRICT_DECIMAL is used instead.\n\n- The ImpalaTypeFactoryImpl was created to handle compatible types across rows\nin a values clause. This acts well as a singleton object, so there are multiple\nplaces that have been changed to handle this.\n\n- The ImpalaTypeCoercionImpl.binaryComparison method has been added to prevent\ncasting on binary comparisons for decimals with different precisions and/or\nscales.\n\nChange-Id: I2944fde1301e48b3fb0c29be7290b1ad9533e5b6\nReviewed-on: http://gerrit.cloudera.org:8080/24271\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\n"
    },
    {
      "commit": "db609c28284a28eda8c8f97158c2de2f12b9a69e",
      "tree": "e9dd3dbfa025231bfb938cb7df36d54deaae1d37",
      "parents": [
        "00ca633a3c8472f6097abc7be0dc13e477325ac8"
      ],
      "author": {
        "name": "m-sanjana19",
        "email": "malhotrasanjana1993@gmail.com",
        "time": "Thu Jan 08 09:56:51 2026 +0530"
      },
      "committer": {
        "name": "Noemi Pap-Takacs",
        "email": "npaptakacs@cloudera.com",
        "time": "Mon Jul 13 09:06:16 2026 +0000"
      },
      "message": "IMPALA-14516: [DOCS] Documentation for AES Encryption/Decryption Support in Impala\n\nChange-Id: I34a30a3e98b5b44ea810470fc02e42059f60b5b8\nReviewed-on: http://gerrit.cloudera.org:8080/23835\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Noemi Pap-Takacs \u003cnpaptakacs@cloudera.com\u003e\n"
    },
    {
      "commit": "00ca633a3c8472f6097abc7be0dc13e477325ac8",
      "tree": "ccf0109bcbc41c7df8d369cfb12a0f1e6a16f0d5",
      "parents": [
        "234fb8592bfa7bc8cae415a769789b39f5aba5ca"
      ],
      "author": {
        "name": "Fang-Yu Rao",
        "email": "fangyu.rao@cloudera.com",
        "time": "Mon May 11 16:43:59 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Sat Jul 11 19:12:00 2026 +0000"
      },
      "message": "IMPALA-14956: Produce Ranger audit events for GRANT/REVOKE ROLE\n\nDue to RANGER-5595, Impala could not produce Ranger audit events for\nthe GRANT/REVOKE ROLE statements. This patch works around this issue by\nmimicking what RangerHiveAuthorizer#grantRole() does at\nhttps://github.com/apache/ranger/blob/3fd46db/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java#L609-L612.\n\nOn a related note, adding the test cases for the GRANT/REVOKE privilege\nstatements is not in the scope of this JIRA. IMPALA-15011 was created to\nkeep track of this.\n\nTesting:\n - Added Java test cases to verify Ranger audit events could be produced\n   for the GRANT/REVOKE ROLE statements.\n\nChange-Id: I7e0527af0532749817ea538c253262a5e2a65c61\nReviewed-on: http://gerrit.cloudera.org:8080/24315\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "234fb8592bfa7bc8cae415a769789b39f5aba5ca",
      "tree": "0e9b1b37f2852056c16c3be73dc78630e58e8e4e",
      "parents": [
        "4c497d62c6d30884a6b00fd24058ff7c5fd1820c"
      ],
      "author": {
        "name": "zhangyifan27",
        "email": "chinazhangyifan@163.com",
        "time": "Thu Jul 09 17:25:45 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Sat Jul 11 02:47:17 2026 +0000"
      },
      "message": "IMPALA-15157: Avoid decompressing a page that is fully skipped at a page boundary\n\nDuring late materialization / row-level skipping, when the rows to skip\nend exactly on a Parquet page boundary (e.g. an entire row group is\nfiltered out by row-level predicates), BaseScalarColumnReader::\nSkipRowsInternal() would fall out of the page-skipping loop and then\ndecompress that final page via ReadCurrentDataPage() only to then skip\nall of its values.\n\nThis changes the loop guard from \u0027\u003e\u0027 to \u0027\u003e\u003d\u0027 so a page whose values are\nall skipped is discarded as a whole compressed page (counted in\nNumPagesSkippedByLateMaterialization) without decompressing it. When the\nskip lands exactly on the page boundary we short-circuit and return\nbefore reading the next page header. Query results are unchanged; this\nonly removes the unnecessary decompression and in-page value skipping.\n\nTesting:\n- Updated and extended parquet-late-materialization-unique-db.test to\n  cover skipping to a page boundary (whole-page discard) and in-page\n  value skipping.\n\nAssisted-by: Claude Opus 4.8\nChange-Id: I18f0e69c267c9bf041ff9f6a3d677239ae43971a\nReviewed-on: http://gerrit.cloudera.org:8080/24566\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "4c497d62c6d30884a6b00fd24058ff7c5fd1820c",
      "tree": "a92b4548726337c7a14d5d8ea60a4ed928cbbe4d",
      "parents": [
        "e2c226c147b1f227843235901a4d0ef5617720f6"
      ],
      "author": {
        "name": "Kino1994",
        "email": "joaquindevicente@hotmail.es",
        "time": "Sun Mar 08 16:20:03 2026 +0100"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jul 10 19:06:37 2026 +0000"
      },
      "message": "IMPALA-7618: Accept reversed comparators (\u003e / \u003e\u003d) in range partition bounds\n\nThe SQL parser only accepted \u0027\u003c\u0027 and \u0027\u003c\u003d\u0027 operators in range partition\nbounds, rejecting logically equivalent forms like \u0027VALUES \u003e\u003d X\u0027 and\n\u0027X \u003e VALUES\u0027. This created an inconsistency where SHOW RANGE PARTITIONS\ndisplayed bounds using \u0027\u003e\u003d\u0027 notation that couldn\u0027t be used in DDL.\n\nFix the parser grammar to accept \u0027\u003e\u0027 and \u0027\u003e\u003d\u0027 in the range bound rules\n(renamed to expr_cmp_range_val and cmp_expr_range_val, since either can\ndenote a lower or an upper bound). Each rule normalizes its comparator to\nthe canonical \u0027bound \u003ccmp\u003e VALUES\u0027 form, so a RangeBound with a \u0027\u003c\u0027 / \u0027\u003c\u003d\u0027\ncomparator always denotes a lower bound and a \u0027\u003e\u0027 / \u0027\u003e\u003d\u0027 comparator an\nupper bound. RangeBound exposes this via a BoundType enum (LOWER_BOUND,\nUPPER_BOUND) and a boundType() method.\n\ncreateFromRangeWithNormalization() uses boundType() to place each bound on\nits correct side regardless of syntactic position, so canonical and\nreversed forms produce identical internal representations. It now also\nrejects specifications where both bounds constrain the same side, e.g.\n\u00274 \u003e VALUES \u003c 2\u0027 or \u00274 \u003c VALUES \u003e 1\u0027.\n\nTesting:\n- ParserTest: added reversed-comparator forms for CREATE TABLE and\n  ALTER TABLE ADD/DROP RANGE PARTITION.\n- AnalyzeKuduDDLTest: added reversed-comparator forms (including both\n  bounds reversed) and error cases for same-side bounds.\n\nChange-Id: Ia12668537bfc72cc9399a60f68ca7608422b35c2\nGenerated-by: Claude Opus 4.8\nReviewed-on: http://gerrit.cloudera.org:8080/24095\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "e2c226c147b1f227843235901a4d0ef5617720f6",
      "tree": "47b308d4432effb85bdd4d8b77b52f37c373116e",
      "parents": [
        "97da9a689eba890889ae42ba062d095e8215f1cf"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Fri Jul 03 17:20:06 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jul 10 17:02:27 2026 +0000"
      },
      "message": "IMPALA-12422: Add Impala/Trino Iceberg V3 interop custom cluster test suite\n\nAdd a custom cluster test suite that exercises Impala \u003c-\u003e Trino\ninteroperability over Apache Iceberg V3 tables, plus the test-infra\nsupport to drive and verify Trino from .test files.\n\nTest infra:\n- New TRINO_QUERY / RESULTS .test sections, analogous to\n  HIVE_QUERY / RESULTS. TRINO_QUERY statements run against the Trino\n  container (iceberg catalog, test database as schema); RESULTS\n  verifies the returned rows (with an optional VERIFY_* modifier).\n- tests/common/trino_cluster.py: TrinoCluster lifecycle helper\n  (start/stop/is_container_running) that drives the Trino CLI inside the\n  \u0027impala-minicluster-trino\u0027 container via \u0027docker exec\u0027, so no new\n  Python dependency is required. Results are formatted into the Impala\n  RESULTS textual convention and compared as opaque strings. start()\n  builds the image (build-trino-docker-image.sh) lazily if it is missing\n  and starts the container, so the Docker cost is paid only by runs that\n  actually execute the interop tests (mirrors the MySQL JDBC tests) and\n  never by data loading, cluster setup or run-all-tests.sh.\n- run_test_case dispatches TRINO_QUERY to Trino and verifies against\n  RESULTS; run_stmt_in_trino mirrors run_stmt_in_hive.\n- CustomClusterTestSuite.with_args(run_trino\u003dTrue): the framework starts\n  the Trino container before the Impala cluster and stops it on teardown\n  (only if it started it), so interop suites no longer hand-roll\n  setup_class/teardown_class. If the Impala setup fails after Trino\n  started, Trino is stopped so a failed setup does not leak the\n  container.\n- Disable Trino\u0027s DELTA_LENGTH_BYTE_ARRAY Parquet encoding for the\n  Iceberg catalog, which Impala cannot read for string/binary columns\n  yet (Trino 482 defaults it on). This is applied server-side via the\n  image\u0027s file session property manager (session-property-config.*),\n  setting parquet_writer_delta_length_byte_array_encoding_enabled\u003dfalse.\n- Set hive.non-managed-table-writes-enabled\u003dtrue in the image\u0027s\n  hive.properties. Our HMS runs the default metadata transformer, which\n  converts the MANAGED tables Trino requests into EXTERNAL ones (Trino\n  does not advertise Hive ACID write capabilities), and Trino refuses to\n  write into existing external tables by default; enabling this lets the\n  hive-catalog interop test use plain CREATE TABLE + INSERT.\n\nTests (run in run-tests.py\u0027s serial phase like other custom cluster\ntests, skipped only on non-HDFS filesystems, and failing rather than\nskipping if the Trino container/Docker is unavailable so problems are\nvisible):\n- tests/custom_cluster/test_iceberg_trino_interop.py (iceberg catalog):\n- tests/custom_cluster/test_trino_interop.py (hive catalog): a minimal\n  suite over legacy (non-Iceberg) Hive tables\n\nPin the Trino Docker image to trinodb/trino:482 instead of \u0027latest\u0027 so\nthe interop tests are reproducible and not made flaky by future Trino\nreleases (482 is the first release with full Iceberg V3 support).\n\nDocs: testdata/bin/TRINO-README.md explains how to run the suites and\nauthor TRINO_QUERY / RESULTS sections.\n\nChange-Id: I7706244f909f32dff4d390537e71877b0635c661\nAssisted-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24544\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "97da9a689eba890889ae42ba062d095e8215f1cf",
      "tree": "f6e5d8828bc050dbcf0617994bb0f49c322b87f9",
      "parents": [
        "e0c3291c1f1734121aaf88edf450268cc2f85ecf"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Wed Jul 08 19:11:07 2026 +0200"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Fri Jul 10 07:58:42 2026 +0000"
      },
      "message": "IMPALA-15152: Update parquet.thrift to 2.13.0\n\nThe motivation is to include GeometryType.\n\nCopied from:\nhttps://github.com/apache/parquet-format/blob/apache-parquet-format-2.13.0/src/main/thrift/parquet.thrift\n1 Impala specific patch was applied:\nhttps://github.com/apache/impala/commit/fe54ebdc\n\nChange-Id: I5b6e7d2fe1939821a000251ef76afc44d92e0332\nReviewed-on: http://gerrit.cloudera.org:8080/24563\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Peter Rozsa \u003cprozsa@cloudera.com\u003e\n"
    },
    {
      "commit": "e0c3291c1f1734121aaf88edf450268cc2f85ecf",
      "tree": "8c50229f9228fd3792579c895073cc0912c49ad4",
      "parents": [
        "ad658c283ba028dec4a71ea38f12c47be34efc03"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Mon Dec 22 20:36:53 2025 +0800"
      },
      "committer": {
        "name": "Quanlong Huang",
        "email": "huangquanlong@gmail.com",
        "time": "Fri Jul 10 00:41:39 2026 +0000"
      },
      "message": "IMPALA-14637: COMMIT_TXN events should trigger reload for truncate ops\n\nTruncate operations generate ALTER events in HMS. These events trigger\nmetadata reloads when catalogd processes them. For a transactional\ntable, the ALTER event could be processed before the transaction is\ncommitted. Then a stale snapshot is loaded. Catalogd should reload the\nmetadata in processing the corresponding COMMIT_TXN event. However, that\ndoesn\u0027t happen for truncate operations. When processing COMMIT_TXN\nevents, catalogd fetches the WriteEventInfo list for the transaction.\nThis doesn\u0027t include the truncate operations (HIVE-29677), which causes\nCOMMIT_TXN events skip the reloads.\n\nThis patch fixes the issue by tracking transactional truncate operations\nwhen receiving ALTER_TABLE, ALTER_PARTITION and ALTER_PARTITIONS events.\nA map from TableWriteId (db, tbl, writeId) to the truncated partition\nlist is maintained for this. When processing ABORT_TXN events, the\nentries in this map will be cleared and no updates happen.\n\nA new class, TableWriteEvent, is added to represent WriteEventInfo\nreturned from HMS and the truncation info. When processing a COMMIT_TXN\nevent, after fetching the WriteEventInfo list, we convert it into a list\nof TableWriteEvent and then add all the truncation items of that\ntransaction. Reloads are triggered based on this list and ValidWriteIds\nlist of the table is updated accordingly.\n\nTests\n - Added FE tests for ALTER_TABLE and ALTER_PARTITION events.\n - Due to the dependent Hive version is missing HIVE-28668, HMS can\u0027t\n   generate a single ALTER_PARTITIONS event when truncating a\n   partitioned table. So tests for ALTER_PARTITIONS events are missing.\n\nAssisted-by: Opus 4.7 (Claude Code)\nChange-Id: I89aac12819f08dd9ed42d5d8b21a96c04b04d75c\nReviewed-on: http://gerrit.cloudera.org:8080/23805\nReviewed-by: Zoltan Borok-Nagy \u003cboroknagyz@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "ad658c283ba028dec4a71ea38f12c47be34efc03",
      "tree": "9751cc28d2525eb761831fbc66ef5850baafab6b",
      "parents": [
        "e81559d8d32d4b5ccdae0224d6ed7ba9550e06ca"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Wed Apr 01 21:01:35 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 09 23:25:48 2026 +0000"
      },
      "message": "IMPALA-14903: Calcite planner: Simplify code for string literals\n\nBy default, Calcite always sets string literals to type \"char\" whereas\nImpala needs string literals to be type \"string\".\n\nThe current code committed works around this by creating a cast around\nthe column. This complicated the code.  For example, A Values RelNode\ncannot have a cast, so a Project RelNode had to be created on top of a\nValues RelNode to handle the cast.\n\nThe simplification involved two changes:\n\n1) In ImpalaSqlValidatorImpl, deriveType sets the type to STRING at\nvalidation time\n2) Calcite also creates string literals of type CHAR when doing the\nSqlNode to RelNode conversion, so it is also changed in RexBuilder\nwhile it is still in the analysis phase.\n\nOther changes included for this:\n\n- As mentioned above, a Project RelNode is no longer needed for casting on\ntop of the Values node, so the code has been removed from CoerceNodes. Also,\na ProjectMerge rule has been added at the end of optimization to clean up\nextra unneeded Project RelNodes.\n\n- While there are still some cases where the return type needs to be coerced,\nthere are several cases where this is no longer needed. In CoerceOperandShuttle,\nthe return type is no longer changed; the value from the Validator \"inferReturnType\"\nis now always used.\n\n- Because the \"inferReturnType\" is always used, a couple of minor changes were\nalso needed to handle this. While this theoretically should be in its own commit,\nthey are small enough that they are included here. The \"abs\", \"first_value\" and\n\"last_value\" functions are derived from Impala rather than Calcite now. Also, a\nmethod in ImpalaAggOperator was added to allow the use of \"ignore nulls\" with\n\"first_value\" and \"last_value\".\n\n- The RemoveUnraggedCharRexExecutor was created solely for the char casting so it\nhas been removed.\n\n- We only want to modify the non-default type during the analysis phase. Once\ncoercion happens, when the type is being determined. During optimization phase,\nit is possible that a cast of a tinyint to an integer gets simplified to an int\nliteral. There is already code in ImpalaRexBuilder to handle this. However, the\npost analysis is now set immediately before coercion, allowing some pre-coercion\nCalcite code to have its literals cast in the right way.\n\n- IMPALA-15125 has been fixed with this commit.\n\n- A test was removed from test_rows_availability.py because a new plan is generated\nthat is different from the original planner and does not cause the test to sleep.\n\n- Some minor changes to the junit tests.\n-- Some costs are slightly different for q8. The Project over the Values has been\neliminated causing an extra predicate to be added.\n-- q47 and q57 have a \"rank() is not null\" predicate removed. This changed because the\nreturn type is no longer changed, and the nullability of the rank function is now set\ncorrectly, and no \"is not null\" clause is needed.\n\nChange-Id: Id8e61b2555afd81ef52f19431fdd1224d4039c00\nReviewed-on: http://gerrit.cloudera.org:8080/24208\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "e81559d8d32d4b5ccdae0224d6ed7ba9550e06ca",
      "tree": "02761af4ba94fabe628694b112d3b7ed4fdaf206",
      "parents": [
        "087c32bcf44f9a5af5df54ccfb4e9bc27ecd3ab1"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Wed Jul 08 17:05:53 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 09 20:36:50 2026 +0000"
      },
      "message": "IMPALA-15150: Adds missing sleep in test_runtime_filter_annotation_with_hbo_cardinality\n\nHBO stats were written asychronously after the query finishes. The HBO\ne2e tests are both in the following pattern:\n 1. Run some queries that produce HBO stats.\n 2. Sleep 1s to ensure the stats are written.\n 3. Run EXPLAIN on test queries.\n\ntest_runtime_filter_annotation_with_hbo_cardinality is the only test\nthat misses the sleep. When the HBO stats of the build side is missing,\nits cardinality is higher than the actual value. So the estimated\ncardinality of the prode side scan after applying runtime filters (i.e.\nfilteredCardinality_) is higher than its cardinality from HBO stats and\nthe test fails.\n\nTesting\n - Ran the test locally.\n\nChange-Id: I8c0ccc9def6d14c276d2a23403b5eae7a09849c5\nReviewed-on: http://gerrit.cloudera.org:8080/24560\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "087c32bcf44f9a5af5df54ccfb4e9bc27ecd3ab1",
      "tree": "bfb96785dd0c4a67f51d5bfcb5efb4fa1af9c534",
      "parents": [
        "8eee3357cf0c766c396894ea486f4b88579266f4"
      ],
      "author": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Wed Jul 08 16:01:41 2026 +0200"
      },
      "committer": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Thu Jul 09 17:21:31 2026 +0000"
      },
      "message": "IMPALA-15151: Set Java source version to 17\n\nBump maven.compiler.source from 8 to 17 in java/pom.xml.\n\nsun.misc.Unsafe was explicitly exempted from strong encapsulation in\nJava 17 (JEP 260, JEP 403), so it remains accessible without\n--add-exports.\n\nChange-Id: Iccb7b9cc28ad8ade554298503f2d8f4dee789151\nAssisted-by: Claude Sonnet 4.6 (OpenCode)\nReviewed-on: http://gerrit.cloudera.org:8080/24561\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nReviewed-by: Zoltan Borok-Nagy \u003cboroknagyz@cloudera.com\u003e\n"
    },
    {
      "commit": "8eee3357cf0c766c396894ea486f4b88579266f4",
      "tree": "ae68f708509b46ec48c4a5f89122c63273d263a0",
      "parents": [
        "621a55df7d0dc790ce1e7f6aa4ba0966615bcdb6"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Sat Jul 04 13:54:56 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 09 17:14:41 2026 +0000"
      },
      "message": "IMPALA-15153: Reorganize geospatial test files\n\nMove some tests out of geospatial-esri.test and\ngeospatial-esri-extra.test:\n- geospatial-esri-srid.test: SRID-dependent tests\n- geospatial-esri-specific-overloads.test: overloads planned to be\n  dropped later\n- geospatial-esri-high-dimension.test: 3D/4D geometry tests\n\nPure test reorganization with no behavior change - every query block is\npreserved verbatim.\nThe grouping prepares tests for later geospatial_library\nspecific selection.\n\nChange-Id: Id9952a3979d3260ca7c19231e30fd4b0c36c3266\nAssisted-by: Claude Opus 4.8\nReviewed-on: http://gerrit.cloudera.org:8080/24548\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "621a55df7d0dc790ce1e7f6aa4ba0966615bcdb6",
      "tree": "e7970de15d7a560e079d2515c98485c986cb3bf3",
      "parents": [
        "770bf8464416506811af312858268828b0cef5dc"
      ],
      "author": {
        "name": "Balazs Hevele",
        "email": "bhevele@cloudera.com",
        "time": "Mon Jul 06 12:25:02 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 08 21:27:49 2026 +0000"
      },
      "message": "IMPALA-14850: Codegen tuple DeepCopy for hash join\n\nCreated codegen\u0027d version of BufferedTupleStream::DeepCopy and\nBufferedTupleStream::AddRow.\nCodegen\u0027d function is only used by PartitionedHashJoinBuilder in this\npatch.\n\nThis patch does not do proper codegen for collection types, instead it\ncalls the interpreted code for them.\n\nIt was considered to use Tuple\u0027s TryDeepCopy* functions for\nBufferedTupleStream, but it\u0027s better to keep its own DeepCopy\nfor there are differences between the two:\n  -BufferedTupleStream doesn\u0027t copy tuples serially, first\n   it copies \"fixed len\" parts of all tuples, then all\n   \"string data\" for all tuples, then all \"collection data\" of\n   all tuples.\n  -BufferedTupleStream\u0027s DeepCopy doesn\u0027t set String\u0027s pointers.\n   This also applies when copying a string from a collection.\n\nMeasurements:\n  Measured with the following commit:\n    select straight_join l_orderkey, o_custkey, o_orderkey, l_partkey\n      from tpch30.orders left join /*+broadcast*/ tpch30.lineitem\n         on o_orderkey \u003d l_orderkey  where o_totalprice\u003c0;\n\n  Where tpch30 is generated by:\n    bin/load-data.py -s 30 -f --workloads tpch\n      --table_formats text/none,parquet/snap\n\n  Before:\n    BuildRowsPartitionTime: 3s996ms\n  After:\n    BuildRowsPartitionTime: 2s139ms\n\n  Codegen:\n    Before:\n      NumInstructions: 7.04K (7040)\n      NumOptimizedInstructions: 2.66K (2664)\n      ModuleBitcodeSize: 3.43 MB (3592912)\n    After:\n      NumInstructions: 7.11K (7111)\n      NumOptimizedInstructions: 2.72K (2719)\n      ModuleBitcodeSize: 3.43 MB (3596392)\n\nTesting:\nChanged tests in buffered-tuple-stream-test to use both interpreted\nand codegened versions of BufferedTupleStream::AddRow.\n\nChange-Id: I63e32babdbaf56095478c6c66afb9cb91189f946\nReviewed-on: http://gerrit.cloudera.org:8080/24089\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "770bf8464416506811af312858268828b0cef5dc",
      "tree": "2dd478c0926bc83b63c3c8e58afa41f147e8895a",
      "parents": [
        "f8ff487e0510d0425139d7c7a313e1a56a8d6fa7"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue Jun 24 20:34:21 2025 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Wed Jul 08 20:54:31 2026 +0000"
      },
      "message": "IMPALA-14697: Generate TPC-H/TPC-DS data in parallel\n\nFor performance test jobs, generating the datasets at higher\nscales can take significant time. Currently, this is running\na single invocation of the generator binary in a single\nthread. Both TPC-H and TPC-DS have an ability to generate data\nin parallel, producing multiple files for larger tables. This\nkeeps the current behavior for scale factor 1 to avoid having\na different number of files. This generates higher scale\nfactors with $(nproc) parallel threads. The LOAD DATA statements\nfor these tables already reference the directory name itself,\nso it doesn\u0027t matter that there are more files.\n\nTesting:\n - Ran core job\n - Loaded TPC-H scale 42\n - Loaded TPC-DS scale 20\n\nChange-Id: I7ba13e2275be2ac1a5ae8f9354c947d9f1adf263\nReviewed-on: http://gerrit.cloudera.org:8080/23092\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "f8ff487e0510d0425139d7c7a313e1a56a8d6fa7",
      "tree": "701274cd3d8de2e0c4943619acc458a6281fc7a9",
      "parents": [
        "d2a62e18dbc0d3ba46a32f1206b7c989a852a1a0"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Tue Apr 07 14:42:51 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 08 19:59:48 2026 +0000"
      },
      "message": "IMPALA-14909: Calcite planner: Fix validation for views with column list\n\nThis commit fixes a validation issue with some views that have a column\nlist.\n\nSpecifically...\n\nFor the following view:\ncreate view functional.sample_view (abc) as\nselect sum(bigint_col) from functional.alltypestiny;\n\nWhen this view is created, a select wrapper is placed around the view\nto handle the column list. In this example, the sum() column does not\ncontain an alias. A look at the database shows the following query is\nstored when a \"show create view\" command is run on this view:\n\nCREATE VIEW functional.sample_view AS\nSELECT sample_view.`_c0` abc FROM (SELECT sum(bigint_col)\nFROM functional.alltypestiny) sample_view\n\nNote here that a \u0027_c0\u0027 column is created in the select wrapper. But\nsince this column does not exist in the inner select, this sql will\nnot compile when expanded!\n\nThe fix is a little hacky here, but all this view sql is out in the\nwild, so a hacky way is the only way to handle this.\n\nTwo passes are run on validation. The first pass on the view will run\nthe SQL as/is which will fail. Once the exception is thrown, a scan\nof the top layer and the inner select checks to see if there is an\nalias mismatch.  Specifically, it will look for the _c\u003cx\u003e columns. If\nthese columns are found, a replacement is done within the SqlNode tree\nto supply an alias that will be found. A second validation pass is done\nat this point. If this was the only problem in validation, the second\npass should succeed.\n\nIn addition to this change, the view expander was modified. The new\ncode now ensures that validation for the view is run at validation\ntime rather than waiting for SqlNode to RelNode conversion time. It also\nensures that the SQL parsing of the view SQL only happens once for the\nview in a query, and the validated SqlNode is stored within the\nImpalaViewTable object.\n\nThe SqlNode to RelNode conversion is still handled by the RelNodeConverter,\nand the conversion is done through the \"toRel\" for the ViewTable.\n\nFor testing, any query with \"functional.complex_view\" in the test suite\ndid not compile previous to this fix, and now it should compile.\n\nChange-Id: I0d0229c8907f69e648034d12fe375d9d9a384e25\nReviewed-on: http://gerrit.cloudera.org:8080/24211\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "d2a62e18dbc0d3ba46a32f1206b7c989a852a1a0",
      "tree": "f3267ace66b18936f7b483dc26249d114c2ee819",
      "parents": [
        "fa335246656d5893cddd70f325dd8c15c503b71f"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Mon Jun 08 22:49:54 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 08 12:20:11 2026 +0000"
      },
      "message": "IMPALA-15081: Clarify timestamp filters\n\nimpala-profile-tool accepts --min_timestamp and --max_timestamp\nfilters for profile log entries, but the help text did not explain\nthat these values are Unix epoch milliseconds. The parse error for\ninvalid timestamp tokens also did not say which format was expected.\n\nUpdate the help and flag descriptions to document the expected unit,\nand include that unit in timestamp parse errors when filters are\nrequested. Add a regression test for the error message.\n\nAssisted-by: OpenAI Codex\nChange-Id: I58cdd628f90253685d2a5f357a99f3f129db55b9\nReviewed-on: http://gerrit.cloudera.org:8080/24417\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "fa335246656d5893cddd70f325dd8c15c503b71f",
      "tree": "0375e673d92087430360470afd7945f5fccab9fc",
      "parents": [
        "95a2f7e8b86cb4ea37477b7f116378f93c5a8304"
      ],
      "author": {
        "name": "Anubhav Jindal",
        "email": "anubhavjindal30@gmail.com",
        "time": "Tue May 26 14:35:03 2026 -0700"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Tue Jul 07 21:46:30 2026 +0000"
      },
      "message": "IMPALA-14980: Add operator deploy and sample CR\n\nAdd operator deployment and kustomization manifests together with a sample\nImpalaCluster custom resource for install and smoke testing flows.\n\nAdd ASF license headers to the new operator manifest files.\n\nTesting:\n- kubectl kustomize operator/impala-operator/manifests\n- ruby YAML parsing for deployment, kustomization, and sample CR manifests\n- kubectl config current-context (k3d-impala-live)\n- kubectl apply -k operator/impala-operator/manifests\n- kubectl create namespace impala\n- kubectl apply -f operator/impala-operator/manifests/sample-impalacluster.yaml\n- kubectl get deployment impala-operator -n impala-operator-system\n- kubectl get impalacluster impala-demo -n impala\n- kubectl get pods -n impala-operator-system (operator pod scheduled from deployment)\n\nChange-Id: Ifb334135dfd333dd5b14756ec8f41551981677e6\nAssisted-by: GPT-5.3 (Cursor)\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24362\nReviewed-by: Gokul Kolady \u003cgokul.kolady@cloudera.com\u003e\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "95a2f7e8b86cb4ea37477b7f116378f93c5a8304",
      "tree": "04d00c6c9f98b6d64595c246fa66026451b979b2",
      "parents": [
        "bb9b5fe522b53e384d0fb1d846003e360382cb65"
      ],
      "author": {
        "name": "Anubhav Jindal",
        "email": "anubhavjindal30@gmail.com",
        "time": "Tue May 26 14:19:45 2026 -0700"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Tue Jul 07 21:19:54 2026 +0000"
      },
      "message": "IMPALA-14979: Add ImpalaCluster CRD and RBAC\n\nAdd the ImpalaCluster custom resource definition and operator RBAC\nmanifests required to reconcile chart-backed Impala deployments.\n\nAdd ASF license headers to the new operator manifest files.\n\nTesting:\n- ruby YAML parsing for operator manifests\n- kubectl config current-context (k3d-impala-live)\n- kubectl apply -f operator/impala-operator/manifests/crd-impalacluster.yaml\n- kubectl apply -f operator/impala-operator/manifests/rbac.yaml\n- kubectl get crd impalaclusters.impala.apache.org\n- kubectl get namespace impala-operator-system\n- kubectl get serviceaccount impala-operator -n impala-operator-system\n- kubectl get clusterrole impala-operator-crd\n- kubectl get clusterrolebinding impala-operator-crd impala-operator-helm-admin\n\nChange-Id: I0ae5fffe1059a42069fb4abe0d54e29775698cf5\nAssisted-by: GPT-5.3 (Cursor)\nReviewed-on: http://gerrit.cloudera.org:8080/24361\nReviewed-by: Gokul Kolady \u003cgokul.kolady@cloudera.com\u003e\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "bb9b5fe522b53e384d0fb1d846003e360382cb65",
      "tree": "b5cb571780d4eeea7bfde55c03f9576a50f96096",
      "parents": [
        "c7dd8b5f95e262065a682e5cbf80645f3bc2809a"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Fri May 29 07:44:28 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jul 07 17:16:10 2026 +0000"
      },
      "message": "IMPALA-14099: Tolerate large profile log timestamps\n\nimpala-profile-tool parsed profile log timestamps directly as int64_t\nbefore reading the rest of the line. Very large timestamp values made\nstream extraction fail, so the tool rejected the whole profile even when\ntimestamp filters were not used.\n\nRead the timestamp field as text and only convert it to int64_t when\n--min_timestamp or --max_timestamp filtering needs numeric comparison.\nThis preserves filtering for normal timestamps while allowing profile\npayload decoding when the timestamp is not needed.\n\nAdd regression tests for timestamp filtering. Also cover decoding an\nexisting public fixture after replacing its timestamp with the oversized\nvalue from IMPALA-14099.\n\nTesting:\n- compiled impala-profile-tool in Lima VM using the exact patched source\n  and existing debug libraries\n- manual oversized-timestamp smoke test\n- bin/impala-py.test -q tests/observability/test_profile_tool.py\n\nGenerated-by: OpenAI Codex\n\nChange-Id: Id2514011d61c4d79b501f52dc0b1c1fcf7b11b06\nReviewed-on: http://gerrit.cloudera.org:8080/24378\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "c7dd8b5f95e262065a682e5cbf80645f3bc2809a",
      "tree": "c9afdad6db6354602e562ce7170118f936ac6bd9",
      "parents": [
        "21f79c520af843bb18103c70ee8e147a237d5ef0"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Fri May 15 12:56:29 2026 -0700"
      },
      "committer": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Sat Jul 04 00:38:41 2026 +0000"
      },
      "message": "IMPALA-14999: Calcite planner: support Iceberg tables (part 2)\n\nThe main changes enabling Iceberg tables to be processed by the Calcite planner\ncan be found in:\n- CalciteDb: The table fetched from metadata now allows FeIcebergTable objects.\nThis will instantiate a CalciteIcebergTable object. The CalciteIcebergTable\nobject isn\u0027t explicitly needed for supporting Iceberg tables, but it does\ncontain methods needed for count star optimization which will be explained below.\n- ImpalaHdfsScanRel: When an Iceberg table is found, it needs to instantiate\nthe physical nodes via the IcebergScanPlanner.\n\nAll the other changes in this commit are meant to deal with either specific\nissues within Calcite that needed to change to handle edge cases or performance\noptimizations for Iceberg. These changes include:\n\nThe biggest change in terms of code complexity is to handle the count star\noptimization for Iceberg. Most, but not all of the handling happens during\nthe logical node optimization rule, IcebergCountStarOptimizationRule, which\nis called right before the logical node to physical node conversion. The\nrule is broken down into v1 (no delete files) and v2 tables. This rule can\nonly be applied when the count star is applied for the whole table, i.e.\nno groups or filters.\n\n- v1 count optimization converts the Agg \u003c- TableScan into a Values rel node\nif there is only a count star in the query for the whole table, since the\ncount can be calculated at compilation time. If there are other aggregates\nin the query, it also uses the constant retrieved, but it cannot remove\nthe aggregate calculation. In this case, it places a LogicalProject on top\nof the Aggregate with the constant value and removes the count star\ncalculation from the aggregate.\n\n- v2 count optimization precalculates the count star for rows that don\u0027t\nhave an associated delete file. It has to calculate the rows associated with\nthe delete files at runtime. These counts are added in a Project on top of\nthe aggregate. This is similar to the logic that is in SelectStmt at the\ntime of this commit. One part missing within the rule is the call to\ntableRef.setOptimizeCountStarForIcebergV2(). The tableRef does not exist\nuntil the physical node creation, so this set can only be done within\nImpalaHdfsScanRel (which calls CalciteIcebergTable).\n\nSome additional code for count star optimization exists in ImpalaHdfsScanRel.\nIf there is a filter or group by on partitioned columns, we cannot\nprecalculate the counts, but we can pushdown predicates and examine file\nmetadata instead of the rows. Some logic in ImpalaHdfsScanRel and\nCalciteIcebergTable has been created/refactored to handle this situation.\nOne note: IMPALA-14995 has been filed because the original planner does\nnot optimize on a count(*) on a partitioned group by column, but it does\nwork for the Calcite planner.\n\nThis covers the work needed for the count star optimization. There were\nother fixes needed in the Calcite infrastructure to support the existing\ncode in IcebergScanPlanner.  These include:\n\n- The isPartitionKeyScan() method in IcebergScanPlanner, similar to count\nstar optimization, checks to see if all distinct columns used on the table are\npartitioned columns. The IcebergScanPlanner looks at MultipleAggInfo for\nthis information, but this aggInfo doesn\u0027t exist for the Calcite planner.\nThe information is passed down through ParentPlanRelContext from the Aggregate\nRelNode (this code already existed), and the check is handled within the\nnewly added ScanNodeHelper. This code has been added to other\n*Node classes as well.\n\n- Some code had to be refactored to enable runtime filters for Iceberg tables.\nThe Calcite planner registers equivalent columns in the valueTransferGraph in\nthe analyzer in the ImpalaJoinRel class. It needs the TableRef information from\nthe TableScans for this graph. The code before this commit retrieved this\ninformation off of the ImpalaHdfsScanNode, but this cannot be done for Iceberg.\nThe new mechanism to get the TableRef information is to pass the information\nup through the NodeWithExprs class, an existing way to handle all information\npassed up from the lower nodes. All RelNode classes had to be changed to pass\nthe information up.\n\n- Iceberg Predicate pushdown looks for explicit classes and patterns that\nCalcite was not using. Specifically:\n  - NOT was being used in FunctionCallExpr. It is now converted to a CompoundPredicate\n  - LIKE was also being used in FunctionCallExpr. It is now converted to a\n    LikePredicate\n  - This is more of a generic issue, but Calcite allows the \"user\" keyword without\n    parens to be treated as a function. Since Impala allows this to be a column name\n    and the Iceberg tests use this, the \"user\" function is treated as an Impala\n    function (found in ImpalaOperatorTable)\n  - For some optimizations, Iceberg requires the cast(my_string_timestamp as timestamp)\n    function to be folded into a TimestampLiteral.\n  - These changes were mostly made in RexLiteralConverter and RexCallConverter\n\n- In order to handle the predicate pushdowns, additional infrastructure needed\nto change for Calcite. All literal and function expressions needed to be analyzed\nafter being converted. In order to handle this in one place, the code was changed\nin CreateExprVisitor and ImpalaAnalyticRel, both of which use the visitor pattern\nto create expressions.  However, an issue came up with the visitor pattern within\nCalcite in that exceptions can not be passed through the visitor. In order to handle\nthis, the exception is saved in a member variable. A RuntimeException is then thrown,\nand the exception is caught from the visitor caller. At this point, the member\nvariable is checked and rethrown as an AnalysisException.\n\n- Because the analyze function is called for all converted expressions, the IntervalExpr\nneeded an implementation of a couple of methods. This is a dummy Expr class which\ndid not need analysis before because it is immediately thrown away. It is still\nthrown away, but dummy analyze methods are now added.\n\n- A small issue was found in filter simplification while debugging. If there is\na filter condition with a \"false\" condition, the Filter RelNode can be converted\nto an empty Values RelNode. This code is within ImpalaFilterSimplifyRule\n\n- Various tests have been overridden in the e2e test files. The reasons are\ndocumented in the test file. There is one edge case where an Iceberg optimization\ncould not be utilized. If the filter clause is on a partitioned column\n\"where bool_col \u003d true\", Calcite simplifies this to \"where bool_col\" and this\npredicate is not optimized by Iceberg. A bug has been filed for this to ensure\nthis expression can be optimized by both the original Iceberg planner and the\nCalcite Iceberg planner.\n\nThis commit does not support all Iceberg queries. It focuses on the general\nIceberg queries and various optimizations that are tested. Among Iceberg queries\nnot supported (and this may not be a complete list) are queries that have:\nmetadata columns, complex columns, table sampling, time travel, lineage.\n\nTesting: While there is a lot of code here, only one new test has been added to\ncalcite.test. This test is to ensure that an Iceberg table can be run through\nCalcite. Unfortunately, in its current state, there is no differentiation between\nqueries run through Calcite, and queries that fail at compilation time and\nfallback to the original planner. The only exceptions are tests that are\noverridden with CALCITE_PLANNER_RESULTS, so there is at least some coverage\nthere. Eventually, soon, there will be testing when there is no fallback planner so\nthat all Iceberg tests will be run and verified through the Calcite planner.\n\nChange-Id: I1854012b1caac63ced292b338d40074db950b42d\nReviewed-on: http://gerrit.cloudera.org:8080/24311\nReviewed-by: Zoltan Borok-Nagy \u003cboroknagyz@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "21f79c520af843bb18103c70ee8e147a237d5ef0",
      "tree": "d9467ea2d81f834a770bacd68ae7c4f012b65a29",
      "parents": [
        "bd28681dcf6fe50b3d6ce5d89952fee42c55faa9"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Wed Jul 01 17:37:09 2026 +0200"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Fri Jul 03 11:22:29 2026 +0000"
      },
      "message": "IMPALA-15131: Simplify file format handling in hdfs-scan-node\n\nOld code selected file format for Iceberg and Hive\ntables differently (per file vs per partition).\nThis can be simplifed as HdfsFileDesc has the\nfile format set at this point.\n\nAssisted-by: Claude Opus 4.8\n\nChange-Id: I82f84d17e67cb0bb6dbba2ea86b602290d96de8c\nReviewed-on: http://gerrit.cloudera.org:8080/24531\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    },
    {
      "commit": "bd28681dcf6fe50b3d6ce5d89952fee42c55faa9",
      "tree": "3bff7746c6fb708ee0fcfcaec7e72336de5ea033",
      "parents": [
        "af1928236e53eef7e372168e47403bc67e05549a"
      ],
      "author": {
        "name": "Mihaly Szjatinya",
        "email": "mszjat@pm.me",
        "time": "Wed Jul 01 12:44:34 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 02 20:24:36 2026 +0000"
      },
      "message": "IMPALA-15129: Fix test_no_tuniqueid false positives from coverage/results dirs\n\nassert_message_absent walks all files under $IMPALA_LOGS_DIR, which\ninadvertently matches TUniqueId in non-daemon-log files:\n- pytest JUnit XML (logs/ee_tests/results/): failure tracebacks capture\n  TUniqueId.__repr__() from Python test local variables\n- Jacoco HTML coverage (logs/fe_tests/coverage/): rendered Java source\n  contains Thrift-generated constructor calls like new TUniqueId(...)\n- gcovr HTML coverage (logs/coverage/): rendered C++ source contains\n  e.g. NAME##_catalogd_registration_id_ \u003d TUniqueId()\n\nAdd a skip_subdirs parameter to assert_message_absent that prunes the\nos.walk traversal in-place. test_no_tuniqueid passes\nskip_subdirs\u003d{\u0027coverage\u0027, \u0027results\u0027} to exclude all three categories.\n\nChange-Id: I275e34724ab16db9225389b1299c5c4f10bc878a\nAssisted-by: Claude Sonnet 4.6 (GitHub Copilot)\nReviewed-on: http://gerrit.cloudera.org:8080/24529\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "af1928236e53eef7e372168e47403bc67e05549a",
      "tree": "28a1d621d1233154f08f4bdf1ef8ba8d4ed95fed",
      "parents": [
        "e47134ece299ddd2d538c9017b44b383b35e9d28"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Wed Jul 01 15:53:42 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jul 02 18:03:38 2026 +0000"
      },
      "message": "IMPALA-15130: Reject column masking on complex-typed columns\n\nA Ranger column-masking policy on a top-level complex-typed column\n(ARRAY/MAP/STRUCT) cannot be applied: the mask transforms are scalar\nand there is no way to express a masked complex value.\nTableMask.createColumnMaskStmt() previously ignored such masks and\nreturned the column unmasked, leaking data the policy was meant to hide.\nThe InlineViewRef guard that was supposed to reject this (\"Column\nmasking is not supported for complex types\") was dead code as\nTableMask.hasComplexColumnMask_ was never assigned.\n\nFail closed instead: a mask on a top-level complex column now throws an\nAnalysisException. Masks on nested struct fields (e.g. nested_struct.a)\nare still ignored, matching Hive, which only considers top-level columns\nand so does not recognize such policies either.\n\nAlso removes the dead hasComplexColumnMask_ field/getter and the\nunreachable InlineViewRef check.\n\nTesting:\n- New FE test AuthorizationStmtTest.testColumnMaskingOnComplexColumn:\n  a mask on a top-level ARRAY, MAP and STRUCT column is rejected, while a\n  mask on a nested struct field is still ignored.\n- test_column_masking_with_structs_in_select_list keeps the masks on the\n  complex columns (tiny_struct, int_array_array, int_map_array) and the\n  ranger_column_masking_struct_in_select_list.test goldens now assert\n  that selecting those columns fails with the new error. This shows the\n  end-to-end behaviour next to the related masking tests in that file.\n- test_column_masking: dropped only the mask on the top-level int_array\n  column (that column is exercised as a nested collection reference all\n  over ranger_column_masking_complex_types.test and would now error). The\n  mask on the nested field nested_struct.a is kept, since nested-field\n  masks are still ignored (Hive parity), so those goldens are unchanged.\n\nChange-Id: Idddacf0b40abcaa18a5764ff617179fe898886c9\nAssisted-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24530\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "e47134ece299ddd2d538c9017b44b383b35e9d28",
      "tree": "a2e5d497d23c073483661f3af9a1ea925eb346c3",
      "parents": [
        "b4a4c656615485dee337fc3e5f4a58c13a78b260"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Tue Jun 30 15:22:43 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 01 12:50:53 2026 +0000"
      },
      "message": "IMPALA-15126: Fix NullPointerException for STRUCT.* expansion on masked tables\n\nWhen a table has a column-masking policy, queries are rewritten to read\nfrom a table-masking view and re-analyzed. Expanding a struct that\ncontains a nested collection - via STRUCT.* or SELECT * with\nEXPAND_COMPLEX_TYPES\u003dtrue - built the collection\u0027s relative path with\nPath.createRelPath(), which did not carry the path\u0027s table-masking\nmarker. The collection was therefore rooted at the underlying table\u0027s\ntuple, which is registered only inside the masking view\u0027s analyzer, so\nCollectionTableRef.analyze() -\u003e Analyzer.findAnalyzer() returned null\nand threw a NullPointerException.\n\nPath.createRelPath() now propagates the pre-masking path to the derived\nrelative path, so a collection reached through struct expansion roots at\nthe masking view\u0027s tuple in the current query block (matching how\ndirectly selected masked collections already resolve).\n\nTesting:\n- New FE test\n  AuthorizationStmtTest.testColumnMaskingStructWithNestedCollection\n- New e2e test cases in\n  QueryTest/ranger_column_masking_complex_types.test\n\nChange-Id: Id101542aed900220383481f17d812b1889f78736\nAssisted-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24524\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "b4a4c656615485dee337fc3e5f4a58c13a78b260",
      "tree": "3c43f599fbeebd7f286f246d5c3177e6edfdbefa",
      "parents": [
        "3057fda801aeed17f2fdd7605c0ab28fa27da2cb"
      ],
      "author": {
        "name": "Gowthami Bisati",
        "email": "gbisatis24@gmail.com",
        "time": "Wed Jun 24 15:03:57 2026 +0530"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jul 01 12:25:56 2026 +0000"
      },
      "message": "IMPALA-14705: [DOCS] Document Iceberg DML\n\nDocument DELETE, UPDATE and MERGE statements support for Iceberg tables.\n\nWhat changed:\n\nUpdated docs/topics/impala_dml.xml to document DELETE, UPDATE AND MERGE\nstatements for Iceberg tables.\n\nUpdated docs/impala_keydefs.ditamap to add the key to merge statement.\n\nUpdated the docs/topics/impala_merge.xml to add the title for Merge \nstatement with the Impala version details.\n\nTests performed:\n\nmake all\n./pre-commit.sh\nxmllint --noout docs/topics/impala_dml.xml\ngit diff docs/topics/impala_dml.xml\n\nAll commands completed successfully. make all generated the XHTML, HTML5,\nand PDF documentation outputs.\n\nChange-Id: Idda990274962dee57e345efb59147b2455938c3f\nReviewed-on: http://gerrit.cloudera.org:8080/24503\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "3057fda801aeed17f2fdd7605c0ab28fa27da2cb",
      "tree": "9a45f4417ff175ec8d84d073cbb522c7eb65da4b",
      "parents": [
        "37056e7e39f1d6d1db8434c1695b0ccd777846fd"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Thu Sep 18 13:28:07 2025 -0700"
      },
      "committer": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Wed Jul 01 02:33:06 2026 +0000"
      },
      "message": "IMPALA-14484: Calcite planner: Add column stats to union slot descriptors\n\nThere is explicit code in SetOperationStmt which adds column stats to the\nSlotDescriptor.  This code is now reused to obtain the column stats for the\nCalcite compiler and added to the union slot descriptors.\n\nThe tpcds unit tests now have better estimates.\n\nChange-Id: Ia0585fafa45658dffffdbf6410b028f03304b6e9\nReviewed-on: http://gerrit.cloudera.org:8080/24017\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "37056e7e39f1d6d1db8434c1695b0ccd777846fd",
      "tree": "5a9e7fd7420df8991153252f11d39d8613150b05",
      "parents": [
        "a659afeabbdd48ddda365ba918798f9e47676df2"
      ],
      "author": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Wed Apr 01 21:11:32 2026 -0700"
      },
      "committer": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Wed Jul 01 02:32:39 2026 +0000"
      },
      "message": "IMPALA-14849: Upgrade Calcite planner to 1.42\n\nUpgraded to Calcite 1.42.\n\nSome problems addressed:\n\n- getMaxNumPrecision and getMaxNumScale were made final methods in\n  Calcite causing a compilation error.\n\n- A Jira fix changed the interval expression to use CHECKED_TIMES\n  rather than TIMES for the operator.\n\n- The avatica dependency is not needed.\n\n- 1.42 added new support for some correlated queries which now compile\n  in Calcite and will no longer fallback to the original planner.\n\n- The support of some new correlated queries uncovered some incorrect\n  results which can be found in subquery.test and grouping-sets.test.\n  IMPALA-15122 and IMPALA-15124 have been filed to deal with these\n  incorrect results in the original planner.\n\n- Some tests for spilling had to be commented out. The queries in the\n  file used to fallback to the original planner. They succeed now. But\n  the plans generated are different. The original planner produces\n  anti-join queries and the Calcite planner does not. This results in\n  different memory usage. The spilling tests are specifically designed\n  to handle this.  IMPALA-15123has been filed to ensure these tests\n  will eventually work for the Calcite planner.\n\n- This is a small performance regression in\n  analytic-rank-pushdown-calcite.test.  IMPALA-15125 has been filed. A\n  Filter/Values RelNode is not being reduced. This will have a minimal\n  performance impact, so it should be ok to do the upgrade with this\n  issue.\n\nChange-Id: I4bfb3271282f3dfdd250fa61bce1492e5dd499f8\nReviewed-on: http://gerrit.cloudera.org:8080/24261\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Aman Sinha \u003camsinha@cloudera.com\u003e\n"
    },
    {
      "commit": "a659afeabbdd48ddda365ba918798f9e47676df2",
      "tree": "b62a644bbb1c65b68dd9347cb08fdd7667f83b0f",
      "parents": [
        "d9a3941b4ca9dc90611fff58d2d624b674cce807"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Wed Jun 24 15:22:00 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 30 07:47:13 2026 +0000"
      },
      "message": "IMPALA-13946: Turn on allow_catalog_cache_op_from_masked_users by default\n\nMost of the users turn this on to resolve the performance regression on\nINVALIDATE and REFRESH commands. The regression is due to additional\nmetadata loading if the table is unloaded in catalogd. Though this is\nresolved by IMPALA-14703, i.e. don\u0027t need metadata loading anymore,\nchecking table masking policies is still an additional work. Setting\nallow_catalog_cache_op_from_masked_users to true skips this check.\n\nTest Changes:\n - Moved the negative test (test_block_metadata_update) to\n   TestRangerIndependent since it now requires restarting the cluster\n   with the flag off. Also mirrored it to test on both catalog modes.\n - For FE tests that depend on this flag to be false, explicitly set it\n   before the tests.\n\nTests\n - Ran CORE tests\n\nChange-Id: I2d3be4467c6dddf5d9cbe1f68e1a19555b3f9359\nReviewed-on: http://gerrit.cloudera.org:8080/24510\nReviewed-by: Zoltan Borok-Nagy \u003cboroknagyz@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "d9a3941b4ca9dc90611fff58d2d624b674cce807",
      "tree": "ab54736353ffdbd76dd33aeb8ef62f71f0fd378d",
      "parents": [
        "afc7224bd5a4257c9ce1a6f35141772fd3139838"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Fri Jun 26 12:26:23 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jun 26 23:49:10 2026 +0000"
      },
      "message": "IMPALA-15118: Copy ByteBuffers for partitionList_\n\nIcebergContentFileStore.fromThrift() didn\u0027t copy the contents\nof ByteBuffers when filling partitionList_.\nThrift\u0027s binary handling in Java is special as the ByteBuffer\nobject in deserialized Thrift object can still reference the\ntransport buffer. Keeping the reference to that can almost\ndouble the size of IcebergContentFileStore in the coordinator.\n\nAnother issue fixed is that partitionMap_ and partitionList_ did\nnot share the ByteBuffers  after fromThrift()\n\nImprovement for test table with 1M files, 25K partitions:\n665MB-\u003e389MB\n\nChange-Id: Ib39940dd64aadcb094b099e3863dd42c22afc2b8\nReviewed-on: http://gerrit.cloudera.org:8080/24515\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "afc7224bd5a4257c9ce1a6f35141772fd3139838",
      "tree": "95927c1ff9eb8973fc0b333fad25ba74d7c34862",
      "parents": [
        "9957737efe3f5a6d3ecec816627d287e37d0a950"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Mon May 18 10:46:27 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jun 25 10:59:38 2026 +0000"
      },
      "message": "IMPALA-14702: Add ability to build against Google Tcmalloc\n\nImpala currently uses Gperftools TCMalloc, which was originally\ndeveloped by Google but is now its own open source community.\nGoogle continued development internally and created a new open\nsource project with their improved version. The biggest changes\nare:\n - Google TCMalloc uses Linux RSEQ functionality to use CPU\n   caches rather than thread caches. This avoids stranding memory\n   in inactive threads. It also avoids work when threads start\n   and stop.\n - Google TCMalloc adds native huge page support. It backs most\n   allocations with huge pages, which can reduce TLB misses.\nThere are many other changes across many other areas, including\nprofiling and NUMA support.\n\nThis adds support for building against Google TCMalloc. It is\ncurrently controlled by the IMPALA_MALLOC_IMPL environment\nvariable, which defaults to \"gperftools\". When set to\n\"googletcmalloc\", it builds against Google TCMalloc. This is\nusing a custom CMake build of Google TCMalloc with a couple\npatches to make it work. Unlike the regular Google TCMalloc,\nthis uses madvise() with MADV_HUGEPAGE to allow it to function\non systems with only madvise huge page support. Google TCMalloc\nrequires Abseil, so this adds an Abseil dependency.\n\nGoogle TCMalloc retains unused memory, and Impala uses the same\nintegration points as gperftools with aggressive decommit off.\nWe start a background thread that periodically releases memory.\nUnlike gpeftools, Google TCMalloc provides a\nMallocExtension::ProcessBackgroundActions() function that does\nvarious maintenance actions and releases memory periodically\nto control the memory overhead. Rather than implementing our\nown logic, we use that logic and rely on its decisions about\nretaining memory. We also register a garbage collection function\nto free memory immediately when hitting the process memory limit.\n\nSince Google TCMalloc is aware of huge pages, this changes the\nbuffer pool\u0027s madvise_huge_page to avoid using madvise() when\nthe malloc implementation natively supports huge pages.\n\nGoogle TCMalloc\u0027s per-CPU caches rely on RSEQ support, and\nit\u0027s use of RSEQ currently conflicts with glibc\u0027s use of\nRSEQ. This disables glibc\u0027s use of RSEQ via the\nGLIBC_TUNABLES\u003dglibc.pthread.rseq\u003d0 when using Google TCMalloc\nin the dev environment.\n\nThere will be future changes to package this properly.\n\nTesting:\n - Ran a core job with IMPALA_MALLOC_IMPL\u003dgoogletcmalloc\n - Tested the scenario from IMPALA-13966 (performance issues with\n   1MB Parquet data pages) and verified that Google TCMalloc\n   does not see this issue.\n\nChange-Id: I5a84eacb66eb0a216bfb2159542a0d7e4ddf8ec2\nReviewed-on: http://gerrit.cloudera.org:8080/24403\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "9957737efe3f5a6d3ecec816627d287e37d0a950",
      "tree": "656c77fa89b4f9e0e5ec6887abc4549a775f4e49",
      "parents": [
        "e5727bb7176294114651785a24fb27f4a6bc47e5"
      ],
      "author": {
        "name": "Gokul Kolady",
        "email": "gokul.kolady@cloudera.com",
        "time": "Thu Jun 11 14:20:59 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jun 25 01:30:01 2026 +0000"
      },
      "message": "IMPALA-15093: Use RE2 For Profile Analyzer Regex\n\nReplace std::regex usage in query profile parsing/redaction with\nre2::RE2 so the AI analyzer flow uses a single regex engine\nend-to-end. This updates pattern definitions and\nmatching/replacement/extraction paths (query ID,\nfragment/operator parsing, resource estimate parsing, and\nredaction token collection) while preserving existing behavior.\n\nTesting:\nI re-ran query-profile-redaction-test and\nquery-profile-parsing-tools-test, including the new unit tests\nadded in this change to cover RE2-based redaction token\ncollection and mixed-unit duration parsing/ratio logic.\n\nChange-Id: Ie1343b2f049758e862d229f2a647273de56855c4\nReviewed-on: http://gerrit.cloudera.org:8080/24446\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "e5727bb7176294114651785a24fb27f4a6bc47e5",
      "tree": "f5bec7641da7745b623f67cd32a00d95ec7dfef1",
      "parents": [
        "890e6210783bf979629477ddfc624d86e492971a"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Fri May 29 10:47:05 2026 +0200"
      },
      "committer": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Wed Jun 24 14:39:25 2026 +0000"
      },
      "message": "IMPALA-15067: Add VariantValue and basic decoding functions\n\nAdds the backend implementation for decoding VARIANT binary blobs:\n\n- variant-value.h: Defines VariantMetadata (field name dictionary\n  parser) and VariantValue (value decoder with object/array accessors\n  and path navigation). Supports all variant physical types defined by\n  the Parquet Variant spec.\n- variant-util.cc/h: Implements VariantToJson() which serializes a\n  variant (metadata + value blobs) to JSON. Supported types include\n  null, booleans, int8/16/32/64, float, double, decimal4/8/16,\n  short/long strings, objects, arrays, TIMESTAMPNTZ (micros), and\n  TIMESTAMPNTZ_NANOS. BINARY values are base64-encoded. TIMESTAMPTZ,\n  TIME, and UUID remain unsupported.\n- variant-functions-ir.cc/h: Implements the variant_to_json(BINARY,\n  BINARY)-\u003eSTRING builtin expression function.\n\nTesting\n- Unit tests covering metadata parsing, all primitive types, objects,\n  arrays, path navigation, and JSON serialization. Includes test cases\n  extracted from Hive-written and DuckDB Parquet test files for\n  cross-engine compatibility validation.\n\nGenerated-by: Claude Opus 4.8 (Max effort)\n\nChange-Id: I904618570e8c21d099c9a96b496d85e9246483de\nReviewed-on: http://gerrit.cloudera.org:8080/24392\nReviewed-by: Peter Rozsa \u003cprozsa@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "890e6210783bf979629477ddfc624d86e492971a",
      "tree": "094165254f82169550989378278bd11bf409ff4b",
      "parents": [
        "048b951f9dcc5cf646773d5f52f2d77c5e497096"
      ],
      "author": {
        "name": "m-sanjana19",
        "email": "malhotrasanjana1993@gmail.com",
        "time": "Wed Jun 03 21:56:20 2026 +0530"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jun 24 01:41:10 2026 +0000"
      },
      "message": "IMPALA-14526: [DOCS] Documentation for OpenTelemetry Integration\n\nChange-Id: Ia0e6d25a53fe2214944840bf5c6a877640ef8316\nReviewed-on: http://gerrit.cloudera.org:8080/24395\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "048b951f9dcc5cf646773d5f52f2d77c5e497096",
      "tree": "0e482750a91d1ee8491f1b12408282a5065a21b7",
      "parents": [
        "d575796624f9fa14de00d39ea2ee13ccbad153e6"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Sat May 16 11:18:22 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jun 24 01:35:47 2026 +0000"
      },
      "message": "IMPALA-14900: Add support for turning off aggressive decommit\n\nImpala has used TCMalloc\u0027s aggressive decommit setting\nfor several years, but it increases the OS allocation /\ndeallocation rate and can lead to contention on TCMalloc\u0027s\ncentral structures. There are many pieces of code that\nstill rely on malloc for their memory, including\nperformance sensitive pieces of query execution. Retaining\nsome malloc memory can accelerate those codepaths by\navoiding OS allocation / deallocation cycles. TCMalloc\nholds a lock while allocating and deallocating memory,\nand retaining memory can also avoid extreme cases with\nhigh lock contention. For example, in IMPALA-13966, we\nsaw performance issues using 1MB Parquet data pages,\nbecause the large allocations bypass the thread caches\nand come directly from the central structures.\n\nThere is a long history behind this setting:\n - As of late 2015 / Impala 2.3, Impala would let tcmalloc\n   retain memory. It had two mechanisms for releasing\n   memory. The first was a periodic check to see if the\n   overhead of tcmalloc exceeded the memory used. The\n   second was a garbage collection function that ran\n   when hitting the process memory limit. Both mechanisms\n   would free ALL excess tcmalloc heap memory via a single\n   call to ReleaseFreeMemory(). TCMalloc is holding a lock\n   for this call, and this can stall other work until it\n   completes. It could be freeing dozens of GBs and this\n   could hold the lock for 15 seconds. This issue was\n   reported via IMPALA-2800.\n - In IMPALA-3162, Impala moved to gperftools 2.5, which\n   had aggressive decommit enabled by default. This frees\n   memory immediately, so the mechanisms to free memory\n   had nothing to do. This solved IMPALA-2800. The obsolete\n   code for the periodic check and garbage collection\n   function were removed in IMPALA-5220.\n - Gperftools only had aggressive decommit enabled by\n   default for a short period of time. It was enabled by\n   default in 2.4 and was disabled by default in 2.6.\n - When Impala upgraded gperftools later, we added code\n   to manually set aggressive decommit.\n\nThis adds back an option to turn off aggressive decommit.\nThe shape is similar to the old mechanisms: there is a\nbackground thread doing a periodic check to manage the\nmemory overhead and a garbage collection function that\ngets called when hitting the process memory limit. This\nhas been redesigned to avoid the issue from IMPALA-2800\n(based on an early approach to IMPALA-2800 by Todd Lipcon):\n - Both enforcement locations are freeing a specific amount\n   of memory rather than all accumulated memory (i.e. it\n   calls ReleaseToSystem() with a target amount of memory\n   to free). The background thread is maintaining an overhead\n   specified by the tcmalloc_max_free_bytes startup option.\n   This can be an absolute value or a percentage of the\n   process memory limit. It defaults to 5% of the process\n   memory limit. The garbage collection function is\n   freeing enough memory to avoid hitting the process\n   memory limit, plus a bit extra (512MB) to avoid calling\n   the GC function too frequently.\n - Both enforcement locations free memory in small chunks\n   to avoid holding the lock for extended periods of time.\n   The chunk size is specified by the tcmalloc_garbage_collection_chunk_size\n   startup option and defaults to 10MB.\n - The implementation retains significantly less memory and\n   frees it without holding the lock for extended periods of\n   time.\n - Other things have changed since then: The buffer pool\n   retains memory and frees it gradually over time. This also\n   reduces the need for freeing a large amount of memory\n   immediately.\n\nTurning off aggressive decommit is currently incompatible with\nthe madvise_huge_pages\u003dtrue startup option. This modifies the\nstartup check so that aggressive decommit can be false if\nmadvise_huge_pages is false. A future change may provide a\nway to mmap huge buffers to allow these to work together.\n\nThis adds the --tcmalloc_aggressive_decommit option to\nbin/start-impala-cluster.py to make it easier to startup\nthe cluster. The default value is determined by the\nIMPALA_TCMALLOC_AGGRESSIVE_DECOMMIT environment variable,\nso this makes it possible to run cluster tests with this\noption.\n\nTesting:\n - Added a custom cluster test to run TPC-DS with tcmalloc\n   aggressive decommit off\n - Ran a core job with IMPALA_TCMALLOC_AGGRESSIVE_DECOMMIT\u003dfalse\n - Ran the scenario from IMPALA-13966 and verified that turning\n   off aggressive decommit avoids the issues.\n\nChange-Id: If6022f14093f362a5de9a854f4f4496c90b049b8\nReviewed-on: http://gerrit.cloudera.org:8080/24402\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "d575796624f9fa14de00d39ea2ee13ccbad153e6",
      "tree": "581941ee3e2fccb7ad6aa71b142ec74cf66f6979",
      "parents": [
        "669e244f6f512e12a48623b00cd7beff808c9593"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue Dec 02 09:39:56 2025 -0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jun 24 00:44:52 2026 +0000"
      },
      "message": "IMPALA-14594: Scale grouping aggregator\u0027s input cardinality by the number of backends\n\nThe grouping aggregator uses input cardinality in its decision\nabout whether to continue expanding for a pre-aggregation.\nCurrently, each fragment instance is using the full input\ncardinality for this calculation, but it will only be processing\na fraction of the input. This makes pre-aggregations very aggressive\nabout expanding, because they assume very high levels of future\nreduction.\n\nThis fixes the input cardinality calculation to scale it down\nby the number of fragment instances for this fragment. Each\nfragment instance now assumes it is processing 1/Nth of the\ninput cardinality (where N is the number of fragment instances).\nThis will make the pre-aggregation\u0027s expansion calculation\nmore accurate.\n\nTesting:\n - Ran a core job\n\nChange-Id: Iaf66709f12ea9b7328ca4e4c5cd45a05c9dc3032\nReviewed-on: http://gerrit.cloudera.org:8080/23732\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "669e244f6f512e12a48623b00cd7beff808c9593",
      "tree": "41e7e36ea31277e2eefaa33b1ff6c80ad3aba179",
      "parents": [
        "ac127e7927f654d5d63e8f7e54041ed9ac2aa78d"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Mon Jun 22 20:54:32 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 23 20:08:56 2026 +0000"
      },
      "message": "IMPALA-15114: Remove ehcache\n\nThe rule before the change was to use jamm from Java 15 and ehcache\non older Javas. As impala bumped to Java 17 as minimum ehcache became\npretty untested.\n\nChange-Id: I0122b74042acd6579bc98bbdc796c511bc54f0e5\nReviewed-on: http://gerrit.cloudera.org:8080/24494\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "ac127e7927f654d5d63e8f7e54041ed9ac2aa78d",
      "tree": "4111f246354719e119dc4f8b2f416eeef40e8e5b",
      "parents": [
        "9d4c36a6575259c86f4dd1edbff476c59b7a0376"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Tue Jun 23 15:36:30 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 23 19:10:06 2026 +0000"
      },
      "message": "IMPALA-15086: (addendum) Add MERGE stress test for Iceberg V3 tables\n\nExtend test_merge_stress.py to also exercise Iceberg V3 tables.\n\nChange-Id: Ib5ed047d38cca1a18c86d9359d4f668d4119756d\nAssisted-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24501\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "9d4c36a6575259c86f4dd1edbff476c59b7a0376",
      "tree": "7bd4550f0aad5b18f9bac37fa4bb3c2e22f826dc",
      "parents": [
        "891b162a29bf6ac73637349e8dd35176242b48e2"
      ],
      "author": {
        "name": "jasonmfehr",
        "email": "jfehr@cloudera.com",
        "time": "Tue Jan 13 07:59:48 2026 -0800"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Tue Jun 23 14:28:03 2026 +0000"
      },
      "message": "IMPALA-14681: Add Agent Instruction Files\n\nAdds agent instructions files following the agents.md and\nagentskills.io specifications.\n\nAdded skills:\n1. build-one-cc-file: Compiles a single C++ source code .cc file\n    to ensure no compile errors existin the file.\n2. git-fixup-push: Combines all local commits into a single commit\n    for one Gerrit change using the commit message from the original\n    git commit for the change, dry runs a Jenkins critique, and\n    pushes a new gerrit draft patchset.\n\nTesting accomplished using Copilot in VSCode with the GPT-5.3-Codex\nmodel.\n\nChange-Id: I3063bcff29a97ac30770ae53febd53813a4974e9\nAssisted-by: GPT-5.3-Codex (Copilot)\nReviewed-on: http://gerrit.cloudera.org:8080/23866\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "891b162a29bf6ac73637349e8dd35176242b48e2",
      "tree": "a594d4bee63fbee16035c1776b798e6e689698aa",
      "parents": [
        "a26c1e813ca69d69530aea47d14af51e912aad84"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Wed Jun 17 17:36:42 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jun 22 15:22:21 2026 +0000"
      },
      "message": "IMPALA-15086: Add stress tests for Iceberg V3 tables\n\nExtend existing Iceberg stress tests to also cover V3 tables which use\ndeletion vectors instead of positional delete files.\n\n- Parameterize iceberg-update-stress.test with $FORMAT_VERSION so both\n  V2 and V3 are exercised from a single test file.\n- Add V3 variants to the concurrent update and concurrent\n  delete+update+optimize stress tests.\n- Hive-based concurrent tests are not extended to V3 since Hive does not\n  support V3 deletion vectors.\n\nTesting: existing V2 tests still pass; V3 variants exercise the same\ninvariants (column sums, consecutive id ranges, no orphan files).\n\nChange-Id: I7a3f2c8e9d1b4a6e5f0c3d2b1a9e8f7d6c5b4a3e\nAssisted-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24481\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "a26c1e813ca69d69530aea47d14af51e912aad84",
      "tree": "30b313e890e65c8fd476cb3d7521b67790187304",
      "parents": [
        "dc6a7d4a7a761df102cf1d5df5a99b87774d3155"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Fri Jun 19 22:56:56 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Sat Jun 20 01:45:06 2026 +0000"
      },
      "message": "IMPALA-15112: Silence wget calls in utility scripts\n\nAdd \u0027-q\u0027 (--quiet) or \u0027-nv\u0027 (--no-verbose) flags to wget calls in\nvarious setup and utility scripts to ensure that build logs are not\npolluted by interactive progress bars/progress reports.\n\nChange-Id: I6a9b578291812dbf5de52d34b718c8a8e3463b38\nReviewed-on: http://gerrit.cloudera.org:8080/24487\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "dc6a7d4a7a761df102cf1d5df5a99b87774d3155",
      "tree": "62c763537bee3f3dbf49b83a53b31c059e374498",
      "parents": [
        "872fc534e58b8af1f8e9ae980278d53505e98c82"
      ],
      "author": {
        "name": "Noemi Pap-Takacs",
        "email": "npaptakacs@cloudera.com",
        "time": "Thu Jun 04 17:46:44 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jun 19 19:22:40 2026 +0000"
      },
      "message": "IMPALA-15079: Cleanup Open/Close locking in SharedJdbcConnection\n\nChanges:\n- simplified Open() logic which waited on condition_variable\n  without any benefit\n- renamed open_mu_ to lock_ which is the usual name in Impala\n- changed ref_count_ from atomic to simple int protected by lock_\n  as it is not used frequently\n\nChange-Id: Ic9f5c4ac71031b74b51bfa27ed04be10ed92e222\nReviewed-on: http://gerrit.cloudera.org:8080/24416\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "872fc534e58b8af1f8e9ae980278d53505e98c82",
      "tree": "7f6eb815241e3079b7521842e41944af38b0ab84",
      "parents": [
        "5781b1be3953095e0dfb0bba3ea88ccbf21219b4"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Thu Jun 11 18:43:09 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jun 18 17:49:49 2026 +0000"
      },
      "message": "IMPALA-14685: Fix incorrect outer-to-inner join conversion with NOT predicates\n\nThe outer-to-inner join transformation incorrectly converted LEFT OUTER\nJOINs to INNER JOINs when the WHERE clause contained negated conjunctive\npredicates like NOT(t1.col \u003d val AND t2.col \u003d val). This is equivalent to\n(t1.col !\u003d val OR t2.col !\u003d val) via De Morgan\u0027s law, which does NOT\nprove the nullable side is non-null (t2 can be all-NULL while the OR is\nsatisfied by the t1 operand).\n\nThe fix calls Expr.pushNegationToOperands() at the top of\nisNullableConjunct() so that NOT(A AND B) is transformed to\n(NOT A) OR (NOT B) before the existing OR-detection logic runs.\n\nTesting:\n * Added e2e tests verifying the join is not converted\n * Added planner tests verifying the plan retains LEFT OUTER JOIN\n\nChange-Id: Ia1737b63765471f155eba268b5798b18277b7733\nAssisted-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24441\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "5781b1be3953095e0dfb0bba3ea88ccbf21219b4",
      "tree": "5304eb2e16ae216be0e4101b8edc0a853176450d",
      "parents": [
        "13d93945788ba0888ccb77f502a3b12859e77e3e"
      ],
      "author": {
        "name": "Anubhav Jindal",
        "email": "anubhavjindal30@gmail.com",
        "time": "Thu Jun 11 22:29:08 2026 -0700"
      },
      "committer": {
        "name": "Jason Fehr",
        "email": "jfehr@cloudera.com",
        "time": "Thu Jun 18 15:14:18 2026 +0000"
      },
      "message": "IMPALA-14978: Add runnable Helm values examples\n\nAdd runnable values files to document common starting configurations for\nKubernetes deployments.\n\nInclude a minimal Impala example (values-example.yaml), an OpenLDAP chart\nexample (values-ldap-example.yaml), and a self-contained Impala LDAP auth\nexample (values-impala-ldap-example.yaml). Clarify that values-ldap-example.yaml\nis for openldap/openldap, not the Impala chart.\n\nAlign shared warehouse storage access mode with multi-node safe defaults and add\nASF license headers for new example files.\n\nTesting:\n- helm lint helm/impala\n- helm template impala14978-example helm/impala -f helm/impala/values-example.yaml\n- helm repo add openldap https://jp-gouin.github.io/helm-openldap/\n- helm repo update\n- helm template impala14978-openldap openldap/openldap -f helm/impala/values-ldap-example.yaml\n- helm template impala14978-impala-ldap helm/impala -f helm/impala/values-impala-ldap-example.yaml\n- kubectl config current-context (k3d-impala-live)\n- kubectl create namespace impala-14978-live\n- helm upgrade --install impala-14978-live helm/impala -n impala-14978-live \\\n  -f helm/impala/values-example.yaml --set persistence.accessModes[0]\u003dReadWriteOnce\n- kubectl rollout status deployment/impala-14978-live-impala-{statestored,catalogd,impalad,hms} \\\n  -n impala-14978-live\n- kubectl get pods -n impala-14978-live (all Running/Ready)\n- kubectl create namespace impala-14978-ldap-live\n- helm upgrade --install impala-14978-ldap-live helm/impala -n impala-14978-ldap-live \\\n  -f helm/impala/values-impala-ldap-example.yaml --set persistence.accessModes[0]\u003dReadWriteOnce\n- kubectl rollout status deployment/impala-14978-ldap-live-impala-{statestored,catalogd,impalad,hms} \\\n  -n impala-14978-ldap-live\n- kubectl get deployment impala-14978-ldap-live-impala-impalad -n impala-14978-ldap-live \\\n  -o jsonpath\u003d\u0027{.spec.template.spec.containers[0].args}\u0027 (contains -enable_ldap_auth)\n\nChange-Id: Ib5c6ab7386bdd791a057b6402e15a82d97c1c381\nAssisted-by: GPT-5.3 (Cursor)\nReviewed-on: http://gerrit.cloudera.org:8080/24344\nReviewed-by: Gokul Kolady \u003cgokul.kolady@cloudera.com\u003e\nReviewed-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\nTested-by: Jason Fehr \u003cjfehr@cloudera.com\u003e\n"
    },
    {
      "commit": "13d93945788ba0888ccb77f502a3b12859e77e3e",
      "tree": "f755e41d2eadcd0b9a0ad8b01d9eb41e62b37848",
      "parents": [
        "cffe56518feb0a899c9cee9dd7bdb10f96106abc"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Fri Jun 12 21:26:15 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Thu Jun 18 05:11:17 2026 +0000"
      },
      "message": "IMPALA-14787: Add support for Redhat 10 and SLES 16\n\nThis picks up a toolchain with Redhat 10 x86_64 support:\n - Redhat 10 only includes JDK 21 and above in the package\n   repositories. This defaults to JDK 21 for Redhat 10.\n   IMPALA-15108 is the epic to track full JDK 21 support.\n   Initial tests didn\u0027t see any issues with JDK 21.\n - It modifies bin/bootstrap_system.sh to support Redhat 10.\n   Redhat 10 doesn\u0027t have the same \"family\" structure for\n   java alternatives, so it needs to specify the actual\n   path instead. There are also differences in how to\n   use the epel repository.\n - Redhat 10\u0027s \"uname -p\" returns \"unknown\" to be more POSIX\n   compliant. We use this to detect ARM in several places, so\n   this replaces \"uname -p\" with \"uname -m\" (machine), which\n   provides equivalent functionality.\n - This drops logic for some unsupported distributions from\n   our Docker image logic (Redhat 7, Ubuntu 16/18).\n - Since we applied a patch to opentelemetry-cpp, some OTEL tests\n   that depend on that version number needed to change to\n   either strip the patch number or accomodate it.\n - To make it easier to test new distributions, this changes the\n   logic in bin/jenkins/all-tests.sh to only use ninja if the\n   system has ninja.\n\nThis has not tested SLES 16 yet. Redhat 10 ARM support will\nbe added in IMPALA-15104.\n\nTesting:\n - Ran a core job on Redhat 10. It bootstraps and runs all the\n   tests. There are a few failures that we\u0027ll need to address\n   separately, but broadly, the job is functional.\n - Ran core job on Ubuntu 20\n\nChange-Id: I50acc5fbb4968e4310c4f84dde1d5b931b0385ec\nReviewed-on: http://gerrit.cloudera.org:8080/24459\nReviewed-by: Laszlo Gaal \u003claszlo.gaal@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "cffe56518feb0a899c9cee9dd7bdb10f96106abc",
      "tree": "80e9f6895c748676675eddb9a783a692d00c3dad",
      "parents": [
        "e1391bcf8869ee5f649bc30bd9988e24ba88e21d"
      ],
      "author": {
        "name": "Arnab Karmakar",
        "email": "arnabk1108@gmail.com",
        "time": "Sat Jun 13 12:06:35 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jun 17 19:57:29 2026 +0000"
      },
      "message": "IMPALA-15076: Fix JDBC scan duplication in UNION ALL and ResultSet race\n\nAfter IMPALA-14523 patch (shared JDBC cursor fetching), UNION ALL\nqueries with JDBC tables produced incorrect results due to\nduplicate table scans. The scheduler assigned each JDBC scan node to a\ndifferent executor based on node_id, causing UNPARTITIONED union\nfragments to spawn instances on multiple executors. Each instance would\nexecute all scan nodes in the union, but only one had assigned ranges,\nleading to 3x result duplication in queries.\n\nThe fix changes JDBC executor selection to hash fragment_idx instead of\nnode_id, ensuring all JDBC scans within a union fragment are co-located\non the same executor. This preserves the shared connection optimization\nwhile preventing duplicate reads.\n\nAdditionally, fixed a race condition in JdbcRecordIterator where multiple\nthreads could call ResultSet.next() after end-of-stream. Per JDBC spec,\nthis behavior is vendor-specific for TYPE_FORWARD_ONLY result sets and\nmay throw SQLException. Added an endOfStream flag guarded by fetchLock\nto prevent post-EOS next() calls.\n\nTesting:\n- Core TPC-DS JDBC tests now pass\n- All tests passed with exhaustive exploration strategy using release build\n- Added JDBC UNION ALL planner tests\n\nChange-Id: I60ed011faa2177af67ea681c2cd2967648e4a963\nReviewed-on: http://gerrit.cloudera.org:8080/24464\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "e1391bcf8869ee5f649bc30bd9988e24ba88e21d",
      "tree": "811210c5cc146ebf330a477106354759fa024d95",
      "parents": [
        "0b8294b1a5b0ad4a817dee13b7fbb2ee53f534e2"
      ],
      "author": {
        "name": "Shaunak5ach",
        "email": "shacharya@cloudera.com",
        "time": "Mon Jun 15 21:09:30 2026 +0530"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jun 17 18:28:35 2026 +0000"
      },
      "message": "IMPALA-15058: Fix incorrect server_name startup flag in Python scripts\n\nThis patch updates the cluster orchestration layer and test configurations\nto use the correct server_name startup flags. It ensures the parameters\nproperly align with the updated execution parameters.\n\nChange-Id: I5e47ab7e82b2eb76c839380bf1e3c2090a732e87\nAssisted-by: Gemini \u003chttps://gemini.google.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24466\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "0b8294b1a5b0ad4a817dee13b7fbb2ee53f534e2",
      "tree": "cb76e29d04c1585e42d284eb2796e460884b4a6c",
      "parents": [
        "d4aa2350b37faf77bf8dc910cd070562499fb8ab"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Wed May 13 23:09:31 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue Jun 16 21:33:37 2026 +0000"
      },
      "message": "IMPALA-14702 (prep): Add an abstraction around malloc implementation details\n\nThis adds a MallocUtil abstraction around the malloc implementation\nto make it easier to try other mallocs. This has different\nMallocUtil libraries for different malloc implementations:\n - gperftools tcmalloc\n - sanitizer builds (which have their own malloc implementation)\n - libc malloc (used only for certain tests).\n\nPrograms should set any relevant startup flags, then call\nMallocUtil::Init() to apply the settings.\n\nThis introduces a tcmalloc_aggressive_memory_decommit startup\nflag, but limits the configurability and retain existing behavior.\nImpalad is hard coded to use tcmalloc_aggressive_memory_decommit\u003dtrue\nand does not respect a user\u0027s value. Other binaries default to\ntcmalloc_aggressive_memory_decommit\u003dfalse but will respect a\ncustom value.\n\nImpalad\u0027s memory tracker has an entry for the malloc overhead.\nThis converts it to a regular metric so that it is available\nfor other daemons.\n\nTesting:\n - Ran core job\n - Ran pprof locally against the heap profiler endpoint\n\nChange-Id: I3ac7841cf279ac40141147d4be9192894d6dc908\nReviewed-on: http://gerrit.cloudera.org:8080/24401\nReviewed-by: Joe McDonnell \u003cjoemcdonnell@cloudera.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Joe McDonnell \u003cjoemcdonnell@cloudera.com\u003e\n"
    },
    {
      "commit": "d4aa2350b37faf77bf8dc910cd070562499fb8ab",
      "tree": "d0afea6a0b48f151fa30866af5f547f7bb6390bb",
      "parents": [
        "f7449b26477c6c7654ad9b7d03710332200f2a33"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Tue Jun 16 11:45:07 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 16 17:36:02 2026 +0000"
      },
      "message": "IMPALA-15105: Don\u0027t package test configuration files in calcite-planner\n\nThe calcite-planner module declares fe/src/test/resources as a maven\nresource directory, which causes all configuration files (e.g.,\nhive-site.xml) for testing are packaged into the jar file. They could be\nused in production, which overwrites the real configuration files.\n\nThis patch removes it and modifies TpcdsCpuCostPlannerTest to copy the\nconfiguration files in classpath directories, so don\u0027t need them in the\njar file.\n\nTesting\n - Ran Java unitests in calcite-planner.\n\nAssisted-by: Opus 4.8 (Cursor)\nChange-Id: I2780ad8fc9d0c8b9f1a1962dc0f9eb7d167b1783\nReviewed-on: http://gerrit.cloudera.org:8080/24473\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "f7449b26477c6c7654ad9b7d03710332200f2a33",
      "tree": "26b0fd3e8f2e77f32a80a5df43106e7207b0ec1b",
      "parents": [
        "23b5c1e849cf9f3e223c9554dc15f5c57f515ada"
      ],
      "author": {
        "name": "Arnab Karmakar",
        "email": "arnabk1108@gmail.com",
        "time": "Tue Jun 16 00:02:32 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Tue Jun 16 17:30:01 2026 +0000"
      },
      "message": "IMPALA-13870: Add operator\u003c\u003c for StringVal to prevent unsafe ptr usage\n\nStringVal buffers are not null-terminated, but manual string\nconstruction from ptr/len is error-prone. This change adds a\nlength-safe stream operator that handles NULL values and\nnon-terminated buffers correctly.\n\nThe operator uses ostream::write(ptr, len) to ensure only len bytes\nare printed, never relying on null termination.\n\nTesting:\n- Added unit tests including special cases for NULL, empty,\n  non-terminated, and embedded-null cases\n\nChange-Id: I2dd226d69fee428b5b38bdbf84dc73de4293c81b\nReviewed-on: http://gerrit.cloudera.org:8080/24474\nReviewed-by: Peter Rozsa \u003cprozsa@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\n"
    },
    {
      "commit": "23b5c1e849cf9f3e223c9554dc15f5c57f515ada",
      "tree": "d6e622797ec8c67af10be0039fc16876d004cdb5",
      "parents": [
        "35d64f5ca0a6b7c83fe4785919bcd9aaf19c77d9"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Tue Jun 09 12:06:01 2026 +0200"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Tue Jun 16 17:28:35 2026 +0000"
      },
      "message": "IMPALA-15085: DML statements should always shuffle when target table is Iceberg V3\n\nWithout this patch the MERGE statement didn\u0027t always shuffle\nbefore the MERGE SINK for Iceberg V3 tables. For such tables it is\nmandatory to shuffle to guarantee that only a single Deletion Vector\nis being created per data file.\n\nDELETE/UPDATE worked correctly even before this patch, but added extra\ntests anyway.\n\nTesting\n* e2e tests added\n\nChange-Id: Ic7aeed31b832521f0a619c15c116a954c134e4b2\nAssisted-by: Claude Opus 4.6\nReviewed-on: http://gerrit.cloudera.org:8080/24425\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "35d64f5ca0a6b7c83fe4785919bcd9aaf19c77d9",
      "tree": "cb18ecd1119a03bb85c27b26a85d9c0933348205",
      "parents": [
        "fb93df7a5991c196531ee43ca23158e59e165a02"
      ],
      "author": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Thu Jun 11 18:30:01 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 16 16:56:39 2026 +0000"
      },
      "message": "IMPALA-14993: Fix count star optimization incorrectly activating without count(*)\n\nThe Iceberg V2 count star optimization (optimizePlainCountStarQueryV2)\nactivated for queries like \u0027SELECT 1 FROM iceberg_table\u0027 when the table\nhad delete files, causing incorrect results (missing rows). The\nvalidation loop rejected non-count(*)/non-constant expressions but never\nverified that at least one count(*) was actually present.\n\nAdded a hasCountStarFunc guard matching the existing V1 method\u0027s logic.\nAlso added regression tests for both Iceberg V2 and V3 (Deletion Vector)\ntables.\n\nTesting:\n * Added V2 regression test with SELECT 1 on table with position deletes\n * Added V3 test covering count(*) optimization and the IMPALA-14993 fix\n\nChange-Id: I8eb13aecef6d3b7460f7201dce6e03d6f3de303a\nAssisted-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\nReviewed-on: http://gerrit.cloudera.org:8080/24440\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "fb93df7a5991c196531ee43ca23158e59e165a02",
      "tree": "273868a995d7475c6a50a2215608758b159d8767",
      "parents": [
        "33d9560f52717994dc7948756c571f65e6338df2"
      ],
      "author": {
        "name": "Balazs Hevele",
        "email": "bhevele@cloudera.com",
        "time": "Fri Mar 27 12:13:10 2026 +0100"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Tue Jun 16 13:35:58 2026 +0000"
      },
      "message": "IMPALA-14851: Codegen GroupingAggregator::CopyGroupingValues\n\nCreated codegen for GroupingAggregator::CopyGroupingValues.\nThis function runs when a new, distinct value is seen during a group by\naggregation.\n\nMeasurements:\nMeasured using the following:\n  set num_nodes\u003d1; set mt_dop\u003d1;\n  SELECT COUNT(DISTINCT l_orderkey, l_comment) FROM tpch.lineitem;\n\nAGGREGATION_NODE Avg Time changed from 743.281ms to 659.414ms.\n\nCodegen:\n  Before:\n    NumInstructions: 1.42K (1422)\n    NumOptimizedInstructions: 931 (931)\n    ModuleBitcodeSize: 3.67 MB (3846476)\n  After:\n    NumInstructions: 1.54K (1541)\n    NumOptimizedInstructions: 1.05K (1047)\n    ModuleBitcodeSize: 3.42 MB (3590728)\n\nTesting:\nRan existing exhaustive and ASAN tests with patch.\n\nChange-Id: Ia2c54a5745ba05a926795318d3b074fde6d0c00a\nReviewed-on: http://gerrit.cloudera.org:8080/24132\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    },
    {
      "commit": "33d9560f52717994dc7948756c571f65e6338df2",
      "tree": "adbca96a5e138c89f1339e00b3c5e403766bccc6",
      "parents": [
        "1213504bdea08ff43912f38ad3be24dac1123561"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Fri Sep 27 08:34:26 2024 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 16 10:48:06 2026 +0000"
      },
      "message": "IMPALA-15103: Hive configuration should honor the HDFS_REPLICATION env variable\n\nThis changes hive-site.xml.py to use the HDFS_REPLICATION\nenvironment variable to set Hive\u0027s configuration for\nHDFS replication. This makes setting HDFS_REPLICATION\u003d1\napply to Hive tables. This is particularly useful when\nusing larger scale factors of TPC-H/TPC-DS to avoid excess\ndisk space use. Using this on a standard dataload is\nfairly functional, but it will break some planner tests.\n\nTesting:\n - Ran bin/single_node_perf_run.py with this setting and\n   monitored disk space usage\n\nChange-Id: Iceeaed41eb5b3797459c0a3035d159d903453eeb\nReviewed-on: http://gerrit.cloudera.org:8080/24461\nReviewed-by: Joe McDonnell \u003cjoemcdonnell@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "1213504bdea08ff43912f38ad3be24dac1123561",
      "tree": "928bdd98a42c84a77808d68a60d94baab3c109a3",
      "parents": [
        "effcbae94bb84abd20da7ec5742a5811b24f170c"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Mon Dec 29 22:45:05 2025 +0800"
      },
      "committer": {
        "name": "Zoltan Borok-Nagy",
        "email": "boroknagyz@cloudera.com",
        "time": "Tue Jun 16 08:31:26 2026 +0000"
      },
      "message": "IMPALA-14647: Fix truncate for replicated txn tables always delete data\n\nIf a transactional table is being replicated by Hive replication, Impala\nuses the truncateTable HMS API to truncate it. However, the last\nparameter (boolean deleteData) is not set, which causing HMS always\ndelete the data.\n\nIn HiveServer, there is a configuration, \"hive.acid.truncate.usebase\",\nto control whether to create a new base_* dir (so keep the data files)\nfor truncate operation. This patch fixes the API invocation to respect\nthis configuration.\n\nNote that for non-transactional tables, the behavior is still deleting\nthe data files, which is consistent with Hive.\n\nTests:\n - Added test to verify the data files exist after truncate.\n - Added util method to fetch effective hadoop and hive configs from the\n   /hadoop-varz endpoint.\n\nChange-Id: Ia31991baeb2ef8717c387b841b65cff562dbcae0\nReviewed-on: http://gerrit.cloudera.org:8080/23810\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    },
    {
      "commit": "effcbae94bb84abd20da7ec5742a5811b24f170c",
      "tree": "a75b544c9f4c39d4d6dc1ef17c9e590a86c756b4",
      "parents": [
        "cef927cafef9037d8917a0c3f00b09fcab8b38c9"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Fri Jun 12 13:34:46 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jun 15 13:24:15 2026 +0000"
      },
      "message": "IMPALA-15095: Fix FilterTable in plan-graph.py missing a new column\n\nIMPALA-14796 adds a new column, \"Eff. Tgt. Node(s)\", in the \"Final\nfilter table\" of the query profile. plan-graph.py should also be updated\nto handle the new column.\n\nThis fixes the issue and adds a test to avoid future profile changes\nbreak plan-graph.py.\n\nAssisted-by: Composer 2.5\nChange-Id: Ibe187bc209d2d4c64d2eb09c8aaa45d9f0370e45\nReviewed-on: http://gerrit.cloudera.org:8080/24450\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "cef927cafef9037d8917a0c3f00b09fcab8b38c9",
      "tree": "e13becd509ec3ed1c49c7264c44dd235cfcb1248",
      "parents": [
        "f4a82dc1c26daa7f26c3c1a8d5b9c222bfb4085f"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Mon Mar 16 23:14:35 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jun 15 08:25:50 2026 +0000"
      },
      "message": "IMPALA-14597: Initial HBO support\n\nThis adds the initial support for Historical Based Optimizer (HBO).\nExecution stats of finished queries are used in planning new queries.\nIn the first patch, we just track the cardinality, i.e., number of\noutput rows, of the PlanNodes. Other execution stats, e.g., peak memory\nusage, average row size, cpu usage, etc. will be added in the future.\n\nExecution stats are cached as key-value format. Each PlanNode defines a\nkey string consists of the key information that is used to match\nhistorical runs. The key in the HBO cache is a hash of this string. In\nthis patch, we just supports HdfsScanNode cardinality. Its key string\nconsists of\n - scan path, e.g., fully qualified table name.\n - conjuncts including partitioned conjuncts and other conjuncts.\n - limit\n\nCanonicalization\n----------------\nTo share execution stats across similar queries, the conjuncts are\ncanonicalized using different levels of strategies. Two strategies are\nadded in this patch, listed in ascending order of risk:\n - EXPR_REWRITE\n - IGNORE_PARTITION_CONSTANTS\n\nEXPR_REWRITE rewrites and normalizes the expressions to the same form,\ne.g. \"a IN (2, 1)\" -\u003e \"a IN (1, 2)\". It guarantees the expressions are\nlogically equivalent.\n\nIGNORE_PARTITION_CONSTANTS includes everything of the EXPR_REWRITE\nstrategy but removes constants from equality predicates on partition\ncolumns, including IN predicates. This strategy assumes all partitions\nof the same table have similar characteristics. E.g., assuming ds is a\npartition column, the strategy canonicalizes ds \u003d \u002720260331\u0027 to\nds \u003d \u003cCONST\u003e where \u003cCONST\u003e is a placeholder. However, for non-equality\npartition predicates, e.g., ds \u003e \u002720260331\u0027, it keeps them as-is.\n\nEach PlanNode will have several HBO key strings each corresponds to a\ncanonicalization strategy. In the future, we can add more strategies,\ne.g., to deal with range partition predicates.\n\nMatching HBO Stats\n------------------\nAfter canonicalization, similar PlanNode runs have the same HBO key\nstring thus have the same hash. To track more historical runs, the value\nin the HBO key-value cache is a list of different runs, distinguished by\ntheir input stats including number of input rows, catalog version of the\ntable, total input size, etc. Basically only the number of input rows is\nused. The other fields are only used when it\u0027s missing (due to numRows\nof some partitions are missing), and in that case, only the EXPR_REWRITE\ncanonicalization strategy is used. See more details in HistoricalStats\nclass.\n\nThis matching mechanism is used when writing and reading historical\nstats. Two new flags are added for this:\n- hbo_similarity_threshold: Threshold in [0, 1] for comparing scan input\n  rows. Two runs are considered similar if the relative difference is\n  within this threshold. Default is 0.1 (10% tolerance).\n- hbo_max_runs_per_key: Maximum number of historical runs to retain per\n  hash key in the HBO cache. When exceeded, the oldest run is evicted.\n\nStoring HBO Stats\n-----------------\nStoring HBO stats is done asynchronously in the existing unregistration\nthread pool, before the query profile is archived. So this adds no\nlatency to the query execution. A new query option, store_hbo_stats, is\nadded to configure whether to store HBO stats of a query.\n\nOutput cardinalities are extracted from the ExecSummary, and stored\nusing the hash strings generated from Frontend. There are some cases\nthat we decide to skip a HdfsScanNode since the ExecSummary might be\nincomplete:\n - the query failed or is cancelled.\n - there are effective runtime filters, i.e., removed some data in the\n   HdfsScanNode. The output cardinality depends on when the runtime\n   filters arrive.\n - the PlanNode execution is cancelled, e.g., due to the parent node\n   reaching its limit. The output cardinality changes if using this\n   PlanNode in other query plan.\n\nIn this patch, HBO stats are stored in memory so coordinators can\u0027t\nshare them. More storage supports will be added in IMPALA-14598.\nThe following flag is added to configure the cache size limit:\n - hbo_in_memory_backend_cache_size_bytes\n\nReading HBO Stats\n-----------------\nHistoricalStats class provides HBO stats for any Frontend code. For\nHdfsScanNode cardinality which is updated in computeCardinalities(), a\nHBO key string is generated for each canonicalization strategy. They are\nused in ascending order of risk. If the first strategy doesn\u0027t find any\nmatch, we will try the next strategy. Cardinality from the HBO stats\noverwrites the estimated cardinality.\n\nA new query option, use_hbo_stats, is added to configure whether to use\nHBO stats in query planning.\n\nObservability\n-------------\nIn the query plan, a marker, \"(from HBO)\" is added for each cardinality\nthat are retrieved from HBO stats, e.g.\n  01:SCAN HDFS [functional.alltypes b]\n     partition predicates: b.`year` \u003d 2010\n     HDFS partitions\u003d12/24 files\u003d12 size\u003d239.77KB\n     predicates: b.int_col \u003d 0, b.string_col \u003d \u00270\u0027\n     runtime filters: RF000 -\u003e b.id\n     row-size\u003d21B cardinality\u003d365 (from HBO)\n\nThe observability change is mainly contributed by Xuebin Su\n(xsu@cloudera.com).\n\nTests\n-----\n - Adds a new table alltypes_nonpartitioned for testing non-partitioned\n   (but with year, month columns) scenarios.\n - Added e2e tests\n\nAssisted-by: Claude Sonnet 4.5\nAssisted-by: Composer 2\nChange-Id: I6ff60a8bd22c13c0ecad1198934cc96249b1015e\nReviewed-on: http://gerrit.cloudera.org:8080/24153\nReviewed-by: Aman Sinha \u003camsinha@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "f4a82dc1c26daa7f26c3c1a8d5b9c222bfb4085f",
      "tree": "63a853c54b87237c323f1de856d13ba494b39082",
      "parents": [
        "b68ad8ffaf16bc08433b00328562549357de815c"
      ],
      "author": {
        "name": "Xuebin Su",
        "email": "xsu@cloudera.com",
        "time": "Tue May 19 14:06:11 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Mon Jun 15 07:51:19 2026 +0000"
      },
      "message": "IMPALA-15013: Fix NULL issues for PIVOT\n\nPreviously, the PIVOT operation returned NULL instead of 0 for `count()`\nwhen no row matches the value. This was because the `aggif()` function\nit used returns NULL when its predicate is never satisfied.\n\nThis patch fixes the issue by adding a `ifnull()` call on the output of\n`aggif()` so that a non-NULL value can be returned based on the return\ntype of the original aggregate function. For `count()`, 0 will be\nreturned in this case since its return type is BIGINT.\n\nTo support specifying the NULL literal in the PIVOT clause, this patch\nchanges to using the `IsNullPredicate` instead of the `BinaryPredicate`\nin the `aggif()` calls.\n\nThis patch also changes `returnsNonNullOnEmpty` to true when creating\nthe `aggif()` and the `appx_median()` functions to match the actual\nbehavior.\n\nTesting:\n- Added E2E tests for NULL cases.\n- Added AnalyzeStmtsTests for unsupported aggregate functions.\n\nChange-Id: Idae4a510dd3d6c4cd16a3e03aa0161ad84863e5a\nReviewed-on: http://gerrit.cloudera.org:8080/24325\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "b68ad8ffaf16bc08433b00328562549357de815c",
      "tree": "931951db412b72514c4415d5b0986f9d1ff811bf",
      "parents": [
        "c8ec628c5ddc32b68842b8038522c587f313f277"
      ],
      "author": {
        "name": "Stamatis Zampetakis",
        "email": "zabetak@gmail.com",
        "time": "Wed Apr 15 15:40:50 2026 +0000"
      },
      "committer": {
        "name": "Steve Carlin",
        "email": "scarlin@cloudera.com",
        "time": "Sun Jun 14 13:49:03 2026 +0000"
      },
      "message": "IMPALA-14916: Display Calcite plan in EXPLAIN output\n\n1. Add new query option (i.e., ENABLE_EXPLAIN_CALCITE) for controlling\nwhether the Calcite plan is displayed as part of the EXPLAIN output.\n2. Modify the SingleNodePlannerIntf exposing Calcite plan if available.\nUse String to avoid dependencies of the module to Calcite.\n3. Adapt Planner to check for the respective option when writting the\ncontent for the EXPLAIN.\n4. Set the corresponding query option in TpcdsCpuCostPlannerTest to\ndisplay the Calcite plan in every file.\n5. Set file.encoding to UTF-8 since Calcite plans contain non-ASCII\ncharacters and inconsistent read/write leads to failures.\n\nChange-Id: Iec51e2b4315e95020e1826acfa477aaea4c45601\nReviewed-on: http://gerrit.cloudera.org:8080/24229\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nReviewed-by: Steve Carlin \u003cscarlin@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "c8ec628c5ddc32b68842b8038522c587f313f277",
      "tree": "071bdd21693ea1790be1a793cef2e91f506a51d0",
      "parents": [
        "3af960a2665eb702aeb40b1ab5377bf6241e1593"
      ],
      "author": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Thu Jun 11 10:43:56 2026 -0700"
      },
      "committer": {
        "name": "Michael Smith",
        "email": "michael.smith@cloudera.com",
        "time": "Fri Jun 12 17:13:23 2026 +0000"
      },
      "message": "IMPALA-15092: Update threat model for URIs\n\nUpdates the threat model to note Ranger gating on URIs for CREATE\nFUNCTION and CREATE DATA SOURCE.\n\nChange-Id: Ie7a4f22f044cc2f162be7171682f94a95bfb8515\nReviewed-on: http://gerrit.cloudera.org:8080/24442\nReviewed-by: Fang-Yu Rao \u003cfangyu.rao@cloudera.com\u003e\nReviewed-by: Zoltan Borok-Nagy \u003cboroknagyz@cloudera.com\u003e\nTested-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\n"
    },
    {
      "commit": "3af960a2665eb702aeb40b1ab5377bf6241e1593",
      "tree": "a9d8ab11bacf1ffb7776ba39b258cc6aeb2e2bb6",
      "parents": [
        "8f6fdc0f3910503556fc088cc4ef306ac5e96009"
      ],
      "author": {
        "name": "Arnab Karmakar",
        "email": "arnabk1108@gmail.com",
        "time": "Tue Jun 09 02:16:52 2026 -0700"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jun 12 15:21:48 2026 +0000"
      },
      "message": "IMPALA-14833: Add Iceberg V3 write-default support to MERGE INSERT\n\nEarlier, MERGE INSERT with a column permutation that omitted\ncolumns with write-defaults would fill them with NULL. Now, for\nIceberg tables, unmentioned columns use the write-default value\ndefined in the Iceberg schema metadata (falling back to NULL when\nno write-default is set).\n\nTesting:\n- Added e2e tests covering:\n  - MERGE INSERT with column permutation omitting a column that\n    has a write-default (verifies default is applied)\n  - MERGE INSERT with all columns explicit (default not used)\n  - MERGE INSERT with explicit NULL (overrides write-default)\n  - MERGE INSERT with all data types that support write-defaults\n    (INT, BIGINT, FLOAT, DOUBLE, STRING, DATE, BOOLEAN, DECIMAL)\n\nChange-Id: I5d2960b1517c67eaece001875079041d33b19cec\nReviewed-on: http://gerrit.cloudera.org:8080/24424\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "8f6fdc0f3910503556fc088cc4ef306ac5e96009",
      "tree": "8c72324d5727362b3d40911c15ae5def9adcce15",
      "parents": [
        "548df5824879fea3ec7476437fd9df1e7ca9a8d5"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Fri Mar 20 19:05:03 2026 +0800"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Fri Jun 12 03:29:30 2026 +0000"
      },
      "message": "IMPALA-14796: Show effective runtime filter targets in profile\n\nThis patch adds an \"Eff. Tgt. Node(s)\" (Effective Target Node(s)) column\nto the \"Final filter table\" in the query profile. This shows which scan\nnodes actually had rows rejected by each runtime filter, distinguishing\nfilters that were effective from those that were applied but rejected no\ndata. E.g.\n\n ID  Src. Node  Tgt. Node(s)  Eff. Tgt. Node(s)     Target type  ...\n--------------------------------------------------------------------\n 10          6             2                  2           LOCAL  ...\n  8          7             1                  1          REMOTE  ...\n  5          8             2                  2           LOCAL  ...\n  4          8             0                  N          REMOTE  ...\n  2          9          0, 3               0, 3  REMOTE, REMOTE  ...\n  0         10             4                  4          REMOTE  ...\n\nIn the above example, filter 4 has \"N\" in the \"Eff. Tgt. Node(s)\"\ncolumn, which means it doesn\u0027t filter out any rows, i.e. effective\ntarget node is \"None\". All the other filters are effective.\n\nImplementation\n - In ScanNode::Close(), collect the effective runtime filter ids by\n   checking the \"rejected\" counters of all the FilterStats. These\n   counters correspond to \"Files rejected\", \"RowGroups rejected\", \"Rows\n   rejected\", \"Splits rejected\" in the query profile. If any of them is\n   non-zero, the filter has rejected some data so it\u0027s effective.\n - Executor reports this info to coordinator via ReportExecStatus RPCs.\n   A list of (filter_id, scan_node_id) pairs is added in\n   ReportExecStatusRequestPB to carry this info.\n - Coordinator aggregates the effective filter targets when processing\n   the status reports.\n - In FilterDebugString(), add a column to show the node ids where the\n   runtime filter is effective.\n\nOther minor changes\n - In coordinator.cc, move the code of setting the \"Final filter table\"\n   from ReleaseExecResources() to ComputeQuerySummary() to ensure the\n   final status reports from backends all arrive.\n - Removed temp_object_pool and temp_mem_tracker from\n   FilterDebugString() as they have been unused since commit a985e11.\n - Replaced boost::lexical_cast\u003cstring\u003e with std::to_string in\n   converting int to string which is more optimized.\n - Sort node ids in \"Tgt. Node(s)\" and \"Eff. Tgt. Node(s)\" columns to\n   make the output consistent across different runs.\n\nLimitation\n - Kudu scanner doesn\u0027t expose metrics reflecting effect of individual\n   filters so we can\u0027t detect effective runtime filters on KuduScanNode.\n   Currently the \"Eff. Tgt. Node(s)\" column of them always has value \"N\"\n   (IMPALA-15002).\n\nTests\n - Added e2e test for TPCH-Q5 where some filters are ineffective in\n   both the original profile and aggregated profile modes.\n - Added checks in runtime_filters.test for queries that have only one\n   runtime filter.\n - Updated in_list_filters.test for the new column.\n - Ran tests on both the original planner and the calcite planner.\n\nAssisted-by: Claude Sonnet 4.5\nChange-Id: Iccf4b87ac4579a70273f3306ec7b58850f06b17c\nReviewed-on: http://gerrit.cloudera.org:8080/24123\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "548df5824879fea3ec7476437fd9df1e7ca9a8d5",
      "tree": "95a73cc1b95fbd407cc117adf3a77a2f5880d24e",
      "parents": [
        "ec104280d9d072359a04c16b6b37c5b760c30b6a"
      ],
      "author": {
        "name": "Peter Rozsa",
        "email": "prozsa@cloudera.com",
        "time": "Tue Jun 02 08:29:10 2026 +0200"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Thu Jun 11 17:52:49 2026 +0000"
      },
      "message": "IMPALA-15065: Fix incorrect partition spec identification when removing deletion vectors from Iceberg V3 tables\n\nWhen Impala removes an old deletion vector via rowDelta.removeDeletes(),\nit previously passed a DeleteFile reconstructed from the C++ flatbuffer\nusing FileMetadata.Builder. For tables whose partition spec is a void\ntransform (partitioned-to-unpartitioned evolution), FileMetadata.Builder\nproduces partition()\u003dnull. The manifest-resident entry for the same DV\nwas written with a non-null (empty) PartitionData. Iceberg\u0027s\nManifestFilterManager.canContainAny() then fails to match the manifest.\n\nThis change uses direct manifest entry lookup to locate the old deletion\nvectors based on the referenced data file path, it guarantees that the\nDeleteFile is removable in the row delta.\n\nTests:\n - added regression test to iceberg-v3-merge.test\n\nChange-Id: Iba280972e2089e92771c8b3f7355d916d46ad968\nReviewed-on: http://gerrit.cloudera.org:8080/24394\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "ec104280d9d072359a04c16b6b37c5b760c30b6a",
      "tree": "0197c021496c7f65754820d4c020eb3009ba827f",
      "parents": [
        "670872bc8b868ef6a6f08d524603f99c16cfb061"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Wed Jun 10 13:44:23 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Thu Jun 11 15:41:55 2026 +0000"
      },
      "message": "IMPALA-14182: Deflake test_breakpad.py\u0027s TestLogging* tests\n\nThese tests have been flaky with two types of error:\n - Exceeding the max expected log files\n - Exceeding the max expected log file size\nThis relaxes those two checks:\n - The enforcement of the max log files is done by a background\n   thread, and it can briefly exceed the number of log files.\n   This should be limited to a single log file per severity\n   level. This adjusts the max log file calculation to allow\n   for an extra log file per severity level.\n - This increases the max log file size from 1.2MB to 1.3MB.\nThis also changes the tests to preserve the logs if hitting\nany of these asserts. This should make it easier to tell\nwhat is happening if this reoccurs.\n\nTesting:\n - Ran TestLogging/TestLoggingExhaustive locally\n - Forced a failure and verified that the logs are preserved\n\nChange-Id: I79f97ca26320369ebb53f7f57e6c86e912c9cf02\nReviewed-on: http://gerrit.cloudera.org:8080/24437\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Joe McDonnell \u003cjoemcdonnell@cloudera.com\u003e\n"
    },
    {
      "commit": "670872bc8b868ef6a6f08d524603f99c16cfb061",
      "tree": "0de003eda0b427d3cdc5c5849dd9b40e22596991",
      "parents": [
        "892b756dcc6c8caade1ecbf43a4eead5864359b0"
      ],
      "author": {
        "name": "Surya Hebbar",
        "email": "shebbar@cloudera.com",
        "time": "Thu Jan 22 18:44:20 2026 +0530"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Thu Jun 11 08:18:19 2026 +0000"
      },
      "message": "IMPALA-12027: Support additional details for DataSink nodes in ExecSummary\n\nIn the \u0027Exec Summary\u0027 table, we show table names, joins and other details\nfor different types of `PlanNode`s with the help of `label_detail` field\nin the thrift representation(i.e. `TPlanNode`).\n\nThis field was not available for any type of `DataSink` nodes.\n\nWith this change, we support displaying table names and other details\nfor table sink nodes and other such `DataSink` nodes by introducing\nthe `label_detail` field into `TDataSink`.\n\nThis information is displayed in the last column of the ExecSummary,\nsimilar to how we show the table names for scan nodes.\n\nOperator     #Hosts  #Inst   Avg Time   Max Time ... ... Detail\n-----------------------------------------------------------\nF00:HDFS WRITE    1      1   13.122us   13.122us ... ... tpcds.write_table\n83:AGGREGATE      1      1  164.615us  164.615us ... ...\n32:SCAN HDFS      1      1   45.919us   45.919us ... ... tpcds.scan_table\n...\n...\n\nWith the same approach, additional details can be displayed by extending\nthis to other types of data sink nodes such as JoinBuildSink nodes.\n\nTesting:\n - Added new tests in tests/query_test/test_observability.py for\n   table details in ExecSummary\n\nChange-Id: I2652dd896f72c5c6bbe7e76facdede2a237808d5\nReviewed-on: http://gerrit.cloudera.org:8080/23889\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    },
    {
      "commit": "892b756dcc6c8caade1ecbf43a4eead5864359b0",
      "tree": "86559f668f9c400eaafd58b89d14e53ed41bd240",
      "parents": [
        "d19d209b63928daaea3029a8d71cf5fdf4583a94"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue Jun 09 14:49:19 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Thu Jun 11 05:21:50 2026 +0000"
      },
      "message": "IMPALA-15042: Use a clean environment for single_node_perf_run.py\u0027s subcommands\n\nbin/single_node_perf_run.py runs complicated things including\na whole build using Python subprocess. This is currently inheriting\nenvironment variables, which can cause complicated interactions.\nFor example, single_node_perf_run.py uses impala-python3, which\nsets LD_LIBRARY_PATH to point to the toolchain libstdc++. For\nnewer platforms (e.g. Ubuntu 22), this can cause issues for system\nbinaries like ccache that need a newer libstdc++. This can also\ncause issues with stuck variables when switching back and forth\nbetween the A and B git branches and sourcing bin/impala-config.sh.\n\nThis changes bin/single_node_perf_run.py to use a clean environment\nfor most subprocess invocations. This is a change in behavior as\nit previously respected the variables in the environment. Users can\nachieve the same impact by putting their environment variables in\nbin/impala-config-local.sh.\n\nTesting:\n - Ran a perf-AB-test job with Ubuntu 22 (which was previously\n   failing)\n\nChange-Id: I984b094be73b185ab151d5d1ba51602b7083d22a\nReviewed-on: http://gerrit.cloudera.org:8080/24430\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Joe McDonnell \u003cjoemcdonnell@cloudera.com\u003e\n"
    },
    {
      "commit": "d19d209b63928daaea3029a8d71cf5fdf4583a94",
      "tree": "07b12e4cf07736619bf184f52db41c38fbb30163",
      "parents": [
        "183f7b82b7bc1de12305d1fe8ba2ef52326379fa"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Fri May 29 22:41:03 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Wed Jun 10 20:11:55 2026 +0000"
      },
      "message": "IMPALA-12955: Slim down profile tool deps\n\nUse the RuntimeProfile source split from the parent change to link\nimpala-profile-tool against smaller dependency subsets. The tool no\nlonger pulls in unused runtime libraries such as HDFS, JVM, Kudu,\nSASL, Kerberos, SSL, and crypto dependencies.\n\nThe profile tool now links ProfileToolThrift, ProfileToolUtil, and\nStatusMinimal. Keep CMake source lists shared with the full targets to\navoid drift, and keep StatusMinimal in the global Impala link group so\nnormal backend binaries do not depend on transitive link ordering.\n\nMove GetStackTrace() into util/stack-trace.* so StatusMinimal and Util\ncan share it without linking debug-util.cc into the profile tool. Move\nStatus thrift/proto/HS2 conversions out of the Status class into\nstatus-serialization.* free functions.\n\nThe archive reader uses local base64 length validation, base64\nunescaping, zlib inflate, and local thrift deserialization to avoid\npulling coding-util.cc and thrift-util.cc dependencies into the\nprofile tool. Error messages distinguish invalid base64 length from\ninvalid base64 data.\n\nThe Linux dependency test checks both direct NEEDED entries and\ntransitive ldd output so regressions through shared helper libraries\nare caught.\n\nTests:\n- git diff --check\n- python3 -m py_compile \\\n  tests/observability/test_profile_tool_dependencies.py\n- ./buildall.sh -notests -noclean -cmake_only\n- make -C be/src/util impala-profile-tool -j 64\n- make Catalog Runtime Exec Scheduling Service Statestore -j 64\n- bin/create-test-configuration.sh\n- bin/impala-py.test -q tests/observability/test_profile_tool.py\n- ./buildall.sh -release -so -notests -noclean -cmake_only\n- make -C be/src/util impala-profile-tool -j 64\n- be/build/latest/util/impala-profile-tool --help\n- bin/impala-py.test -q \\\n  tests/observability/test_profile_tool_dependencies.py\n\nAssisted-by: OpenAI Codex\n\nChange-Id: Id476411dcf6c46079e2e2addc5cdd552bc23f8a1\nReviewed-on: http://gerrit.cloudera.org:8080/24358\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "183f7b82b7bc1de12305d1fe8ba2ef52326379fa",
      "tree": "c9c19c8305235d7588d0fd8355ac3f6b0f16239e",
      "parents": [
        "498d24d982affcc92ebaedf700be2c3156d8c1bc"
      ],
      "author": {
        "name": "Aleksandr Efimov",
        "email": "dzazheg@gmail.com",
        "time": "Tue Jun 09 12:24:02 2026 +0300"
      },
      "committer": {
        "name": "Impala Public Jenkins",
        "email": "impala-public-jenkins@cloudera.com",
        "time": "Tue Jun 09 22:54:19 2026 +0000"
      },
      "message": "IMPALA-15074: Remove loggingsupport library\n\nThe logging-support implementation is already part of the Util library and is\nlinked into the daemon binaries and libfesupport. The separate\nlibloggingsupport shared library duplicates that object into another\nheavyweight JNI library.\n\nRemove the standalone loggingsupport CMake target and stop depending on it\nfrom notests_regular_targets. NativeLogger no longer lazy-loads\nlibloggingsupport.so; supported startup paths register its native method\nthrough InitJvmLoggingSupport().\n\nAssisted-by: OpenAI Codex\nChange-Id: I8d31f8f7f7f3e0f9ec3ef7e515a40088441937d5\nReviewed-on: http://gerrit.cloudera.org:8080/24423\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "498d24d982affcc92ebaedf700be2c3156d8c1bc",
      "tree": "c40e439a282da78ee210b714333ea6e4c41ff6b0",
      "parents": [
        "aac753cb3208effb6f41f916b53a17a05ed967c6"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue May 26 12:59:06 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue Jun 09 18:04:24 2026 +0000"
      },
      "message": "IMPALA-15022: Rework tcmalloc metrics to include tcmalloc metadata\n\nCurrently, our gperftools tcmalloc metrics like\ntcmalloc.total-bytes-reserved do not include the malloc metadata.\nBack when the tcmalloc metrics were added to Impala, gperftools\ndid not expose metrics that would include the malloc metadata.\nSince then, gperftools has added the generic.total_physical_bytes\nmetric, which includes the malloc metadata. Malloc metadata can be\na couple hundred MBs on busy systems, so this is not a major\nchange, but it seems like a slight improvement to our metrics.\n\nThis changes tcmalloc.physical-bytes-reserved to use the\ngeneric.total_physical_bytes metric. It changes\ntcmalloc.total-bytes-reserved into a derived metric of\ntcmalloc.physical-bytes-reserved + tcmalloc.pageheap-unmapped-bytes.\nThis brings our metrics in line with the text description from\ngperftools used for /memz.\n\nTesting:\n - Compared the metrics to the /memz page\n\nChange-Id: I5b89193ed0b488dce1498ba630fec91611d7c4fd\nReviewed-on: http://gerrit.cloudera.org:8080/24400\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\n"
    },
    {
      "commit": "aac753cb3208effb6f41f916b53a17a05ed967c6",
      "tree": "59cafe978276bfbf16959132a38772f3c1f88f06",
      "parents": [
        "cf03d93762e482abcbe5bef5dcd5cb7ea570d175"
      ],
      "author": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue May 26 11:30:22 2026 -0700"
      },
      "committer": {
        "name": "Joe McDonnell",
        "email": "joemcdonnell@cloudera.com",
        "time": "Tue Jun 09 18:04:24 2026 +0000"
      },
      "message": "IMPALA-15021: Remove duplicate tcmalloc.thread_cache_free_bytes metric\n\nIn IMPALA-14874, we introduced several tcmalloc metrics\nincluding tcmalloc.current-total-thread-cache-bytes and\ntcmalloc.thread-cache-free-bytes. These are actually the\nsame underlying metric, so this removes tcmalloc.thread-cache-free-bytes.\n\nTesting:\n - Ran core tests\n\nChange-Id: I7ff431b00c10fe9ff99bfd6c909739d8a97fcf3a\nReviewed-on: http://gerrit.cloudera.org:8080/24399\nReviewed-by: Michael Smith \u003cmichael.smith@cloudera.com\u003e\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Joe McDonnell \u003cjoemcdonnell@cloudera.com\u003e\n"
    },
    {
      "commit": "cf03d93762e482abcbe5bef5dcd5cb7ea570d175",
      "tree": "d0adb20b9048c29f666fc144af6b0807f2f2089b",
      "parents": [
        "9e56ed29e7442f35da5444ee617fc1485d6b32a7"
      ],
      "author": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Thu May 28 17:49:50 2026 +0200"
      },
      "committer": {
        "name": "Csaba Ringhofer",
        "email": "csringhofer@cloudera.com",
        "time": "Tue Jun 09 05:34:18 2026 +0000"
      },
      "message": "IMPALA-12696: Update HS2 definitions (TCLIService.thrift)\n\nUpdate to \"fresh\" (didn\u0027t change since 2022) TCLIService.thrift\nfrom Hive repo.\nMainly a copy of Hive version, but some changes were needed:\n- change python namespace to impala_thrift_gen.TCLIService\n- reorder a few structs to avoid compilation errors in c++\n- readd GetLog()\n\nImplements one of the new functions (GetQueryId) and returns\n\"not implemented\" error for others.\n\nRealized last minute that there is a very similar prototype\nreview:\nhttps://gerrit.cloudera.org/#/c/20495/\nMy change does almost the same, but updates to a bit newer version\nand does not change server behavior, e.g. doesn\u0027t bump\nMAX_SUPPORTED_HS2_VERSION. The main motivation is providing the\ngenerated python artifacts for impyla which is also used with Hive.\nUsing the new possibilites in the protocol could be done in follow up\npatches.\n\nGenerated-by: Cloude Sonnet 4.6\n\nChange-Id: I52027d65c726a7f3abd4557a45c5ddd832fbb6bc\nReviewed-on: http://gerrit.cloudera.org:8080/24376\nReviewed-by: Impala Public Jenkins \u003cimpala-public-jenkins@cloudera.com\u003e\nReviewed-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\nTested-by: Csaba Ringhofer \u003ccsringhofer@cloudera.com\u003e\n"
    }
  ],
  "next": "9e56ed29e7442f35da5444ee617fc1485d6b32a7"
}
