If there is a REPLACE statement in the projected expression in the form of "REPLACE (some_column_within_an_expr AS some_column)", this function replaces that column with the given replace expression. Column name remains the same. Multiple REPLACEs are also possible with comma separations.
(
mut exprs: Vec<Expr>,
replace: &PlannedReplaceSelectItem,
)
| 2031 | /// that column with the given replace expression. Column name remains the same. |
| 2032 | /// Multiple REPLACEs are also possible with comma separations. |
| 2033 | fn replace_columns( |
| 2034 | mut exprs: Vec<Expr>, |
| 2035 | replace: &PlannedReplaceSelectItem, |
| 2036 | ) -> Result<Vec<Expr>> { |
| 2037 | for expr in exprs.iter_mut() { |
| 2038 | if let Expr::Column(Column { name, .. }) = expr |
| 2039 | && let Some((_, new_expr)) = replace |
| 2040 | .items() |
| 2041 | .iter() |
| 2042 | .zip(replace.expressions().iter()) |
| 2043 | .find(|(item, _)| item.column_name.value == *name) |
| 2044 | { |
| 2045 | *expr = new_expr.clone().alias(name.clone()) |
| 2046 | } |
| 2047 | } |
| 2048 | Ok(exprs) |
| 2049 | } |
| 2050 | |
| 2051 | /// Create a SubqueryAlias to wrap a LogicalPlan. |
| 2052 | pub fn subquery_alias( |
no test coverage detected
searching dependent graphs…