diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 0000000..b6c222b --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,46 @@ +name: Setup +description: Setup environment for CI + +inputs: + targets: + description: Comma-separated list of target triples to install for this toolchain + required: false + components: + description: Comma-separated list of components to be additionally installed + required: false + +runs: + using: 'composite' + steps: + - shell: bash + run: | + echo $HOME + echo ${{ runner.os }} + + - name: Cache APT packages + if: runner.os == 'Linux' + uses: actions/cache@v4 + with: + path: | + /var/cache/apt/archives + /var/lib/apt/lists + key: ${{ runner.os }}-apt-${{ hashFiles('.github/actions/setup/apt-packages.txt') }} + restore-keys: | + ${{ runner.os }}-apt- + + - name: Update and install APT packages + if: runner.os == 'Linux' + shell: bash + run: | + sudo apt-get update + xargs -a .github/actions/setup/apt-packages.txt sudo apt-get install -y + + - uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: ${{ inputs.targets }} + components: ${{ inputs.components }} + + - uses: Swatinem/rust-cache@v2 + with: + key: ${{ runner.os }}-${{ inputs.targets }}-rust-cache diff --git a/.github/actions/setup/apt-packages.txt b/.github/actions/setup/apt-packages.txt new file mode 100644 index 0000000..4071a25 --- /dev/null +++ b/.github/actions/setup/apt-packages.txt @@ -0,0 +1 @@ +protobuf-compiler \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f9a7f30 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,41 @@ +name: CI + +on: + pull_request: + push: + branches: + - main + +env: + CARGO_TERM_COLOR: always + RUST_BACKTRACE: 1 + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + clippy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + with: + components: clippy + - run: cargo clippy + + unit-test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + - run: cargo test + + format-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup + with: + components: rustfmt + - run: cargo fmt --all -- --check diff --git a/Cargo.lock b/Cargo.lock index 7fb94f5..bf1729d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -773,9 +773,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.27" +version = "1.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "5c1599538de2394445747c8cf7935946e3cc27e9625f889d979bfb2aaf569362" dependencies = [ "jobserver", "libc", @@ -1102,7 +1102,7 @@ dependencies = [ [[package]] name = "datafusion" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "arrow-ipc", @@ -1156,7 +1156,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1181,7 +1181,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1203,7 +1203,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "ahash", "apache-avro", @@ -1230,7 +1230,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "futures", "log", @@ -1240,7 +1240,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-compression", @@ -1275,7 +1275,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-avro" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "apache-avro", "arrow", @@ -1299,7 +1299,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1323,7 +1323,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1347,7 +1347,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1378,12 +1378,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" [[package]] name = "datafusion-execution" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "dashmap", @@ -1401,7 +1401,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1422,7 +1422,7 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "datafusion-common", @@ -1434,7 +1434,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "arrow-buffer", @@ -1462,7 +1462,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "ahash", "arrow", @@ -1482,7 +1482,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "ahash", "arrow", @@ -1494,7 +1494,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "arrow-ord", @@ -1515,7 +1515,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1530,7 +1530,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "datafusion-common", @@ -1547,7 +1547,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -1556,7 +1556,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "datafusion-expr", "quote", @@ -1566,12 +1566,13 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "chrono", "datafusion-common", "datafusion-expr", + "datafusion-expr-common", "datafusion-physical-expr", "indexmap 2.10.0", "itertools 0.14.0", @@ -1584,7 +1585,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "ahash", "arrow", @@ -1605,7 +1606,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "ahash", "arrow", @@ -1618,7 +1619,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "datafusion-common", @@ -1637,7 +1638,7 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "ahash", "arrow", @@ -1666,7 +1667,7 @@ dependencies = [ [[package]] name = "datafusion-proto" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "chrono", @@ -1681,7 +1682,7 @@ dependencies = [ [[package]] name = "datafusion-proto-common" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "datafusion-common", @@ -1691,7 +1692,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "arrow-schema", @@ -1708,7 +1709,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "async-trait", @@ -1731,7 +1732,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "48.0.0" -source = "git+https://github.com/apache/datafusion?branch=main#ebf49b4fe585820caaad3b8c04529633190f48be" +source = "git+https://github.com/apache/datafusion?branch=main#d359d6496168da59e6ac4bfea30e648674382f87" dependencies = [ "arrow", "bigdecimal", @@ -2153,9 +2154,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -2581,6 +2582,17 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" +[[package]] +name = "io-uring" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013" +dependencies = [ + "bitflags", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -3932,9 +3944,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.20" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64", "bytes", @@ -4537,9 +4549,9 @@ dependencies = [ [[package]] name = "test-log" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" +checksum = "1e33b98a582ea0be1168eba097538ee8dd4bbe0f2b01b22ac92ea30054e5be7b" dependencies = [ "env_logger", "test-log-macros", @@ -4548,9 +4560,9 @@ dependencies = [ [[package]] name = "test-log-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" +checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", @@ -4694,17 +4706,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "parking_lot", "pin-project-lite", "signal-hook-registry", + "slab", "socket2", "tokio-macros", "windows-sys 0.52.0",