diff --git a/core/vdbe/mod.rs b/core/vdbe/mod.rs index df7f78016..1ba6d2d60 100644 --- a/core/vdbe/mod.rs +++ b/core/vdbe/mod.rs @@ -1435,8 +1435,9 @@ impl Program { state.registers[*dest] = result; } ScalarFunc::ConcatWs => { - let start_reg = *start_reg; - let result = exec_concat_ws(&state.registers[start_reg..]); + let result = exec_concat_ws( + &state.registers[*start_reg..*start_reg + arg_count], + ); state.registers[*dest] = result; } ScalarFunc::IfNull => {} diff --git a/testing/scalar-functions.test b/testing/scalar-functions.test index 8ede9f78b..d73434ea1 100755 --- a/testing/scalar-functions.test +++ b/testing/scalar-functions.test @@ -3,38 +3,38 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl -do_execsql_test concat-1 { +do_execsql_test concat-chars { select concat('l', 'i'); } {li} -do_execsql_test concat-2 { +do_execsql_test concat-char-and-number { select concat('l', 1); } {l1} -do_execsql_test concat-3 { +do_execsql_test concat-char-and-decimal { select concat('l', 1.5); } {l1.5} -do_execsql_test concat-4 { +do_execsql_test concat-char-null-char { select concat('l', null, 'i'); } {li} -do_execsql_test concat_ws-1 { +do_execsql_test concat_ws-numbers { select concat_ws(',', 1, 2); } {1,2} -do_execsql_test concat_ws-2 { +do_execsql_test concat_ws-single-number { select concat_ws(',', 1); } {1} -do_execsql_test concat_ws-3 { - select concat_ws(0, 1, 2); -} {102} - -do_execsql_test concat_ws-4 { +do_execsql_test concat_ws-null { select concat_ws(null, 1, 2); } {} +do_execsql_test concat_ws-multiple { + select concat_ws(',', 1, 2), concat_ws(',', 3, 4) +} {1,2|3,4} + do_execsql_test char { select char(108, 105) } {li}