Releases: lance-format/lance-spark
Releases · lance-format/lance-spark
Release list
v0.6.1
What's Changed
Bug Fixes 🐛
- fix: disable commit coordinator for position delta write by @zhangyue19921010 in #669
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
New Features 🎉
- feat: support nested Spark index field paths by @Xuanwo in #607
- feat: upgrade to lance 8.0.0-beta.9 and migrate distributed BTree index build by @jiaoew1991 in #612
- feat: support deferred index creation with WITH (train=false) by @ivscheianu in #558
- feat: resolve blob v2 file format version at table creation by @geruh in #622
- feat(sql): copy through blob v2 columns in Lance writes by @geruh in #626
- feat(sql): blob v2 copy-through for MERGE/UPDATE row-level commands by @geruh in #634
- feat: support ddl for branch operation by @fangbo in #576
- feat: expose scan stats to spark sql metrics by @fangbo in #556
- feat: support ddl for tag operation by @fangbo in #654
- feat: add use_scalar_index in storage options by @fangbo in #660
Bug Fixes 🐛
- fix: preserve write options through defaults and overwrite by @LuciferYang in #589
- fix: keep table-level options out of storage options by @geruh in #610
- fix: close dataset when add-index job fails by @LuciferYang in #617
- fix: pass namespace storage options to driver commits by @FANNG1 in #616
- fix: make catalog namespace and function contracts self-consistent by @geruh in #638
- fix: fall back to describeNamespace when glue lacks namespaceExists by @geruh in #645
- fix: preserve target column metadata on update columns from command by @zhangyue19921010 in #640
- fix: reuse dataset during update backfill by @zhangyue19921010 in #658
- fix: render pushed-down timestamp literals in UTC by @LuciferYang in #661
- fix: null LanceColumnarPartitionReader.fragmentReader before releasing by @LuciferYang in #667
Documentation 📚
- docs: add Contribution Workflow section to CONTRIBUTING.md by @wombatu-kun in #627
Other Changes
- refactor: delete unused removeParentPrefix by @geruh in #646
- refactor: group constants and fields, drop dead throws by @geruh in #648
New Contributors
- @dependabot[bot] made their first contribution in #599
- @Xuanwo made their first contribution in #607
- @FANNG1 made their first contribution in #616
Full Changelog: v0.5.1...v0.6.0
v0.5.1
v0.5.0
What's Changed
New Features 🎉
- feat: support DROP INDEX DDL by @LuciferYang in #371
- feat: add Map type support by @summaryzb in #379
- feat: support float16 vector type by @wombatu-kun in #378
- feat: support alter table set/unset properties by @wombatu-kun in #358
- feat: support alter table set unenforced primary key by @wombatu-kun in #359
- feat: support rename table by @wombatu-kun in #352
- feat: propagate enable_stable_row_ids through spark write path by @ivscheianu in #351
- feat(benchmark): add --file-format-version option to TPC-DS data generator by @xuzha in #411
- feat: add zonemap-based fragment pruning and storage-partitioned join (SPJ) support by @beinan in #396
- feat: add use_large_var_types option to avoid 2GB Arrow vector overflow by @beinan in #413
- feat(benchmark): add TPC-DS btree index creation for fragment pruning by @summaryzb in #433
- feat: support compression config via Spark TBLPROPERTIES by @ivscheianu in #428
- feat: add byte-based batch flushing to prevent OOM on large rows by @beinan in #420
- feat: expose blob_pack_file_size_threshold write option by @hamersaw in #447
- feat: support reading non-microsecond Arrow timestamp columns by @summaryzb in #444
- feat: require clustered distribution on write for SPJ by @beinan in #445
- feat: support Lance index metadata in Spark indexing by @jackye1995 in #481
- feat: add param
rows_per_rangefor range-based btree index built by @fangbo in #439 - feat: add custom Lance metrics to trace read-path scan performance by @summaryzb in #460
- feat: preserve Arrow Date(MILLISECOND) columns through Spark roundtrip by @summaryzb in #464
- fix: widen pruned nested struct schemas to preserve Arrow child ordinals by @butnaruandrei in #442
- feat: implement native update path with stable row-id preservation by @ivscheianu in #407
- feat: add TPC-H benchmark by @wombatu-kun in #403
- feat: support VectorUDT writes via UDT unwrapping in LanceArrowWriter by @LuciferYang in #471
- feat: preserve blob data through Spark shuffle during JOIN + INSERT INTO by @beinan in #355
- feat: use Lance MemWAL sharding for bucketed writes and SPJ by @beinan in #519
- feat: support Spark 4.1 TimeType (time-of-day) by @LuciferYang in #457
- feat: round-trip UDT columns automatically via __udt field metadata by @LuciferYang in #546
- feat: preserve FixedSizeBinary(n) byte width across read-write roundtrips by @LuciferYang in #470
- feat: blob v2 descriptor read support by @geruh in #548
- feat: blob v2 write support by @geruh in #560
- feat: add distributed zonemap index build with configurable segments by @beinan in #516
- feat: SEARCH, VECTOR_SEARCH and HYBRID_SEARCH table functions by @jackye1995 in #582
- feat: add LOCATION support to CREATE TABLE for custom paths and existing datasets by @ykozxy in #579
Bug Fixes 🐛
- fix: strip quotes from visitStringLiteral and fail explicitly on unrecognized build_mode by @puchengy in #375
- fix: escape single quotes in filter pushdown SQL compilation by @LuciferYang in #377
- fix: prevent resource leaks in read path close/error handling by @LuciferYang in #376
- fix: decouple benchmark module from lance-spark version dependency by @summaryzb in #370
- fix: rename NamedArgument to LanceNamedArgument to avoid Iceberg classpath collision by @LuciferYang in #383
- fix: add --fail flag to curl downloads in docker/Dockerfile by @wombatu-kun in #405
- fix: update columns concurrent write conflict issue by @jerryjch in #345
- fix: pass namespace and storage parameters for add/update column by @bryanck in #422
- fix: add clean-bundle target for reliable source change detection by @ivscheianu in #426
- fix(benchmark): accurately materialize tpcds query by @summaryzb in #415
- fix: implement equals/hashCode on LanceScan to enable ReusedExchange by @LuciferYang in #427
- fix: intercept Spark 4.0+ native CREATE INDEX to prevent NPE by @beinan in #412
- fix: report post-pruning statistics to enable BroadcastHashJoin with SPJ by @beinan in #425
- fix: race condition in QueuedArrowBatchWriteBuffer losing final batch by @hamersaw in #431
- fix: preserve use_large_var_types on staged commit path by @beinan in #443
- fix: remove Array filter pushdown workaround (upstream lance#… by @summaryzb in #441
- fix: exclude netty from bundle jars to prevent split-package conflicts by @hamersaw in #458
- fix: roll fragments on partition-value transitions by @hamersaw in #463
- fix: no such method error in lance arrow util due to transitive json4s usage by @ivscheianu in #465
- fix: propagate index_details from distributed index creation by @LuciferYang in #475
- fix(spark): gss initiate failed on hms executors; spark.sql.catalog read options not applied by @xiaguanglei in #476
- fix: reject DECIMAL256 columns at schema resolution time with actiona… by @summaryzb in #492
- fix: use describeIndices to list indices to improve performance by @fangbo in #532
- fix: support CHAR/VARCHAR types in SQL DDL write path by @LuciferYang in #456
- fix: preserve Arrow field metadata for nested List/FixedSizeList/Map children by @LuciferYang in #533
- fix: allow null parent struct when children are non-nullable by @LuciferYang in #549
- fix: keep Arrow reader vectors reusable across batches by @beinan in #545
- fix: wrong LANCE_SPARK_VERSION and package name by @yanghua in #551
- fix: backtick-quote multipart identifiers in range-based BTree index job by @summaryzb in #521
- fix: widen narrow numeric literals in zonemap pruner by @LuciferYang in #559
Documentation 📚
- docs: add Spark 4.1 to supported versions by @hamersaw in #391
- docs: add use_large_var_types write option documentation by @beinan in #424
- docs: fixed repo name from lancedb/lance-spark to lance-format/lance-spark by @wombatu-kun in #438
- docs: add Lance Spark Glue/S3 agent skill by @jackye1995 in #489
- docs: upgrade lance spark bundle version by @eddyxu in #571
Performance Improvements 🚀
- perf: optimize LIMIT pushdown by pruning splits using fragment row counts by @beinan in #395
- refactor: remove Java-side dataset cache, rely on Rust-side Session by @LuciferYang in #353
- perf: report projection-aware stats so BroadcastHashJoin fires on pruned scans by @LuciferYang in #435
- perf(read): consolidate driver-side Dataset opens and pin version for… by @yanghua in #567
...
v0.5.0-beta.1
What's Changed
New Features 🎉
- feat: support DROP INDEX DDL by @LuciferYang in #371
- feat: add Map type support by @summaryzb in #379
- feat: support float16 vector type by @wombatu-kun in #378
- feat: support alter table set/unset properties by @wombatu-kun in #358
- feat: support alter table set unenforced primary key by @wombatu-kun in #359
- feat: support rename table by @wombatu-kun in #352
- feat: propagate enable_stable_row_ids through spark write path by @ivscheianu in #351
- feat(benchmark): add --file-format-version option to TPC-DS data generator by @xuzha in #411
- feat: add zonemap-based fragment pruning and storage-partitioned join (SPJ) support by @beinan in #396
- feat: add use_large_var_types option to avoid 2GB Arrow vector overflow by @beinan in #413
- feat(benchmark): add TPC-DS btree index creation for fragment pruning by @summaryzb in #433
- feat: support compression config via Spark TBLPROPERTIES by @ivscheianu in #428
- feat: add byte-based batch flushing to prevent OOM on large rows by @beinan in #420
- feat: expose blob_pack_file_size_threshold write option by @hamersaw in #447
- feat: support reading non-microsecond Arrow timestamp columns by @summaryzb in #444
- feat: require clustered distribution on write for SPJ by @beinan in #445
- feat: support Lance index metadata in Spark indexing by @jackye1995 in #481
- feat: add param
rows_per_rangefor range-based btree index built by @fangbo in #439 - feat: add custom Lance metrics to trace read-path scan performance by @summaryzb in #460
- feat: preserve Arrow Date(MILLISECOND) columns through Spark roundtrip by @summaryzb in #464
- fix: widen pruned nested struct schemas to preserve Arrow child ordinals by @butnaruandrei in #442
- feat: implement native update path with stable row-id preservation by @ivscheianu in #407
- feat: add TPC-H benchmark by @wombatu-kun in #403
- feat: support VectorUDT writes via UDT unwrapping in LanceArrowWriter by @LuciferYang in #471
Bug Fixes 🐛
- fix: strip quotes from visitStringLiteral and fail explicitly on unrecognized build_mode by @puchengy in #375
- fix: escape single quotes in filter pushdown SQL compilation by @LuciferYang in #377
- fix: prevent resource leaks in read path close/error handling by @LuciferYang in #376
- fix: decouple benchmark module from lance-spark version dependency by @summaryzb in #370
- fix: rename NamedArgument to LanceNamedArgument to avoid Iceberg classpath collision by @LuciferYang in #383
- fix: add --fail flag to curl downloads in docker/Dockerfile by @wombatu-kun in #405
- fix: update columns concurrent write conflict issue by @jerryjch in #345
- fix: pass namespace and storage parameters for add/update column by @bryanck in #422
- fix: add clean-bundle target for reliable source change detection by @ivscheianu in #426
- fix(benchmark): accurately materialize tpcds query by @summaryzb in #415
- fix: implement equals/hashCode on LanceScan to enable ReusedExchange by @LuciferYang in #427
- fix: intercept Spark 4.0+ native CREATE INDEX to prevent NPE by @beinan in #412
- fix: report post-pruning statistics to enable BroadcastHashJoin with SPJ by @beinan in #425
- fix: race condition in QueuedArrowBatchWriteBuffer losing final batch by @hamersaw in #431
- fix: preserve use_large_var_types on staged commit path by @beinan in #443
- fix: remove Array filter pushdown workaround (upstream lance#… by @summaryzb in #441
- fix: exclude netty from bundle jars to prevent split-package conflicts by @hamersaw in #458
- fix: roll fragments on partition-value transitions by @hamersaw in #463
- fix: no such method error in lance arrow util due to transitive json4s usage by @ivscheianu in #465
- fix: propagate index_details from distributed index creation by @LuciferYang in #475
- fix(spark): gss initiate failed on hms executors; spark.sql.catalog read options not applied by @xiaguanglei in #476
- fix: reject DECIMAL256 columns at schema resolution time with actiona… by @summaryzb in #492
- fix: use describeIndices to list indices to improve performance by @fangbo in #532
- fix: support CHAR/VARCHAR types in SQL DDL write path by @LuciferYang in #456
- fix: preserve Arrow field metadata for nested List/FixedSizeList/Map children by @LuciferYang in #533
Documentation 📚
- docs: add Spark 4.1 to supported versions by @hamersaw in #391
- docs: add use_large_var_types write option documentation by @beinan in #424
- docs: fixed repo name from lancedb/lance-spark to lance-format/lance-spark by @wombatu-kun in #438
- docs: add Lance Spark Glue/S3 agent skill by @jackye1995 in #489
Performance Improvements 🚀
- perf: optimize LIMIT pushdown by pruning splits using fragment row counts by @beinan in #395
- refactor: remove Java-side dataset cache, rely on Rust-side Session by @LuciferYang in #353
- perf: report projection-aware stats so BroadcastHashJoin fires on pruned scans by @LuciferYang in #435
Other Changes
- refactor: move integration tests to top-level directory by @hamersaw in #393
- refactor: remove dead SchemaConverter JsonArrow code by @LuciferYang in #409
- refactor: consolidate dataset-open logic into Utils.OpenDatasetBuilder by @LuciferYang in #384
- refactor: refactor the vector data expose to rust side to improve performance and prevent OOM by @fangbo in #467
- refactor: migrate filter pushdown from V1 Filter to V2 Predicate API by @wombatu-kun in #448
New Contributors
- @puchengy made their first contribution in #375
- @summaryzb made their first contribution in #370
- @wombatu-kun made their first contribution in #378
- @xuzha made their first contribution in #411
- @jerryjch made their first contribution in #345
- @xiaguanglei made their first contribution in #476
- @butnaruandrei made their first contribution in #442
Full Changelog: v0.4.0...v0.5.0-beta.1
v0.4.0-beta.4
What's Changed
New Features 🎉
- feat: require clustered distribution on write for SPJ by @beinan in #445
- feat: support Lance index metadata in Spark indexing by @jackye1995 in #481
Bug Fixes 🐛
- fix: roll fragments on partition-value transitions by @hamersaw in #463
- fix: no such method error in lance arrow util due to transitive json4s usage by @ivscheianu in #465
- fix: propagate index_details from distributed index creation by @LuciferYang in #475
Other Changes
- refactor: refactor the vector data expose to rust side to improve performance and prevent OOM by @fangbo in #467
Full Changelog: v0.4.0-beta.3...v0.4.0-beta.4
v0.4.0-beta.3
What's Changed
New Features 🎉
- feat(benchmark): add TPC-DS btree index creation for fragment pruning by @summaryzb in #433
- feat: support compression config via Spark TBLPROPERTIES by @ivscheianu in #428
- feat: add byte-based batch flushing to prevent OOM on large rows by @beinan in #420
- feat: expose blob_pack_file_size_threshold write option by @hamersaw in #447
- feat: support reading non-microsecond Arrow timestamp columns by @summaryzb in #444
Bug Fixes 🐛
- fix: intercept Spark 4.0+ native CREATE INDEX to prevent NPE by @beinan in #412
- fix: report post-pruning statistics to enable BroadcastHashJoin with SPJ by @beinan in #425
- fix: race condition in QueuedArrowBatchWriteBuffer losing final batch by @hamersaw in #431
- fix: preserve use_large_var_types on staged commit path by @beinan in #443
- fix: remove Array filter pushdown workaround (upstream lance#… by @summaryzb in #441
- fix: exclude netty from bundle jars to prevent split-package conflicts by @hamersaw in #458
Documentation 📚
- docs: fixed repo name from lancedb/lance-spark to lance-format/lance-spark by @wombatu-kun in #438
Performance Improvements 🚀
- refactor: remove Java-side dataset cache, rely on Rust-side Session by @LuciferYang in #353
- perf: report projection-aware stats so BroadcastHashJoin fires on pruned scans by @LuciferYang in #435
Full Changelog: v0.4.0-beta.2...v0.4.0-beta.3
v0.4.0-beta.2
What's Changed
New Features 🎉
- feat: support DROP INDEX DDL by @LuciferYang in #371
- feat: add Map type support by @summaryzb in #379
- feat: support float16 vector type by @wombatu-kun in #378
- feat: support alter table set/unset properties by @wombatu-kun in #358
- feat: support alter table set unenforced primary key by @wombatu-kun in #359
- feat: support rename table by @wombatu-kun in #352
- feat: propagate enable_stable_row_ids through spark write path by @ivscheianu in #351
- feat(benchmark): add --file-format-version option to TPC-DS data generator by @xuzha in #411
- feat: add zonemap-based fragment pruning and storage-partitioned join (SPJ) support by @beinan in #396
- feat: add use_large_var_types option to avoid 2GB Arrow vector overflow by @beinan in #413
Bug Fixes 🐛
- fix: strip quotes from visitStringLiteral and fail explicitly on unrecognized build_mode by @puchengy in #375
- fix: escape single quotes in filter pushdown SQL compilation by @LuciferYang in #377
- fix: prevent resource leaks in read path close/error handling by @LuciferYang in #376
- fix: decouple benchmark module from lance-spark version dependency by @summaryzb in #370
- fix: rename NamedArgument to LanceNamedArgument to avoid Iceberg classpath collision by @LuciferYang in #383
- fix: add --fail flag to curl downloads in docker/Dockerfile by @wombatu-kun in #405
- fix: update columns concurrent write conflict issue by @jerryjch in #345
- fix: pass namespace and storage parameters for add/update column by @bryanck in #422
- fix: add clean-bundle target for reliable source change detection by @ivscheianu in #426
- fix(benchmark): accurately materialize tpcds query by @summaryzb in #415
- fix: implement equals/hashCode on LanceScan to enable ReusedExchange by @LuciferYang in #427
Documentation 📚
- docs: add Spark 4.1 to supported versions by @hamersaw in #391
- docs: add use_large_var_types write option documentation by @beinan in #424
Performance Improvements 🚀
Other Changes
- refactor: move integration tests to top-level directory by @hamersaw in #393
- refactor: remove dead SchemaConverter JsonArrow code by @LuciferYang in #409
- refactor: consolidate dataset-open logic into Utils.OpenDatasetBuilder by @LuciferYang in #384
New Contributors
- @puchengy made their first contribution in #375
- @summaryzb made their first contribution in #370
- @wombatu-kun made their first contribution in #378
- @xuzha made their first contribution in #411
- @jerryjch made their first contribution in #345
Full Changelog: v0.4.0-beta.1...v0.4.0-beta.2
v0.4.0
What's Changed
New Features 🎉
- feat: support DROP INDEX DDL by @LuciferYang in #371
- feat: add Map type support by @summaryzb in #379
- feat: support float16 vector type by @wombatu-kun in #378
- feat: support alter table set/unset properties by @wombatu-kun in #358
- feat: support alter table set unenforced primary key by @wombatu-kun in #359
- feat: support rename table by @wombatu-kun in #352
- feat: propagate enable_stable_row_ids through spark write path by @ivscheianu in #351
- feat(benchmark): add --file-format-version option to TPC-DS data generator by @xuzha in #411
- feat: add zonemap-based fragment pruning and storage-partitioned join (SPJ) support by @beinan in #396
- feat: add use_large_var_types option to avoid 2GB Arrow vector overflow by @beinan in #413
- feat(benchmark): add TPC-DS btree index creation for fragment pruning by @summaryzb in #433
- feat: support compression config via Spark TBLPROPERTIES by @ivscheianu in #428
- feat: add byte-based batch flushing to prevent OOM on large rows by @beinan in #420
- feat: expose blob_pack_file_size_threshold write option by @hamersaw in #447
- feat: support reading non-microsecond Arrow timestamp columns by @summaryzb in #444
- feat: require clustered distribution on write for SPJ by @beinan in #445
- feat: support Lance index metadata in Spark indexing by @jackye1995 in #481
- feat: add param
rows_per_rangefor range-based btree index built by @fangbo in #439 - feat: add custom Lance metrics to trace read-path scan performance by @summaryzb in #460
- feat: preserve Arrow Date(MILLISECOND) columns through Spark roundtrip by @summaryzb in #464
- fix: widen pruned nested struct schemas to preserve Arrow child ordinals by @butnaruandrei in #442
Bug Fixes 🐛
- fix: strip quotes from visitStringLiteral and fail explicitly on unrecognized build_mode by @puchengy in #375
- fix: escape single quotes in filter pushdown SQL compilation by @LuciferYang in #377
- fix: prevent resource leaks in read path close/error handling by @LuciferYang in #376
- fix: decouple benchmark module from lance-spark version dependency by @summaryzb in #370
- fix: rename NamedArgument to LanceNamedArgument to avoid Iceberg classpath collision by @LuciferYang in #383
- fix: add --fail flag to curl downloads in docker/Dockerfile by @wombatu-kun in #405
- fix: update columns concurrent write conflict issue by @jerryjch in #345
- fix: pass namespace and storage parameters for add/update column by @bryanck in #422
- fix: add clean-bundle target for reliable source change detection by @ivscheianu in #426
- fix(benchmark): accurately materialize tpcds query by @summaryzb in #415
- fix: implement equals/hashCode on LanceScan to enable ReusedExchange by @LuciferYang in #427
- fix: intercept Spark 4.0+ native CREATE INDEX to prevent NPE by @beinan in #412
- fix: report post-pruning statistics to enable BroadcastHashJoin with SPJ by @beinan in #425
- fix: race condition in QueuedArrowBatchWriteBuffer losing final batch by @hamersaw in #431
- fix: preserve use_large_var_types on staged commit path by @beinan in #443
- fix: remove Array filter pushdown workaround (upstream lance#… by @summaryzb in #441
- fix: exclude netty from bundle jars to prevent split-package conflicts by @hamersaw in #458
- fix: roll fragments on partition-value transitions by @hamersaw in #463
- fix: no such method error in lance arrow util due to transitive json4s usage by @ivscheianu in #465
- fix: propagate index_details from distributed index creation by @LuciferYang in #475
- fix(spark): gss initiate failed on hms executors; spark.sql.catalog read options not applied by @xiaguanglei in #476
- fix: reject DECIMAL256 columns at schema resolution time with actiona… by @summaryzb in #492
Documentation 📚
- docs: add Spark 4.1 to supported versions by @hamersaw in #391
- docs: add use_large_var_types write option documentation by @beinan in #424
- docs: fixed repo name from lancedb/lance-spark to lance-format/lance-spark by @wombatu-kun in #438
- docs: add Lance Spark Glue/S3 agent skill by @jackye1995 in #489
Performance Improvements 🚀
- perf: optimize LIMIT pushdown by pruning splits using fragment row counts by @beinan in #395
- refactor: remove Java-side dataset cache, rely on Rust-side Session by @LuciferYang in #353
- perf: report projection-aware stats so BroadcastHashJoin fires on pruned scans by @LuciferYang in #435
Other Changes
- refactor: move integration tests to top-level directory by @hamersaw in #393
- refactor: remove dead SchemaConverter JsonArrow code by @LuciferYang in #409
- refactor: consolidate dataset-open logic into Utils.OpenDatasetBuilder by @LuciferYang in #384
- refactor: refactor the vector data expose to rust side to improve performance and prevent OOM by @fangbo in #467
New Contributors
- @puchengy made their first contribution in #375
- @summaryzb made their first contribution in #370
- @wombatu-kun made their first contribution in #378
- @xuzha made their first contribution in #411
- @jerryjch made their first contribution in #345
- @xiaguanglei made their first contribution in #476
- @butnaruandrei made their first contribution in #442
Full Changelog: v0.3.0...v0.4.0
v0.4.0-beta.1
What's Changed
New Features 🎉
- feat: add TPC-DS benchmark infrastructure by @beinan in #310
- perf: remove sort from add and update columns flow by @hamersaw in #259
- feat: build BTree index using range based mode by @fangbo in #274
- feat: expose prefilter parameter to support vector search by @nyl3532016 in #297
Bug Fixes 🐛
- fix: stabilize flaky MergeInto fragment distribution test by @LuciferYang in #339
- fix: replace scala.jdk.CollectionConverters with scala.collection.JavaConverters in Scala 2.12 by @ivscheianu in #338
- fix: handle JNI RuntimeException in describeTable for Spark 4.0+ tableExists by @LuciferYang in #326
- fix: pruneColumns rejects empty required schema and reads all columns by @LuciferYang in #337
- fix: use dataset file format version to write data files by @jackye1995 in #280
- fix: add SIGKILL fallback for subprocess teardown in test fixtures by @ivscheianu in #360
- fix: correct column alias in TPC-DS q71 benchmark query by @LuciferYang in #365
New Contributors
- @ivscheianu made their first contribution in #338
Full Changelog: v0.3.0-beta.3...v0.4.0-beta.1