Skip to content

Commit 0238e36

Browse files
committed
chore: subquery column with same name fix
1 parent c152dcb commit 0238e36

File tree

1 file changed

+7
-14
lines changed

1 file changed

+7
-14
lines changed

datafusion/core/src/physical_plan/subquery.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
2323
use arrow::compute::concat;
2424
use std::any::Any;
25+
use std::collections::HashMap;
2526
use std::pin::Pin;
2627
use std::sync::Arc;
2728
use std::task::{Context, Poll};
@@ -61,23 +62,15 @@ impl SubqueryExec {
6162
input: Arc<dyn ExecutionPlan>,
6263
cursor: Arc<OuterQueryCursor>,
6364
) -> Result<Self> {
64-
let input_schema = (*input.schema()).clone();
65+
let input_schema = input.schema();
6566

66-
let merged_schema = Schema::try_merge(
67-
vec![input_schema].into_iter().chain(
68-
subqueries
69-
.iter()
70-
.map(|s| (*s.schema()).clone())
71-
.collect::<Vec<_>>(),
72-
),
73-
)?;
74-
75-
if merged_schema.fields().len()
76-
!= input.schema().fields().len() + subqueries.len()
77-
{
78-
return Err(DataFusionError::Plan("One or more correlated sub queries use same column names which is not supported".to_string()));
67+
let mut total_fields = input_schema.fields().clone();
68+
for q in subqueries.iter() {
69+
total_fields.append(&mut q.schema().fields().clone());
7970
}
8071

72+
let merged_schema = Schema::new_with_metadata(total_fields, HashMap::new());
73+
8174
Ok(Self {
8275
subqueries,
8376
schema: Arc::new(merged_schema),

0 commit comments

Comments
 (0)