Skip to content

Commit

Permalink
fix(cubesql): Fix ORDER BY remapping with uppercase alias
Browse files Browse the repository at this point in the history
  • Loading branch information
MazterQyou committed Dec 14, 2023
1 parent f0719cd commit a6267bd
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions rust/cubesql/cubesql/src/compile/engine/df/wrapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,7 @@ impl CubeScanWrapperNode {
sql = new_sql_query;

let original_alias = expr_name(&original_expr, &schema)?;
let original_alias_key = Column::from_name(&original_alias);
let alias = if can_rename_columns {
let alias = expr_name(&expr, &schema)?;
let mut truncated_alias = non_id_regex.replace_all(&alias, "_").to_lowercase();
Expand All @@ -754,7 +755,7 @@ impl CubeScanWrapperNode {
for i in 1..10000 {
if !next_remapping
.iter()
.any(|(_, v)| v == &Column::from_name(&alias))
.any(|(k, v)| v == &Column::from_name(&alias) && k != &original_alias_key)
{
break;
}
Expand All @@ -765,11 +766,16 @@ impl CubeScanWrapperNode {
original_alias.clone()
};
if original_alias != alias {
if !next_remapping.contains_key(&Column::from_name(&alias)) {
next_remapping.insert(
Column::from_name(&original_alias),
Column::from_name(&alias),
);
let alias_column = Column::from_name(&alias);
if let Some(value) = next_remapping.get(&original_alias_key) {
if value != &alias_column {
return Err(CubeError::internal(format!(
"Can't generate SQL for column expr: duplicate alias {}",
original_alias
)));
}
} else {
next_remapping.insert(original_alias_key, alias_column);
next_remapping.insert(
Column {
name: original_alias.clone(),
Expand All @@ -780,11 +786,6 @@ impl CubeScanWrapperNode {
relation: from_alias.clone(),
},
);
} else {
return Err(CubeError::internal(format!(
"Can't generate SQL for column expr: duplicate alias {}",
alias
)));
}
}

Expand Down

0 comments on commit a6267bd

Please sign in to comment.