mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-20 15:35:29 +01:00
Merge 'Compat: Translate the 2nd argument of group_concat / string_agg' from Iaroslav Zeigerman
Fixes #3140 Reviewed-by: Jussi Saurio <jussi.saurio@gmail.com> Closes #3155
This commit is contained in:
@@ -337,17 +337,7 @@ pub fn translate_aggregation_step(
|
||||
}
|
||||
|
||||
let delimiter_reg = if num_args == 2 {
|
||||
match &agg_arg_source.arg_at(1) {
|
||||
ast::Expr::Column { .. } => {
|
||||
agg_arg_source.translate(program, referenced_tables, resolver, 1)?
|
||||
}
|
||||
ast::Expr::Literal(ast::Literal::String(s)) => {
|
||||
let delimiter_expr =
|
||||
ast::Expr::Literal(ast::Literal::String(s.to_string()));
|
||||
translate_const_arg(program, referenced_tables, resolver, &delimiter_expr)?
|
||||
}
|
||||
_ => crate::bail_parse_error!("Incorrect delimiter parameter"),
|
||||
}
|
||||
agg_arg_source.translate(program, referenced_tables, resolver, 1)?
|
||||
} else {
|
||||
let delimiter_expr =
|
||||
ast::Expr::Literal(ast::Literal::String(String::from("\",\"")));
|
||||
@@ -435,18 +425,9 @@ pub fn translate_aggregation_step(
|
||||
crate::bail_parse_error!("string_agg bad number of arguments");
|
||||
}
|
||||
|
||||
let delimiter_reg = match &agg_arg_source.arg_at(1) {
|
||||
ast::Expr::Column { .. } => {
|
||||
agg_arg_source.translate(program, referenced_tables, resolver, 1)?
|
||||
}
|
||||
ast::Expr::Literal(ast::Literal::String(s)) => {
|
||||
let delimiter_expr = ast::Expr::Literal(ast::Literal::String(s.to_string()));
|
||||
translate_const_arg(program, referenced_tables, resolver, &delimiter_expr)?
|
||||
}
|
||||
_ => crate::bail_parse_error!("Incorrect delimiter parameter"),
|
||||
};
|
||||
|
||||
let expr_reg = agg_arg_source.translate(program, referenced_tables, resolver, 0)?;
|
||||
let delimiter_reg =
|
||||
agg_arg_source.translate(program, referenced_tables, resolver, 1)?;
|
||||
|
||||
program.emit_insn(Insn::AggStep {
|
||||
acc_reg: target_register,
|
||||
|
||||
@@ -84,6 +84,10 @@ do_execsql_test select-group-concat-with-delimiter {
|
||||
SELECT group_concat(name, ';') FROM products;
|
||||
} {hat;cap;shirt;sweater;sweatshirt;shorts;jeans;sneakers;boots;coat;accessories}
|
||||
|
||||
do_execsql_test select-group-concat-with-delimiter-expression {
|
||||
SELECT group_concat(name, ';' || '|') FROM products;
|
||||
} {hat;|cap;|shirt;|sweater;|sweatshirt;|shorts;|jeans;|sneakers;|boots;|coat;|accessories}
|
||||
|
||||
do_execsql_test select-group-concat-with-column-delimiter {
|
||||
SELECT group_concat(name, id) FROM products;
|
||||
} {hat2cap3shirt4sweater5sweatshirt6shorts7jeans8sneakers9boots10coat11accessories}
|
||||
@@ -96,6 +100,10 @@ do_execsql_test select-string-agg-with-delimiter {
|
||||
SELECT string_agg(name, ',') FROM products;
|
||||
} {hat,cap,shirt,sweater,sweatshirt,shorts,jeans,sneakers,boots,coat,accessories}
|
||||
|
||||
do_execsql_test select-string-agg-with-delimiter-expression {
|
||||
SELECT string_agg(name, ';' || '|') FROM products;
|
||||
} {hat;|cap;|shirt;|sweater;|sweatshirt;|shorts;|jeans;|sneakers;|boots;|coat;|accessories}
|
||||
|
||||
do_execsql_test select-string-agg-with-column-delimiter {
|
||||
SELECT string_agg(name, id) FROM products;
|
||||
} {hat2cap3shirt4sweater5sweatshirt6shorts7jeans8sneakers9boots10coat11accessories}
|
||||
|
||||
Reference in New Issue
Block a user