)]}'
{
  "log": [
    {
      "commit": "9294d1f1abb2f56a68c639599f3b86026771dd35",
      "tree": "5c1245f6352a0c3cdb2b825d6b6d636d761d894c",
      "parents": [
        "6486efdf94456b898fc5680279eccdd151f7ee81"
      ],
      "author": {
        "name": "xuzifu666",
        "email": "xuzifu666@gmail.com",
        "time": "Tue Apr 28 23:31:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 23:31:00 2026 +0800"
      },
      "message": "feat(datafusion): support branch_manager and system table (#290)"
    },
    {
      "commit": "6486efdf94456b898fc5680279eccdd151f7ee81",
      "tree": "4846c6f846195c83a68135717cdc3d946d32e5be",
      "parents": [
        "07de603461a2ed682c1efe11b685a3a14b4b3612"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Tue Apr 28 16:48:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 16:48:43 2026 +0800"
      },
      "message": "feat(datafusion): add CALL procedure support for tag and rollback operations (#291)"
    },
    {
      "commit": "07de603461a2ed682c1efe11b685a3a14b4b3612",
      "tree": "54250f65a385e0ff5f351c785cb227d125a75d8f",
      "parents": [
        "8d291b9c929b7d5baa3a25d16e0606016537efab"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Tue Apr 28 16:25:28 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 16:25:28 2026 +0800"
      },
      "message": "feat(datafusion): add TRUNCATE TABLE and DROP PARTITION SQL support (#292)"
    },
    {
      "commit": "8d291b9c929b7d5baa3a25d16e0606016537efab",
      "tree": "69d15a0bb094806e2677c8b2984c97959a945038",
      "parents": [
        "6fff76d5ffb2e80e6b254689a1800038049f8c23"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Tue Apr 28 16:25:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 16:25:00 2026 +0800"
      },
      "message": "[doc] Document full_text_search and vector_search for datafusion (#289)"
    },
    {
      "commit": "6fff76d5ffb2e80e6b254689a1800038049f8c23",
      "tree": "a0e26703c08cb4311e6432b31d634158e0241e53",
      "parents": [
        "a5224ea410b9eb42873f70ec11ba34c3d558111b"
      ],
      "author": {
        "name": "XiaoHongbo",
        "email": "xiaohongbo.xhb@alibaba-inc.com",
        "time": "Sun Apr 26 20:19:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 20:19:03 2026 +0800"
      },
      "message": "feat: add Lumina vector index read infrastructure (#267)"
    },
    {
      "commit": "a5224ea410b9eb42873f70ec11ba34c3d558111b",
      "tree": "6cda0551e188de103f8350e68d9d3a7d878c21de",
      "parents": [
        "f4754f6ade0baa885e1f0a9877bc6e3d7bbb36a9"
      ],
      "author": {
        "name": "Jiajia Li",
        "email": "plusplusjiajia@alibaba-inc.com",
        "time": "Sun Apr 26 11:45:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 11:45:14 2026 +0800"
      },
      "message": "feat(datafusion): Add $manifests system table (#287)"
    },
    {
      "commit": "f4754f6ade0baa885e1f0a9877bc6e3d7bbb36a9",
      "tree": "b31c67cdc86949a87477eef02d5ed846e44eda97",
      "parents": [
        "c5e90671306deca9ac280d1e2950e2e8bdae0b97"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sat Apr 25 23:26:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 23:26:37 2026 +0800"
      },
      "message": "feat(datafusion): add Hive-style INSERT OVERWRITE PARTITION support and simplify API (#280)\n\nAdd static partition overwrite via PARTITION clause (e.g. INSERT OVERWRITE t\nPARTITION (dt \u003d \u0027value\u0027) SELECT ...). Partial partition specs use predicate-based\nfiltering to overwrite all matching sub-partitions. Simplify PaimonSqlHandler::new\nto 3 args (ctx, catalog, name) with internal DynamicOptions management, catalog\nregistration, and relation planner setup. Remove redundant overwrite_partitions\nfrom CommitEntriesPlan, unifying all overwrite filtering through PartitionFilter."
    },
    {
      "commit": "c5e90671306deca9ac280d1e2950e2e8bdae0b97",
      "tree": "4295502d286785e62f3ab3c79b148ba4d9d63a2e",
      "parents": [
        "9ff131fbc0d0b81af452d6ab3422d86296ea0fcd"
      ],
      "author": {
        "name": "Jiajia Li",
        "email": "plusplusjiajia@alibaba-inc.com",
        "time": "Sat Apr 25 20:02:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 20:02:38 2026 +0800"
      },
      "message": "feat(datafusion): Add $tags system table (#283)"
    },
    {
      "commit": "9ff131fbc0d0b81af452d6ab3422d86296ea0fcd",
      "tree": "42a043e0fe2cced632d538151d832075056e241d",
      "parents": [
        "553e4a31ab9986a19f13d2671d2420ef50bc9ec9"
      ],
      "author": {
        "name": "Jiajia Li",
        "email": "plusplusjiajia@alibaba-inc.com",
        "time": "Sat Apr 25 15:21:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 15:21:31 2026 +0800"
      },
      "message": "feat(datafusion): Add $snapshots system table (#264)"
    },
    {
      "commit": "553e4a31ab9986a19f13d2671d2420ef50bc9ec9",
      "tree": "bebd626f756483b23982d35cf1cee4519506e7d2",
      "parents": [
        "cb083703b7692023f98451387635e087b5d20f45"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sat Apr 25 10:31:30 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 25 10:31:30 2026 +0800"
      },
      "message": "feat: add custom Avro OCF reader for manifest parsing with filtered decoding (#281)\n\nReplace apache-avro\u0027s read path (Value intermediate representation) with\na zero-copy custom decoder that reads Avro binary directly into target\nstructs. Key optimizations:\n\n- Custom AvroCursor for zero-copy Avro binary primitive decoding\n- OCF parser with snappy/deflate/zstd decompression support\n- Writer schema parsing with field index mapping for compatibility\n- Two-pass filtered ManifestEntry decoding: lightweight fields first,\n  skip expensive DataFileMeta for filtered-out entries\n- SharedSchemaCache for cross-task schema reuse\n- Zero-copy entry consumption (into_identifier, into_parts)\n- Parallel base+delta manifest list reads via futures::try_join!\n- Remove redundant exists() checks before file reads"
    },
    {
      "commit": "cb083703b7692023f98451387635e087b5d20f45",
      "tree": "b1ef996f61b84ccea0cee21188ddb1f636a47797",
      "parents": [
        "546ec8d79ebe420b9b0da33f680f6a242c566da1"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Thu Apr 23 13:41:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 13:41:03 2026 +0800"
      },
      "message": "fix: replace serde_avro_fast with apache-avro and optimize Avro reading (#276)"
    },
    {
      "commit": "546ec8d79ebe420b9b0da33f680f6a242c566da1",
      "tree": "1bf9f39976016428165386eecf1057fcb1d0c2c8",
      "parents": [
        "9514353fa8494b8a685a69afc0df5e97e69d82f5"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 23 10:16:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 10:16:54 2026 +0800"
      },
      "message": "feat(datafusion): add session-scoped dynamic options via SET/RESET (#274)\n\nSupport `SET \u0027paimon.key\u0027 \u003d \u0027value\u0027` and `RESET \u0027paimon.key\u0027` to set\nsession-level dynamic options that are automatically merged into table\nscans via `copy_with_options`. Non-paimon-prefixed SET/RESET falls\nthrough to DataFusion."
    },
    {
      "commit": "9514353fa8494b8a685a69afc0df5e97e69d82f5",
      "tree": "3b56157104a4cd5c5bbcc84581991ca4ab0e47e4",
      "parents": [
        "560443e02599741c9bfa901391033f30cfc9a0ef"
      ],
      "author": {
        "name": "shyjsarah",
        "email": "44659226+shyjsarah@users.noreply.github.com",
        "time": "Wed Apr 22 02:01:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 17:01:39 2026 +0800"
      },
      "message": "fix(datafusion): add error logging to catalog methods that silently swallow errors (#273)\n\nThe CatalogProvider/SchemaProvider trait methods schema_names(), schema(),\ntable_names(), and table_exist() have no Result return type, so errors from\nremote catalog operations were silently discarded. Add log::error! to surface\nthese failures for debugging."
    },
    {
      "commit": "560443e02599741c9bfa901391033f30cfc9a0ef",
      "tree": "6aa41aa8f9216136fad7b5188062ad7d41b7472b",
      "parents": [
        "87671facd383de1cdb85ce08cd1e5bd624ca4f82"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Wed Apr 22 14:47:43 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 14:47:43 2026 +0800"
      },
      "message": "feat(datafusion): reject typed columns in PARTITIONED BY clause (#271)\n\nPARTITIONED BY should only accept column references, not column\ndefinitions with types. Extract and validate the clause before\nsqlparser parsing since GenericDialect requires types in column defs."
    },
    {
      "commit": "87671facd383de1cdb85ce08cd1e5bd624ca4f82",
      "tree": "a8371f27938a1bd2af638566ca9cca8907ad930c",
      "parents": [
        "391349d538b42ed5ae8663af425180eebcb75c77"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Tue Apr 21 15:09:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 15:09:09 2026 +0800"
      },
      "message": "feat(blob): add blob descriptor write support for append-only tables (#270)\n\nIntroduce BlobDescriptor serialization/deserialization, AppendBlobFileWriter\nfor writing blob format files, blob format writer implementation, and\ndescriptor mode in the reader that returns BlobDescriptor references instead\nof inline data. Update row tracking in commit to use per-column counters\nfor blob files. Allow BlobType in append-only tables (still unsupported\nwith primary keys)."
    },
    {
      "commit": "391349d538b42ed5ae8663af425180eebcb75c77",
      "tree": "4c8a0282b59ec74e70c4bfd707444fa1d1b76cdb",
      "parents": [
        "7b1008bd1845b778bcdbb6f521013d123d4eec41"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Mon Apr 20 17:31:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 17:31:42 2026 +0800"
      },
      "message": "feat(datafusion): add copy-on-write DML support for append-only tables (#269)\n\nImplement CopyOnWriteMergeWriter that rewrites entire data files for row-level\nupdates and deletes on append-only tables. Add DELETE, UPDATE execution and\nenhance MERGE INTO with COW strategy, along with comprehensive integration tests."
    },
    {
      "commit": "7b1008bd1845b778bcdbb6f521013d123d4eec41",
      "tree": "06e14c18f18e08a45e156c8f6ed4edaa25686110",
      "parents": [
        "b27abe8915091218673617b090f3cecde82b09ba"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Mon Apr 20 17:03:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 17:03:36 2026 +0800"
      },
      "message": "feat: add Vortex columnar file format support as optional feature (#260)\n\n* feat: add Vortex columnar file format support as optional feature\n\nAdd read/write support for the Vortex file format behind a `vortex` feature flag.\nThe writer uses a background task with kanal channel for streaming writes, and the\nreader supports predicate pushdown and row selection. Also introduces a configurable\n`file.format` option (default \"parquet\") to replace hardcoded file extensions across\nall writer paths.\n\n* fix: remove eprintln in library code and fix stale comment\n\nRemove eprintln! warning from VortexFormatWriter Drop impl, and update\nstale \"Open parquet writer\" comment in kv_file_writer.rs to be format-agnostic.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* fix comment\n\n* add vortex to ci\n\n* Fix comment\n\n---------\n\nCo-authored-by: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b27abe8915091218673617b090f3cecde82b09ba",
      "tree": "575df5454e36f86282b8f6274d436e81373f60a8",
      "parents": [
        "4b581c9675f43cad72fdf713695b31f0576b3a34"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Mon Apr 20 12:14:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:14:18 2026 +0800"
      },
      "message": "ci: fix ci to use constant_time_eq 0.4.2 (#268)\n\n* ci: fix ci to use constant_time_eq 0.4.2\n\n* fix"
    },
    {
      "commit": "4b581c9675f43cad72fdf713695b31f0576b3a34",
      "tree": "779b7721d3b66cc2d7d133d0354b1dc580abf930",
      "parents": [
        "513942e049f2f1e18daa7a53d1040d38a4c12b61"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sun Apr 19 11:25:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 11:25:05 2026 +0800"
      },
      "message": "feat: Enable exact COUNT(*) pushdown via partition statistics (#262)\n\nAdd filter_exact tracking to PaimonTableScan so DataFusion\u0027s\naggregate_statistics optimizer can eliminate scans for COUNT(*)\nqueries when row counts are precisely known.\n\n- Add filter_exact field to PaimonTableScan and PaimonScanBuilder\n- Return Precision::Exact(num_rows) when merged_row_count is known\n  for all splits, no limit is applied, and filter is exact\n- Fix filter_exact computation: no predicate should be considered exact\n- Refactor build_paimon_scan into PaimonScanBuilder struct to satisfy\n  clippy::too_many_arguments\n- Add count_pushdown.rs integration tests covering:\n  - COUNT(*) without filter (pushes down)\n  - COUNT(*) with data filter (does not push down)\n  - COUNT(*) with partition filter (pushes down)\n  - COUNT(*) with mixed partition+data filter (does not push down)\n  - COUNT(*) on empty/single-row tables (pushes down)\n- Run all paimon-datafusion tests in CI instead of just read_tables"
    },
    {
      "commit": "513942e049f2f1e18daa7a53d1040d38a4c12b61",
      "tree": "063259186be196ec25f3e5e5751d759e9e5eb9a0",
      "parents": [
        "11c79470ded90d0dab9f0b05916586feee1e75e6"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Sat Apr 18 09:59:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 09:59:56 2026 +0800"
      },
      "message": "feat(datafusion): reuse core-owned limit hint logic (#224)"
    },
    {
      "commit": "11c79470ded90d0dab9f0b05916586feee1e75e6",
      "tree": "42c62c993b8ad7c90c20d4c7a12468611fc63109",
      "parents": [
        "9796ef764bd94c24e9ceeccd85edd66b0fe5bc86"
      ],
      "author": {
        "name": "liang",
        "email": "57091736+liang767339@users.noreply.github.com",
        "time": "Sat Apr 18 08:19:54 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 08:19:54 2026 +0800"
      },
      "message": "test: remove stale raw_convertible builder calls (#261)"
    },
    {
      "commit": "9796ef764bd94c24e9ceeccd85edd66b0fe5bc86",
      "tree": "3b9d30813ca204f06edff959bdf1690e8a307830",
      "parents": [
        "86e4ce02753a0a2a42dbc3f3eabda0492aa5ba1a"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Fri Apr 17 21:47:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 21:47:52 2026 +0800"
      },
      "message": "feat: support reading blob files in data evolution flow (#259)"
    },
    {
      "commit": "86e4ce02753a0a2a42dbc3f3eabda0492aa5ba1a",
      "tree": "f257d2bdf0d42f5b92d915b22bc4f5cdbe8a146f",
      "parents": [
        "d5dd8fc61930e87355a07c1727e6b6da88ef7433"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Fri Apr 17 16:46:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 16:46:06 2026 +0800"
      },
      "message": "feat: add dynamic bucket assignment for primary-key tables (#254)\n\nImplement bucket assigner framework with four strategies: fixed, dynamic,\ncross-partition, and constant. Add BinaryRow hash/comparison support for\nbucket key computation. Update table read/write/scan/commit pipeline to\nsupport dynamic bucket mode. Include DataFusion integration tests for\ndynamic bucket and cross-partition table scenarios."
    },
    {
      "commit": "d5dd8fc61930e87355a07c1727e6b6da88ef7433",
      "tree": "da464e0a597374e6aee2bb3051b535057b64f44a",
      "parents": [
        "8880c7a1740a861b09319a282559ef4f21c93e73"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 16 16:48:42 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 16:48:42 2026 +0800"
      },
      "message": "feat: add postpone bucket (bucket\u003d-2) write support for primary-key tables (#252)\n\nPostpone bucket mode writes data in KV format without sorting or\ndeduplication, deferring bucket assignment to background compaction.\nFiles are written to `bucket-postpone` directory and are invisible\nto normal reads until compacted."
    },
    {
      "commit": "8880c7a1740a861b09319a282559ef4f21c93e73",
      "tree": "6f7e013d8878eccac9c0f875246f735d3ffef37b",
      "parents": [
        "aa19a2c34f4e2acc0a0d6595ddce2f88f91eee17"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Thu Apr 16 13:37:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 13:37:45 2026 +0800"
      },
      "message": "feat(blob): harden create-time schema contract (#251)"
    },
    {
      "commit": "aa19a2c34f4e2acc0a0d6595ddce2f88f91eee17",
      "tree": "7223e6aa009a5111043708954c6b3da36801c2fa",
      "parents": [
        "4a2e657c135b4268d21eb5c4acf186dd8e2a790a"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 16 13:18:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 13:18:38 2026 +0800"
      },
      "message": "feat: add primary-key table read/write support with sort-merge deduplication (#249)\n\nAdd KV file reader/writer, sort-merge reader with LoserTree, and RowKind\nsupport to enable reading and writing primary-key tables. Includes\nintegration tests and DataFusion pk_tables tests."
    },
    {
      "commit": "4a2e657c135b4268d21eb5c4acf186dd8e2a790a",
      "tree": "20e8e3bea3b4104aa09865c2eafe1bd255037b80",
      "parents": [
        "0a89f75b69cbe25c8fa7957bb9c1b772121850ee"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Thu Apr 16 11:16:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 11:16:32 2026 +0800"
      },
      "message": "feat(blob): add BlobType groundwork and preserve DDL semantics (#250)"
    },
    {
      "commit": "0a89f75b69cbe25c8fa7957bb9c1b772121850ee",
      "tree": "86c85579047da3012604106fc412a094a2784948",
      "parents": [
        "417eba0c8d9187c6caf51d3952e4f4b72f8eab26"
      ],
      "author": {
        "name": "Jiajia Li",
        "email": "plusplusjiajia@alibaba-inc.com",
        "time": "Thu Apr 16 10:14:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 10:14:02 2026 +0800"
      },
      "message": "feat: Add $schemas system table (#245)"
    },
    {
      "commit": "417eba0c8d9187c6caf51d3952e4f4b72f8eab26",
      "tree": "9c11333fcaee178e79636da550c93c7259585f40",
      "parents": [
        "fa8091eca2d4e07011a9a9287045828d3e49f94d"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Wed Apr 15 17:39:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 17:39:20 2026 +0800"
      },
      "message": "chore: bump version to 0.2.0 (#247)"
    },
    {
      "commit": "fa8091eca2d4e07011a9a9287045828d3e49f94d",
      "tree": "48bfa6b3bffe6279084b42d0135d65ad39afc6d6",
      "parents": [
        "bda2c7e2ca5d6f11c644f24f6479fb1267158a95"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Wed Apr 15 15:16:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 15:16:38 2026 +0800"
      },
      "message": "refactor(read): split ArrowReader into DataFileReader, DataEvolutionReader and TableRead (#246)\n\nMove the monolithic arrow/reader.rs into three focused modules under table/:\n- data_file_reader.rs: regular Parquet file reading with schema evolution\n- data_evolution_reader.rs: column-merge reading for data evolution mode\n- table_read.rs: TableRead extracted from read_builder.rs\n\nAlso replaces assert! with proper error returns and adds bounds checking\nin attach_row_id."
    },
    {
      "commit": "bda2c7e2ca5d6f11c644f24f6479fb1267158a95",
      "tree": "b94bf42a7fb0ed9d8711dd15a854e64993f1721a",
      "parents": [
        "f424ded51dd770b1696dd43e27d8e3d3d4056362"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Wed Apr 15 14:16:22 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 14:16:22 2026 +0800"
      },
      "message": "chore: update dependency list for release 0.1.0 (#244)"
    },
    {
      "commit": "f424ded51dd770b1696dd43e27d8e3d3d4056362",
      "tree": "bf8563f8513a4240607f5a73392aa5946ea588cf",
      "parents": [
        "ac7d2b24de8b11c259a445480ada916d3e7516eb"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Wed Apr 15 12:14:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 12:14:06 2026 +0800"
      },
      "message": "feat(write): add MERGE \u0026 UPDATE with DataEvolutionWriter (#241)"
    },
    {
      "commit": "ac7d2b24de8b11c259a445480ada916d3e7516eb",
      "tree": "d1c52d8921dd5eace570e08b0be5a9274c90e1b5",
      "parents": [
        "f99675109055793e88c0156261a5f09d1466839b"
      ],
      "author": {
        "name": "HunterXHunter",
        "email": "mingqianglin1010@gmail.com",
        "time": "Wed Apr 15 09:51:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 09:51:21 2026 +0800"
      },
      "message": "fix(docs): use correct crate name for integration tests. (#243)"
    },
    {
      "commit": "f99675109055793e88c0156261a5f09d1466839b",
      "tree": "e2e74bde0eb5de71535767108f2b05dc5589ea03",
      "parents": [
        "5c4551f1b9a40dbcbd2d97f3579cb4035c8a1675"
      ],
      "author": {
        "name": "Jiajia Li",
        "email": "plusplusjiajia@alibaba-inc.com",
        "time": "Wed Apr 15 09:44:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 09:44:16 2026 +0800"
      },
      "message": "feat(datafusion): Add $options system table (#240)"
    },
    {
      "commit": "5c4551f1b9a40dbcbd2d97f3579cb4035c8a1675",
      "tree": "e1a979bec43dd99d06cea915e0919538966e41d3",
      "parents": [
        "1b0e60589eab44c50b5e152bd98d85a3525c086d"
      ],
      "author": {
        "name": "SeungMin",
        "email": "semicpu@gmail.com",
        "time": "Tue Apr 14 11:00:19 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 10:00:19 2026 +0800"
      },
      "message": "feat: support hdfs using hdfs native (#242)"
    },
    {
      "commit": "1b0e60589eab44c50b5e152bd98d85a3525c086d",
      "tree": "de780d773d2ace38e282f2644d619993a007eb04",
      "parents": [
        "7b3c89fdde126d932ec2a716b726f50c8e4af719"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Mon Apr 13 13:04:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 13 13:04:38 2026 +0800"
      },
      "message": "feat(datafusion): upgrade to DataFusion 53 and use VERSION AS OF (#236)\n\nUpgrade DataFusion from 52.3 to 53.0 (arrow/parquet 57→58, sqlparser 0.59→0.61,\norc-rust 0.7→0.8, pyo3 0.26→0.28) and replace the old `FOR SYSTEM_TIME AS OF`\ntime travel syntax with the new `VERSION AS OF` and `TIMESTAMP AS OF` syntax\nsupported by sqlparser 0.61.\n\nIntroduce `scan.version` option to unify snapshot id and tag name resolution:\nat scan time, the version value is resolved by first checking if a tag with\nthat name exists, then trying to parse it as a snapshot id, otherwise returning\nan error. Remove the now-redundant `scan.snapshot-id` and `scan.tag-name` options."
    },
    {
      "commit": "7b3c89fdde126d932ec2a716b726f50c8e4af719",
      "tree": "d846fc80198d64af7038f030c36937ed870e3c12",
      "parents": [
        "ecbf45864177544733818737add939a5f532a58c"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sun Apr 12 19:55:06 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 19:55:06 2026 +0800"
      },
      "message": "feat(datafusion): Add DDL support with PRIMARY KEY constraint syntax (#237)\n\n- Add PaimonDdlHandler for CREATE TABLE, ALTER TABLE (ADD/DROP/RENAME COLUMN, RENAME TABLE)\n- Add PaimonTableFactory for CREATE EXTERNAL TABLE via DataFusion TableProviderFactory\n- Extend PaimonCatalogProvider/SchemaProvider with CREATE/DROP SCHEMA and DROP TABLE\n- Add arrow_to_paimon_type and arrow_fields_to_paimon to paimon::arrow for Arrow-to-Paimon type conversion\n- Support PRIMARY KEY (col, ...) constraint syntax in CREATE TABLE DDL"
    },
    {
      "commit": "ecbf45864177544733818737add939a5f532a58c",
      "tree": "fc8dbe9b672bb778725a48ed1abba30b9440573a",
      "parents": [
        "4a10094a91f1a3e96015996bcce06d4849686237"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sun Apr 12 19:39:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 12 19:39:24 2026 +0800"
      },
      "message": "feat(write): add write pipeline with DataFusion INSERT INTO/OVERWRITE support (#234)\n\nAdd TableWrite for writing Arrow RecordBatches to Paimon append-only\ntables. Each (partition, bucket) pair gets its own DataFileWriter with\ndirect writes (matching delta-rs DeltaWriter pattern). File rolling\nuses tokio::spawn for background close, and prepare_commit uses\ntry_join_all for parallel finalization across partition writers.\n\nKey components:\n- TableWrite: routes batches by partition/bucket, holds DataFileWriters\n- DataFileWriter: manages parquet file lifecycle with rolling support\n- WriteBuilder: creates TableWrite and TableCommit instances\n- PaimonDataSink: DataFusion DataSink integration for INSERT/OVERWRITE\n- FormatFileWriter: extended with flush() and in_progress_size()\n\nConfigurable options via CoreOptions:\n- file.compression (default: zstd)\n- target-file-size (default: 256MB)\n- write.parquet-buffer-size (default: 256MB)\n\nIncludes E2E integration tests for unpartitioned, partitioned,\nfixed-bucket, multi-commit, column projection, and bucket filtering."
    },
    {
      "commit": "4a10094a91f1a3e96015996bcce06d4849686237",
      "tree": "a5180e8bcca58dd2d9948676f621a89c4d10c379",
      "parents": [
        "a3d535d3bfd7bd40a5e515b7ce4b1488fb08132f"
      ],
      "author": {
        "name": "umi",
        "email": "55790489+discivigour@users.noreply.github.com",
        "time": "Sat Apr 11 17:49:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 17:49:44 2026 +0800"
      },
      "message": "perf(reader): Improve the performance of parquet reader (#230)"
    },
    {
      "commit": "a3d535d3bfd7bd40a5e515b7ce4b1488fb08132f",
      "tree": "aedaa6cb42aa9b0392aefbfd19cabd56341be50b",
      "parents": [
        "db716113c50103430fbad85e33bd273dea886a89"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Sat Apr 11 11:54:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 11 11:54:11 2026 +0800"
      },
      "message": "release: add document for how to release and how to verify a release (#235)"
    },
    {
      "commit": "db716113c50103430fbad85e33bd273dea886a89",
      "tree": "29db771a86df3e5c4fbffd9b57d60b7f7623b7a0",
      "parents": [
        "e0d1f6913ed6ddbacdf4a24dd6c599e1266b193e"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Fri Apr 10 17:10:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 10 17:10:29 2026 +0800"
      },
      "message": "feat(table): Add commit pipeline with SnapshotCommit abstraction (#233)\n\nImplement the table write and commit infrastructure, including:\n- SnapshotCommit trait with RenamingSnapshotCommit (filesystem) and\n  RESTSnapshotCommit (REST catalog) implementations\n- TableCommit with retry logic, append/overwrite/truncate support,\n  partition statistics generation, and row tracking\n- WriteBuilder as the entry point for creating TableCommit instances,\n  with overwrite mode configured at construction time\n- RESTEnv to hold REST catalog context (API client, identifier, uuid)\n- CommitMessage, PartitionStatistics, and ManifestList types\n- SnapshotManager extensions for atomic snapshot commit and latest hint\n- BinaryRow write_datum and datums_to_binary_row utilities\n- CoreOptions accessors for bucket, commit retry, and row tracking\n\nReference: pypaimon commit pipeline"
    },
    {
      "commit": "e0d1f6913ed6ddbacdf4a24dd6c599e1266b193e",
      "tree": "b2f72ea93b5c83fd14ace4bdf2383aa887c4c6dd",
      "parents": [
        "e65d22255ae644c44a732cd4d95ae57fcf94035b"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 09 19:56:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 19:56:37 2026 +0800"
      },
      "message": "feat(tantivy): Add Tantivy full-text search with on-demand archive reading (#231)\n\nIntroduce a complete Tantivy-based full-text search pipeline for global\nindexes, with on-demand I/O throughout:\n\n- ArchiveDirectory: reads only the archive header eagerly; file data is\n  loaded via async FileRead when Tantivy requests it (sync-to-async\n  bridge using std::thread::scope).\n- TantivyFullTextWriter: streams the packed archive directly to an\n  OutputFile instead of buffering in memory.\n- TantivyFullTextReader: opens from InputFile/FileRead, never loads the\n  full archive into memory.\n- FullTextSearchBuilder: self-contained builder on Table that reads the\n  index manifest, evaluates searches against multiple Tantivy indexes\n  in parallel (try_join_all), and returns ScoredGlobalIndexResult.\n- ScoredGlobalIndexResult + bitmap_to_ranges moved to table/source.rs\n  (alongside RowRange) so vector search can reuse them later.\n- TableScan.with_row_ranges(): generic row-range filtering, decoupled\n  from full-text specifics.\n- DataFusion full_text_search UDTF integration with test data."
    },
    {
      "commit": "e65d22255ae644c44a732cd4d95ae57fcf94035b",
      "tree": "fa9340143816d8b5e498ce3463285ab8242db2d2",
      "parents": [
        "dd71c58d842f8238d1c51a16c20e288a13aa87b0"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 09 13:59:47 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 09 13:59:47 2026 +0800"
      },
      "message": "feat(btree): Add BTree global index reader with async on-demand block loading (#229)\n\nImplement BTree index file format support (block, footer, meta, SST file,\nvar_len encoding) and global index scanner for evaluating predicates against\nBTree global indexes to produce row ID ranges.\n\nKey features:\n- Async on-demand data block reading via FileRead trait instead of loading\n  entire file into memory\n- Scanner-level BTreeIndexReader cache for reader reuse across evaluations\n- AND predicate grouping by field_id to minimize file opens\n- Between pattern detection (GtEq/Gt + LtEq/Lt merged into single range_query)\n- Row ID predicate extraction from data predicates into row ranges\n- Support for point lookup, range, IN, NOT IN, IS NULL, IS NOT NULL queries\n- Zstd block compression/decompression support\n- File-level pruning using BTreeIndexMeta (first_key, last_key, has_nulls)"
    },
    {
      "commit": "dd71c58d842f8238d1c51a16c20e288a13aa87b0",
      "tree": "676f2e3eb951b5a60c8cafe183da071539555597",
      "parents": [
        "cc1335207d5755f4b20e71c08c0209ea13135b88"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Wed Apr 08 12:23:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 12:23:33 2026 +0800"
      },
      "message": "feat: abstract FormatFileReader and introduce ORC \u0026 avro readers (#225)"
    },
    {
      "commit": "cc1335207d5755f4b20e71c08c0209ea13135b88",
      "tree": "d76f030e98255862acce883fec90efab63b87653",
      "parents": [
        "96c8715b267c7be02903c724c998c7602bd5c76e"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Wed Apr 08 12:13:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 12:13:33 2026 +0800"
      },
      "message": "feat(go): add filter push-down and predicate API for Go binding (#216)\n\nAdd complete predicate support to the Go binding, enabling filter\npush-down for table scans. This includes:\n\n- C FFI layer: predicate construction functions (equal, not_equal,\n  less_than, greater_than, is_null, is_in, etc.), combinators\n  (and/or/not), with_filter on ReadBuilder, and fix scan to\n  propagate filters via TableScanState\n- Go binding: Predicate type, Go-native value types (Date, Time,\n  Timestamp, LocalZonedTimestamp, Decimal, Bytes), automatic\n  type inference from Go literals (int, string, bool, etc.),\n  and ReadBuilder.WithFilter method\n- Tests: TestReadWithFilter with shared test helpers"
    },
    {
      "commit": "96c8715b267c7be02903c724c998c7602bd5c76e",
      "tree": "6af28245173888c1f8947ef7a002ea2a9cc8d715",
      "parents": [
        "b33b2d75983ffde4cbc4511de470388c563bfa88"
      ],
      "author": {
        "name": "xiaohongbo04-bot",
        "email": "xiaohongbo04@gmail.com",
        "time": "Tue Apr 07 13:33:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 13:33:41 2026 +0800"
      },
      "message": "feat: Support data evolution row id filter (#222)"
    },
    {
      "commit": "b33b2d75983ffde4cbc4511de470388c563bfa88",
      "tree": "80b966465d67e69903a94ffa7ac4664df5302def",
      "parents": [
        "663579236e4ba38aeb34fb252cd22214a34bf20b"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Mon Apr 06 23:19:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 23:19:11 2026 +0800"
      },
      "message": "feat: Implement statistics for data fusion scan (#217)\n\n* feat: Implement statistics for data fusion scan"
    },
    {
      "commit": "663579236e4ba38aeb34fb252cd22214a34bf20b",
      "tree": "174762e911d5779d8f656317d779663a9a69600c",
      "parents": [
        "022da71dde98e5ff17638720e62e1c643e1b48ed"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Mon Apr 06 21:23:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 21:23:55 2026 +0800"
      },
      "message": "fix(scan): Harden time-travel selector validation (#219)"
    },
    {
      "commit": "022da71dde98e5ff17638720e62e1c643e1b48ed",
      "tree": "4e2e45f37f268b02bb9a4712e1f60f0d8048f994",
      "parents": [
        "6b29f60eec298ca55be84c80f252047a84dbef45"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Mon Apr 06 15:34:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 15:34:57 2026 +0800"
      },
      "message": "feat: push down filters to parquet read path (#208)"
    },
    {
      "commit": "6b29f60eec298ca55be84c80f252047a84dbef45",
      "tree": "2bc3ad2097eb52e0b0d5c16756d6de2f2e66cbba",
      "parents": [
        "e8c98d9ec0bb82dccf6234909970fa92cb0b396d"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Mon Apr 06 13:27:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 13:27:10 2026 +0800"
      },
      "message": "ci: add python release pipeline (#212)"
    },
    {
      "commit": "e8c98d9ec0bb82dccf6234909970fa92cb0b396d",
      "tree": "22a26e1c86ba0cd66376bfcbbd6c1abf5aa21da7",
      "parents": [
        "e0b5e5cb5b89c5122f2b7550301fea44273d5b99"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Mon Apr 06 08:40:32 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 08:40:32 2026 +0800"
      },
      "message": "feat(python): introduce pypaimon core and DataFusion catalog integration (#204)"
    },
    {
      "commit": "e0b5e5cb5b89c5122f2b7550301fea44273d5b99",
      "tree": "15d1dba10dcb7c285b91186654e3ef9f8a1188c3",
      "parents": [
        "5d1a9303d83b660785c22b3691a14dedcf4624b4"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Mon Apr 06 08:37:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 08:37:33 2026 +0800"
      },
      "message": "doc: add readme for paimon \u0026 datafusion integration crate (#209)"
    },
    {
      "commit": "5d1a9303d83b660785c22b3691a14dedcf4624b4",
      "tree": "f9e2daa72bbe15d78b1fe440130a31c4044fec23",
      "parents": [
        "abb0a4307c8d49d2dfecd8d15a417ce1ee6fbb13"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sun Apr 05 21:01:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 21:01:38 2026 +0800"
      },
      "message": "feat(scan): add bucket pruning, DV/postpone filtering, and DE group pruning (#205)\n\n* feat(scan): add bucket predicate filtering, DV/postpone filtering, and data evolution group pruning"
    },
    {
      "commit": "abb0a4307c8d49d2dfecd8d15a417ce1ee6fbb13",
      "tree": "0f90f335c4d2c0bd822986fa3309fa0db474bdac",
      "parents": [
        "9e5978210274a8f182352f8fef565bba6e91a7ed"
      ],
      "author": {
        "name": "Song Chuanqi",
        "email": "73341081+freedom3219@users.noreply.github.com",
        "time": "Sun Apr 05 08:21:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 08:21:26 2026 +0800"
      },
      "message": "chore(provision): make Spark integration test provisioning idempotent (#198)"
    },
    {
      "commit": "9e5978210274a8f182352f8fef565bba6e91a7ed",
      "tree": "71821b4f3fe0aa1fb9303a1e1899574a07967a89",
      "parents": [
        "587389b99d6f52225e4690d662b0e09fda8084f2"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Sun Apr 05 08:20:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 05 08:20:05 2026 +0800"
      },
      "message": "chore: remove useless allow dead code (#206)"
    },
    {
      "commit": "587389b99d6f52225e4690d662b0e09fda8084f2",
      "tree": "f42f826cfc65a69cbd6bf5ae074af086f1157627",
      "parents": [
        "35b6386629742b70d0d0719ebfcab743ef9a39f5"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sat Apr 04 17:13:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 17:13:24 2026 +0800"
      },
      "message": "feat: replace apache-avro with serde_avro_fast and parallelize manifest reads (#203)\n\nSwitch Avro deserialization from apache-avro (Value intermediate repr) to\nserde_avro_fast (direct bytes→struct), eliminating redundant allocations\nfor ~10-20x deserialization speedup. Read manifest files concurrently\nwith buffer_unordered(64) instead of sequentially."
    },
    {
      "commit": "35b6386629742b70d0d0719ebfcab743ef9a39f5",
      "tree": "abb96d4316c7a8f96abe5f5d441b482b12e18179",
      "parents": [
        "1f4aac69a2a932c2d2a0821d4d5921d100898db9"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sat Apr 04 10:44:18 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 10:44:18 2026 +0800"
      },
      "message": "feat: support complex types (#202)"
    },
    {
      "commit": "1f4aac69a2a932c2d2a0821d4d5921d100898db9",
      "tree": "a4c607d63a0eb19a482d4e9f78433f6600acb75f",
      "parents": [
        "4ff1c119ebbe9b26546dda6667e8534b89ff53e7"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Sat Apr 04 10:43:16 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 10:43:16 2026 +0800"
      },
      "message": "feat(scan): support data-level stats pruning in TableScan (#196)"
    },
    {
      "commit": "4ff1c119ebbe9b26546dda6667e8534b89ff53e7",
      "tree": "e13e87305adb8b405cf24942d47bd89e314d18e6",
      "parents": [
        "30d76b9eb99bcf6c65cf0edee4e9a11d88620275"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Fri Apr 03 22:06:41 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 22:06:41 2026 +0800"
      },
      "message": "feat: support schema evolution read with SchemaManager (#197)\n\n* feat(arrow): support schema evolution read with SchemaManager and field-ID-based index mapping"
    },
    {
      "commit": "30d76b9eb99bcf6c65cf0edee4e9a11d88620275",
      "tree": "dbfd5e6aa53eedce4aa10df1ec709e9adc0a134e",
      "parents": [
        "38830ef279500f403ade34411de1316c7d0893d9"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Fri Apr 03 19:54:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 19:54:33 2026 +0800"
      },
      "message": "feat: support time travel by tag name and doc it (#199)"
    },
    {
      "commit": "38830ef279500f403ade34411de1316c7d0893d9",
      "tree": "7323e1b5f006223991c8f49d7c6591602f0ea81d",
      "parents": [
        "9478259467002b9976f982ff2ad53aa7fec5aac9"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 19:43:26 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 19:43:26 2026 +0800"
      },
      "message": "feat(scan): support deletion vector cardinality (#200)"
    },
    {
      "commit": "9478259467002b9976f982ff2ad53aa7fec5aac9",
      "tree": "eac3e43f17c0be09c39cdd55f637023080c9f249",
      "parents": [
        "1154bdbe71341d592238933c7127c1338fb4e79a"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Fri Apr 03 15:21:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 15:21:29 2026 +0800"
      },
      "message": "feat: introduce time travel for data fusion (#195)\n\n* feat: introduce time travel for data fusion"
    },
    {
      "commit": "1154bdbe71341d592238933c7127c1338fb4e79a",
      "tree": "fe626d397846f4590d42cd6682c40513e7541e03",
      "parents": [
        "aa2cb751c87d11d3ce4759e3a96cdde58cf0ee9e"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Fri Apr 03 14:46:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 14:46:19 2026 +0800"
      },
      "message": "feat: support limit push down in datafusion (#177)"
    },
    {
      "commit": "aa2cb751c87d11d3ce4759e3a96cdde58cf0ee9e",
      "tree": "0463c7739d2e4a49fbb470313d4b048d5d85b7a2",
      "parents": [
        "10e190b10a0c8c588aeaccea86eb4a24a538253a"
      ],
      "author": {
        "name": "Song Chuanqi",
        "email": "73341081+freedom3219@users.noreply.github.com",
        "time": "Thu Apr 02 21:57:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 21:57:01 2026 +0800"
      },
      "message": "fix(api/auth): resolve clippy dead_code warning (#191)"
    },
    {
      "commit": "10e190b10a0c8c588aeaccea86eb4a24a538253a",
      "tree": "8e9897f3e5ad07e40bedac5905ab104cf3b2b895",
      "parents": [
        "ea400dbdd9f37bcc2693799636a6baaaf51b5ed1"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Thu Apr 02 21:54:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 21:54:59 2026 +0800"
      },
      "message": "feat(datafusion): support partition predicate pushdown (#190)"
    },
    {
      "commit": "ea400dbdd9f37bcc2693799636a6baaaf51b5ed1",
      "tree": "bb87b3dcdf6d40037b958642884c9b2cb536c6b6",
      "parents": [
        "cd3670cd4bf9137b998315c199e2d1c54100c85c"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 02 21:50:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 21:50:11 2026 +0800"
      },
      "message": "feat: add paimon-rust website (#194)"
    },
    {
      "commit": "cd3670cd4bf9137b998315c199e2d1c54100c85c",
      "tree": "540eb8e9d23bac1c191579dc46010de7ddca294e",
      "parents": [
        "f2e0dc78e4ca05ff568463736e81dbac333667bd"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 02 21:48:52 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 21:48:52 2026 +0800"
      },
      "message": "feat: support data evolution table mode (#193)\n\n* feat: support data evolution table mode"
    },
    {
      "commit": "f2e0dc78e4ca05ff568463736e81dbac333667bd",
      "tree": "c11c8f239f9a2ab46a18f1a9d3cd4c54d1162d9e",
      "parents": [
        "6be17e859d656b412a1cb0dd7d336da4ebad0298"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Thu Apr 02 11:46:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 11:46:23 2026 +0800"
      },
      "message": "feat(io): refactor FileIO to reuse storage operators and improve path handling (#106)"
    },
    {
      "commit": "6be17e859d656b412a1cb0dd7d336da4ebad0298",
      "tree": "bd165af55b9c62fc50152de8a057b7bf79acf899",
      "parents": [
        "2aa501c105528ec1ddf3264abd3442e02008ccaa"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Thu Apr 02 11:08:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 11:08:02 2026 +0800"
      },
      "message": "feat: support catalog provider in datafusion (#176)"
    },
    {
      "commit": "2aa501c105528ec1ddf3264abd3442e02008ccaa",
      "tree": "941ba4a06accf8d0ced9581145919ac3504d154b",
      "parents": [
        "b5744ae1d4d9d4f23546b2ef454967646e4b3159"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:44:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:44:49 2026 +0800"
      },
      "message": "chore(deps): update serde_avro_fast requirement from 1.1.2 to 2.0.2 (#182)\n\nUpdates the requirements on [serde_avro_fast](https://github.com/Ten0/serde_avro_fast) to permit the latest version.\n- [Commits](https://github.com/Ten0/serde_avro_fast/commits)\n\n---\nupdated-dependencies:\n- dependency-name: serde_avro_fast\n  dependency-version: 2.0.2\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b5744ae1d4d9d4f23546b2ef454967646e4b3159",
      "tree": "dcb69e34a1ae7ccc8e7e686824b3007a858817bf",
      "parents": [
        "de526e0386f482083e7b71fa3781e9d39228655c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:44:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:44:24 2026 +0800"
      },
      "message": "chore(deps): bump actions/checkout from 4 to 6 (#181)\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v4...v6)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: \u00276\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "de526e0386f482083e7b71fa3781e9d39228655c",
      "tree": "4190577bbb41dff019740dcc81bc2b6ec7638b51",
      "parents": [
        "570eb1261eedca1f03ff0a6fb39db8802e24dd06"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:44:15 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:44:15 2026 +0800"
      },
      "message": "chore(deps): bump actions/upload-artifact from 4 to 7 (#180)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v4...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "570eb1261eedca1f03ff0a6fb39db8802e24dd06",
      "tree": "459b910771ca0ab40f6f36a284e2f36ade81b693",
      "parents": [
        "1066d87b262b87f7e04e15316851d7ee5cfbaefc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:44:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:44:07 2026 +0800"
      },
      "message": "chore(deps): bump actions/download-artifact from 4 to 8 (#179)\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 8.\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/v4...v8)\n\n---\nupdated-dependencies:\n- dependency-name: actions/download-artifact\n  dependency-version: \u00278\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1066d87b262b87f7e04e15316851d7ee5cfbaefc",
      "tree": "42c8d53a50e30862cf470d23fa2acc42cda1581c",
      "parents": [
        "c0d0bcf165efaa13a793481ddb854eb3b49f07ec"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:43:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:43:57 2026 +0800"
      },
      "message": "chore(deps): bump apache/skywalking-eyes from 0.6.0 to 0.8.0 (#178)\n\nBumps [apache/skywalking-eyes](https://github.com/apache/skywalking-eyes) from 0.6.0 to 0.8.0.\n- [Release notes](https://github.com/apache/skywalking-eyes/releases)\n- [Changelog](https://github.com/apache/skywalking-eyes/blob/main/CHANGES.md)\n- [Commits](https://github.com/apache/skywalking-eyes/compare/v0.6.0...v0.8.0)\n\n---\nupdated-dependencies:\n- dependency-name: apache/skywalking-eyes\n  dependency-version: 0.8.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c0d0bcf165efaa13a793481ddb854eb3b49f07ec",
      "tree": "93af04f0c78b12f7ef192081ace5780a233dea13",
      "parents": [
        "320c9272cf4c7fa3aa6244a234bcec9fe85ca266"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:43:45 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:43:45 2026 +0800"
      },
      "message": "chore(deps): update snafu requirement from 0.8.3 to 0.9.0 (#184)\n\nUpdates the requirements on [snafu](https://github.com/shepmaster/snafu) to permit the latest version.\n- [Changelog](https://github.com/shepmaster/snafu/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/shepmaster/snafu/compare/0.8.3...0.9.0)\n\n---\nupdated-dependencies:\n- dependency-name: snafu\n  dependency-version: 0.9.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "320c9272cf4c7fa3aa6244a234bcec9fe85ca266",
      "tree": "5dc0793b81d12cbe46800a18076a484476df4e4c",
      "parents": [
        "7bb574653bf1bba5f2025134e26fae989c30f591"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Thu Apr 02 10:43:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:43:00 2026 +0800"
      },
      "message": "fix: remove protected_branches in asf.yaml (#187)"
    },
    {
      "commit": "7bb574653bf1bba5f2025134e26fae989c30f591",
      "tree": "921af5c5fa5db9b3c04fd7d5c46af0c5410dd2b6",
      "parents": [
        "45b17ab3cf3e60718e512cc88f2960a0d0c8f598"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Apr 02 10:42:23 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 10:42:23 2026 +0800"
      },
      "message": "chore(deps): update roaring requirement from 0.10 to 0.11 (#186)"
    },
    {
      "commit": "45b17ab3cf3e60718e512cc88f2960a0d0c8f598",
      "tree": "b7b1cc26560b3ae302c87336db7ee7bbef4364c6",
      "parents": [
        "0cb1a8390131f95ded9519bdc7083f1432d4fed1"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Thu Apr 02 08:57:55 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 08:57:55 2026 +0800"
      },
      "message": "feat: introduce catalog factory to unify api for creating catalog (#175)"
    },
    {
      "commit": "0cb1a8390131f95ded9519bdc7083f1432d4fed1",
      "tree": "101dccde7e830d5db89663e48f99811646aba6ea",
      "parents": [
        "5ed8b7fddf9feeb0466795a8bb8cb936d896e8fe"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Wed Apr 01 22:57:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 22:57:20 2026 +0800"
      },
      "message": "feat(table): support partition predicate pruning in TableScan (#167)"
    },
    {
      "commit": "5ed8b7fddf9feeb0466795a8bb8cb936d896e8fe",
      "tree": "4a9765cdc2740193c0b540707c9992dc6dea0b78",
      "parents": [
        "b98cfdd58139254db07ec2d9a65f8d914c62e6b3"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Wed Apr 01 21:46:02 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 21:46:02 2026 +0800"
      },
      "message": "feat(datafusion): parallelize paimon split execution (#169)"
    },
    {
      "commit": "b98cfdd58139254db07ec2d9a65f8d914c62e6b3",
      "tree": "bfa034ae4b25e8af7179b732b5af3dec70fd982a",
      "parents": [
        "15956bbd56be7c0d72f04a99fce7abb54a0887eb"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Wed Apr 01 21:43:49 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 21:43:49 2026 +0800"
      },
      "message": "ci: introduce release rust pipeline (#171)"
    },
    {
      "commit": "15956bbd56be7c0d72f04a99fce7abb54a0887eb",
      "tree": "ca2331b4c9c277c11f51c94d54f3c92246cb84a6",
      "parents": [
        "3445cd40d20244fa7fbe4f577bc79cf1e6d49788"
      ],
      "author": {
        "name": "umi",
        "email": "55790489+discivigour@users.noreply.github.com",
        "time": "Wed Apr 01 21:24:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 01 21:24:00 2026 +0800"
      },
      "message": "feat: implement RESTCatalog with database and table CRUD (#160)"
    },
    {
      "commit": "3445cd40d20244fa7fbe4f577bc79cf1e6d49788",
      "tree": "f4ba9e1c0c7b0902dc65ee48d57cf8c403d7b3aa",
      "parents": [
        "b018c046841382b4d6217d86f8d5c0bb0c8234fa"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Tue Mar 31 10:44:44 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 10:44:44 2026 +0800"
      },
      "message": "ci: trigger go release pipeline on release tag push (#166)"
    },
    {
      "commit": "b018c046841382b4d6217d86f8d5c0bb0c8234fa",
      "tree": "1e08cbb902641b49d62b6311ebae2f4caacf988c",
      "parents": [
        "8a37da306fe7b0b3acf2f70854bb12abbba72394"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Mon Mar 30 19:49:20 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 19:49:20 2026 +0800"
      },
      "message": "feat: introduce projection in go binding and datafusion. (#162)"
    },
    {
      "commit": "8a37da306fe7b0b3acf2f70854bb12abbba72394",
      "tree": "d9b46c8dbd887f2b288070ea2290ddbb52d39fbd",
      "parents": [
        "0b0897081af6a1d68870f74c82fe38637ff99bb5"
      ],
      "author": {
        "name": "XiaoHongbo",
        "email": "1346652787@qq.com",
        "time": "Mon Mar 30 13:26:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 13:26:29 2026 +0800"
      },
      "message": "fix: remove invalid gh-pages key from .asf.yaml and add CI validation (#159)\n\nThe gh-pages key under github.features is not in the ASF .asf.yaml schema,\ncausing ASF infra errors after merge. Add a validation script to catch such\nissues in CI before merge."
    },
    {
      "commit": "0b0897081af6a1d68870f74c82fe38637ff99bb5",
      "tree": "891d7ea61dcf5164cd9afc2271ba5e771ab98bd0",
      "parents": [
        "102e4f021c3073434c9633e77c1bbc92d76126fe"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Mon Mar 30 11:24:59 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 11:24:59 2026 +0800"
      },
      "message": "feat(spec): define Predicate data structure and PredicateBuilder (#156)"
    },
    {
      "commit": "102e4f021c3073434c9633e77c1bbc92d76126fe",
      "tree": "8aba9528fdb73cbdec79dd12e655f5019679159a",
      "parents": [
        "6f34239718e7c07391a769208111596d680af08a"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Mon Mar 30 11:10:07 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 11:10:07 2026 +0800"
      },
      "message": "feat: Introduce docs for paimon-rust (#157)"
    },
    {
      "commit": "6f34239718e7c07391a769208111596d680af08a",
      "tree": "298ca1c3e897cb013dfb1625da8b38b9fc7069a4",
      "parents": [
        "a6229821641f1d8e1410d8d606870f13ccdbc043"
      ],
      "author": {
        "name": "Jingsong Lee",
        "email": "jingsonglee0@gmail.com",
        "time": "Sun Mar 29 18:05:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 29 18:05:29 2026 +0800"
      },
      "message": "fix: Adjust required_approving_review_count to zero (#158)"
    },
    {
      "commit": "a6229821641f1d8e1410d8d606870f13ccdbc043",
      "tree": "aaa6bba005e628b6e1971b383e32af3a50ecfc97",
      "parents": [
        "884ef56b857960d691577ca2580e3702cfed671c"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Sun Mar 29 12:29:01 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 29 12:29:01 2026 +0800"
      },
      "message": "feat(table): support column projection in ReadBuilder (#153)"
    },
    {
      "commit": "884ef56b857960d691577ca2580e3702cfed671c",
      "tree": "45eec921eb341a0366a7f34730d111dd39285dda",
      "parents": [
        "e1cb194fe72ac4918ede62f42dad23346b02aee4"
      ],
      "author": {
        "name": "umi",
        "email": "55790489+discivigour@users.noreply.github.com",
        "time": "Sun Mar 29 09:51:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 29 09:51:25 2026 +0800"
      },
      "message": "feat: implement REST API database and table CRUD operations with DLF authentication (#147)\n\n- Add full REST API support for database and table operations\n- Implement DLF (Alibaba Cloud Data Lake Formation) authentication provider\n- Add bearer token authentication support\n- Refactor mock server for better testing\n- Add comprehensive test coverage for REST API operations\n- Fix clippy warnings and apply code formatting\n\nDatabase operations:\n- list_databases, create_database, get_database, alter_database, drop_database\n\nTable operations:\n- list_tables, create_table, get_table, rename_table, drop_table\n\nAuthentication:\n- DLF authentication with signature generation\n- Bearer token authentication\n- Configurable token provider factory"
    },
    {
      "commit": "e1cb194fe72ac4918ede62f42dad23346b02aee4",
      "tree": "2edcd1d3449001607f7044bda167ca492b1d8442",
      "parents": [
        "7d0a80a8b453166c9bfde69ad2c8b055db352b87"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Wed Mar 25 08:08:05 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 08:08:05 2026 +0800"
      },
      "message": "feat:  support partitioned table in TableScan and TableRead (#145)"
    },
    {
      "commit": "7d0a80a8b453166c9bfde69ad2c8b055db352b87",
      "tree": "1472b69ed3ebf6188186601a6e54736eb966fd9f",
      "parents": [
        "3ec678dec1f8bc4fd933d5754c01da1a4e2c2f96"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Tue Mar 24 20:11:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 20:11:53 2026 +0800"
      },
      "message": "feat: support datafusion integration (#150)"
    },
    {
      "commit": "3ec678dec1f8bc4fd933d5754c01da1a4e2c2f96",
      "tree": "72a26aeef7c0f218bbfae894e35c3ad088369306",
      "parents": [
        "952b0992c04bc608ee0395c792ee0809aa527d4c"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Fri Mar 20 22:04:38 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 22:04:38 2026 +0800"
      },
      "message": "feat(io): support S3 file IO (#142) (#143)"
    },
    {
      "commit": "952b0992c04bc608ee0395c792ee0809aa527d4c",
      "tree": "f20d456825d1c774bba6327e8b241bc4855d40fd",
      "parents": [
        "917ac266e7b410925a2a5639e5897b31a06a7681"
      ],
      "author": {
        "name": "umi",
        "email": "55790489+discivigour@users.noreply.github.com",
        "time": "Thu Mar 19 23:43:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 23:43:51 2026 +0800"
      },
      "message": "feat: add REST API client with list_databases support (#144)"
    },
    {
      "commit": "917ac266e7b410925a2a5639e5897b31a06a7681",
      "tree": "9624a2412549e0f5252975b44e24a1c4f14f7290",
      "parents": [
        "87682dc55648f9b27e98de2c3a1ed4637a049d92"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Wed Mar 18 11:50:10 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 11:50:10 2026 +0800"
      },
      "message": "feat(spec): implement partition path generation (#139)"
    },
    {
      "commit": "87682dc55648f9b27e98de2c3a1ed4637a049d92",
      "tree": "1ed235b81dfefc0437ddd14b854fd847756c9fb9",
      "parents": [
        "7d52915b882ebc849b5c9b7e31bb34cbcbc2a710"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Wed Mar 18 11:49:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 11:49:36 2026 +0800"
      },
      "message": "feat: support read deletion vector to arrow (#141)"
    },
    {
      "commit": "7d52915b882ebc849b5c9b7e31bb34cbcbc2a710",
      "tree": "7375baea9260651014b6c612e7889cdec7777ac0",
      "parents": [
        "0065e7d635f7e977f4eb708fba2ca10eef5ac4a2"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Mon Mar 16 21:13:14 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 21:13:14 2026 +0800"
      },
      "message": "ci: add release pipeline for go binding (#138)"
    },
    {
      "commit": "0065e7d635f7e977f4eb708fba2ca10eef5ac4a2",
      "tree": "ecc1e56e413f64caafcf951c0026edad44b98db9",
      "parents": [
        "1247d8c0ce6533420a643ee5d6958aed791fbecf"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Mon Mar 16 13:54:12 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 13:54:12 2026 +0800"
      },
      "message": "feat: implement BinaryRow deserialization for partition bytes (#133)"
    },
    {
      "commit": "1247d8c0ce6533420a643ee5d6958aed791fbecf",
      "tree": "bb06eb9f4508975a57ba766c4be76b5999a67cfb",
      "parents": [
        "598a2c3cddf90f54d4fd873600b8c261ecee16d3"
      ],
      "author": {
        "name": "Zach",
        "email": "45645138+QuakeWang@users.noreply.github.com",
        "time": "Mon Mar 16 13:50:33 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 13:50:33 2026 +0800"
      },
      "message": "feat: add OSS storage support. (#134)"
    },
    {
      "commit": "598a2c3cddf90f54d4fd873600b8c261ecee16d3",
      "tree": "bdad22278e0b95f02f1dd4c8401919d551bd6a16",
      "parents": [
        "1bb21c5e4938ffedcf88c62a1c2944eda3449c1f"
      ],
      "author": {
        "name": "yuxia Luo",
        "email": "luoyuxia@alumni.sjtu.edu.cn",
        "time": "Mon Mar 16 13:50:24 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 16 13:50:24 2026 +0800"
      },
      "message": "feat: introduce go binding (#132)"
    }
  ],
  "next": "1bb21c5e4938ffedcf88c62a1c2944eda3449c1f"
}
