diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 941b5523e04e89589742a967be8c2aaff705f75a..f3790ba0113571b4e08f8ea758297c41894174b9 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -972,7 +972,7 @@ likeFunc(sql_context *context, int argc, sql_value **argv) sql_result_error(context, err_msg, -1); return; } - sql_result_int(context, res == MATCH); + sql_result_bool(context, res == MATCH); } /* @@ -1859,9 +1859,9 @@ sqlRegisterLikeFunctions(sql *db, int is_case_insensitive) * supplied pattern and FALSE otherwise. */ int *is_like_ci = SQL_INT_TO_PTR(is_case_insensitive); - sqlCreateFunc(db, "LIKE", FIELD_TYPE_INTEGER, 2, 0, + sqlCreateFunc(db, "LIKE", FIELD_TYPE_BOOLEAN, 2, 0, is_like_ci, likeFunc, 0, 0, 0); - sqlCreateFunc(db, "LIKE", FIELD_TYPE_INTEGER, 3, 0, + sqlCreateFunc(db, "LIKE", FIELD_TYPE_BOOLEAN, 3, 0, is_like_ci, likeFunc, 0, 0, 0); setLikeOptFlag(db, "LIKE", !(is_case_insensitive) ? (SQL_FUNC_LIKE | @@ -1916,11 +1916,11 @@ sqlRegisterBuiltinFunctions(void) FUNCTION(soundex, 1, 0, 0, soundexFunc), #endif FUNCTION2(unlikely, 1, 0, 0, noopFunc, SQL_FUNC_UNLIKELY, - FIELD_TYPE_INTEGER), + FIELD_TYPE_BOOLEAN), FUNCTION2(likelihood, 2, 0, 0, noopFunc, SQL_FUNC_UNLIKELY, - FIELD_TYPE_INTEGER), + FIELD_TYPE_BOOLEAN), FUNCTION2(likely, 1, 0, 0, noopFunc, SQL_FUNC_UNLIKELY, - FIELD_TYPE_INTEGER), + FIELD_TYPE_BOOLEAN), FUNCTION_COLL(trim, 1, 3, 0, trim_func_one_arg), FUNCTION_COLL(trim, 2, 3, 0, trim_func_two_args), FUNCTION_COLL(trim, 3, 3, 0, trim_func_three_args), diff --git a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua index dec3cce91c57bed6247772871e0feb542aaaa751..861ac8ba29a101449e5b66e39ea07efcb84a3313 100755 --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua @@ -8,118 +8,118 @@ local like_test_cases = { {"1.1", "SELECT 'AB' LIKE '_B';", - {0, {1}} }, + {0, {true}} }, {"1.2", "SELECT 'CD' LIKE '_B';", - {0, {0}} }, + {0, {false}} }, {"1.3", "SELECT '' LIKE '_B';", - {0, {0}} }, + {0, {false}} }, {"1.4", "SELECT 'AB' LIKE '%B';", - {0, {1}} }, + {0, {true}} }, {"1.5", "SELECT 'CD' LIKE '%B';", - {0, {0}} }, + {0, {false}} }, {"1.6", "SELECT '' LIKE '%B';", - {0, {0}} }, + {0, {false}} }, {"1.7", "SELECT 'AB' LIKE 'A__';", - {0, {0}} }, + {0, {false}} }, {"1.8", "SELECT 'CD' LIKE 'A__';", - {0, {0}} }, + {0, {false}} }, {"1.9", "SELECT '' LIKE 'A__';", - {0, {0}} }, + {0, {false}} }, {"1.10", "SELECT 'AB' LIKE 'A_';", - {0, {1}} }, + {0, {true}} }, {"1.11", "SELECT 'CD' LIKE 'A_';", - {0, {0}} }, + {0, {false}} }, {"1.12", "SELECT '' LIKE 'A_';", - {0, {0}} }, + {0, {false}} }, {"1.13", "SELECT 'AB' LIKE 'A';", - {0, {0}} }, + {0, {false}} }, {"1.14", "SELECT 'CD' LIKE 'A';", - {0, {0}} }, + {0, {false}} }, {"1.15", "SELECT '' LIKE 'A';", - {0, {0}} }, + {0, {false}} }, {"1.16", "SELECT 'AB' LIKE '_';", - {0, {0}} }, + {0, {false}} }, {"1.17", "SELECT 'CD' LIKE '_';", - {0, {0}} }, + {0, {false}} }, {"1.18", "SELECT '' LIKE '_';", - {0, {0}} }, + {0, {false}} }, {"1.19", "SELECT 'AB' LIKE '__';", - {0, {1}} }, + {0, {true}} }, {"1.20", "SELECT 'CD' LIKE '__';", - {0, {1}} }, + {0, {true}} }, {"1.21", "SELECT '' LIKE '__';", - {0, {0}} }, + {0, {false}} }, {"1.22", "SELECT 'AB' LIKE '%A';", - {0, {0}} }, + {0, {false}} }, {"1.23", "SELECT 'AB' LIKE '%C';", - {0, {0}} }, + {0, {false}} }, {"1.24", "SELECT 'Ñ‘Ñ„' LIKE '%Å“Ø´';", - {0, {0}} }, + {0, {false}} }, {"1.25", "SELECT 'Ñ‘Ñ„â„«Å’Ø´' LIKE '%Å“Ø´';", - {0, {1}} }, + {0, {true}} }, {"1.26", "SELECT 'â„«Å’Ø´' LIKE '%Å“Ø´';", - {0, {1}} }, + {0, {true}} }, {"1.27", "SELECT 'Ñ‘Ñ„' LIKE 'Ñ‘_';", - {0, {1}} }, + {0, {true}} }, {"1.28", "SELECT 'Ñ‘Ñ„â„«Å’Ø´' LIKE 'Ñ‘_';", - {0, {0}} }, + {0, {false}} }, {"1.29", "SELECT 'â„«Å’Ø´' LIKE 'Ñ‘_';", - {0, {0}} }, + {0, {false}} }, {"1.30", "SELECT 'Ñ‘Ñ„' LIKE 'Ñ‘Ñ„%';", - {0, {1}} }, + {0, {true}} }, {"1.31", "SELECT 'Ñ‘Ñ„â„«Å’Ø´' LIKE 'Ñ‘Ñ„%';", - {0, {1}} }, + {0, {true}} }, {"1.32", "SELECT 'â„«Å’Ø´' LIKE 'Ñ‘Ñ„%';", - {0, {0}} }, + {0, {false}} }, {"1.33", "SELECT 'Ñ‘Ñ„' LIKE 'Ñ‘Ñ„â„«%';", - {0, {0}} }, + {0, {false}} }, {"1.34", "SELECT 'Ñ‘Ñ„â„«Å’Ø´' LIKE 'Ñ‘Ñ„â„«%';", - {0, {1}} }, + {0, {true}} }, {"1.35", "SELECT 'â„«Å’Ø´' LIKE 'Ñ‘Ñ„Ø´%';", - {0, {0}} }, + {0, {false}} }, {"1.36", "SELECT 'Ñ‘Ñ„' LIKE 'Ñ‘_%';", - {0, {1}} }, + {0, {true}} }, {"1.37", "SELECT 'Ñ‘Ñ„â„«Å’Ø´' LIKE 'Ñ‘_%';", - {0, {1}} }, + {0, {true}} }, {"1.38", "SELECT 'â„«Å’Ø´' LIKE 'Ñ‘_%';", - {0, {0}} }, + {0, {false}} }, } test:do_catchsql_set_test(like_test_cases, prefix)