Commit 3d196fb
Pull in latest main (delta-io#44)
* feat: Add CheckpointManifestReader to process sidecar files (delta-io#1500)
## 🥞 Stacked PR
Use this
[link](https://github.com/delta-io/delta-kernel-rs/pull/1500/files) to
review incremental changes.
-
[**stack/dlr_manifest**](delta-io#1500)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1500/files)]
-
[stack/dlr_driver](delta-io#1502)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1502/files/2f0a14caf7cd1070625525868e18da9c300b8a0f..4285e9c8ae504fe697b83f4719c0e0995e0e3bd1)]
-
[stack/dlr_serialization_helpers](delta-io#1543)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1543/files/4285e9c8ae504fe697b83f4719c0e0995e0e3bd1..60f13ec6ee1f7cc2b57006a09d4b0e82b59733b9)]
-
[stack/dlr_serde](delta-io#1503)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1503/files/60f13ec6ee1f7cc2b57006a09d4b0e82b59733b9..377ae3f2596116d00cba596268090d2f69118b2e)]
-
[stack/dlr_add_rm_dedup](delta-io#1537)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1537/files/377ae3f2596116d00cba596268090d2f69118b2e..06fdf84431d7ee9cf693149784b11e4afb242de1)]
-
[stack/dlr_immutable_add_rm_dedup](delta-io#1538)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1538/files/06fdf84431d7ee9cf693149784b11e4afb242de1..991cdd69f18eb680dbafae3c213093b036cb7a85)]
-
[stack/dlr_leaf](delta-io#1501)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1501/files/991cdd69f18eb680dbafae3c213093b036cb7a85..1f52bbc6512d7cb0a5e2a68954eb434be7313ef0)]
-
[stack/dlr_executor](delta-io#1539)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1539/files/1f52bbc6512d7cb0a5e2a68954eb434be7313ef0..9a4f638d613121fe5819e3fef6c03b3e5102ab73)]
- [stack/dlr_api](delta-io#1547)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1547/files/9a4f638d613121fe5819e3fef6c03b3e5102ab73..f385656ab1aa1f34caf77fa8518834d0ac0b998c)]
-
[stack/dlr_scan_state_serde](delta-io#1549)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1549/files/f385656ab1aa1f34caf77fa8518834d0ac0b998c..ac99eeec1f5d19fe76e8589f87cf53a7aa140e54)]
---------
This PR adds a CheckpointManifestReader that is responsible for reading
both manifest checkpoints and single-part checkpoints. For manifest
checkpoints, it collects all the sidecar files that are present and
returns them for further processing.
* feat: Distributed Log Replay Sequential Phase (delta-io#1502)
## 🥞 Stacked PR
Use this
[link](https://github.com/delta-io/delta-kernel-rs/pull/1502/files) to
review incremental changes.
-
[**stack/dlr_driver**](delta-io#1502)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1502/files)]
-
[stack/dlr_serialization_helpers](delta-io#1543)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1543/files/8f86b459613c0f018dd0e45473ba3e6e50d127af..0286f1d09006b099e73333c3d2d6a0873ede6cdd)]
-
[stack/dlr_serde](delta-io#1503)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1503/files/0286f1d09006b099e73333c3d2d6a0873ede6cdd..ee68c851e338a83584b004d919c40eca301e2ee3)]
-
[stack/dlr_add_rm_dedup](delta-io#1537)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1537/files/ee68c851e338a83584b004d919c40eca301e2ee3..436ce448e2dbf08ceb8f13350cb609ae3f554a7c)]
-
[stack/dlr_immutable_add_rm_dedup](delta-io#1538)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1538/files/436ce448e2dbf08ceb8f13350cb609ae3f554a7c..b2c2703bef78ef814c0579e82857cd67a2d1364b)]
-
[stack/dlr_leaf](delta-io#1501)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1501/files/b2c2703bef78ef814c0579e82857cd67a2d1364b..5f04e2059209c09a3ac8f5981d018347829bd8ab)]
-
[stack/dlr_executor](delta-io#1539)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1539/files/5f04e2059209c09a3ac8f5981d018347829bd8ab..7e2d26a6b063927e8b9a9fa62043ad30c705cc43)]
- [stack/dlr_api](delta-io#1547)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1547/files/7e2d26a6b063927e8b9a9fa62043ad30c705cc43..b608475ed1402d8640b89e5948d066e0867585b3)]
-
[stack/dlr_scan_state_serde](delta-io#1549)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1549/files/b608475ed1402d8640b89e5948d066e0867585b3..c35994fbf457ed95556acc7688456feb81923abf)]
---------
## What changes are proposed in this pull request?
This pull request introduces the SequentialPhase for distributed log
replay. This phase reads the commit and checkpoint files for a
logsegment and performs the log replay processor over the batches.
Upon completion, the `finish` method produces `AfterSequential` which
has two variants:
* `Done`: Indicates that the metadata phase is complete and there is no
more work to do.
* `Distributed`: Indicates that a distributed phase is required (see the
pr at stack/dlr_executor)
## How was this change tested?
Ensure that the sequential phase extracts the expected actions for:
* commits
* single-part checkpoints
Ensure that sequential phase produces `AfterSequential::Distributed` in
the presence of:
* sidecar files in a manifest checkpoint
* multi-part checkpoints
* feat/bugfix: Passing schema from C, plus example/tests in C (delta-io#1535)
## What changes are proposed in this pull request?
* Don't use a macro to generate primitive visitors. `cbindgen` runs
before macro expansion, so previously none of those visitors were
actually being generated
* Add code to `read_table` to allow specifying which columns to select,
plus all the associated code to pass that back to kernel
* Add c based tests to make sure it's working
## How was this change tested?
New tests when running `make test` in `read_table`
---------
Co-authored-by: OussamaSaoudi <45303303+OussamaSaoudi@users.noreply.github.com>
* feat!: expose mod time in scan metadata callbacks (delta-io#1565)
* feat: Support sidecar in inspect-table (delta-io#1566)
<!--
Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
https://github.com/delta-incubator/delta-kernel-rs/blob/main/CONTRIBUTING.md
2. Run `cargo t --all-features --all-targets` to get started testing,
and run `cargo fmt`.
3. Ensure you have added or run the appropriate tests for your PR.
4. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]
Your PR title ...'.
5. Be sure to keep the PR description updated to reflect all changes.
-->
<!--
PR title formatting:
This project uses conventional commits:
https://www.conventionalcommits.org/
Each PR corresponds to a commit on the `main` branch, with the title of
the PR (typically) being
used for the commit message on main. In order to ensure proper
formatting in the CHANGELOG please
ensure your PR title adheres to the conventional commit specification.
Examples:
- new feature PR: "feat: new API for snapshot.update()"
- bugfix PR: "fix: correctly apply DV in read-table example"
-->
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
Support sidecar in inspect-table.
Solves the issue delta-io#695.
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
Test locally. Used
`./kernel/tests/data/v2-checkpoints-parquet-with-sidecars.tar.zst`. The
output successfully print sidecar actions:
```
cargo run -p inspect-table -- v2-checkpoints-parquet-with-sidecars actions | head -17
Action 1:
Sidecar {
path: "00000000000000000006.checkpoint.0000000001.0000000002.76931b15-ead3-480d-b86c-afe55a577fc3.parquet",
size_in_bytes: 12461,
modification_time: 1739329719752,
tags: None,
}
Action 2:
Sidecar {
path: "00000000000000000006.checkpoint.0000000002.0000000002.4367b29c-0e87-447f-8e81-9814cc01ad1f.parquet",
size_in_bytes: 12109,
modification_time: 1739329719746,
tags: None,
}
```
* fix: force usage of ListedLogFiles::try_new() (delta-io#1562)
<!--
Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
https://github.com/delta-incubator/delta-kernel-rs/blob/main/CONTRIBUTING.md
2. Run `cargo t --all-features --all-targets` to get started testing,
and run `cargo fmt`.
3. Ensure you have added or run the appropriate tests for your PR.
4. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]
Your PR title ...'.
5. Be sure to keep the PR description updated to reflect all changes.
-->
<!--
PR title formatting:
This project uses conventional commits:
https://www.conventionalcommits.org/
Each PR corresponds to a commit on the `main` branch, with the title of
the PR (typically) being
used for the commit message on main. In order to ensure proper
formatting in the CHANGELOG please
ensure your PR title adheres to the conventional commit specification.
Examples:
- new feature PR: "feat: new API for snapshot.update()"
- bugfix PR: "fix: correctly apply DV in read-table example"
-->
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
Change field of `ListedLogFiles` to private to force the usage of
`ListedLogFiles::try_new()`
Solves the issue delta-io#1143
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
Existing tests
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
* fix: improve parse_json performance by removing line-by-line parsing (delta-io#1561)
Co-authored-by: emkornfield <emkornfield@gmail.com>
Co-authored-by: Nick Lanham <nick@databricks.com>
* sync changelog from `0.18.2` (delta-io#1570)
cherry-picks f105333
Co-authored-by: OussamaSaoudi <45303303+OussamaSaoudi@users.noreply.github.com>
Co-authored-by: Drake Lin <drakelin18@gmail.com>
* feature: short-circuit coalesce evaluation when array has no nulls (delta-io#1568)
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
Optimizes the coalesce expression evaluation in the default Arrow engine
to short-circuit when an evaluated array has no null values. Previously,
all expressions were eagerly evaluated before coalescing.
- After evaluating each expression, check if `null_count() == 0`
- If no nulls exist, validate the result type and return immediately
without evaluating remaining expressions
- `null_count()` on Arrow arrays is O(1) (cached value), so the check is
essentially free. This optimization avoids evaluating potentially
expensive expressions when earlier expressions already provide complete
(non-null) results.
Usecase:
- For ParsedStats, we will see coalesces in both read/write
- In read: we want to coalesce(parsed_stats, ParseJson(json_stats))
- In write:
- ParsedStats: coalesce(parsed_stats, ParseJson(json_stats))
- JsonStats: coalesce(json_stats, ToJson(ParsedStats))
In each of these cases, all of one column will either be Null or
non-Null so this optimization actually completely removes the need to
evaluate the expensive parseJson/ToJson if unnecessary.
Future improvements:
- Track each row such that it short-circuits as soon as all rows are
filled, even if no single array was 100% non-null
- This can be implemented with FilteredEngineData, but that lacks
support across the engine
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
new and existing unit tests
* release 0.19.0 (delta-io#1571)
release 0.19.0: [link to rendered
changelog](https://github.com/zachschuermann/delta-kernel-rs/blob/a23efae27cf8bd7859a24ad66f57dcb0f6fac851/CHANGELOG.md)
* [Test Only] Minor refactor to log_segment tests (delta-io#1581)
## 🥞 Stacked PR
Use this
[link](https://github.com/delta-io/delta-kernel-rs/pull/1581/files) to
review incremental changes.
-
[**stack/log_segment_tests_refactor**](delta-io#1581)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1581/files)]
---------
This PR refactors the `create_segment_for` test helper method inside of
`log_segment/tests.rs`.
Instead of taking in N params, we take in a struct (that contains those
N params).
This will make adding new params in the future easier and cleaner (e.g.
staged catalog commits)
* Refactor `ListedLogFiles::try_new` to be more extensible and with default values by using builder pattern (delta-io#1585)
## 🥞 Stacked PR
Use this
[link](https://github.com/delta-io/delta-kernel-rs/pull/1585/files) to
review incremental changes.
-
[**stack/listed_log_files_refactor**](delta-io#1585)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1585/files)]
---------
This PR refactors `ListedLogFiles::try_new` to instead be
`ListedLogFilesBuilder::build()`.
This allows using default values in the `ListedLogFilesBuilder`, which
will make creating `ListedLogFiles` easier in the future (e.g. when we
add `max_known_published_commit_version`).
* Fix: add type validation for `evaluate_expression` (delta-io#1575)
<!--
Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
https://github.com/delta-incubator/delta-kernel-rs/blob/main/CONTRIBUTING.md
2. Run `cargo t --all-features --all-targets` to get started testing,
and run `cargo fmt`.
3. Ensure you have added or run the appropriate tests for your PR.
4. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]
Your PR title ...'.
5. Be sure to keep the PR description updated to reflect all changes.
-->
<!--
PR title formatting:
This project uses conventional commits:
https://www.conventionalcommits.org/
Each PR corresponds to a commit on the `main` branch, with the title of
the PR (typically) being
used for the commit message on main. In order to ensure proper
formatting in the CHANGELOG please
ensure your PR title adheres to the conventional commit specification.
Examples:
- new feature PR: "feat: new API for snapshot.update()"
- bugfix PR: "fix: correctly apply DV in read-table example"
-->
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
Add missing `result_type` validation in `evaluate_expression` for
`Literal`, `Column`, and `Binary` branches.
This resolves delta-io#1572
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
new and existing unit tests
* refactor: move doctest into mods (delta-io#1574)
<!--
Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
https://github.com/delta-incubator/delta-kernel-rs/blob/main/CONTRIBUTING.md
2. Run `cargo t --all-features --all-targets` to get started testing,
and run `cargo fmt`.
3. Ensure you have added or run the appropriate tests for your PR.
4. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]
Your PR title ...'.
5. Be sure to keep the PR description updated to reflect all changes.
-->
<!--
PR title formatting:
This project uses conventional commits:
https://www.conventionalcommits.org/
Each PR corresponds to a commit on the `main` branch, with the title of
the PR (typically) being
used for the commit message on main. In order to ensure proper
formatting in the CHANGELOG please
ensure your PR title adheres to the conventional commit specification.
Examples:
- new feature PR: "feat: new API for snapshot.update()"
- bugfix PR: "fix: correctly apply DV in read-table example"
-->
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
Currently all doctests live inline in `kernel/src/lib.rs`. This PR moves
them to `kernel/src/doctests/` with separate files per macro, making it
easier to add new macro tests without enlarging `lib.rs`.
Related: delta-io#991
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
Ran existing tests
* feat: add checkpoint schema discovery for stats_parsed detection (delta-io#1550)
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
This PR adds infrastructure for discovering checkpoint schemas and
detecting whether `stats_parsed` is available for data skipping
optimization.
1. Store checkpoint schema in LogSegment (`log_segment.rs`)
2. Add stats_parsed detection (`log_segment.rs`)
- During log replay / sidecar visiting, we figure out the schema for the
file action files (whether the sidecar parquet files for V2 checkpoints
or the V1 checkpoint parquet.
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
- Existing log segment tests updated
* refactor: deny panics in ffi crate (delta-io#1576)
<!--
Thanks for sending a pull request! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
https://github.com/delta-incubator/delta-kernel-rs/blob/main/CONTRIBUTING.md
2. Run `cargo t --all-features --all-targets` to get started testing,
and run `cargo fmt`.
3. Ensure you have added or run the appropriate tests for your PR.
4. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP]
Your PR title ...'.
5. Be sure to keep the PR description updated to reflect all changes.
-->
<!--
PR title formatting:
This project uses conventional commits:
https://www.conventionalcommits.org/
Each PR corresponds to a commit on the `main` branch, with the title of
the PR (typically) being
used for the commit message on main. In order to ensure proper
formatting in the CHANGELOG please
ensure your PR title adheres to the conventional commit specification.
Examples:
- new feature PR: "feat: new API for snapshot.update()"
- bugfix PR: "fix: correctly apply DV in read-table example"
-->
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
1. Add clippy lints to deny panics in the FFI crate (non-test code)
2. Fix violations by returning errors instead of panicking
3. Allow `expect` in theoretically unreachable paths
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
Existing tests in `ffi/examples/read-table`
* Remove comments and text from `pull_request_template.md` (delta-io#1589)
## What changes are proposed in this pull request?
Move text from `pull_request_template.md` to `CONTRIBUTING.md`.
Make PR template file name all-caps.
## How was this change tested?
N/A.
* feat!: add deletion vector APIs to transaction (delta-io#1430)
Adds the ability to update deletion vectors on delta tables.
Co-authored-by: Drake Lin <drakelin18@gmail.com>
Co-authored-by: Nick Lanham <nicklan@users.noreply.github.com>
* feat: Add doctests for `IntoEngineData` derive macro (delta-io#1580)
<!--
PR title formatting:
This project uses conventional commits:
https://www.conventionalcommits.org/
Each PR corresponds to a commit on the `main` branch, with the title of
the PR (typically) being
used for the commit message on main. In order to ensure proper
formatting in the CHANGELOG please
ensure your PR title adheres to the conventional commit specification.
Examples:
- new feature PR: "feat: new API for snapshot.update()"
- bugfix PR: "fix: correctly apply DV in read-table example"
-->
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
This PR:
- Changes the `IntoEngineData` macro to use `delta_kernel::` paths
- Adds doctests for the derive macro
Related: delta-io#991
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
Added tests.
* feat: Create `DefaultEngineBuilder` to build `DefaultEngine` (delta-io#1582)
## 🥞 Stacked PR
Use this
[link](https://github.com/delta-io/delta-kernel-rs/pull/1582/files) to
review incremental changes.
-
[**stack/engine-builder**](delta-io#1582)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1582/files)]
-
[stack/remove-constructor](delta-io#1583)
[[Files
changed](https://github.com/delta-io/delta-kernel-rs/pull/1583/files/29e082a58b9382149285f30351d53468d6ed49dc..0026634ac5bf5f546d45a4d25dd0f46cb8d39d1b)]
---------
## What changes are proposed in this pull request?
<!--
Please clarify what changes you are proposing and why the changes are
needed.
The purpose of this section is to outline the changes, why they are
needed, and how this PR fixes the issue.
If the reason for the change is already explained clearly in an issue,
then it does not need to be restated here.
1. If you propose a new API or feature, clarify the use case for a new
API or feature.
2. If you fix a bug, you can clarify why it is a bug.
-->
Add `DefaultEngineBuilder` for more flexible engine construction and
align with the builder pattern used elsewhere in this repo.
## Detail changes
- Add generic `DefaultEngineBuilder<E>` with builder pattern
- Support `with_task_executor()` to use custom executors
- Support `with_metrics_reporter()` for metrics collection
- Add `DefaultEngine::builder()` convenience method
<!--
Uncomment this section if there are any changes affecting public APIs:
### This PR affects the following public APIs
If there are breaking changes, please ensure the `breaking-changes`
label gets added by CI, and describe why the changes are needed.
Note that _new_ public APIs are not considered breaking.
-->
## How was this change tested?
<!--
Please make sure to add test cases that check the changes thoroughly
including negative and positive cases if possible.
If it was tested in a way different from regular unit tests, please
clarify how you tested, ideally via a reproducible test documented in
the PR description.
-->
Added tests.
* refactor: extract shared HTTP utilities to http.rs (delta-io#1590)
## What changes are proposed in this pull request?
Extract `build_http_client`, `execute_with_retry`, and `handle_response`
from `UCClient` into a shared `http.rs` module. This enables reuse by
other client implementations (and is used in the child stacked PR delta-io#1590)
## How was this change tested?
`cargo build -p uc-client -p uc-catalog`
* Fix conflicts
* Fix dangling conflicts
* Fix the tests
---------
Co-authored-by: OussamaSaoudi <45303303+OussamaSaoudi@users.noreply.github.com>
Co-authored-by: Nick Lanham <nicklan@users.noreply.github.com>
Co-authored-by: dengsh12 <62536982+dengsh12@users.noreply.github.com>
Co-authored-by: R. Tyler Croy <rtyler@brokenco.de>
Co-authored-by: emkornfield <emkornfield@gmail.com>
Co-authored-by: Nick Lanham <nick@databricks.com>
Co-authored-by: Zach Schuermann <zachary.zvs@gmail.com>
Co-authored-by: Drake Lin <drakelin18@gmail.com>
Co-authored-by: Scott Sandre <scott.sandre@databricks.com>1 parent 54e1286 commit 3d196fb
36 files changed
Lines changed: 2903 additions & 652 deletions
File tree
- .github
- derive-macros/src
- ffi
- examples
- common
- read-table
- src
- kernel
- src
- actions
- doctests
- engine
- arrow_expression
- default
- log_segment
- scan
- transaction
- tests
- test-utils/src
- uc-client/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
87 | 114 | | |
88 | 115 | | |
89 | 116 | | |
90 | | - | |
| 117 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
218 | 218 | | |
219 | 219 | | |
220 | 220 | | |
221 | | - | |
| 221 | + | |
222 | 222 | | |
223 | | - | |
| 223 | + | |
224 | 224 | | |
225 | 225 | | |
226 | 226 | | |
227 | | - | |
228 | | - | |
229 | | - | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
230 | 230 | | |
231 | | - | |
| 231 | + | |
232 | 232 | | |
233 | 233 | | |
234 | 234 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | | - | |
| 64 | + | |
| 65 | + | |
65 | 66 | | |
66 | 67 | | |
67 | 68 | | |
68 | | - | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
69 | 76 | | |
70 | 77 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
24 | | - | |
| 25 | + | |
| 26 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
35 | 41 | | |
36 | 42 | | |
37 | 43 | | |
| |||
117 | 123 | | |
118 | 124 | | |
119 | 125 | | |
120 | | - | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
121 | 131 | | |
122 | 132 | | |
123 | 133 | | |
| |||
276 | 286 | | |
277 | 287 | | |
278 | 288 | | |
279 | | - | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
280 | 292 | | |
281 | 293 | | |
282 | 294 | | |
| |||
306 | 318 | | |
307 | 319 | | |
308 | 320 | | |
309 | | - | |
| 321 | + | |
310 | 322 | | |
311 | 323 | | |
312 | 324 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| 52 | + | |
52 | 53 | | |
53 | 54 | | |
54 | 55 | | |
| |||
109 | 110 | | |
110 | 111 | | |
111 | 112 | | |
112 | | - | |
| 113 | + | |
113 | 114 | | |
114 | 115 | | |
115 | 116 | | |
116 | 117 | | |
117 | | - | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
118 | 125 | | |
119 | 126 | | |
120 | 127 | | |
| |||
124 | 131 | | |
125 | 132 | | |
126 | 133 | | |
| 134 | + | |
127 | 135 | | |
128 | 136 | | |
129 | 137 | | |
| |||
157 | 165 | | |
158 | 166 | | |
159 | 167 | | |
160 | | - | |
| 168 | + | |
161 | 169 | | |
162 | 170 | | |
163 | 171 | | |
| |||
172 | 180 | | |
173 | 181 | | |
174 | 182 | | |
175 | | - | |
| 183 | + | |
176 | 184 | | |
177 | 185 | | |
178 | 186 | | |
| |||
188 | 196 | | |
189 | 197 | | |
190 | 198 | | |
191 | | - | |
| 199 | + | |
192 | 200 | | |
193 | 201 | | |
194 | 202 | | |
| |||
207 | 215 | | |
208 | 216 | | |
209 | 217 | | |
210 | | - | |
| 218 | + | |
211 | 219 | | |
212 | 220 | | |
213 | 221 | | |
| |||
222 | 230 | | |
223 | 231 | | |
224 | 232 | | |
225 | | - | |
| 233 | + | |
226 | 234 | | |
227 | 235 | | |
228 | 236 | | |
| |||
273 | 281 | | |
274 | 282 | | |
275 | 283 | | |
276 | | - | |
| 284 | + | |
277 | 285 | | |
278 | 286 | | |
279 | 287 | | |
280 | 288 | | |
281 | 289 | | |
| 290 | + | |
282 | 291 | | |
283 | 292 | | |
284 | 293 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
5 | 9 | | |
6 | 10 | | |
7 | 11 | | |
| |||
274 | 278 | | |
275 | 279 | | |
276 | 280 | | |
| 281 | + | |
| 282 | + | |
277 | 283 | | |
278 | | - | |
| 284 | + | |
279 | 285 | | |
280 | 286 | | |
281 | 287 | | |
| |||
328 | 334 | | |
329 | 335 | | |
330 | 336 | | |
| 337 | + | |
| 338 | + | |
331 | 339 | | |
332 | | - | |
| 340 | + | |
333 | 341 | | |
334 | 342 | | |
335 | 343 | | |
| |||
489 | 497 | | |
490 | 498 | | |
491 | 499 | | |
492 | | - | |
493 | | - | |
494 | | - | |
495 | | - | |
496 | | - | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
497 | 513 | | |
498 | 514 | | |
499 | 515 | | |
| |||
0 commit comments