Skip to content

v0.3.0

Latest

Choose a tag to compare

@XiaoHongbo-Hope XiaoHongbo-Hope released this 01 Aug 03:25
· 88 commits to main since this release
7b54d44

What's Changed

  • chore: bump version to 0.3.0 by @luoyuxia in #335
  • build: fix clippy on Windows GNU with Rust 1.95 by @JaydenHD in #329
  • ci: revert pypa/gh-action-pypi-publish to v1.13.0 by @luoyuxia in #337
  • feat: support input changelog for primary key writes by @QuakeWang in #318
  • fix: cap VarCharType/VarBinaryType MAX_LENGTH at i32::MAX by @shyjsarah in #339
  • fix: validate filesystem catalog identifiers by @fallintoplace in #334
  • [feature] support python scalar udf:video_snapshot for video by @jerry-024 in #336
  • fix: validate changelog producer for first-row merge engine by @QuakeWang in #342
  • fix: classify physical files by path context by @liujiwen-up in #341
  • feat: expose catalog metadata api for pypaimon_rust by @SML0127 in #306
  • feat: support canonical Lumina index type by @QuakeWang in #344
  • [datafusion] Allow callers to skip default-database init in register_catalog by @shyjsarah in #345
  • docs: update release docs and fix bump-version script by @luoyuxia in #348
  • feature: add more object storage backends by @liujiwen-up in #346
  • feat: add bucket and level statistics to ManifestFileMeta by @shyjsarah in #350
  • [INFRA] Set up default rulesets for default and release branches by @asf-gitbox-commits in #322
  • build: pin unicode-segmentation for vortex tests by @JingsongLi in #353
  • fix: write valid empty BinaryRow bytes for empty table stats by @shyjsarah in #349
  • test: add full types boundary consistency coverage by @QuakeWang in #351
  • test: add mixed-format schema evolution coverage by @QuakeWang in #354
  • chore(deps): update constant_time_eq requirement from >=0.4.0, <0.4.3 to >=0.4.0, <0.5.1 by @dependabot[bot] in #361
  • chore(deps): update unicode-segmentation requirement from =1.13.2 to =1.13.3 by @dependabot[bot] in #359
  • chore(deps): update libloading requirement from 0.8 to 0.9 by @dependabot[bot] in #358
  • chore(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 by @dependabot[bot] in #357
  • chore(deps): bump astral-sh/setup-uv from 7.6.0 to 8.1.0 by @dependabot[bot] in #356
  • chore(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in #355
  • test: add mixed-format rename column coverage by @liujiwen-up in #365
  • feat: add write builder configuration by @QuakeWang in #367
  • fix: keep Vortex runtime alive during async IO by @QuakeWang in #375
  • fix(scan): net manifest add/delete by full file identity including level by @TheR1sing3un in #377
  • test: add mixed-format drop column schema evolution coverage by @liujiwen-up in #363
  • feat: add table update to write builder by @QuakeWang in #372
  • fix: merge primary-key rows correctly when bucket files span multiple splits by @TheR1sing3un in #374
  • fix(table): use the snapshot's schema version for time travel reads by @TheR1sing3un in #379
  • feat: support merge-engine=aggregation (basic mode) by @TheR1sing3un in #340
  • fix: stabilize Vortex runtime for async IO by @JingsongLi in #387
  • feat: add conservative ORC predicate pushdown by @liujiwen-up in #388
  • feat: add Mosaic data file reader by @QuakeWang in #386
  • feat: support core Lumina index build by @QuakeWang in #347
  • fix: reject truncated BinaryRow serialized bytes instead of panicking by @tonghuaroot in #364
  • test: cover mixed-format reorder column reads by @liujiwen-up in #366
  • feat(datafusion): consolidate DML WriteBuilder usage by @QuakeWang in #384
  • fix: support missing columns in Mosaic reads by @QuakeWang in #389
  • test: cover filters for mixed-format schema evolution by @liujiwen-up in #390
  • feat(catalog): support column-level alter table by @TheR1sing3un in #370
  • feat(table/write): merge partial-update rows at flush by @TheR1sing3un in #380
  • feat: add Mosaic row-group predicate pruning by @QuakeWang in #393
  • feat(spec): implement Display for DataFileMeta by @Aitozi in #394
  • fix: preserve snapshot properties by @Aitozi in #395
  • feat(table): support mod and hive bucket functions by @Aitozi in #396
  • feat: support vindex vector search by @JingsongLi in #399
  • fix(io): preserve Windows drive letter in local filesystem paths by @TheR1sing3un in #398
  • test(datafusion): cover SQL schema evolution reads by @liujiwen-up in #391
  • fix(vortex): avoid footer read deadlock by @QuakeWang in #402
  • test: cover Mosaic read path combinations by @QuakeWang in #401
  • test: cover Mosaic read compatibility by @QuakeWang in #403
  • test(datafusion): add Lumina index build procedure by @liujiwen-up in #392
  • feat(rest-server): add FileSystemCatalog-backed REST catalog server by @TheR1sing3un in #371
  • test: add schema evolution time travel coverage by @liujiwen-up in #407
  • test: add partitioned schema evolution coverage by @liujiwen-up in #406
  • test: add mixed-format data evolution coverage by @liujiwen-up in #405
  • [btree] Add support for prefix range scan on btree global index by @ArnavBalyan in #408
  • test: cover aggregation merge engine bucket modes by @QuakeWang in #404
  • Add Java-compatible row format and sidecar path support by @JingsongLi in #416
  • [python] Expose DataFrame-style scan/split planning API by @JunRuiLee in #415
  • fix: reject aggregation on sequence fields by @QuakeWang in #409
  • [type] Add native VectorType to the type system (#410 PR 1) by @JunRuiLee in #411
  • fix: handle DataType::Vector in row.rs exhaustive match arms by @SML0127 in #418
  • [python] Add ReadBuilder.with_filter (predicate pushdown) by @JunRuiLee in #419
  • [arrow] Read inline VECTOR columns via Arrow FixedSizeList by @JunRuiLee in #412
  • Align TableCommit with FileStoreCommit commit semantics by @JingsongLi in #422
  • perf: avoid expanding Mosaic row selections by @QuakeWang in #421
  • [table] Support reading dedicated and rolling (multi-segment) vector files by @JunRuiLee in #423
  • feat(predicate): add string and range leaf operators (StartsWith/EndsWith/Contains/Like/Between) by @JunRuiLee in #425
  • feat(parquet): add page-level pruning via ColumnIndex/OffsetIndex by @JunRuiLee in #427
  • fix(scan): prune OR predicates using stats by @QuakeWang in #426
  • [python] Expose DataFrame-style batch write + commit loop by @JunRuiLee in #420
  • [python] Add TableRead.read(splits) returning Arrow batches by @JunRuiLee in #428
  • fix: avoid whole-file reads for Mosaic by @QuakeWang in #424
  • feat: support orc is null predicate pushdown by @liujiwen-up in #429
  • chore(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #433
  • chore(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #432
  • chore(deps): bump astral-sh/setup-uv from 8.1.0 to 8.2.0 by @dependabot[bot] in #431
  • fix(scan): prune data-evolution files by projection by @QuakeWang in #442
  • [table] Accept VECTOR in Lumina index build by @JunRuiLee in #440
  • Implement global index search modes by @JingsongLi in #446
  • [python] Push down like/startsWith/endsWith/contains predicates by @JunRuiLee in #445
  • [python] Support Date/Time/Timestamp/Decimal filter literals in py_to_datum by @JunRuiLee in #443
  • feat(scan): add pruning trace baselines by @hhhizzz in #381
  • Add batch vector search core by @JingsongLi in #450
  • Support data evolution DELETE with deletion vectors by @JingsongLi in #451
  • [table] Fail closed when reading a query-auth.enabled table by @plusplusjiajia in #447
  • [python] Wire per-read scan options (time travel) into the Rust read kernel by @JunRuiLee in #441
  • fix(scan): prune IN predicates using file stats by @hhhizzz in #382
  • fix(scan): use evaluated fields for global index fallback by @QuakeWang in #449
  • Support DataFusion lateral vector search joins by @JingsongLi in #452
  • chore: upgrade DataFusion to 54 by @JingsongLi in #453
  • Add Variant support and DataFusion functions by @JingsongLi in #458
  • feat(variant): support shredding read and write by @JingsongLi in #459
  • docs: refresh Rust docs version and project status by @hechao-ustc in #456
  • Apply exact residual filtering for ORC, Avro, and Row reads by @JunRuiLee in #448
  • Push down variant extractions in DataFusion by @JingsongLi in #460
  • feat(datafusion): support SHOW CREATE TABLE via get_table_definition by @shyjsarah in #444
  • Add video_frame SQL UDF by @JingsongLi in #465
  • Add multimodal SQL helper UDFs by @JingsongLi in #467
  • docs(python): fix README fence and document current read/write APIs by @hechao-ustc in #457
  • docs: mark unreleased storage backends and mosaic feature in getting-started.md by @JRVector9 in #462
  • feat(datafusion): add push down temporal literals by @liujiwen-up in #430
  • feat(index): add single-column btree global index build by @QuakeWang in #454
  • fix(datafusion): keep dynamic options out of show create by @shyjsarah in #468
  • fix(index): propagate fallible with_projection in btree index build by @JunRuiLee in #471
  • Add hybrid search support for DataFusion by @JingsongLi in #473
  • feat(index): add btree global index drop by @QuakeWang in #472
  • perf(scan): stop split construction after limit coverage by @hhhizzz in #470
  • Apply exact predicate filtering on the primary-key merge read path by @JunRuiLee in #463
  • Upgrade vindex and support vector create index by @JingsongLi in #476
  • Support Java-compatible bitmap global index by @JingsongLi in #478
  • feat(core): incremental global index build for btree, lumina, and vindex by @JunRuiLee in #479
  • fix(core): correct BTREE_INDEX_TYPE typo breaking the build by @liwuhen in #481
  • fix(core): compute bitmap build gap on its own index type, not btree by @JunRuiLee in #480
  • Support dedicated vector storage writes by @JingsongLi in #484
  • feat: Implement Blob View support by @JingsongLi in #486
  • fix(core): align BinaryRow timestamp write path with euclidean representation by @liwuhen in #485
  • feat: add inexact not filter pushdown by @liujiwen-up in #488
  • feat(index): support lumina and vindex global index drop by @JunRuiLee in #487
  • fix(datafusion): guard CoW MERGE partition pruning by @JaydenHD in #475
  • Add cross-language Split.serialize() by @XiaoHongbo-Hope in #455
  • Enable Mosaic reads by default by @JingsongLi in #491
  • Support Java-style blob field directives by @JingsongLi in #490
  • Support REST format table reads by @JingsongLi in #492
  • feat(index): Support vector index rerank by @JingsongLi in #493
  • feat(datafusion): support reading branch tables by @shyjsarah in #482
  • Support REST catalog views and SQL functions by @JingsongLi in #494
  • feat(datafusion): support REST Catalog CREATE VIEW by @JingsongLi in #497
  • feat(datafusion): support REST Catalog CREATE FUNCTION by @JingsongLi in #499
  • [core] Parse primary-key vector index source metadata (_SOURCE_META) by @JunRuiLee in #515
  • docs: add AI-assisted contribution policy by @QuakeWang in #512
  • feat: support batch incremental delta scans by @Pandas886 in #508
  • feat: support rowkind.field write semantics by @Pandas886 in #507
  • feat(datafusion): implement DROP VIEW functionality in REST Catalog by @QuakeWang in #501
  • [api] Add authTableQuery method to RESTApi by @plusplusjiajia in #498
  • feat: support case-insensitive column matching on reads (read-time parameter) by @JunRuiLee in #496
  • expose table observability API for pypaimon_rust by @SML0127 in #307
  • fix(datafusion): skip view lookup for table functions by @shyjsarah in #518
  • feat(datafusion): expose hybrid search scores by @QuakeWang in #519
  • [core] Add primary-key vector bucket search kernel by @JunRuiLee in #516
  • feat: write value stats for append data files by @QuakeWang in #477
  • feat(c): expose string and range predicates through the C binding by @JunRuiLee in #523
  • fix(blob): support unknown-length BlobDescriptor ranges by @QuakeWang in #521
  • feat(datafusion): add BlobDescriptor SQL helper functions by @QuakeWang in #525
  • feat(c): expose read builder scan options and time-travel through the C binding by @JunRuiLee in #524
  • [core] Add primary-key vector read kernel by @JunRuiLee in #517
  • feat: support existing changelog incremental reads by @Pandas886 in #509
  • fix(datafusion): remove unneeded wildcard pattern for clippy 1.97.0 by @hechao-ustc in #529
  • [core] Add primary-key vector search read integration by @JunRuiLee in #526
  • feat(c): add write/commit C FFI bindings by @suxiaogang223 in #522
  • [core] Align primary-key vector source metadata with Java by @JunRuiLee in #531
  • perf(blob): parallelize descriptor range reads by @JingsongLi in #534
  • [core] Support MAP shared-shredding in Parquet by @JingsongLi in #536
  • [core] Support scalar residual filter on primary-key vector search by @JunRuiLee in #533
  • fix(blob): support placeholder fallback reads by @QuakeWang in #530
  • fix(catalog): handle filesystem catalog existence on object stores by @Pandas886 in #528
  • [core] Create primary-key vector exact-fallback readers on demand by @JunRuiLee in #535
  • [benchmark] Add DataFusion TPC-DS benchmark harness by @JingsongLi in #542
  • [datafusion] Support Utf8View schemas and residual filtering by @JingsongLi in #543
  • [datafusion] Honor Paimon read.batch-size by @JingsongLi in #547
  • [datafusion] Align Paimon scan statistics with Parquet by @JingsongLi in #548
  • feat(python): add BETWEEN/NOT BETWEEN predicate support by @hechao-ustc in #546
  • fix(index): deduplicate vector search top-k results by @QuakeWang in #541
  • fix(core): resolve storage config aliases to canonical keys by @liwuhen in #540
  • perf(blob): finalize blob bunch metadata once by @QuakeWang in #539
  • docs(python): add Python Integration documentation page by @hechao-ustc in #538
  • feat(table): align primary-key vector read to physical-coordinate model by @JunRuiLee in #544
  • [datafusion] Support runtime filters for Paimon scans by @JingsongLi in #549
  • fix(table): fail closed for query-auth batch vector search by @liwuhen in #551
  • [c] Support vector search materialized read in C FFI bindings by @JunRuiLee in #537
  • feat(table): support the Lumina/DiskANN backend in primary-key vector read by @JunRuiLee in #555
  • [core] Rerank primary-key vector candidates with exact distances by @JunRuiLee in #550
  • fix(datafusion): enforce blob reader location boundaries by @QuakeWang in #552
  • feat(blob): support ARRAY reads by @QuakeWang in #566
  • [core] Stream primary-key vector exact fallback one batch at a time by @JunRuiLee in #559
  • fix(row): guard timestamp conversion against overflow from corrupt data by @hechao-ustc in #545
  • build(python): give RC artifacts unique versions by @XiaoHongbo-Hope in #557
  • perf(datafusion): push filters into Paimon Parquet readers by @JingsongLi in #574
  • fix(api): honor REST config overrides by @shyjsarah in #570
  • fix(datafusion): avoid loading tables for SHOW TABLES by @shyjsarah in #576
  • feat(partial-update): support ignore-delete semantics by @shyjsarah in #573
  • feat: deserialize DataSplit from Paimon-native bytes (core + C binding) by @JunRuiLee in #565
  • build: lock and verify release dependencies by @XiaoHongbo-Hope in #558
  • docs: add TPC-DS SF100 performance report by @JingsongLi in #553
  • docs: add C integration guide by @JingsongLi in #581
  • fix(blob): validate entry integrity on reads by @QuakeWang in #582
  • feat(table): read materialized deletion-vector PK splits by @shyjsarah in #580
  • [core] Batch primary-key vector search over a shared plan by @JunRuiLee in #560
  • build: harden Rust crate publishing by @XiaoHongbo-Hope in #562
  • fix(table): reject invalid global index metadata by @XiaoHongbo-Hope in #578
  • [core] Search primary-key vector buckets and files concurrently by @JunRuiLee in #556
  • feat(ftindex): read Java full-text archives via paimon-ftindex-core by @JunRuiLee in #563
  • fix(table): enable global index by default by @XiaoHongbo-Hope in #587
  • fix: use i64 for index file size by @XiaoHongbo-Hope in #586
  • partial_update: support sequence-group reads by @shyjsarah in #584
  • build(bindings): package complete legal metadata by @XiaoHongbo-Hope in #561
  • perf(table): search global index shards concurrently by @XiaoHongbo-Hope in #589
  • fix(table): match Java NaN ordering in aggregation by @liwuhen in #588
  • build: correct Jieba release license metadata by @shyjsarah in #593
  • feat(fulltext): read global indexes via paimon-ftindex-core by @shyjsarah in #571
  • feat(table): add primary-key full-text read data layer by @JunRuiLee in #594
  • feat(table): support selected ranges for rolled dedicated files by @XiaoHongbo-Hope in #592
  • perf(parquet): prune row selection with OffsetIndex by @XiaoHongbo-Hope in #597
  • fix(table): align bitmap index ordering with Java by @QuakeWang in #601
  • feat(table): add primary-key full-text read path by @JunRuiLee in #599
  • partial_update: support field aggregation reads by @shyjsarah in #598
  • perf(table): push row-range pruning into manifest scan by @XiaoHongbo-Hope in #590
  • feat: add local disk cache by @JingsongLi in #600
  • fix: serialize empty BinaryRow with fixed part by @yanbinyang in #604
  • ci: install cargo-about CLI on Intel macOS by @XiaoHongbo-Hope in #605

New Contributors

Full Changelog: v0.2.0...v0.3.0