From 55fa8217b80011b8560a221b82ebbaa42d38498c Mon Sep 17 00:00:00 2001 From: Tim Saucer Date: Tue, 28 Jul 2026 12:52:55 -0400 Subject: [PATCH 1/3] Use allowlisted Rust toolchain action revision AI Disclosure: This code was written in part by an AI agent.: --- .github/workflows/build.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 954b615e8..c35801b11 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: - uses: actions/checkout@v6 - name: Setup Rust - uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30 + uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 with: toolchain: "nightly" components: rustfmt @@ -152,7 +152,7 @@ jobs: path: . - name: Setup Rust - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 + uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 - name: Cache Cargo uses: Swatinem/rust-cache@v2 @@ -231,7 +231,7 @@ jobs: path: . - name: Setup Rust - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 + uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 - name: Cache Cargo uses: Swatinem/rust-cache@v2 @@ -286,7 +286,8 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 + - name: Setup Rust + uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 - run: rm LICENSE.txt - name: Download LICENSE.txt @@ -368,7 +369,8 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 + - name: Setup Rust + uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 - run: rm LICENSE.txt - name: Download LICENSE.txt From b2ee947ecad7d6d4f69009cf422bcf10709c99aa Mon Sep 17 00:00:00 2001 From: Tim Saucer Date: Tue, 28 Jul 2026 15:01:54 -0400 Subject: [PATCH 2/3] Set rust toolchain so developer and CI get a consistent experience --- rust-toolchain.toml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 000000000..5639a821f --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,23 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# This file specifies the default version of Rust used +# to compile this workspace and run CI jobs. + +[toolchain] +channel = "1.97.0" +components = ["rustfmt", "clippy"] From d91d1e448b8a40c0db31df053845d1ea69285d45 Mon Sep 17 00:00:00 2001 From: Tim Saucer Date: Tue, 28 Jul 2026 15:05:04 -0400 Subject: [PATCH 3/3] minor clippy fixes --- crates/core/src/expr.rs | 4 ++-- crates/core/src/expr/aggregate.rs | 4 ++-- crates/core/src/expr/alias.rs | 2 +- crates/core/src/expr/between.rs | 2 +- crates/core/src/expr/bool_expr.rs | 20 ++++++++-------- crates/core/src/expr/create_memory_table.rs | 5 +--- crates/core/src/expr/create_view.rs | 2 +- crates/core/src/expr/drop_table.rs | 2 +- crates/core/src/expr/empty_relation.rs | 2 +- crates/core/src/expr/explain.rs | 10 ++++---- crates/core/src/expr/filter.rs | 2 +- crates/core/src/expr/higher_order_function.rs | 2 +- crates/core/src/expr/join.rs | 16 ++++++------- crates/core/src/expr/lambda.rs | 2 +- crates/core/src/expr/lambda_variable.rs | 2 +- crates/core/src/expr/like.rs | 24 +++++++++---------- crates/core/src/expr/limit.rs | 2 +- crates/core/src/expr/projection.rs | 2 +- crates/core/src/expr/repartition.rs | 2 +- crates/core/src/expr/sort.rs | 2 +- crates/core/src/expr/sort_expr.rs | 2 +- crates/core/src/expr/table_scan.rs | 8 +++---- crates/core/src/expr/union.rs | 2 +- crates/core/src/expr/unnest.rs | 2 +- crates/core/src/expr/unnest_expr.rs | 2 +- crates/core/src/expr/window.rs | 2 +- 26 files changed, 62 insertions(+), 65 deletions(-) diff --git a/crates/core/src/expr.rs b/crates/core/src/expr.rs index 432c4cd23..cab997d7a 100644 --- a/crates/core/src/expr.rs +++ b/crates/core/src/expr.rs @@ -433,7 +433,7 @@ impl PyExpr { Expr::Literal(scalar_value, _) => scalar_to_pyarrow(scalar_value, py), _ => Err(py_type_err(format!( "Non Expr::Literal encountered in types: {:?}", - &self.expr + self.expr ))), } } @@ -612,7 +612,7 @@ impl PyExpr { _ => { return Err(py_type_err(format!( "Catch all triggered in get_operator_name: {:?}", - &self.expr + self.expr ))); } }) diff --git a/crates/core/src/expr/aggregate.rs b/crates/core/src/expr/aggregate.rs index 5a6a771a7..7177fb469 100644 --- a/crates/core/src/expr/aggregate.rs +++ b/crates/core/src/expr/aggregate.rs @@ -65,8 +65,8 @@ impl Display for PyAggregate { \nAggregates(s): {:?} \nInput: {:?} \nProjected Schema: {:?}", - &self.aggregate.group_expr, - &self.aggregate.aggr_expr, + self.aggregate.group_expr, + self.aggregate.aggr_expr, self.aggregate.input, self.aggregate.schema ) diff --git a/crates/core/src/expr/alias.rs b/crates/core/src/expr/alias.rs index b76e82e22..391c94dbc 100644 --- a/crates/core/src/expr/alias.rs +++ b/crates/core/src/expr/alias.rs @@ -53,7 +53,7 @@ impl Display for PyAlias { "Alias \nExpr: `{:?}` \nAlias Name: `{}`", - &self.alias.expr, &self.alias.name + self.alias.expr, self.alias.name ) } } diff --git a/crates/core/src/expr/between.rs b/crates/core/src/expr/between.rs index 6943b6c3b..80f6c70da 100644 --- a/crates/core/src/expr/between.rs +++ b/crates/core/src/expr/between.rs @@ -55,7 +55,7 @@ impl Display for PyBetween { Negated: {:?} Low: {:?} High: {:?}", - &self.between.expr, &self.between.negated, &self.between.low, &self.between.high + self.between.expr, self.between.negated, self.between.low, self.between.high ) } } diff --git a/crates/core/src/expr/bool_expr.rs b/crates/core/src/expr/bool_expr.rs index 9e374c7e2..d1cd7bcf7 100644 --- a/crates/core/src/expr/bool_expr.rs +++ b/crates/core/src/expr/bool_expr.rs @@ -46,7 +46,7 @@ impl Display for PyNot { f, "Not Expr: {}", - &self.expr + self.expr ) } } @@ -82,7 +82,7 @@ impl Display for PyIsNotNull { f, "IsNotNull Expr: {}", - &self.expr + self.expr ) } } @@ -118,7 +118,7 @@ impl Display for PyIsNull { f, "IsNull Expr: {}", - &self.expr + self.expr ) } } @@ -154,7 +154,7 @@ impl Display for PyIsTrue { f, "IsTrue Expr: {}", - &self.expr + self.expr ) } } @@ -190,7 +190,7 @@ impl Display for PyIsFalse { f, "IsFalse Expr: {}", - &self.expr + self.expr ) } } @@ -226,7 +226,7 @@ impl Display for PyIsUnknown { f, "IsUnknown Expr: {}", - &self.expr + self.expr ) } } @@ -262,7 +262,7 @@ impl Display for PyIsNotTrue { f, "IsNotTrue Expr: {}", - &self.expr + self.expr ) } } @@ -298,7 +298,7 @@ impl Display for PyIsNotFalse { f, "IsNotFalse Expr: {}", - &self.expr + self.expr ) } } @@ -334,7 +334,7 @@ impl Display for PyIsNotUnknown { f, "IsNotUnknown Expr: {}", - &self.expr + self.expr ) } } @@ -370,7 +370,7 @@ impl Display for PyNegative { f, "Negative Expr: {}", - &self.expr + self.expr ) } } diff --git a/crates/core/src/expr/create_memory_table.rs b/crates/core/src/expr/create_memory_table.rs index 3214dab0e..c27c11834 100644 --- a/crates/core/src/expr/create_memory_table.rs +++ b/crates/core/src/expr/create_memory_table.rs @@ -57,10 +57,7 @@ impl Display for PyCreateMemoryTable { Input: {:?} if_not_exists: {:?} or_replace: {:?}", - &self.create.name, - &self.create.input, - &self.create.if_not_exists, - &self.create.or_replace, + self.create.name, self.create.input, self.create.if_not_exists, self.create.or_replace, ) } } diff --git a/crates/core/src/expr/create_view.rs b/crates/core/src/expr/create_view.rs index 6941ef769..2f0315c40 100644 --- a/crates/core/src/expr/create_view.rs +++ b/crates/core/src/expr/create_view.rs @@ -58,7 +58,7 @@ impl Display for PyCreateView { input: {:?} or_replace: {:?} definition: {:?}", - &self.create.name, &self.create.input, &self.create.or_replace, &self.create.definition, + self.create.name, self.create.input, self.create.or_replace, self.create.definition, ) } } diff --git a/crates/core/src/expr/drop_table.rs b/crates/core/src/expr/drop_table.rs index 46fe67465..156d3bcc2 100644 --- a/crates/core/src/expr/drop_table.rs +++ b/crates/core/src/expr/drop_table.rs @@ -56,7 +56,7 @@ impl Display for PyDropTable { name: {:?} if_exists: {:?} schema: {:?}", - &self.drop.name, &self.drop.if_exists, &self.drop.schema, + self.drop.name, self.drop.if_exists, self.drop.schema, ) } } diff --git a/crates/core/src/expr/empty_relation.rs b/crates/core/src/expr/empty_relation.rs index f3c237731..5af4aafeb 100644 --- a/crates/core/src/expr/empty_relation.rs +++ b/crates/core/src/expr/empty_relation.rs @@ -56,7 +56,7 @@ impl Display for PyEmptyRelation { "Empty Relation Produce One Row: {:?} Schema: {:?}", - &self.empty.produce_one_row, &self.empty.schema + self.empty.produce_one_row, self.empty.schema ) } } diff --git a/crates/core/src/expr/explain.rs b/crates/core/src/expr/explain.rs index 6259951de..d6ba1c25c 100644 --- a/crates/core/src/expr/explain.rs +++ b/crates/core/src/expr/explain.rs @@ -61,11 +61,11 @@ impl Display for PyExplain { stringified_plans: {:?} schema: {:?} logical_optimization_succeeded: {:?}", - &self.explain.verbose, - &self.explain.plan, - &self.explain.stringified_plans, - &self.explain.schema, - &self.explain.logical_optimization_succeeded + self.explain.verbose, + self.explain.plan, + self.explain.stringified_plans, + self.explain.schema, + self.explain.logical_optimization_succeeded ) } } diff --git a/crates/core/src/expr/filter.rs b/crates/core/src/expr/filter.rs index 67426806d..1fe5f2c7f 100644 --- a/crates/core/src/expr/filter.rs +++ b/crates/core/src/expr/filter.rs @@ -57,7 +57,7 @@ impl Display for PyFilter { "Filter Predicate: {:?} Input: {:?}", - &self.filter.predicate, &self.filter.input + self.filter.predicate, self.filter.input ) } } diff --git a/crates/core/src/expr/higher_order_function.rs b/crates/core/src/expr/higher_order_function.rs index 91a94de2c..5ba64052a 100644 --- a/crates/core/src/expr/higher_order_function.rs +++ b/crates/core/src/expr/higher_order_function.rs @@ -52,7 +52,7 @@ impl Display for PyHigherOrderFunction { f, "HigherOrderFunction(name={}, args={:?})", self.higher_order.name(), - &self.higher_order.args, + self.higher_order.args, ) } } diff --git a/crates/core/src/expr/join.rs b/crates/core/src/expr/join.rs index b90f2f57d..634e13734 100644 --- a/crates/core/src/expr/join.rs +++ b/crates/core/src/expr/join.rs @@ -132,14 +132,14 @@ impl Display for PyJoin { JoinConstraint: {:?} Schema: {:?} NullEquality: {:?}", - &self.join.left, - &self.join.right, - &self.join.on, - &self.join.filter, - &self.join.join_type, - &self.join.join_constraint, - &self.join.schema, - &self.join.null_equality, + self.join.left, + self.join.right, + self.join.on, + self.join.filter, + self.join.join_type, + self.join.join_constraint, + self.join.schema, + self.join.null_equality, ) } } diff --git a/crates/core/src/expr/lambda.rs b/crates/core/src/expr/lambda.rs index 3ebc6e61c..7190521d6 100644 --- a/crates/core/src/expr/lambda.rs +++ b/crates/core/src/expr/lambda.rs @@ -51,7 +51,7 @@ impl Display for PyLambda { write!( f, "Lambda(params={:?}, body={:?})", - &self.lambda.params, &self.lambda.body, + self.lambda.params, self.lambda.body, ) } } diff --git a/crates/core/src/expr/lambda_variable.rs b/crates/core/src/expr/lambda_variable.rs index 2ef554e17..7baf5f21c 100644 --- a/crates/core/src/expr/lambda_variable.rs +++ b/crates/core/src/expr/lambda_variable.rs @@ -46,7 +46,7 @@ impl From for LambdaVariable { impl Display for PyLambdaVariable { fn fmt(&self, f: &mut Formatter) -> fmt::Result { - write!(f, "LambdaVariable({})", &self.variable.name) + write!(f, "LambdaVariable({})", self.variable.name) } } diff --git a/crates/core/src/expr/like.rs b/crates/core/src/expr/like.rs index 417dc9182..900551a20 100644 --- a/crates/core/src/expr/like.rs +++ b/crates/core/src/expr/like.rs @@ -55,10 +55,10 @@ impl Display for PyLike { Expr: {:?} Pattern: {:?} Escape_Char: {:?}", - &self.negated(), - &self.expr(), - &self.pattern(), - &self.escape_char() + self.negated(), + self.expr(), + self.pattern(), + self.escape_char() ) } } @@ -119,10 +119,10 @@ impl Display for PyILike { Expr: {:?} Pattern: {:?} Escape_Char: {:?}", - &self.negated(), - &self.expr(), - &self.pattern(), - &self.escape_char() + self.negated(), + self.expr(), + self.pattern(), + self.escape_char() ) } } @@ -183,10 +183,10 @@ impl Display for PySimilarTo { Expr: {:?} Pattern: {:?} Escape_Char: {:?}", - &self.negated(), - &self.expr(), - &self.pattern(), - &self.escape_char() + self.negated(), + self.expr(), + self.pattern(), + self.escape_char() ) } } diff --git a/crates/core/src/expr/limit.rs b/crates/core/src/expr/limit.rs index c04b8bfa8..37347acd5 100644 --- a/crates/core/src/expr/limit.rs +++ b/crates/core/src/expr/limit.rs @@ -57,7 +57,7 @@ impl Display for PyLimit { Skip: {:?} Fetch: {:?} Input: {:?}", - &self.limit.skip, &self.limit.fetch, &self.limit.input + self.limit.skip, self.limit.fetch, self.limit.input ) } } diff --git a/crates/core/src/expr/projection.rs b/crates/core/src/expr/projection.rs index 456e06412..7e22e1e7b 100644 --- a/crates/core/src/expr/projection.rs +++ b/crates/core/src/expr/projection.rs @@ -65,7 +65,7 @@ impl Display for PyProjection { \nExpr(s): {:?} \nInput: {:?} \nProjected Schema: {:?}", - &self.projection.expr, &self.projection.input, &self.projection.schema, + self.projection.expr, self.projection.input, self.projection.schema, ) } } diff --git a/crates/core/src/expr/repartition.rs b/crates/core/src/expr/repartition.rs index be39b9978..cbc8a97bb 100644 --- a/crates/core/src/expr/repartition.rs +++ b/crates/core/src/expr/repartition.rs @@ -82,7 +82,7 @@ impl Display for PyRepartition { "Repartition input: {:?} partitioning_scheme: {:?}", - &self.repartition.input, &self.repartition.partitioning_scheme, + self.repartition.input, self.repartition.partitioning_scheme, ) } } diff --git a/crates/core/src/expr/sort.rs b/crates/core/src/expr/sort.rs index 7c1e654c5..1b1065011 100644 --- a/crates/core/src/expr/sort.rs +++ b/crates/core/src/expr/sort.rs @@ -61,7 +61,7 @@ impl Display for PySort { \nExpr(s): {:?} \nInput: {:?} \nSchema: {:?}", - &self.sort.expr, + self.sort.expr, self.sort.input, self.sort.input.schema() ) diff --git a/crates/core/src/expr/sort_expr.rs b/crates/core/src/expr/sort_expr.rs index 3c3c86bc1..93faffcec 100644 --- a/crates/core/src/expr/sort_expr.rs +++ b/crates/core/src/expr/sort_expr.rs @@ -54,7 +54,7 @@ impl Display for PySortExpr { Expr: {:?} Asc: {:?} NullsFirst: {:?}", - &self.sort.expr, &self.sort.asc, &self.sort.nulls_first + self.sort.expr, self.sort.asc, self.sort.nulls_first ) } } diff --git a/crates/core/src/expr/table_scan.rs b/crates/core/src/expr/table_scan.rs index 8ba7e4a69..46ce551d2 100644 --- a/crates/core/src/expr/table_scan.rs +++ b/crates/core/src/expr/table_scan.rs @@ -65,10 +65,10 @@ impl Display for PyTableScan { Projections: {:?} Projected Schema: {:?} Filters: {:?}", - &self.table_scan.table_name, - &self.py_projections(), - &self.py_schema(), - &self.py_filters(), + self.table_scan.table_name, + self.py_projections(), + self.py_schema(), + self.py_filters(), ) } } diff --git a/crates/core/src/expr/union.rs b/crates/core/src/expr/union.rs index a3b9efe91..bd5770e0a 100644 --- a/crates/core/src/expr/union.rs +++ b/crates/core/src/expr/union.rs @@ -56,7 +56,7 @@ impl Display for PyUnion { "Union Inputs: {:?} Schema: {:?}", - &self.union_.inputs, &self.union_.schema, + self.union_.inputs, self.union_.schema, ) } } diff --git a/crates/core/src/expr/unnest.rs b/crates/core/src/expr/unnest.rs index 880d0a279..540667824 100644 --- a/crates/core/src/expr/unnest.rs +++ b/crates/core/src/expr/unnest.rs @@ -56,7 +56,7 @@ impl Display for PyUnnest { "Unnest Inputs: {:?} Schema: {:?}", - &self.unnest_.input, &self.unnest_.schema, + self.unnest_.input, self.unnest_.schema, ) } } diff --git a/crates/core/src/expr/unnest_expr.rs b/crates/core/src/expr/unnest_expr.rs index 97feef1d1..549257b86 100644 --- a/crates/core/src/expr/unnest_expr.rs +++ b/crates/core/src/expr/unnest_expr.rs @@ -52,7 +52,7 @@ impl Display for PyUnnestExpr { f, "Unnest Expr: {:?}", - &self.unnest.expr, + self.unnest.expr, ) } } diff --git a/crates/core/src/expr/window.rs b/crates/core/src/expr/window.rs index 92d909bfc..e0050f671 100644 --- a/crates/core/src/expr/window.rs +++ b/crates/core/src/expr/window.rs @@ -105,7 +105,7 @@ impl Display for PyWindowExpr { "Over\n Window Expr: {:?} Schema: {:?}", - &self.window.window_expr, &self.window.schema + self.window.window_expr, self.window.schema ) } }