diff --git a/datafusion/core/src/execution/session_state_defaults.rs b/datafusion/core/src/execution/session_state_defaults.rs index 62a575541a5d..bc7fd6bb17cc 100644 --- a/datafusion/core/src/execution/session_state_defaults.rs +++ b/datafusion/core/src/execution/session_state_defaults.rs @@ -103,7 +103,7 @@ impl SessionStateDefaults { /// returns the list of default [`ScalarUDF`]s pub fn default_scalar_functions() -> Vec> { - #[cfg_attr(not(feature = "nested_expressions"), allow(unused_mut))] + #[cfg_attr(not(feature = "nested_expressions"), expect(unused_mut))] let mut functions: Vec> = functions::all_default_functions(); #[cfg(feature = "nested_expressions")] @@ -155,7 +155,7 @@ impl SessionStateDefaults { } /// registers all the builtin array functions - #[cfg_attr(not(feature = "nested_expressions"), allow(unused_variables))] + #[cfg_attr(not(feature = "nested_expressions"), expect(unused_variables))] pub fn register_array_functions(state: &mut SessionState) { // register crate of array expressions (if enabled) #[cfg(feature = "nested_expressions")] diff --git a/datafusion/macros/src/user_doc.rs b/datafusion/macros/src/user_doc.rs index ce9e7d55ef10..27f73fd95538 100644 --- a/datafusion/macros/src/user_doc.rs +++ b/datafusion/macros/src/user_doc.rs @@ -20,6 +20,7 @@ html_favicon_url = "https://raw.githubusercontent.com/apache/datafusion/19fe44cf2f30cbdd63d4a4f52c74055163c6cc38/docs/logos/standalone_logo/logo_original.svg" )] #![cfg_attr(docsrs, feature(doc_cfg))] +#![deny(clippy::allow_attributes)] extern crate proc_macro; use datafusion_doc::scalar_doc_sections::doc_sections_const; diff --git a/datafusion/optimizer/src/decorrelate_lateral_join.rs b/datafusion/optimizer/src/decorrelate_lateral_join.rs index 4d3838c78e5e..a8c751ff4628 100644 --- a/datafusion/optimizer/src/decorrelate_lateral_join.rs +++ b/datafusion/optimizer/src/decorrelate_lateral_join.rs @@ -37,7 +37,7 @@ use datafusion_expr::{LogicalPlan, LogicalPlanBuilder}; pub struct DecorrelateLateralJoin {} impl DecorrelateLateralJoin { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self::default() } diff --git a/datafusion/optimizer/src/decorrelate_predicate_subquery.rs b/datafusion/optimizer/src/decorrelate_predicate_subquery.rs index e705b909dc51..9a8583b51a80 100644 --- a/datafusion/optimizer/src/decorrelate_predicate_subquery.rs +++ b/datafusion/optimizer/src/decorrelate_predicate_subquery.rs @@ -44,7 +44,7 @@ use log::debug; pub struct DecorrelatePredicateSubquery {} impl DecorrelatePredicateSubquery { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self::default() } diff --git a/datafusion/optimizer/src/eliminate_cross_join.rs b/datafusion/optimizer/src/eliminate_cross_join.rs index 26d767a5421f..770291566346 100644 --- a/datafusion/optimizer/src/eliminate_cross_join.rs +++ b/datafusion/optimizer/src/eliminate_cross_join.rs @@ -33,7 +33,7 @@ use datafusion_expr::{ExprSchemable, Operator, and, build_join_schema}; pub struct EliminateCrossJoin; impl EliminateCrossJoin { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/eliminate_duplicated_expr.rs b/datafusion/optimizer/src/eliminate_duplicated_expr.rs index 0bdfb4522433..113c92c2c8e9 100644 --- a/datafusion/optimizer/src/eliminate_duplicated_expr.rs +++ b/datafusion/optimizer/src/eliminate_duplicated_expr.rs @@ -32,7 +32,7 @@ use indexmap::IndexSet; pub struct EliminateDuplicatedExpr; impl EliminateDuplicatedExpr { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/eliminate_filter.rs b/datafusion/optimizer/src/eliminate_filter.rs index e150406d6ff5..8be5fb0857a9 100644 --- a/datafusion/optimizer/src/eliminate_filter.rs +++ b/datafusion/optimizer/src/eliminate_filter.rs @@ -34,7 +34,7 @@ use crate::{OptimizerConfig, OptimizerRule}; pub struct EliminateFilter; impl EliminateFilter { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/eliminate_limit.rs b/datafusion/optimizer/src/eliminate_limit.rs index 4309de1822da..e9ba535c96b9 100644 --- a/datafusion/optimizer/src/eliminate_limit.rs +++ b/datafusion/optimizer/src/eliminate_limit.rs @@ -34,7 +34,7 @@ use std::sync::Arc; pub struct EliminateLimit; impl EliminateLimit { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } @@ -77,7 +77,7 @@ impl OptimizerRule for EliminateLimit { } else if matches!(limit.get_skip_type()?, SkipType::Literal(0)) { // If fetch is `None` and skip is 0, then Limit takes no effect and // we can remove it. Its input also can be Limit, so we should apply again. - #[allow(clippy::used_underscore_binding)] + #[expect(clippy::used_underscore_binding)] return self.rewrite(Arc::unwrap_or_clone(limit.input), _config); } Ok(Transformed::no(LogicalPlan::Limit(limit))) diff --git a/datafusion/optimizer/src/eliminate_outer_join.rs b/datafusion/optimizer/src/eliminate_outer_join.rs index fcc21ca415b0..2c78051c1413 100644 --- a/datafusion/optimizer/src/eliminate_outer_join.rs +++ b/datafusion/optimizer/src/eliminate_outer_join.rs @@ -52,7 +52,7 @@ use std::sync::Arc; pub struct EliminateOuterJoin; impl EliminateOuterJoin { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/extract_equijoin_predicate.rs b/datafusion/optimizer/src/extract_equijoin_predicate.rs index 276af87b2dcb..a623faf8a2ff 100644 --- a/datafusion/optimizer/src/extract_equijoin_predicate.rs +++ b/datafusion/optimizer/src/extract_equijoin_predicate.rs @@ -42,7 +42,7 @@ type EquijoinPredicate = (Expr, Expr); pub struct ExtractEquijoinPredicate; impl ExtractEquijoinPredicate { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/lib.rs b/datafusion/optimizer/src/lib.rs index c4ee23517b4d..a1a59cb34887 100644 --- a/datafusion/optimizer/src/lib.rs +++ b/datafusion/optimizer/src/lib.rs @@ -23,6 +23,7 @@ // Make sure fast / cheap clones on Arc are explicit: // https://github.com/apache/datafusion/issues/11143 #![deny(clippy::clone_on_ref_ptr)] +#![deny(clippy::allow_attributes)] #![cfg_attr(test, allow(clippy::needless_pass_by_value))] //! # DataFusion Optimizer diff --git a/datafusion/optimizer/src/optimize_projections/mod.rs b/datafusion/optimizer/src/optimize_projections/mod.rs index 81b119088c52..548eadffa242 100644 --- a/datafusion/optimizer/src/optimize_projections/mod.rs +++ b/datafusion/optimizer/src/optimize_projections/mod.rs @@ -77,7 +77,7 @@ use datafusion_common::tree_node::{ pub struct OptimizeProjections {} impl OptimizeProjections { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/optimize_unions.rs b/datafusion/optimizer/src/optimize_unions.rs index 969cf6a120c0..18234dd124a8 100644 --- a/datafusion/optimizer/src/optimize_unions.rs +++ b/datafusion/optimizer/src/optimize_unions.rs @@ -32,7 +32,7 @@ use std::sync::Arc; pub struct OptimizeUnions; impl OptimizeUnions { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/propagate_empty_relation.rs b/datafusion/optimizer/src/propagate_empty_relation.rs index 2b02b7779461..b59295b1d717 100644 --- a/datafusion/optimizer/src/propagate_empty_relation.rs +++ b/datafusion/optimizer/src/propagate_empty_relation.rs @@ -33,7 +33,7 @@ use crate::{OptimizerConfig, OptimizerRule}; pub struct PropagateEmptyRelation; impl PropagateEmptyRelation { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/push_down_filter.rs b/datafusion/optimizer/src/push_down_filter.rs index 552d6ae2da6c..755ffdbafc86 100644 --- a/datafusion/optimizer/src/push_down_filter.rs +++ b/datafusion/optimizer/src/push_down_filter.rs @@ -766,8 +766,9 @@ impl OptimizerRule for PushDownFilter { fn rewrite( &self, plan: LogicalPlan, - _config: &dyn OptimizerConfig, + config: &dyn OptimizerConfig, ) -> Result> { + let _ = config.options(); if let LogicalPlan::Join(join) = plan { return push_down_join(join, None); }; @@ -811,8 +812,7 @@ impl OptimizerRule for PushDownFilter { new_predicate, child_filter.input, )?); - #[allow(clippy::used_underscore_binding)] - self.rewrite(new_filter, _config) + self.rewrite(new_filter, config) } LogicalPlan::Repartition(repartition) => { let new_filter = @@ -1378,7 +1378,7 @@ fn insert_below( } impl PushDownFilter { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/push_down_limit.rs b/datafusion/optimizer/src/push_down_limit.rs index dbd8e1892949..7b302adf22ac 100644 --- a/datafusion/optimizer/src/push_down_limit.rs +++ b/datafusion/optimizer/src/push_down_limit.rs @@ -35,7 +35,7 @@ use datafusion_expr::{FetchType, SkipType, lit}; pub struct PushDownLimit {} impl PushDownLimit { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } @@ -50,8 +50,9 @@ impl OptimizerRule for PushDownLimit { fn rewrite( &self, plan: LogicalPlan, - _config: &dyn OptimizerConfig, + config: &dyn OptimizerConfig, ) -> Result> { + let _ = config.options(); let LogicalPlan::Limit(mut limit) = plan else { return Ok(Transformed::no(plan)); }; @@ -81,8 +82,7 @@ impl OptimizerRule for PushDownLimit { }); // recursively reapply the rule on the new plan - #[allow(clippy::used_underscore_binding)] - return self.rewrite(plan, _config); + return self.rewrite(plan, config); } // no fetch to push, so return the original plan diff --git a/datafusion/optimizer/src/replace_distinct_aggregate.rs b/datafusion/optimizer/src/replace_distinct_aggregate.rs index 3aeae8287750..f24ca1f119b6 100644 --- a/datafusion/optimizer/src/replace_distinct_aggregate.rs +++ b/datafusion/optimizer/src/replace_distinct_aggregate.rs @@ -69,7 +69,7 @@ use datafusion_expr::{ExprFunctionExt, Limit, LogicalPlanBuilder, col, lit}; pub struct ReplaceDistinctWithAggregate {} impl ReplaceDistinctWithAggregate { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/scalar_subquery_to_join.rs b/datafusion/optimizer/src/scalar_subquery_to_join.rs index 8a4569e45547..975c234b3883 100644 --- a/datafusion/optimizer/src/scalar_subquery_to_join.rs +++ b/datafusion/optimizer/src/scalar_subquery_to_join.rs @@ -43,7 +43,7 @@ use datafusion_expr::{EmptyRelation, Expr, LogicalPlan, LogicalPlanBuilder, expr pub struct ScalarSubqueryToJoin {} impl ScalarSubqueryToJoin { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self::default() } diff --git a/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs b/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs index e4952ada4794..01de44cee1f6 100644 --- a/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs +++ b/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs @@ -201,7 +201,7 @@ impl ExprSimplifier { since = "48.0.0", note = "Use `simplify_with_cycle_count_transformed` instead" )] - #[allow(unused_mut)] + #[expect(unused_mut)] pub fn simplify_with_cycle_count(&self, mut expr: Expr) -> Result<(Expr, u32)> { let (transformed, cycle_count) = self.simplify_with_cycle_count_transformed(expr)?; @@ -496,7 +496,6 @@ impl TreeNodeRewriter for Canonicalizer { } } -#[allow(rustdoc::private_intra_doc_links)] /// Partially evaluate `Expr`s so constant subtrees are evaluated at plan time. /// /// Note it does not handle algebraic rewrites such as `(a or false)` @@ -521,7 +520,6 @@ struct ConstEvaluator<'a> { input_batch: RecordBatch, } -#[allow(dead_code)] /// The simplify result of ConstEvaluator enum ConstSimplifyResult { // Expr was simplified and contains the new expression diff --git a/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs b/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs index fcb8ba891bb9..0e1e44e92720 100644 --- a/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs +++ b/datafusion/optimizer/src/simplify_expressions/simplify_exprs.rs @@ -143,7 +143,7 @@ impl SimplifyExpressions { } impl SimplifyExpressions { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} } diff --git a/datafusion/optimizer/src/single_distinct_to_groupby.rs b/datafusion/optimizer/src/single_distinct_to_groupby.rs index 3ad56820f029..05edd230dacc 100644 --- a/datafusion/optimizer/src/single_distinct_to_groupby.rs +++ b/datafusion/optimizer/src/single_distinct_to_groupby.rs @@ -55,7 +55,7 @@ pub struct SingleDistinctToGroupBy {} const SINGLE_DISTINCT_ALIAS: &str = "alias1"; impl SingleDistinctToGroupBy { - #[allow(missing_docs)] + #[expect(missing_docs)] pub fn new() -> Self { Self {} }