You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Alias metadata may be lost when the physical expression is created #27156
When a (non literal) logical alias gets converted to a physical expression, its PhysicalExpr equivalent doesn't have the same return field. I'm not sure if aliases are special cased in such a way that this matters in practice.
To Reproduce
#[test]fnnon_literal_alias_metadata_differs_between_logical_and_physical() -> Result<()>{let schema = Schema::new(vec![Field::new("value",DataType::Int64,false)]);let df_schema = DFSchema::try_from(schema.clone())?;let metadata = FieldMetadata::from(HashMap::from([("source".to_string(),"alias".to_string(),)]));let expr = col("value").alias_with_metadata("aliased_value",Some(metadata));let logical_field = expr.to_field(&df_schema)?.1;let physical_expr = create_physical_expr(&expr,&df_schema,&ExecutionProps::new(),&PhysicalPlanningContext::default(),)?;let physical_field = physical_expr.return_field(&schema)?;// Logical Alias applies its supplied metadata.assert_eq!(
logical_field.metadata().get("source").map(String::as_str),Some("alias"));// Physical lowering removes a non-literal Alias and its metadata.assert_eq!(physical_field.metadata().get("source"),None);Ok(())}
Expected behavior
I believe a property we want to hold is that an expr and its create_physical_expr equivalent should always give the same return field.
Activity
Phoenix500526 commentedon Nov 6, 2026
take