Skip to content

Commit b6d689c

Browse files
committed
support no columns for values in LogicalPlanBuilder::values
1 parent f4a80ab commit b6d689c

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

datafusion/expr/src/logical_plan/builder.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,9 @@ impl LogicalPlanBuilder {
216216
if values.is_empty() {
217217
return plan_err!("Values list cannot be empty");
218218
}
219+
220+
// values list can have no columns, see: https://github.com/apache/datafusion/pull/12339
219221
let n_cols = values[0].len();
220-
if n_cols == 0 {
221-
return plan_err!("Values list cannot be zero length");
222-
}
223222
for (i, row) in values.iter().enumerate() {
224223
if row.len() != n_cols {
225224
return plan_err!(

datafusion/substrait/tests/cases/roundtrip_logical_plan.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ use datafusion::execution::registry::SerializerRegistry;
3232
use datafusion::execution::runtime_env::RuntimeEnv;
3333
use datafusion::execution::session_state::SessionStateBuilder;
3434
use datafusion::logical_expr::{
35-
Extension, InvariantLevel, LogicalPlan, PartitionEvaluator, Repartition,
36-
UserDefinedLogicalNode, Values, Volatility,
35+
Extension, InvariantLevel, LogicalPlan, LogicalPlanBuilder, PartitionEvaluator,
36+
Repartition, UserDefinedLogicalNode, Values, Volatility,
3737
};
3838
use datafusion::optimizer::simplify_expressions::expr_simplifier::THRESHOLD_INLINE_INLIST;
3939
use datafusion::prelude::*;
@@ -1258,10 +1258,7 @@ async fn roundtrip_values() -> Result<()> {
12581258
async fn roundtrip_values_no_columns() -> Result<()> {
12591259
let ctx = create_context().await?;
12601260
// "VALUES ()" is not yet supported by the SQL parser, so we construct the plan manually
1261-
let plan = LogicalPlan::Values(Values {
1262-
values: vec![vec![], vec![]], // two rows, no columns
1263-
schema: DFSchemaRef::new(DFSchema::empty()),
1264-
});
1261+
let plan = LogicalPlanBuilder::values(vec![vec![], vec![]])?.build()?;
12651262
roundtrip_logical_plan_with_ctx(plan, ctx).await?;
12661263
Ok(())
12671264
}

0 commit comments

Comments
 (0)