* [tarantool-patches] [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal @ 2018-08-16 17:00 N.Tatunov 2018-08-16 17:00 ` [tarantool-patches] [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue N.Tatunov ` (2 more replies) 0 siblings, 3 replies; 46+ messages in thread From: N.Tatunov @ 2018-08-16 17:00 UTC (permalink / raw) To: tarantool-patches; +Cc: avkhatskevich, N.Tatunov Branch: https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hanging Issues: https://github.com/tarantool/tarantool/issues/3251 https://github.com/tarantool/tarantool/issues/3334 https://github.com/tarantool/tarantool/issues/3589 https://github.com/tarantool/tarantool/issues/3572 Currently we have internal functions for pattern comparisons that are hanging in certain situations. This patch-set is aimed on refactoring these functions, fixing possible bugs including the ones that are known. Also since we want to get close to ANSI SQL it was decided that we're going to remove GLOB from Tarantool. And due to changes in comparisons some tests containing GLOB would need refactoring. Thus in order not to refactor tests that are anyways going to be removed it is quite convenient to remove GLOB support in the same patch-set. Changes in v2: - Fixes for Alexey's review comments on previous version - A lot of code that was touched in the patch is refactored according to our code-style. - GLOB is removed - Internals refactored with respect to GLOB removal - Found and removed redundant prototype for sqlite3_user_data function N.Tatunov (2): sql: LIKE & GLOB pattern comparison issue sql: remove GLOB from Tarantool extra/mkkeywordhash.c | 1 - src/box/sql/analyze.c | 7 +- src/box/sql/func.c | 477 +- src/box/sql/pragma.c | 6 +- src/box/sql/sqliteInt.h | 16 +- src/box/sql/sqliteLimit.h | 3 +- src/box/sql/vdbe.c | 2 +- src/box/sql/wherecode.c | 2 +- src/box/sql/whereexpr.c | 157 +- test/sql-tap/alter.test.lua | 6 +- test/sql-tap/analyze9.test.lua | 8 +- test/sql-tap/e_expr.test.lua | 305 +- .../gh-3251-string-pattern-comparison.test.lua | 213 + test/sql-tap/like2.test.lua | 10 +- test/sql-tap/like3.test.lua | 26 +- test/sql-tap/tkt1537.test.lua | 4 +- test/sql-tap/triggerA.test.lua | 2 +- test/sql-tap/where3.test.lua | 6 +- test/sql-tap/where7.test.lua | 4780 ++++++++++---------- 19 files changed, 3112 insertions(+), 2919 deletions(-) create mode 100755 test/sql-tap/gh-3251-string-pattern-comparison.test.lua -- 2.7.4 ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-08-16 17:00 [tarantool-patches] [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal N.Tatunov @ 2018-08-16 17:00 ` N.Tatunov 2018-08-17 9:23 ` [tarantool-patches] " Alex Khatskevich 2018-08-16 17:00 ` [tarantool-patches] [PATCH 2/2] sql: remove GLOB from Tarantool N.Tatunov 2018-11-15 4:57 ` [tarantool-patches] Re: [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal Kirill Yukhin 2 siblings, 1 reply; 46+ messages in thread From: N.Tatunov @ 2018-08-16 17:00 UTC (permalink / raw) To: tarantool-patches; +Cc: avkhatskevich, N.Tatunov From: "N.Tatunov" <hollow653@gmail.com> Currently function that compares pattern and string for GLOB & LIKE operators doesn't work properly. It uses ICU reading function which was assumed having other return codes and the implementation for the comparison ending isn't paying attention to some special cases, hence in those cases it works improperly. With the patch applied an error will be returned in case there's an invalid UTF-8 symbol in pattern & pattern containing only valid UTF-8 symbols will not be matched with the string that contains invalid symbol. Сloses #3251 Сloses #3334 Part of #3572 --- src/box/sql/func.c | 272 +++++++++++++-------- test/sql-tap/e_expr.test.lua | 16 +- .../gh-3251-string-pattern-comparison.test.lua | 213 ++++++++++++++++ 3 files changed, 396 insertions(+), 105 deletions(-) create mode 100755 test/sql-tap/gh-3251-string-pattern-comparison.test.lua diff --git a/src/box/sql/func.c b/src/box/sql/func.c index c06e3bd..66cae17 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -617,13 +617,16 @@ struct compareInfo { u8 noCase; /* true to ignore case differences */ }; -/* - * For LIKE and GLOB matching on EBCDIC machines, assume that every - * character is exactly one byte in size. Also, provde the Utf8Read() - * macro for fast reading of the next character in the common case where - * the next character is ASCII. +/** + * Providing there are symbols in string s this + * macro returns UTF-8 code of character and + * promotes pointer to the next symbol in the string. + * Otherwise return code is SQL_END_OF_STRING. */ -#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &s, e, &status) +#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) + +#define SQL_END_OF_STRING 0xffff +#define SQL_INVALID_UTF8_SYMBOL 0xfffd static const struct compareInfo globInfo = { '*', '?', '[', 0 }; @@ -638,19 +641,16 @@ static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; /* - * Possible error returns from patternMatch() + * Possible error returns from sql_utf8_pattern_compare() */ -#define SQLITE_MATCH 0 -#define SQLITE_NOMATCH 1 -#define SQLITE_NOWILDCARDMATCH 2 - -/* - * Compare two UTF-8 strings for equality where the first string is - * a GLOB or LIKE expression. Return values: - * - * SQLITE_MATCH: Match - * SQLITE_NOMATCH: No match - * SQLITE_NOWILDCARDMATCH: No match in spite of having * or % wildcards. +#define SQL_MATCH 0 +#define SQL_NOMATCH 1 +#define SQL_NOWILDCARDMATCH 2 +#define SQL_INVALID_PATTERN 3 + +/** + * Compare two UTF-8 strings for equality where the first string + * is a GLOB or LIKE expression. * * Globbing rules: * @@ -663,92 +663,133 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; * * [^...] Matches one character not in the enclosed list. * - * With the [...] and [^...] matching, a ']' character can be included - * in the list by making it the first character after '[' or '^'. A - * range of characters can be specified using '-'. Example: - * "[a-z]" matches any single lower-case letter. To match a '-', make - * it the last character in the list. + * With the [...] and [^...] matching, a ']' character can be + * included in the list by making it the first character after + * '[' or '^'. A range of characters can be specified using '-'. + * Example: "[a-z]" matches any single lower-case letter. + * To match a '-', make it the last character in the list. * * Like matching rules: * - * '%' Matches any sequence of zero or more characters + * '%' Matches any sequence of zero or more characters. * - ** '_' Matches any one character + * '_' Matches any one character. * * Ec Where E is the "esc" character and c is any other - * character, including '%', '_', and esc, match exactly c. + * character, including '%', '_', and esc, match + * exactly c. * * The comments within this routine usually assume glob matching. * - * This routine is usually quick, but can be N**2 in the worst case. + * This routine is usually quick, but can be N**2 in the worst + * case. + * + * @param pattern String containing comparison pattern. + * @param string String being compared. + * @param compareInfo Information about how to compare. + * @param matchOther The escape char (LIKE) or '[' (GLOB). + * + * @retval SQL_MATCH: Match. + * SQL_NOMATCH: No match. + * SQL_NOWILDCARDMATCH: No match in spite of having * + * or % wildcards. + * SQL_INVALID_PATTERN: Pattern contains invalid + * symbol. */ static int -patternCompare(const char * pattern, /* The glob pattern */ - const char * string, /* The string to compare against the glob */ - const struct compareInfo *pInfo, /* Information about how to do the compare */ - UChar32 matchOther /* The escape char (LIKE) or '[' (GLOB) */ - ) +sql_utf8_pattern_compare(const char *pattern, + const char *string, + const struct compareInfo *pInfo, + UChar32 matchOther) { - UChar32 c, c2; /* Next pattern and input string chars */ - UChar32 matchOne = pInfo->matchOne; /* "?" or "_" */ - UChar32 matchAll = pInfo->matchAll; /* "*" or "%" */ - UChar32 noCase = pInfo->noCase; /* True if uppercase==lowercase */ - const char *zEscaped = 0; /* One past the last escaped input char */ + /* Next pattern and input string chars */ + UChar32 c, c2; + /* "?" or "_" */ + UChar32 matchOne = pInfo->matchOne; + /* "*" or "%" */ + UChar32 matchAll = pInfo->matchAll; + /* True if uppercase==lowercase */ + UChar32 noCase = pInfo->noCase; + /* One past the last escaped input char */ + const char *zEscaped = 0; const char * pattern_end = pattern + strlen(pattern); const char * string_end = string + strlen(string); UErrorCode status = U_ZERO_ERROR; - while (pattern < pattern_end){ + while (pattern < pattern_end) { c = Utf8Read(pattern, pattern_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; if (c == matchAll) { /* Match "*" */ - /* Skip over multiple "*" characters in the pattern. If there - * are also "?" characters, skip those as well, but consume a - * single character of the input string for each "?" skipped + /* Skip over multiple "*" characters in + * the pattern. If there are also "?" + * characters, skip those as well, but + * consume a single character of the + * input string for each "?" skipped. */ - while (pattern < pattern_end){ - c = Utf8Read(pattern, pattern_end); + while ((c = Utf8Read(pattern, pattern_end)) != + SQL_END_OF_STRING) { + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; if (c != matchAll && c != matchOne) break; - if (c == matchOne - && Utf8Read(string, string_end) == 0) { - return SQLITE_NOWILDCARDMATCH; - } + if (c == matchOne && + (c2 = Utf8Read(string, string_end)) == + SQL_END_OF_STRING) + return SQL_NOWILDCARDMATCH; + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_NOMATCH; + } + /* + * "*" at the end of the pattern matches. + */ + if (c == SQL_END_OF_STRING) { + return SQL_MATCH; } - /* "*" at the end of the pattern matches */ - if (pattern == pattern_end) - return SQLITE_MATCH; if (c == matchOther) { if (pInfo->matchSet == 0) { c = Utf8Read(pattern, pattern_end); - if (c == 0) - return SQLITE_NOWILDCARDMATCH; + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; + if (c == SQL_END_OF_STRING) + return SQL_NOWILDCARDMATCH; } else { - /* "[...]" immediately follows the "*". We have to do a slow - * recursive search in this case, but it is an unusual case. + /* "[...]" immediately + * follows the "*". We + * have to do a slow + * recursive search in + * this case, but it is + * an unusual case. */ - assert(matchOther < 0x80); /* '[' is a single-byte character */ + assert(matchOther < 0x80); while (string < string_end) { int bMatch = - patternCompare(&pattern[-1], - string, - pInfo, - matchOther); - if (bMatch != SQLITE_NOMATCH) + sql_utf8_pattern_compare( + &pattern[-1], + string, + pInfo, + matchOther); + if (bMatch != SQL_NOMATCH) return bMatch; - Utf8Read(string, string_end); + c = Utf8Read(string, string_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_NOMATCH; } - return SQLITE_NOWILDCARDMATCH; + return SQL_NOWILDCARDMATCH; } } - /* At this point variable c contains the first character of the - * pattern string past the "*". Search in the input string for the - * first matching character and recursively continue the match from - * that point. + /* At this point variable c contains the + * first character of the pattern string + * past the "*". Search in the input + * string for the first matching + * character and recursively continue the + * match from that point. * - * For a case-insensitive search, set variable cx to be the same as - * c but in the other case and search the input string for either - * c or cx. + * For a case-insensitive search, set + * variable cx to be the same as c but in + * the other case and search the input + * string for either c or cx. */ int bMatch; @@ -756,14 +797,18 @@ patternCompare(const char * pattern, /* The glob pattern */ c = u_tolower(c); while (string < string_end){ /** - * This loop could have been implemented - * without if converting c2 to lower case - * (by holding c_upper and c_lower), however - * it is implemented this way because lower - * works better with German and Turkish - * languages. + * This loop could have been + * implemented without if + * converting c2 to lower case + * by holding c_upper and + * c_lower,however it is + * implemented this way because + * lower works better with German + * and Turkish languages. */ c2 = Utf8Read(string, string_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_NOMATCH; if (!noCase) { if (c2 != c) continue; @@ -771,42 +816,55 @@ patternCompare(const char * pattern, /* The glob pattern */ if (c2 != c && u_tolower(c2) != c) continue; } - bMatch = - patternCompare(pattern, string, - pInfo, matchOther); - if (bMatch != SQLITE_NOMATCH) + bMatch = sql_utf8_pattern_compare(pattern, + string, + pInfo, + matchOther); + if (bMatch != SQL_NOMATCH) return bMatch; } - return SQLITE_NOWILDCARDMATCH; + return SQL_NOWILDCARDMATCH; } if (c == matchOther) { if (pInfo->matchSet == 0) { c = Utf8Read(pattern, pattern_end); - if (c == 0) - return SQLITE_NOMATCH; + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; + if (c == SQL_END_OF_STRING) + return SQL_NOMATCH; zEscaped = pattern; } else { UChar32 prior_c = 0; int seen = 0; int invert = 0; c = Utf8Read(string, string_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_NOMATCH; if (string == string_end) - return SQLITE_NOMATCH; + return SQL_NOMATCH; c2 = Utf8Read(pattern, pattern_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; if (c2 == '^') { invert = 1; c2 = Utf8Read(pattern, pattern_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; } if (c2 == ']') { if (c == ']') seen = 1; c2 = Utf8Read(pattern, pattern_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; } - while (c2 && c2 != ']') { + while (c2 != SQL_END_OF_STRING && c2 != ']') { if (c2 == '-' && pattern[0] != ']' && pattern < pattern_end && prior_c > 0) { c2 = Utf8Read(pattern, pattern_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; if (c >= prior_c && c <= c2) seen = 1; prior_c = 0; @@ -817,33 +875,40 @@ patternCompare(const char * pattern, /* The glob pattern */ prior_c = c2; } c2 = Utf8Read(pattern, pattern_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; } - if (pattern == pattern_end || (seen ^ invert) == 0) { - return SQLITE_NOMATCH; + if (pattern == pattern_end || + (seen ^ invert) == 0) { + return SQL_NOMATCH; } continue; } } c2 = Utf8Read(string, string_end); + if (c2 == SQL_INVALID_UTF8_SYMBOL) + return SQL_NOMATCH; if (c == c2) continue; if (noCase){ /** - * Small optimisation. Reduce number of calls - * to u_tolower function. - * SQL standards suggest use to_upper for symbol - * normalisation. However, using to_lower allows to - * respect Turkish 'İ' in default locale. + * Small optimisation. Reduce number of + * calls to u_tolower function. SQL + * standards suggest use to_upper for + * symbol normalisation. However, using + * to_lower allows to respect Turkish 'İ' + * in default locale. */ if (u_tolower(c) == c2 || c == u_tolower(c2)) continue; } - if (c == matchOne && pattern != zEscaped && c2 != 0) + if (c == matchOne && pattern != zEscaped && + c2 != SQL_END_OF_STRING) continue; - return SQLITE_NOMATCH; + return SQL_NOMATCH; } - return string == string_end ? SQLITE_MATCH : SQLITE_NOMATCH; + return string == string_end ? SQL_MATCH : SQL_NOMATCH; } /* @@ -853,8 +918,7 @@ patternCompare(const char * pattern, /* The glob pattern */ int sqlite3_strglob(const char *zGlobPattern, const char *zString) { - return patternCompare(zGlobPattern, zString, &globInfo, - '['); + return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); } /* @@ -864,7 +928,7 @@ sqlite3_strglob(const char *zGlobPattern, const char *zString) int sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) { - return patternCompare(zPattern, zStr, &likeInfoNorm, esc); + return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); } /* @@ -910,8 +974,9 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) zB = (const char *) sqlite3_value_text(argv[0]); zA = (const char *) sqlite3_value_text(argv[1]); - /* Limit the length of the LIKE or GLOB pattern to avoid problems - * of deep recursion and N*N behavior in patternCompare(). + /* Limit the length of the LIKE or GLOB pattern to avoid + * problems of deep recursion and N*N behavior in + * sql_utf8_pattern_compare(). */ nPat = sqlite3_value_bytes(argv[0]); testcase(nPat == db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]); @@ -947,8 +1012,13 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) sqlite3_like_count++; #endif int res; - res = patternCompare(zB, zA, pInfo, escape); - sqlite3_result_int(context, res == SQLITE_MATCH); + res = sql_utf8_pattern_compare(zB, zA, pInfo, escape); + if (res == SQL_INVALID_PATTERN) { + sqlite3_result_error(context, "LIKE or GLOB pattern can only" + " contain UTF-8 characters", -1); + return; + } + sqlite3_result_int(context, res == SQL_MATCH); } /* diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index 13d3a96..9780d2c 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -1,6 +1,6 @@ #!/usr/bin/env tarantool test = require("sqltester") -test:plan(12431) +test:plan(10665) --!./tcltestrunner.lua -- 2010 July 16 @@ -77,8 +77,10 @@ local operations = { {"<>", "ne1"}, {"!=", "ne2"}, {"IS", "is"}, - {"LIKE", "like"}, - {"GLOB", "glob"}, +-- NOTE: This test needs refactoring after deletion of GLOB & +-- type restrictions for LIKE. (See #3572) +-- {"LIKE", "like"}, +-- {"GLOB", "glob"}, {"AND", "and"}, {"OR", "or"}, {"MATCH", "match"}, @@ -96,7 +98,12 @@ operations = { {"+", "-"}, {"<<", ">>", "&", "|"}, {"<", "<=", ">", ">="}, - {"=", "==", "!=", "<>", "LIKE", "GLOB"}, --"MATCH", "REGEXP"}, +-- NOTE: This test needs refactoring after deletion of GLOB & +-- type restrictions for LIKE. (See #3572) +-- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & +-- are waiting for their hour, don't confuse them +-- being commented with ticket above. + {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, {"AND"}, {"OR"}, } @@ -475,6 +482,7 @@ for _, op in ipairs(oplist) do end end end + --------------------------------------------------------------------------- -- Test the IS and IS NOT operators. -- diff --git a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua new file mode 100755 index 0000000..addf0e3 --- /dev/null +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua @@ -0,0 +1,213 @@ +#!/usr/bin/env tarantool +test = require("sqltester") +test:plan(128) + +local prefix = "like-test-" + +local like_test_cases = +{ + {"1.1", + "SELECT 'AB' LIKE '_B';", + {0, {1}} }, + {"1.2", + "SELECT 'CD' LIKE '_B';", + {0, {0}} }, + {"1.3", + "SELECT '' LIKE '_B';", + {0, {0}} }, + {"1.4", + "SELECT 'AB' LIKE '%B';", + {0, {1}} }, + {"1.5", + "SELECT 'CD' LIKE '%B';", + {0, {0}} }, + {"1.6", + "SELECT '' LIKE '%B';", + {0, {0}} }, + {"1.7", + "SELECT 'AB' LIKE 'A__';", + {0, {0}} }, + {"1.8", + "SELECT 'CD' LIKE 'A__';", + {0, {0}} }, + {"1.9", + "SELECT '' LIKE 'A__';", + {0, {0}} }, + {"1.10", + "SELECT 'AB' LIKE 'A_';", + {0, {1}} }, + {"1.11", + "SELECT 'CD' LIKE 'A_';", + {0, {0}} }, + {"1.12", + "SELECT '' LIKE 'A_';", + {0, {0}} }, + {"1.13", + "SELECT 'AB' LIKE 'A';", + {0, {0}} }, + {"1.14", + "SELECT 'CD' LIKE 'A';", + {0, {0}} }, + {"1.15", + "SELECT '' LIKE 'A';", + {0, {0}} }, + {"1.16", + "SELECT 'AB' LIKE '_';", + {0, {0}} }, + {"1.17", + "SELECT 'CD' LIKE '_';", + {0, {0}} }, + {"1.18", + "SELECT '' LIKE '_';", + {0, {0}} }, + {"1.19", + "SELECT 'AB' LIKE '__';", + {0, {1}} }, + {"1.20", + "SELECT 'CD' LIKE '__';", + {0, {1}} }, + {"1.21", + "SELECT '' LIKE '__';", + {0, {0}} }, + {"1.22", + "SELECT 'AB' LIKE '%A';", + {0, {0}} }, + {"1.23", + "SELECT 'AB' LIKE '%C';", + {0, {0}} }, + {"1.24", + "SELECT 'ёф' LIKE '%œش';", + {0, {0}} }, + {"1.25", + "SELECT 'ёфÅŒش' LIKE '%œش';", + {0, {1}} }, + {"1.26", + "SELECT 'ÅŒش' LIKE '%œش';", + {0, {1}} }, + {"1.27", + "SELECT 'ёф' LIKE 'ё_';", + {0, {1}} }, + {"1.28", + "SELECT 'ёфÅŒش' LIKE 'ё_';", + {0, {0}} }, + {"1.29", + "SELECT 'ÅŒش' LIKE 'ё_';", + {0, {0}} }, + {"1.30", + "SELECT 'ёф' LIKE 'ёф%';", + {0, {1}} }, + {"1.31", + "SELECT 'ёфÅŒش' LIKE 'ёф%';", + {0, {1}} }, + {"1.32", + "SELECT 'ÅŒش' LIKE 'ёф%';", + {0, {0}} }, + {"1.33", + "SELECT 'ёф' LIKE 'ёфÅ%';", + {0, {0}} }, + {"1.34", + "SELECT 'ёфÅŒش' LIKE 'ёфÅ%';", + {0, {1}} }, + {"1.35", + "SELECT 'ÅŒش' LIKE 'ёфش%';", + {0, {0}} }, + {"1.36", + "SELECT 'ёф' LIKE 'ё_%';", + {0, {1}} }, + {"1.37", + "SELECT 'ёфÅŒش' LIKE 'ё_%';", + {0, {1}} }, + {"1.38", + "SELECT 'ÅŒش' LIKE 'ё_%';", + {0, {0}} }, +} + +test:do_catchsql_set_test(like_test_cases, prefix) + +-- Non-Unicode byte sequences. +local invalid_testcases = { + '\xE2\x80', + '\xFE\xFF', + '\xC2', + '\xED\xB0\x80', + '\xD0', +} + +-- Invalid testcases. +for i, tested_string in ipairs(invalid_testcases) do + + -- We should raise an error in case + -- pattern contains invalid characters. + + local test_name = prefix .. "2." .. tostring(i) + local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" + test:do_catchsql_test(test_name, test_itself, + {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + + test_name = prefix .. "3." .. tostring(i) + test_itself = "SELECT 'abc' LIKE 'abc" .. tested_string .. "';" + test:do_catchsql_test(test_name, test_itself, + {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + + test_name = prefix .. "4." .. tostring(i) + test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "c';" + test:do_catchsql_test(test_name, test_itself, + {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + + -- Just skipping if row value predicand contains invalid character. + + test_name = prefix .. "5." .. tostring(i) + test_itself = "SELECT 'ab" .. tested_string .. "' LIKE 'abc';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "6." .. tostring(i) + test_itself = "SELECT 'abc" .. tested_string .. "' LIKE 'abc';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "7." .. tostring(i) + test_itself = "SELECT 'ab" .. tested_string .. "c' LIKE 'abc';" + test:do_execsql_test(test_name, test_itself, {0}) +end + +-- Unicode byte sequences. +local valid_testcases = { + '\x01', + '\x09', + '\x1F', + '\x7F', + '\xC2\x80', + '\xC2\x90', + '\xC2\x9F', + '\xE2\x80\xA8', + '\x20\x0B', + '\xE2\x80\xA9', +} + +-- Valid testcases. +for i, tested_string in ipairs(valid_testcases) do + test_name = prefix .. "8." .. tostring(i) + local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "9." .. tostring(i) + test_itself = "SELECT 'abc' LIKE 'abc" .. tested_string .. "';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "10." .. tostring(i) + test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "c';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "11." .. tostring(i) + test_itself = "SELECT 'ab" .. tested_string .. "' LIKE 'abc';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "12." .. tostring(i) + test_itself = "SELECT 'abc" .. tested_string .. "' LIKE 'abc';" + test:do_execsql_test(test_name, test_itself, {0}) + + test_name = prefix .. "13." .. tostring(i) + test_itself = "SELECT 'ab" .. tested_string .. "c' LIKE 'abc';" + test:do_execsql_test(test_name, test_itself, {0}) +end + +test:finish_test() -- 2.7.4 ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-08-16 17:00 ` [tarantool-patches] [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue N.Tatunov @ 2018-08-17 9:23 ` Alex Khatskevich 2018-08-17 11:17 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-08-17 9:23 UTC (permalink / raw) To: N.Tatunov, tarantool-patches; +Cc: N.Tatunov The code seems relatively normal, except for one thing below. On 16.08.2018 20:00, N.Tatunov wrote: > From: "N.Tatunov" <hollow653@gmail.com> > > Currently function that compares pattern and string for GLOB & LIKE > operators doesn't work properly. It uses ICU reading function which > was assumed having other return codes and the implementation for the > comparison ending isn't paying attention to some special cases, hence > in those cases it works improperly. > > With the patch applied an error will be returned in case there's an > invalid UTF-8 symbol in pattern & pattern containing only valid UTF-8 > symbols will not be matched with the string that contains invalid > symbol. > > Сloses #3251 > Сloses #3334 > Part of #3572 > --- > src/box/sql/func.c | 272 +++++++++++++-------- > test/sql-tap/e_expr.test.lua | 16 +- > .../gh-3251-string-pattern-comparison.test.lua | 213 ++++++++++++++++ > 3 files changed, 396 insertions(+), 105 deletions(-) > create mode 100755 test/sql-tap/gh-3251-string-pattern-comparison.test.lua > > diff --git a/src/box/sql/func.c b/src/box/sql/func.c > index c06e3bd..66cae17 100644 > --- a/src/box/sql/func.c > +++ b/src/box/sql/func.c > @@ -617,13 +617,16 @@ struct compareInfo { > u8 noCase; /* true to ignore case differences */ > }; > > -/* > - * For LIKE and GLOB matching on EBCDIC machines, assume that every > - * character is exactly one byte in size. Also, provde the Utf8Read() > - * macro for fast reading of the next character in the common case where > - * the next character is ASCII. > +/** > + * Providing there are symbols in string s this > + * macro returns UTF-8 code of character and > + * promotes pointer to the next symbol in the string. > + * Otherwise return code is SQL_END_OF_STRING. > */ > -#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &s, e, &status) > +#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) > + > +#define SQL_END_OF_STRING 0xffff I have a look at icu code and It seems like 0xffff is an error, and it is more similar to invalid symbol that to "end of string". Check it, and fix the code, so that it is treated as an error. For example it is not handled in the main pattern loop: + while (pattern < pattern_end) { c = Utf8Read(pattern, pattern_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; It seems like the 0xffff should be checked there too. If I am right and 0xffff is just an error and can be treated like 0xfffd, then just ``` #define INVALID_SYMBOL(C) ((C) > Oxfffd) or #define INVALID_SYMBOL(C) ((C) == Oxfffd || (C) == 0xffff) ``` and use it instead of ``` if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; ``` Please investigate this issue. > +#define SQL_INVALID_UTF8_SYMBOL 0xfffd > > static const struct compareInfo globInfo = { '*', '?', '[', 0 }; > > @@ -638,19 +641,16 @@ static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; > static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; > > /* > - * Possible error returns from patternMatch() > + * Possible error returns from sql_utf8_pattern_compare() > */ > -#define SQLITE_MATCH 0 > -#define SQLITE_NOMATCH 1 > -#define SQLITE_NOWILDCARDMATCH 2 > - > -/* > - * Compare two UTF-8 strings for equality where the first string is > - * a GLOB or LIKE expression. Return values: > - * > - * SQLITE_MATCH: Match > - * SQLITE_NOMATCH: No match > - * SQLITE_NOWILDCARDMATCH: No match in spite of having * or % wildcards. > +#define SQL_MATCH 0 > +#define SQL_NOMATCH 1 > +#define SQL_NOWILDCARDMATCH 2 > +#define SQL_INVALID_PATTERN 3 > + > +/** > + * Compare two UTF-8 strings for equality where the first string > + * is a GLOB or LIKE expression. > * > * Globbing rules: > * > @@ -663,92 +663,133 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; > * > * [^...] Matches one character not in the enclosed list. > * > - * With the [...] and [^...] matching, a ']' character can be included > - * in the list by making it the first character after '[' or '^'. A > - * range of characters can be specified using '-'. Example: > - * "[a-z]" matches any single lower-case letter. To match a '-', make > - * it the last character in the list. > + * With the [...] and [^...] matching, a ']' character can be > + * included in the list by making it the first character after > + * '[' or '^'. A range of characters can be specified using '-'. > + * Example: "[a-z]" matches any single lower-case letter. > + * To match a '-', make it the last character in the list. > * > * Like matching rules: > * > - * '%' Matches any sequence of zero or more characters > + * '%' Matches any sequence of zero or more characters. > * > - ** '_' Matches any one character > + * '_' Matches any one character. > * > * Ec Where E is the "esc" character and c is any other > - * character, including '%', '_', and esc, match exactly c. > + * character, including '%', '_', and esc, match > + * exactly c. > * > * The comments within this routine usually assume glob matching. > * > - * This routine is usually quick, but can be N**2 in the worst case. > + * This routine is usually quick, but can be N**2 in the worst > + * case. > + * > + * @param pattern String containing comparison pattern. > + * @param string String being compared. > + * @param compareInfo Information about how to compare. > + * @param matchOther The escape char (LIKE) or '[' (GLOB). > + * > + * @retval SQL_MATCH: Match. > + * SQL_NOMATCH: No match. > + * SQL_NOWILDCARDMATCH: No match in spite of having * > + * or % wildcards. > + * SQL_INVALID_PATTERN: Pattern contains invalid > + * symbol. > */ > static int > -patternCompare(const char * pattern, /* The glob pattern */ > - const char * string, /* The string to compare against the glob */ > - const struct compareInfo *pInfo, /* Information about how to do the compare */ > - UChar32 matchOther /* The escape char (LIKE) or '[' (GLOB) */ > - ) > +sql_utf8_pattern_compare(const char *pattern, > + const char *string, > + const struct compareInfo *pInfo, > + UChar32 matchOther) > { > - UChar32 c, c2; /* Next pattern and input string chars */ > - UChar32 matchOne = pInfo->matchOne; /* "?" or "_" */ > - UChar32 matchAll = pInfo->matchAll; /* "*" or "%" */ > - UChar32 noCase = pInfo->noCase; /* True if uppercase==lowercase */ > - const char *zEscaped = 0; /* One past the last escaped input char */ > + /* Next pattern and input string chars */ > + UChar32 c, c2; > + /* "?" or "_" */ > + UChar32 matchOne = pInfo->matchOne; > + /* "*" or "%" */ > + UChar32 matchAll = pInfo->matchAll; > + /* True if uppercase==lowercase */ > + UChar32 noCase = pInfo->noCase; > + /* One past the last escaped input char */ > + const char *zEscaped = 0; > const char * pattern_end = pattern + strlen(pattern); > const char * string_end = string + strlen(string); > UErrorCode status = U_ZERO_ERROR; > > - while (pattern < pattern_end){ > + while (pattern < pattern_end) { > c = Utf8Read(pattern, pattern_end); > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > if (c == matchAll) { /* Match "*" */ > - /* Skip over multiple "*" characters in the pattern. If there > - * are also "?" characters, skip those as well, but consume a > - * single character of the input string for each "?" skipped > + /* Skip over multiple "*" characters in > + * the pattern. If there are also "?" > + * characters, skip those as well, but > + * consume a single character of the > + * input string for each "?" skipped. > */ > - while (pattern < pattern_end){ > - c = Utf8Read(pattern, pattern_end); > + while ((c = Utf8Read(pattern, pattern_end)) != > + SQL_END_OF_STRING) { > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > if (c != matchAll && c != matchOne) > break; > - if (c == matchOne > - && Utf8Read(string, string_end) == 0) { > - return SQLITE_NOWILDCARDMATCH; > - } > + if (c == matchOne && > + (c2 = Utf8Read(string, string_end)) == > + SQL_END_OF_STRING) > + return SQL_NOWILDCARDMATCH; > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_NOMATCH; > + } > + /* > + * "*" at the end of the pattern matches. > + */ > + if (c == SQL_END_OF_STRING) { > + return SQL_MATCH; > } > - /* "*" at the end of the pattern matches */ > - if (pattern == pattern_end) > - return SQLITE_MATCH; > if (c == matchOther) { > if (pInfo->matchSet == 0) { > c = Utf8Read(pattern, pattern_end); > - if (c == 0) > - return SQLITE_NOWILDCARDMATCH; > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > + if (c == SQL_END_OF_STRING) > + return SQL_NOWILDCARDMATCH; > } else { > - /* "[...]" immediately follows the "*". We have to do a slow > - * recursive search in this case, but it is an unusual case. > + /* "[...]" immediately > + * follows the "*". We > + * have to do a slow > + * recursive search in > + * this case, but it is > + * an unusual case. > */ > - assert(matchOther < 0x80); /* '[' is a single-byte character */ > + assert(matchOther < 0x80); > while (string < string_end) { > int bMatch = > - patternCompare(&pattern[-1], > - string, > - pInfo, > - matchOther); > - if (bMatch != SQLITE_NOMATCH) > + sql_utf8_pattern_compare( > + &pattern[-1], > + string, > + pInfo, > + matchOther); > + if (bMatch != SQL_NOMATCH) > return bMatch; > - Utf8Read(string, string_end); > + c = Utf8Read(string, string_end); > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_NOMATCH; > } > - return SQLITE_NOWILDCARDMATCH; > + return SQL_NOWILDCARDMATCH; > } > } > > - /* At this point variable c contains the first character of the > - * pattern string past the "*". Search in the input string for the > - * first matching character and recursively continue the match from > - * that point. > + /* At this point variable c contains the > + * first character of the pattern string > + * past the "*". Search in the input > + * string for the first matching > + * character and recursively continue the > + * match from that point. > * > - * For a case-insensitive search, set variable cx to be the same as > - * c but in the other case and search the input string for either > - * c or cx. > + * For a case-insensitive search, set > + * variable cx to be the same as c but in > + * the other case and search the input > + * string for either c or cx. > */ > > int bMatch; > @@ -756,14 +797,18 @@ patternCompare(const char * pattern, /* The glob pattern */ > c = u_tolower(c); > while (string < string_end){ > /** > - * This loop could have been implemented > - * without if converting c2 to lower case > - * (by holding c_upper and c_lower), however > - * it is implemented this way because lower > - * works better with German and Turkish > - * languages. > + * This loop could have been > + * implemented without if > + * converting c2 to lower case > + * by holding c_upper and > + * c_lower,however it is > + * implemented this way because > + * lower works better with German > + * and Turkish languages. > */ > c2 = Utf8Read(string, string_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_NOMATCH; > if (!noCase) { > if (c2 != c) > continue; > @@ -771,42 +816,55 @@ patternCompare(const char * pattern, /* The glob pattern */ > if (c2 != c && u_tolower(c2) != c) > continue; > } > - bMatch = > - patternCompare(pattern, string, > - pInfo, matchOther); > - if (bMatch != SQLITE_NOMATCH) > + bMatch = sql_utf8_pattern_compare(pattern, > + string, > + pInfo, > + matchOther); > + if (bMatch != SQL_NOMATCH) > return bMatch; > } > - return SQLITE_NOWILDCARDMATCH; > + return SQL_NOWILDCARDMATCH; > } > if (c == matchOther) { > if (pInfo->matchSet == 0) { > c = Utf8Read(pattern, pattern_end); > - if (c == 0) > - return SQLITE_NOMATCH; > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > + if (c == SQL_END_OF_STRING) > + return SQL_NOMATCH; > zEscaped = pattern; > } else { > UChar32 prior_c = 0; > int seen = 0; > int invert = 0; > c = Utf8Read(string, string_end); > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_NOMATCH; > if (string == string_end) > - return SQLITE_NOMATCH; > + return SQL_NOMATCH; > c2 = Utf8Read(pattern, pattern_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > if (c2 == '^') { > invert = 1; > c2 = Utf8Read(pattern, pattern_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > } > if (c2 == ']') { > if (c == ']') > seen = 1; > c2 = Utf8Read(pattern, pattern_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > } > - while (c2 && c2 != ']') { > + while (c2 != SQL_END_OF_STRING && c2 != ']') { > if (c2 == '-' && pattern[0] != ']' > && pattern < pattern_end > && prior_c > 0) { > c2 = Utf8Read(pattern, pattern_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > if (c >= prior_c && c <= c2) > seen = 1; > prior_c = 0; > @@ -817,33 +875,40 @@ patternCompare(const char * pattern, /* The glob pattern */ > prior_c = c2; > } > c2 = Utf8Read(pattern, pattern_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > } > - if (pattern == pattern_end || (seen ^ invert) == 0) { > - return SQLITE_NOMATCH; > + if (pattern == pattern_end || > + (seen ^ invert) == 0) { > + return SQL_NOMATCH; > } > continue; > } > } > c2 = Utf8Read(string, string_end); > + if (c2 == SQL_INVALID_UTF8_SYMBOL) > + return SQL_NOMATCH; > if (c == c2) > continue; > if (noCase){ > /** > - * Small optimisation. Reduce number of calls > - * to u_tolower function. > - * SQL standards suggest use to_upper for symbol > - * normalisation. However, using to_lower allows to > - * respect Turkish 'İ' in default locale. > + * Small optimisation. Reduce number of > + * calls to u_tolower function. SQL > + * standards suggest use to_upper for > + * symbol normalisation. However, using > + * to_lower allows to respect Turkish 'İ' > + * in default locale. > */ > if (u_tolower(c) == c2 || > c == u_tolower(c2)) > continue; > } > - if (c == matchOne && pattern != zEscaped && c2 != 0) > + if (c == matchOne && pattern != zEscaped && > + c2 != SQL_END_OF_STRING) > continue; > - return SQLITE_NOMATCH; > + return SQL_NOMATCH; > } > - return string == string_end ? SQLITE_MATCH : SQLITE_NOMATCH; > + return string == string_end ? SQL_MATCH : SQL_NOMATCH; > } ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-08-17 9:23 ` [tarantool-patches] " Alex Khatskevich @ 2018-08-17 11:17 ` Alexander Turenko 2018-08-17 11:42 ` Alex Khatskevich 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-08-17 11:17 UTC (permalink / raw) To: Alex Khatskevich; +Cc: N.Tatunov, tarantool-patches, N.Tatunov Hi! I have one note here. Please, cite only relavant parts of a message you reply, because some clients (say, mutt) don't wrap long cites automatically. WBR, Alexander Turenko. On Fri, Aug 17, 2018 at 12:23:16PM +0300, Alex Khatskevich wrote: > The code seems relatively normal, except for one thing below. > > > On 16.08.2018 20:00, N.Tatunov wrote: > > From: "N.Tatunov" <hollow653@gmail.com> > > > > +#define SQL_END_OF_STRING 0xffff > I have a look at icu code and It seems like 0xffff is an error, and it is > more similar to > invalid symbol that to "end of string". Check it, and fix the code, so that > it is treated as > an error. 0xffff is the result of 'end of a string' check as well as internal buffer overflow error. I have the relevant code pasted in the first review of the patch (July, 18). // source/common/ucnv.c::ucnv_getNextUChar 1860 s=*source; 1861 if(sourceLimit<s) { 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; 1863 return 0xffff; 1864 } We should not handle the buffer overflow case as an invalid symbol. Of course we should not handle it as the 'end of the string' situation. Ideally we should perform pointer myself and raise an error in case of 0xffff. I had thought that a buffer overflow error is unlikely to meet, but you are right: we should differentiate these situations. In one of the previous version of a patch we perform this check like so: #define Utf8Read(s, e) (((s) < (e)) ?\ ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) Don't sure why it was changed. Maybe it is try to correctly handle '\0' symbol (it is valid unicode character)? So I see two ways to proceed: 1. Lean on icu's check and ignore possibility of the buffer overflow. 2. Use our own check and possibly meet '\0' problems. 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise the error for other 0xffff. Alex, what do you suggests here? ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-08-17 11:17 ` Alexander Turenko @ 2018-08-17 11:42 ` Alex Khatskevich 2018-09-09 13:33 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-08-17 11:42 UTC (permalink / raw) To: Alexander Turenko; +Cc: N.Tatunov, tarantool-patches, N.Tatunov On 17.08.2018 14:17, Alexander Turenko wrote: > 0xffff is the result of 'end of a string' check as well as internal buffer > overflow error. I have the relevant code pasted in the first review of > the patch (July, 18). > > // source/common/ucnv.c::ucnv_getNextUChar > 1860 s=*source; > 1861 if(sourceLimit<s) { > 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; > 1863 return 0xffff; > 1864 } > > We should not handle the buffer overflow case as an invalid symbol. Of > course we should not handle it as the 'end of the string' situation. > Ideally we should perform pointer myself and raise an error in case of > 0xffff. I had thought that a buffer overflow error is unlikely to meet, > but you are right: we should differentiate these situations. > > In one of the previous version of a patch we perform this check like so: > > #define Utf8Read(s, e) (((s) < (e)) ?\ > ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) > > Don't sure why it was changed. Maybe it is try to correctly handle '\0' > symbol (it is valid unicode character)? The define you have pasted can return 0xffff. The reasons to change it back are described in the previous patchset. In short: 1. It is equivalent to a. check s < e in a while loop b. read next character inside of where loop body. 2. In some usages of the code this check (s<e) was redundant (it was performed a couple lines above) 3. There is no reason to rewrite the old version of this function. (So, we decided to use old version of the function) > So I see two ways to proceed: > > 1. Lean on icu's check and ignore possibility of the buffer overflow. > 2. Use our own check and possibly meet '\0' problems. > 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise > the error for other 0xffff. > > Alex, what do you suggests here? As I understand, by now the 0xffff is used ONLY to handle the case of unexpectedly ended symbol. E.g. some symbol consists of 2 characters, but the length of the input buffer is 1. In my opinion this is the same as an invalid symbol. I guess that internal buffer overflow cannot occur in the `ucnv_getNextChar` function. I suppose that it is Nikitas duty to investigate this problem and explain it to us all. I just have noticed a strange usage. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-08-17 11:42 ` Alex Khatskevich @ 2018-09-09 13:33 ` Nikita Tatunov 2018-09-10 22:20 ` Alex Khatskevich 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-09-09 13:33 UTC (permalink / raw) To: tarantool-patches; +Cc: Alexander Turenko, N.Tatunov [-- Attachment #1: Type: text/plain, Size: 3832 bytes --] > On 17 Aug 2018, at 14:42, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > > On 17.08.2018 14:17, Alexander Turenko wrote: >> 0xffff is the result of 'end of a string' check as well as internal buffer >> overflow error. I have the relevant code pasted in the first review of >> the patch (July, 18). >> >> // source/common/ucnv.c::ucnv_getNextUChar >> 1860 s=*source; >> 1861 if(sourceLimit<s) { >> 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; >> 1863 return 0xffff; >> 1864 } >> >> We should not handle the buffer overflow case as an invalid symbol. Of >> course we should not handle it as the 'end of the string' situation. >> Ideally we should perform pointer myself and raise an error in case of >> 0xffff. I had thought that a buffer overflow error is unlikely to meet, >> but you are right: we should differentiate these situations. >> >> In one of the previous version of a patch we perform this check like so: >> >> #define Utf8Read(s, e) (((s) < (e)) ?\ >> ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) >> >> Don't sure why it was changed. Maybe it is try to correctly handle '\0' >> symbol (it is valid unicode character)? > The define you have pasted can return 0xffff. > The reasons to change it back are described in the previous patchset. > In short: > 1. It is equivalent to > a. check s < e in a while loop > b. read next character inside of where loop body. > 2. In some usages of the code this check (s<e) was redundant (it was performed a couple lines above) > 3. There is no reason to rewrite the old version of this function. (So, we decided to use old version of the function) >> So I see two ways to proceed: >> >> 1. Lean on icu's check and ignore possibility of the buffer overflow. >> 2. Use our own check and possibly meet '\0' problems. >> 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise >> the error for other 0xffff. >> >> Alex, what do you suggests here? > As I understand, by now the 0xffff is used ONLY to handle the case of unexpectedly ended symbol. > E.g. some symbol consists of 2 characters, but the length of the input buffer is 1. > In my opinion this is the same as an invalid symbol. > > I guess that internal buffer overflow cannot occur in the `ucnv_getNextChar` function. > > I suppose that it is Nikitas duty to investigate this problem and explain it to us all. I just have noticed a strange usage. Hello, please consider my comments. There are some cases when 0xffff can occur, but: 1) Cannot trigger in our context. 2) Cannot trigger in our context. 3) Only triggers if end < start. (Cannot happen in sql_utf8_pattern_compare, i guess) 4) Only triggers if string length > (size_t) 0x7ffffffff (can it actually happen? I don’t think so). 5) Occurs when trying to access to not unindexed data. 6) Cannot occur in our context. 7) Cannot occur in our context. 0xfffd only means that symbol cannot be treated as a unicode symbol. Shall I change it somehow then? > On 17 Aug 2018, at 12:23, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > I have a look at icu code and It seems like 0xffff is an error, and it is more similar to > invalid symbol that to "end of string". Check it, and fix the code, so that it is treated as > an error. > For example it is not handled in the main pattern loop: > > + while (pattern < pattern_end) { > c = Utf8Read(pattern, pattern_end); > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > > It seems like the 0xffff should be checked there too. No, it should not. This way it will only cause a bug when, for example ’select “” like “”’ will be treated as an error. -- WBR, Nikita Tatunov. n.tatunov@tarantool.org [-- Attachment #2: Type: text/html, Size: 20896 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-09-09 13:33 ` Nikita Tatunov @ 2018-09-10 22:20 ` Alex Khatskevich 2018-09-11 6:06 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-09-10 22:20 UTC (permalink / raw) To: tarantool-patches [-- Attachment #1: Type: text/plain, Size: 4139 bytes --] > >> On 17 Aug 2018, at 14:42, Alex Khatskevich >> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >> >> >> On 17.08.2018 14:17, Alexander Turenko wrote: >>> 0xffff is the result of 'end of a string' check as well as internal >>> buffer >>> overflow error. I have the relevant code pasted in the first review of >>> the patch (July, 18). >>> >>> // source/common/ucnv.c::ucnv_getNextUChar >>> 1860 s=*source; >>> 1861 if(sourceLimit<s) { >>> 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; >>> 1863 return 0xffff; >>> 1864 } >>> >>> We should not handle the buffer overflow case as an invalid symbol. Of >>> course we should not handle it as the 'end of the string' situation. >>> Ideally we should perform pointer myself and raise an error in case of >>> 0xffff. I had thought that a buffer overflow error is unlikely to meet, >>> but you are right: we should differentiate these situations. >>> >>> In one of the previous version of a patch we perform this check like so: >>> >>> #define Utf8Read(s, e) (((s) < (e)) ?\ >>> ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) >>> >>> Don't sure why it was changed. Maybe it is try to correctly handle '\0' >>> symbol (it is valid unicode character)? >> The define you have pasted can return 0xffff. >> The reasons to change it back are described in the previous patchset. >> In short: >> 1. It is equivalent to >> a. check s < e in a while loop >> b. read next character inside of where loop body. >> 2. In some usages of the code this check (s<e) was redundant (it was >> performed a couple lines above) >> 3. There is no reason to rewrite the old version of this function. >> (So, we decided to use old version of the function) >>> So I see two ways to proceed: >>> >>> 1. Lean on icu's check and ignore possibility of the buffer overflow. >>> 2. Use our own check and possibly meet '\0' problems. >>> 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise >>> the error for other 0xffff. >>> >>> Alex, what do you suggests here? >> As I understand, by now the 0xffff is used ONLY to handle the case of >> unexpectedly ended symbol. >> E.g. some symbol consists of 2 characters, but the length of the >> input buffer is 1. >> In my opinion this is the same as an invalid symbol. >> >> I guess that internal buffer overflow cannot occur in the >> `ucnv_getNextChar` function. >> >> I suppose that it is Nikitas duty to investigate this problem and >> explain it to us all. I just have noticed a strange usage. > > Hello, please consider my comments. > > There are some cases when 0xffff can occur, but: > 1) Cannot trigger in our context. > 2) Cannot trigger in our context. > 3) Only triggers if end < start. (Cannot happen in > sql_utf8_pattern_compare, i guess) > 4) Only triggers if string length > (size_t) 0x7ffffffff (can it > actually happen? I don’t think so). > 5) Occurs when trying to access to not unindexed data. > 6) Cannot occur in our context. > 7) Cannot occur in our context. I do not understand what are those numbers related to. Please, describe it. > > 0xfffd only means that symbol cannot be treated as a unicode symbol. > > Shall I change it somehow then? > > >> On 17 Aug 2018, at 12:23, Alex Khatskevich >> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >> >> I have a look at icu code and It seems like 0xffff is an error, and >> it is more similar to >> invalid symbol that to "end of string". Check it, and fix the code, >> so that it is treated as >> an error. >> For example it is not handled in the main pattern loop: >> >> +while (pattern < pattern_end) { >> c = Utf8Read(pattern, pattern_end); >> +if (c == SQL_INVALID_UTF8_SYMBOL) >> +return SQL_INVALID_PATTERN; >> >> It seems like the 0xffff should be checked there too. > > No, it should not. This way it will only cause a bug when, for example > ’select “” like “”’ > will be treated as an error. I do not understand. ’select “” like “”’ should not even trap inside of the while loop (because `pattern < pattern_end` is false). [-- Attachment #2: Type: text/html, Size: 25136 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-09-10 22:20 ` Alex Khatskevich @ 2018-09-11 6:06 ` Nikita Tatunov 2018-09-11 10:06 ` Alex Khatskevich 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-09-11 6:06 UTC (permalink / raw) To: tarantool-patches; +Cc: avkhatskevich, Alexander Turenko, korablev [-- Attachment #1: Type: text/plain, Size: 4676 bytes --] > On 11 Sep 2018, at 01:20, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > >> >> >>> On 17 Aug 2018, at 14:42, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>> >>> >>> On 17.08.2018 14:17, Alexander Turenko wrote: >>>> 0xffff is the result of 'end of a string' check as well as internal buffer >>>> overflow error. I have the relevant code pasted in the first review of >>>> the patch (July, 18). >>>> >>>> // source/common/ucnv.c::ucnv_getNextUChar >>>> 1860 s=*source; >>>> 1861 if(sourceLimit<s) { >>>> 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; >>>> 1863 return 0xffff; >>>> 1864 } >>>> >>>> We should not handle the buffer overflow case as an invalid symbol. Of >>>> course we should not handle it as the 'end of the string' situation. >>>> Ideally we should perform pointer myself and raise an error in case of >>>> 0xffff. I had thought that a buffer overflow error is unlikely to meet, >>>> but you are right: we should differentiate these situations. >>>> >>>> In one of the previous version of a patch we perform this check like so: >>>> >>>> #define Utf8Read(s, e) (((s) < (e)) ?\ >>>> ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) >>>> >>>> Don't sure why it was changed. Maybe it is try to correctly handle '\0' >>>> symbol (it is valid unicode character)? >>> The define you have pasted can return 0xffff. >>> The reasons to change it back are described in the previous patchset. >>> In short: >>> 1. It is equivalent to >>> a. check s < e in a while loop >>> b. read next character inside of where loop body. >>> 2. In some usages of the code this check (s<e) was redundant (it was performed a couple lines above) >>> 3. There is no reason to rewrite the old version of this function. (So, we decided to use old version of the function) >>>> So I see two ways to proceed: >>>> >>>> 1. Lean on icu's check and ignore possibility of the buffer overflow. >>>> 2. Use our own check and possibly meet '\0' problems. >>>> 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise >>>> the error for other 0xffff. >>>> >>>> Alex, what do you suggests here? >>> As I understand, by now the 0xffff is used ONLY to handle the case of unexpectedly ended symbol. >>> E.g. some symbol consists of 2 characters, but the length of the input buffer is 1. >>> In my opinion this is the same as an invalid symbol. >>> >>> I guess that internal buffer overflow cannot occur in the `ucnv_getNextChar` function. >>> >>> I suppose that it is Nikitas duty to investigate this problem and explain it to us all. I just have noticed a strange usage. >> >> >> Hello, please consider my comments. >> >> There are some cases when 0xffff can occur, but: >> 1) Cannot trigger in our context. >> 2) Cannot trigger in our context. >> 3) Only triggers if end < start. (Cannot happen in sql_utf8_pattern_compare, i guess) >> 4) Only triggers if string length > (size_t) 0x7ffffffff (can it actually happen? I don’t think so). >> 5) Occurs when trying to access to not unindexed data. >> 6) Cannot occur in our context. >> 7) Cannot occur in our context. > I do not understand what are those numbers related to. Please, describe it. They are related to possible cases returning 0xffff from icu source code (function ucnv_getNextUChar()). >> >> 0xfffd only means that symbol cannot be treated as a unicode symbol. >> >> Shall I change it somehow then? >> >> >>> On 17 Aug 2018, at 12:23, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>> >>> I have a look at icu code and It seems like 0xffff is an error, and it is more similar to >>> invalid symbol that to "end of string". Check it, and fix the code, so that it is treated as >>> an error. >>> For example it is not handled in the main pattern loop: >>> >>> + while (pattern < pattern_end) { >>> c = Utf8Read(pattern, pattern_end); >>> + if (c == SQL_INVALID_UTF8_SYMBOL) >>> + return SQL_INVALID_PATTERN; >>> >>> It seems like the 0xffff should be checked there too. >> >> No, it should not. This way it will only cause a bug when, for example ’select “” like “”’ >> will be treated as an error. > I do not understand. > ’select “” like “”’ should not even trap inside of the while loop > (because `pattern < pattern_end` is false). Ah, you’re right, sorry, then it just doesn’t matter, since pattern < pattern_end is equal to 0xffff according to the comment above. -- WBR, Nikita Tatunov. n.tatunov@tarantool.org [-- Attachment #2: Type: text/html, Size: 26599 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-09-11 6:06 ` Nikita Tatunov @ 2018-09-11 10:06 ` Alex Khatskevich 2018-09-11 13:31 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-09-11 10:06 UTC (permalink / raw) To: Nikita Tatunov, tarantool-patches; +Cc: Alexander Turenko, korablev [-- Attachment #1: Type: text/plain, Size: 5037 bytes --] On 11.09.2018 09:06, Nikita Tatunov wrote: > > >> On 11 Sep 2018, at 01:20, Alex Khatskevich >> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >> >>> >>> >>>> On 17 Aug 2018, at 14:42, Alex Khatskevich >>>> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> >>>> wrote: >>>> >>>> >>>> On 17.08.2018 14:17, Alexander Turenko wrote: >>>>> 0xffff is the result of 'end of a string' check as well as >>>>> internal buffer >>>>> overflow error. I have the relevant code pasted in the first review of >>>>> the patch (July, 18). >>>>> >>>>> // source/common/ucnv.c::ucnv_getNextUChar >>>>> 1860 s=*source; >>>>> 1861 if(sourceLimit<s) { >>>>> 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; >>>>> 1863 return 0xffff; >>>>> 1864 } >>>>> >>>>> We should not handle the buffer overflow case as an invalid symbol. Of >>>>> course we should not handle it as the 'end of the string' situation. >>>>> Ideally we should perform pointer myself and raise an error in case of >>>>> 0xffff. I had thought that a buffer overflow error is unlikely to >>>>> meet, >>>>> but you are right: we should differentiate these situations. >>>>> >>>>> In one of the previous version of a patch we perform this check >>>>> like so: >>>>> >>>>> #define Utf8Read(s, e) (((s) < (e)) ?\ >>>>> ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) >>>>> >>>>> Don't sure why it was changed. Maybe it is try to correctly handle >>>>> '\0' >>>>> symbol (it is valid unicode character)? >>>> The define you have pasted can return 0xffff. >>>> The reasons to change it back are described in the previous patchset. >>>> In short: >>>> 1. It is equivalent to >>>> a. check s < e in a while loop >>>> b. read next character inside of where loop body. >>>> 2. In some usages of the code this check (s<e) was redundant (it >>>> was performed a couple lines above) >>>> 3. There is no reason to rewrite the old version of this function. >>>> (So, we decided to use old version of the function) >>>>> So I see two ways to proceed: >>>>> >>>>> 1. Lean on icu's check and ignore possibility of the buffer overflow. >>>>> 2. Use our own check and possibly meet '\0' problems. >>>>> 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, >>>>> raise >>>>> the error for other 0xffff. >>>>> >>>>> Alex, what do you suggests here? >>>> As I understand, by now the 0xffff is used ONLY to handle the case >>>> of unexpectedly ended symbol. >>>> E.g. some symbol consists of 2 characters, but the length of the >>>> input buffer is 1. >>>> In my opinion this is the same as an invalid symbol. >>>> >>>> I guess that internal buffer overflow cannot occur in the >>>> `ucnv_getNextChar` function. >>>> >>>> I suppose that it is Nikitas duty to investigate this problem and >>>> explain it to us all. I just have noticed a strange usage. >>> >>> Hello, please consider my comments. >>> >>> There are some cases when 0xffff can occur, but: >>> 1) Cannot trigger in our context. >>> 2) Cannot trigger in our context. >>> 3) Only triggers if end < start. (Cannot happen in >>> sql_utf8_pattern_compare, i guess) >>> 4) Only triggers if string length > (size_t) 0x7ffffffff (can it >>> actually happen? I don’t think so). >>> 5) Occurs when trying to access to not unindexed data. >>> 6) Cannot occur in our context. >>> 7) Cannot occur in our context. >> I do not understand what are those numbers related to. Please, >> describe it. > > They are related to possible cases returning 0xffff from icu source > code (function ucnv_getNextUChar()). Can you just copy it here, so that anyone interested in that conversation can analyze it without looking for source files? > >>> >>> 0xfffd only means that symbol cannot be treated as a unicode symbol. >>> >>> Shall I change it somehow then? >>> >>> >>>> On 17 Aug 2018, at 12:23, Alex Khatskevich >>>> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> >>>> wrote: >>>> >>>> I have a look at icu code and It seems like 0xffff is an error, and >>>> it is more similar to >>>> invalid symbol that to "end of string". Check it, and fix the code, >>>> so that it is treated as >>>> an error. >>>> For example it is not handled in the main pattern loop: >>>> >>>> +while (pattern < pattern_end) { >>>> c = Utf8Read(pattern, pattern_end); >>>> +if (c == SQL_INVALID_UTF8_SYMBOL) >>>> +return SQL_INVALID_PATTERN; >>>> >>>> It seems like the 0xffff should be checked there too. >>> >>> No, it should not. This way it will only cause a bug when, for >>> example ’select “” like “”’ >>> will be treated as an error. >> I do not understand. >> ’select “” like “”’ should not even trap inside of the while loop >> (because`pattern < pattern_end` is false). > > Ah, you’re right, sorry, then it just doesn’t matter, since pattern < > pattern_end is equal > to 0xffff according to the comment above. > > -- > WBR, Nikita Tatunov. > n.tatunov@tarantool.org <mailto:n.tatunov@tarantool.org> > [-- Attachment #2: Type: text/html, Size: 38461 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-09-11 10:06 ` Alex Khatskevich @ 2018-09-11 13:31 ` Nikita Tatunov 2018-10-18 18:02 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-09-11 13:31 UTC (permalink / raw) To: Alex Khatskevich; +Cc: tarantool-patches, Alexander Turenko, korablev [-- Attachment #1: Type: text/plain, Size: 10935 bytes --] > On 11 Sep 2018, at 13:06, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > > > On 11.09.2018 09:06, Nikita Tatunov wrote: >> >> >>> On 11 Sep 2018, at 01:20, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>> >>>> >>>> >>>>> On 17 Aug 2018, at 14:42, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>>>> >>>>> >>>>> On 17.08.2018 14:17, Alexander Turenko wrote: >>>>>> 0xffff is the result of 'end of a string' check as well as internal buffer >>>>>> overflow error. I have the relevant code pasted in the first review of >>>>>> the patch (July, 18). >>>>>> >>>>>> // source/common/ucnv.c::ucnv_getNextUChar >>>>>> 1860 s=*source; >>>>>> 1861 if(sourceLimit<s) { >>>>>> 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; >>>>>> 1863 return 0xffff; >>>>>> 1864 } >>>>>> >>>>>> We should not handle the buffer overflow case as an invalid symbol. Of >>>>>> course we should not handle it as the 'end of the string' situation. >>>>>> Ideally we should perform pointer myself and raise an error in case of >>>>>> 0xffff. I had thought that a buffer overflow error is unlikely to meet, >>>>>> but you are right: we should differentiate these situations. >>>>>> >>>>>> In one of the previous version of a patch we perform this check like so: >>>>>> >>>>>> #define Utf8Read(s, e) (((s) < (e)) ?\ >>>>>> ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) >>>>>> >>>>>> Don't sure why it was changed. Maybe it is try to correctly handle '\0' >>>>>> symbol (it is valid unicode character)? >>>>> The define you have pasted can return 0xffff. >>>>> The reasons to change it back are described in the previous patchset. >>>>> In short: >>>>> 1. It is equivalent to >>>>> a. check s < e in a while loop >>>>> b. read next character inside of where loop body. >>>>> 2. In some usages of the code this check (s<e) was redundant (it was performed a couple lines above) >>>>> 3. There is no reason to rewrite the old version of this function. (So, we decided to use old version of the function) >>>>>> So I see two ways to proceed: >>>>>> >>>>>> 1. Lean on icu's check and ignore possibility of the buffer overflow. >>>>>> 2. Use our own check and possibly meet '\0' problems. >>>>>> 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise >>>>>> the error for other 0xffff. >>>>>> >>>>>> Alex, what do you suggests here? >>>>> As I understand, by now the 0xffff is used ONLY to handle the case of unexpectedly ended symbol. >>>>> E.g. some symbol consists of 2 characters, but the length of the input buffer is 1. >>>>> In my opinion this is the same as an invalid symbol. >>>>> >>>>> I guess that internal buffer overflow cannot occur in the `ucnv_getNextChar` function. >>>>> >>>>> I suppose that it is Nikitas duty to investigate this problem and explain it to us all. I just have noticed a strange usage. >>>> >>>> >>>> Hello, please consider my comments. >>>> >>>> There are some cases when 0xffff can occur, but: >>>> 1) Cannot trigger in our context. >>>> 2) Cannot trigger in our context. >>>> 3) Only triggers if end < start. (Cannot happen in sql_utf8_pattern_compare, i guess) >>>> 4) Only triggers if string length > (size_t) 0x7ffffffff (can it actually happen? I don’t think so). >>>> 5) Occurs when trying to access to not unindexed data. >>>> 6) Cannot occur in our context. >>>> 7) Cannot occur in our context. >>> I do not understand what are those numbers related to. Please, describe it. >> >> They are related to possible cases returning 0xffff from icu source code (function ucnv_getNextUChar()). > Can you just copy it here, so that anyone interested in that conversation can > analyze it without looking for source files? Ok then: U_CAPI UChar32 U_EXPORT2 ucnv_getNextUChar(UConverter *cnv, const char **source, const char *sourceLimit, UErrorCode *err) { UConverterToUnicodeArgs args; UChar buffer[U16_MAX_LENGTH]; const char *s; UChar32 c; int32_t i, length; /* check parameters */ if(err==NULL || U_FAILURE(*err)) { return 0xffff; } if(cnv==NULL || source==NULL) { *err=U_ILLEGAL_ARGUMENT_ERROR; return 0xffff; } s=*source; if(sourceLimit<s) { *err=U_ILLEGAL_ARGUMENT_ERROR; return 0xffff; } /* * Make sure that the buffer sizes do not exceed the number range for * int32_t because some functions use the size (in units or bytes) * rather than comparing pointers, and because offsets are int32_t values. * * size_t is guaranteed to be unsigned and large enough for the job. * * Return with an error instead of adjusting the limits because we would * not be able to maintain the semantics that either the source must be * consumed or the target filled (unless an error occurs). * An adjustment would be sourceLimit=t+0x7fffffff; for example. */ if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) { *err=U_ILLEGAL_ARGUMENT_ERROR; return 0xffff; } c=U_SENTINEL; /* flush the target overflow buffer */ if(cnv->UCharErrorBufferLength>0) { UChar *overflow; overflow=cnv->UCharErrorBuffer; i=0; length=cnv->UCharErrorBufferLength; U16_NEXT(overflow, i, length, c); /* move the remaining overflow contents up to the beginning */ if((cnv->UCharErrorBufferLength=(int8_t)(length-i))>0) { uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+i, cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR); } if(!U16_IS_LEAD(c) || i<length) { return c; } /* * Continue if the overflow buffer contained only a lead surrogate, * in case the converter outputs single surrogates from complete * input sequences. */ } /* * flush==TRUE is implied for ucnv_getNextUChar() * * do not simply return even if s==sourceLimit because the converter may * not have seen flush==TRUE before */ /* prepare the converter arguments */ args.converter=cnv; args.flush=TRUE; args.offsets=NULL; args.source=s; args.sourceLimit=sourceLimit; args.target=buffer; args.targetLimit=buffer+1; args.size=sizeof(args); if(c<0) { /* * call the native getNextUChar() implementation if we are * at a character boundary (toULength==0) * * unlike with _toUnicode(), getNextUChar() implementations must set * U_TRUNCATED_CHAR_FOUND for truncated input, * in addition to setting toULength/toUBytes[] */ if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) { c=cnv->sharedData->impl->getNextUChar(&args, err); *source=s=args.source; if(*err==U_INDEX_OUTOFBOUNDS_ERROR) { /* reset the converter without calling the callback function */ _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE); return 0xffff; /* no output */ } else if(U_SUCCESS(*err) && c>=0) { return c; /* * else fall through to use _toUnicode() because * UCNV_GET_NEXT_UCHAR_USE_TO_U: the native function did not want to handle it after all * U_FAILURE: call _toUnicode() for callback handling (do not output c) */ } } /* convert to one UChar in buffer[0], or handle getNextUChar() errors */ _toUnicodeWithCallback(&args, err); if(*err==U_BUFFER_OVERFLOW_ERROR) { *err=U_ZERO_ERROR; } i=0; length=(int32_t)(args.target-buffer); } else { /* write the lead surrogate from the overflow buffer */ buffer[0]=(UChar)c; args.target=buffer+1; i=0; length=1; } /* buffer contents starts at i and ends before length */ if(U_FAILURE(*err)) { c=0xffff; /* no output */ } else if(length==0) { /* no input or only state changes */ *err=U_INDEX_OUTOFBOUNDS_ERROR; /* no need to reset explicitly because _toUnicodeWithCallback() did it */ c=0xffff; /* no output */ } else { c=buffer[0]; i=1; if(!U16_IS_LEAD(c)) { /* consume c=buffer[0], done */ } else { /* got a lead surrogate, see if a trail surrogate follows */ UChar c2; if(cnv->UCharErrorBufferLength>0) { /* got overflow output from the conversion */ if(U16_IS_TRAIL(c2=cnv->UCharErrorBuffer[0])) { /* got a trail surrogate, too */ c=U16_GET_SUPPLEMENTARY(c, c2); /* move the remaining overflow contents up to the beginning */ if((--cnv->UCharErrorBufferLength)>0) { uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+1, cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR); } } else { /* c is an unpaired lead surrogate, just return it */ } } else if(args.source<sourceLimit) { /* convert once more, to buffer[1] */ args.targetLimit=buffer+2; _toUnicodeWithCallback(&args, err); if(*err==U_BUFFER_OVERFLOW_ERROR) { *err=U_ZERO_ERROR; } length=(int32_t)(args.target-buffer); if(U_SUCCESS(*err) && length==2 && U16_IS_TRAIL(c2=buffer[1])) { /* got a trail surrogate, too */ c=U16_GET_SUPPLEMENTARY(c, c2); i=2; } } } } /* * move leftover output from buffer[i..length[ * into the beginning of the overflow buffer */ if(i<length) { /* move further overflow back */ int32_t delta=length-i; if((length=cnv->UCharErrorBufferLength)>0) { uprv_memmove(cnv->UCharErrorBuffer+delta, cnv->UCharErrorBuffer, length*U_SIZEOF_UCHAR); } cnv->UCharErrorBufferLength=(int8_t)(length+delta); cnv->UCharErrorBuffer[0]=buffer[i++]; if(delta>1) { cnv->UCharErrorBuffer[1]=buffer[i]; } } *source=args.source; return c; } -- WBR, Nikita Tatunov. n.tatunov@tarantool.org [-- Attachment #2: Type: text/html, Size: 43163 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-09-11 13:31 ` Nikita Tatunov @ 2018-10-18 18:02 ` Nikita Tatunov 2018-10-21 3:51 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-10-18 18:02 UTC (permalink / raw) To: tarantool-patches; +Cc: Alexander Turenko, korablev [-- Attachment #1: Type: text/plain, Size: 12725 bytes --] > On 11 Sep 2018, at 16:31, Nikita Tatunov <n.tatunov@tarantool.org> wrote: > > > >> On 11 Sep 2018, at 13:06, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >> >> >> >> >> On 11.09.2018 09:06, Nikita Tatunov wrote: >>> >>> >>>> On 11 Sep 2018, at 01:20, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>>> >>>>> >>>>> >>>>>> On 17 Aug 2018, at 14:42, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>>>>> >>>>>> >>>>>> On 17.08.2018 14:17, Alexander Turenko wrote: >>>>>>> 0xffff is the result of 'end of a string' check as well as internal buffer >>>>>>> overflow error. I have the relevant code pasted in the first review of >>>>>>> the patch (July, 18). >>>>>>> >>>>>>> // source/common/ucnv.c::ucnv_getNextUChar >>>>>>> 1860 s=*source; >>>>>>> 1861 if(sourceLimit<s) { >>>>>>> 1862 *err=U_ILLEGAL_ARGUMENT_ERROR; >>>>>>> 1863 return 0xffff; >>>>>>> 1864 } >>>>>>> >>>>>>> We should not handle the buffer overflow case as an invalid symbol. Of >>>>>>> course we should not handle it as the 'end of the string' situation. >>>>>>> Ideally we should perform pointer myself and raise an error in case of >>>>>>> 0xffff. I had thought that a buffer overflow error is unlikely to meet, >>>>>>> but you are right: we should differentiate these situations. >>>>>>> >>>>>>> In one of the previous version of a patch we perform this check like so: >>>>>>> >>>>>>> #define Utf8Read(s, e) (((s) < (e)) ?\ >>>>>>> ucnv_getNextUChar(pUtf8conv, &s, e, &status) : 0) >>>>>>> >>>>>>> Don't sure why it was changed. Maybe it is try to correctly handle '\0' >>>>>>> symbol (it is valid unicode character)? >>>>>> The define you have pasted can return 0xffff. >>>>>> The reasons to change it back are described in the previous patchset. >>>>>> In short: >>>>>> 1. It is equivalent to >>>>>> a. check s < e in a while loop >>>>>> b. read next character inside of where loop body. >>>>>> 2. In some usages of the code this check (s<e) was redundant (it was performed a couple lines above) >>>>>> 3. There is no reason to rewrite the old version of this function. (So, we decided to use old version of the function) >>>>>>> So I see two ways to proceed: >>>>>>> >>>>>>> 1. Lean on icu's check and ignore possibility of the buffer overflow. >>>>>>> 2. Use our own check and possibly meet '\0' problems. >>>>>>> 3. Check for U_ILLEGAL_ARGUMENT_ERROR to treat as end of a string, raise >>>>>>> the error for other 0xffff. >>>>>>> >>>>>>> Alex, what do you suggests here? >>>>>> As I understand, by now the 0xffff is used ONLY to handle the case of unexpectedly ended symbol. >>>>>> E.g. some symbol consists of 2 characters, but the length of the input buffer is 1. >>>>>> In my opinion this is the same as an invalid symbol. >>>>>> >>>>>> I guess that internal buffer overflow cannot occur in the `ucnv_getNextChar` function. >>>>>> >>>>>> I suppose that it is Nikitas duty to investigate this problem and explain it to us all. I just have noticed a strange usage. >>>>> >>>>> >>>>> Hello, please consider my comments. >>>>> >>>>> There are some cases when 0xffff can occur, but: >>>>> 1) Cannot trigger in our context. >>>>> 2) Cannot trigger in our context. >>>>> 3) Only triggers if end < start. (Cannot happen in sql_utf8_pattern_compare, i guess) >>>>> 4) Only triggers if string length > (size_t) 0x7ffffffff (can it actually happen? I don’t think so). >>>>> 5) Occurs when trying to access to not unindexed data. >>>>> 6) Cannot occur in our context. >>>>> 7) Cannot occur in our context. >>>> I do not understand what are those numbers related to. Please, describe it. >>> >>> They are related to possible cases returning 0xffff from icu source code (function ucnv_getNextUChar()). >> Can you just copy it here, so that anyone interested in that conversation can >> analyze it without looking for source files? > Hello Alexander! Could you please consider some following explanations? I think we can treat 0xffff as a string end in sql_utf8_pattern_compare. Though we can use `status` for differentiating different errors from `ucnv_getNextUChar(pUtf8conv, &s, e, &status)`. I would like to know your opinion. > Ok then: > > U_CAPI UChar32 U_EXPORT2 > ucnv_getNextUChar(UConverter *cnv, > const char **source, const char *sourceLimit, > UErrorCode *err) { > UConverterToUnicodeArgs args; > UChar buffer[U16_MAX_LENGTH]; > const char *s; > UChar32 c; > int32_t i, length; > > /* check parameters */ > if(err==NULL || U_FAILURE(*err)) { > return 0xffff; > } > 1. This one cannot trigger in sql_utf8_pattern_compare(): 1) err == &status 2) *err == U_ZERO_ERROR > if(cnv==NULL || source==NULL) { > *err=U_ILLEGAL_ARGUMENT_ERROR; > return 0xffff; > } > 2. This one cannot trigger in sql_utf8_pattern_compare(): 1) cnv != NULL 2) source != NULL > s=*source; > if(sourceLimit<s) { > *err=U_ILLEGAL_ARGUMENT_ERROR; > return 0xffff; 3. This one cannot trigger in sql_utf8_pattern_compare(): 1) ucnv_getNextUChar is only called when !(sourceLimit<s). > } > > /* > * Make sure that the buffer sizes do not exceed the number range for > * int32_t because some functions use the size (in units or bytes) > * rather than comparing pointers, and because offsets are int32_t values. > * > * size_t is guaranteed to be unsigned and large enough for the job. > * > * Return with an error instead of adjusting the limits because we would > * not be able to maintain the semantics that either the source must be > * consumed or the target filled (unless an error occurs). > * An adjustment would be sourceLimit=t+0x7fffffff; for example. > */ > if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) { > *err=U_ILLEGAL_ARGUMENT_ERROR; > return 0xffff; 4. I’m not sure if string data can be this long in our context. (string length > (size_t) 0x7ffffffff) > } > > c=U_SENTINEL; > > /* flush the target overflow buffer */ > if(cnv->UCharErrorBufferLength>0) { > UChar *overflow; > > overflow=cnv->UCharErrorBuffer; > i=0; > length=cnv->UCharErrorBufferLength; > U16_NEXT(overflow, i, length, c); > > /* move the remaining overflow contents up to the beginning */ > if((cnv->UCharErrorBufferLength=(int8_t)(length-i))>0) { > uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+i, > cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR); > } > > if(!U16_IS_LEAD(c) || i<length) { > return c; > } > /* > * Continue if the overflow buffer contained only a lead surrogate, > * in case the converter outputs single surrogates from complete > * input sequences. > */ > } > > /* > * flush==TRUE is implied for ucnv_getNextUChar() > * > * do not simply return even if s==sourceLimit because the converter may > * not have seen flush==TRUE before > */ > > /* prepare the converter arguments */ > args.converter=cnv; > args.flush=TRUE; > args.offsets=NULL; > args.source=s; > args.sourceLimit=sourceLimit; > args.target=buffer; > args.targetLimit=buffer+1; > args.size=sizeof(args); > c == U_SENTINEL == -1 > if(c<0) { > /* > * call the native getNextUChar() implementation if we are > * at a character boundary (toULength==0) > * > * unlike with _toUnicode(), getNextUChar() implementations must set > * U_TRUNCATED_CHAR_FOUND for truncated input, > * in addition to setting toULength/toUBytes[] > */ > if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) { > c=cnv->sharedData->impl->getNextUChar(&args, err); > *source=s=args.source; > if(*err==U_INDEX_OUTOFBOUNDS_ERROR) { > /* reset the converter without calling the callback function */ > _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE); > return 0xffff; /* no output */ 5. Occurs when trying to access unindexed data. > } else if(U_SUCCESS(*err) && c>=0) { > return c; 6. Returns symbol (can also be 0xfffd, as it is not treated as an actual error). So if I’m not mistaken we will get results in our function either from ‘return’ number 5 or number 6 and the following code will not be executed. > /* > * else fall through to use _toUnicode() because > * UCNV_GET_NEXT_UCHAR_USE_TO_U: the native function did not want to handle it after all > * U_FAILURE: call _toUnicode() for callback handling (do not output c) > */ > } > } > > /* convert to one UChar in buffer[0], or handle getNextUChar() errors */ > _toUnicodeWithCallback(&args, err); > > if(*err==U_BUFFER_OVERFLOW_ERROR) { > *err=U_ZERO_ERROR; > } > > i=0; > length=(int32_t)(args.target-buffer); > } else { > /* write the lead surrogate from the overflow buffer */ > buffer[0]=(UChar)c; > args.target=buffer+1; > i=0; > length=1; > } > > /* buffer contents starts at i and ends before length */ > > if(U_FAILURE(*err)) { > c=0xffff; /* no output */ > } else if(length==0) { > /* no input or only state changes */ > *err=U_INDEX_OUTOFBOUNDS_ERROR; > /* no need to reset explicitly because _toUnicodeWithCallback() did it */ > c=0xffff; /* no output */ > } else { > c=buffer[0]; > i=1; > if(!U16_IS_LEAD(c)) { > /* consume c=buffer[0], done */ > } else { > /* got a lead surrogate, see if a trail surrogate follows */ > UChar c2; > > if(cnv->UCharErrorBufferLength>0) { > /* got overflow output from the conversion */ > if(U16_IS_TRAIL(c2=cnv->UCharErrorBuffer[0])) { > /* got a trail surrogate, too */ > c=U16_GET_SUPPLEMENTARY(c, c2); > > /* move the remaining overflow contents up to the beginning */ > if((--cnv->UCharErrorBufferLength)>0) { > uprv_memmove(cnv->UCharErrorBuffer, cnv->UCharErrorBuffer+1, > cnv->UCharErrorBufferLength*U_SIZEOF_UCHAR); > } > } else { > /* c is an unpaired lead surrogate, just return it */ > } > } else if(args.source<sourceLimit) { > /* convert once more, to buffer[1] */ > args.targetLimit=buffer+2; > _toUnicodeWithCallback(&args, err); > if(*err==U_BUFFER_OVERFLOW_ERROR) { > *err=U_ZERO_ERROR; > } > > length=(int32_t)(args.target-buffer); > if(U_SUCCESS(*err) && length==2 && U16_IS_TRAIL(c2=buffer[1])) { > /* got a trail surrogate, too */ > c=U16_GET_SUPPLEMENTARY(c, c2); > i=2; > } > } > } > } > > /* > * move leftover output from buffer[i..length[ > * into the beginning of the overflow buffer > */ > if(i<length) { > /* move further overflow back */ > int32_t delta=length-i; > if((length=cnv->UCharErrorBufferLength)>0) { > uprv_memmove(cnv->UCharErrorBuffer+delta, cnv->UCharErrorBuffer, > length*U_SIZEOF_UCHAR); > } > cnv->UCharErrorBufferLength=(int8_t)(length+delta); > > cnv->UCharErrorBuffer[0]=buffer[i++]; > if(delta>1) { > cnv->UCharErrorBuffer[1]=buffer[i]; > } > } > > *source=args.source; > return c; > } > > -- > WBR, Nikita Tatunov. > n.tatunov@tarantool.org <mailto:n.tatunov@tarantool.org> -- WBR, Nikita Tatunov. n.tatunov@tarantool.org [-- Attachment #2: Type: text/html, Size: 44583 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-10-18 18:02 ` Nikita Tatunov @ 2018-10-21 3:51 ` Alexander Turenko 2018-10-26 15:19 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-10-21 3:51 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, korablev Hi! Thanks for your work. The email is big, but don't afraid. I don't push you to rewrite the whole things again :) The patch is generally okay for me. Minor comments are added on this. Below I answered to your investigation about the libicu code. I found that you was not right in some assumptions, but propose to postpone refactoring out of this task. Then I found some possible corner cases. They are out of the scope of your task too, so I proposed to check and file issues. WBR, Alexander Turenko. 1, 2 - ok. > > s=*source; > > if(sourceLimit<s) { > > *err=U_ILLEGAL_ARGUMENT_ERROR; > > return 0xffff; > > 3. This one cannot trigger in sql_utf8_pattern_compare(): > 1) ucnv_getNextUChar is only called when !(sourceLimit<s). The discussion is about that the patch lean on the check, but here you say it cannot be triggered. Mistake? It seems it can be triggered and it the case we check in our code. So, ok. > > /* > > * Make sure that the buffer sizes do not exceed the number range for > > * int32_t because some functions use the size (in units or bytes) > > * rather than comparing pointers, and because offsets are int32_t values. > > * > > * size_t is guaranteed to be unsigned and large enough for the job. > > * > > * Return with an error instead of adjusting the limits because we would > > * not be able to maintain the semantics that either the source must be > > * consumed or the target filled (unless an error occurs). > > * An adjustment would be sourceLimit=t+0x7fffffff; for example. > > */ > > if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) { > > *err=U_ILLEGAL_ARGUMENT_ERROR; > > return 0xffff; > > 4. I’m not sure if string data can be this long in our context. > (string length > (size_t) 0x7ffffffff) Note: not 0x7ffffffff, but 0x7fffffff. This limit seems to be some weird internal thing related to using ucnv_getNextUChar inside libicu. I propose to lie libicu about the buffer size in case when it exceeds this limit. A UTF-8 encoded symbol is 4 bytes long at max, so we can pass the following instead of pattern_end: ((size_t) (pattern_end - pattern) > (size_t) 0x7fffffff ? pattern + 0x7fffffff : pattern_end I think this trick need to be covered with a unit test (because it is unclear how to create a string of size >1GiB from lua). Don't sure whether it is okay to allocate such amount of memory in the test, though... Please, don't do that within this patch, because it is about the another bug. File an issue with all needed information instead (you can provide a link to this message for example). > > if(c<0) { > > /* > > * call the native getNextUChar() implementation if we are > > * at a character boundary (toULength==0) > > * > > * unlike with _toUnicode(), getNextUChar() implementations must set > > * U_TRUNCATED_CHAR_FOUND for truncated input, > > * in addition to setting toULength/toUBytes[] > > */ > > if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) { > > c=cnv->sharedData->impl->getNextUChar(&args, err); > > *source=s=args.source; > > if(*err==U_INDEX_OUTOFBOUNDS_ERROR) { > > /* reset the converter without calling the callback function */ > > _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE); > > return 0xffff; /* no output */ > > 5. Occurs when trying to access unindexed data. Don't got your note here. It seems we call ucnv_getNextUChar_UTF8 from ucnv_u8.c here (because of the "utf8" type of the converter in pUtf8conv in func.c). U_INDEX_OUTOFBOUNDS_ERROR is returned when (s > sourceLimit), so it cannot occur here. In case of an other error (U_ILLEGAL_CHAR_FOUND or U_TRUNCATED_CHAR_FOUND) we fall through to _toUnicode() as the comment (below the code pasted above) suggests. Don't investigated further. > > } else if(U_SUCCESS(*err) && c>=0) { > > return c; > > 6. Returns symbol (can also be 0xfffd, as it is not treated as an actual error). > > So if I’m not mistaken we will get results in our function either from > ‘return’ number 5 or number 6 and the following code will not be executed. It is not so. We'll fall through in case of U_ILLEGAL_CHAR_FOUND or U_TRUNCATED_CHAR_FOUND error. To be honest I don't want to continue. It seems we should not lean on the fact that 0xffff always means end of the buffer, because it does not guaranteed by the API and is not clear from the code. AFAIR, the problem was to choose appropriate symbol to mark end of the buffer situation and distinguish it from a real error. It seems we have not one. So we should fairly (and always) check for the buffer before a call to ucnv_getNextUChar() or check the status it provide after the call. I would prefer to check it in our code. It seems that it is how the API works. I propose to use the same code pattern for all Utf8Read calls, e.g.: if (pattern < pattern_end) c = Utf8Read(pattern, pattern_end) else return SQL_...; if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_...; assert(U_SUCCESS(status)); Note: I have added the assert, because it is not clear what we can do with, say, U_INVALID_TABLE_FORMAT (improper libicu build / installation). Hope Nikita P. suggests right way, but now I think we should at least assert on that. It seems the code above can be even wrapped into a macro that will get two pointers (pattern and pattern_end / string and string_end) and two SQL_... error code to handle two possible errors. Yep, it is generally discouraged to return from a macro, but if it'll greatly improves the code readability, so it is appropriate, I think. Just define the macro right before the function and undefne it after to show a reader it is some pure internal thing. Note: If you will going that way, don't wrap Utf8Read macro into another macro. Use one with ucnv_getNextUChar call. It is refactoring of the code and our of the scope of your issue. Please, file an issue and link this message into it (but please ask Nikita P. opinion before). It is not good IMHO, but it seems now it worth to leave the code with assumption 0xffff is the end of buffer. This is kind of splitting the problem into parts and allow us to proceed with this patch re parsing bug. About the patch --------------- Please, post an issue and a branch links if you don't cite them. Sometimes it is hard to find them in a mail client history, esp. after some significant delay in a discussion. I'll consider the patch as bugfix + code style fix and will not push you to rewrite things in significant way. But I'll ask you to formalize found problems as issues. It rebased on 2.1 with conflicts. Need to be fixed. > -#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &s, e, &status) > +#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) 'status' is not a parameter of the macro, no need to enclose it into parentheses. I would prefer to have it as the parameter, but it seems that the code has many indent levels and will look even more ugly then now if we'll increase lines lengths. So, just remove the parentheses. > + * @param matchOther The escape char (LIKE) or '[' (GLOB). It is a symbol from ESCAPE parameter or a garbage from the likeFunc stack frame. It seems it worth to initialize 'u32 escape' in likeFunc to some symbol you cannot hit within 'c' variable in sql_utf8_pattern_compare. I think it is SQL_END_OF_STRING. Please, fix it here if it is related to your changes or file an issue if it was already here. > + /* Next pattern and input string chars */ > + UChar32 c, c2; > + /* "?" or "_" */ > + UChar32 matchOne = pInfo->matchOne; > + /* "*" or "%" */ > + UChar32 matchAll = pInfo->matchAll; > + /* True if uppercase==lowercase */ > + UChar32 noCase = pInfo->noCase; > + /* One past the last escaped input char */ Our code style suggests to have a period at end of a comment. > - assert(matchOther < 0x80); /* '[' is a single-byte character */ > + assert(matchOther < 0x80); The comment was helpful, IMHO. What if we'll use LIKE with ESCAPE with symbol, say, 'ё'? We have not such tests cases as I see. Again, it does not seems to be the problem you solve here. Please, write a test case and file an issue if this does not work correctly (it seems we can hit the assert above). Ouch, now I see, it will be removed in the 2nd commit of the patchset. So, please, comment it in the commit message of the 1st commit to don't confuse a reviewer. However the case with non-ASCII ESCAPE character is worth to be checked anyway. The code of the sql_utf8_pattern_compare function looks okay for me (except things I suggested to handle separately). > test/sql-tap/gh-3251-string-pattern-comparison.test.lua > > - test_name = prefix .. "8." .. tostring(i) > + local test_name = prefix .. "8." .. tostring(i) It is from the 2nd patch, but I think should be here. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-10-21 3:51 ` Alexander Turenko @ 2018-10-26 15:19 ` Nikita Tatunov 2018-10-29 13:01 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-10-26 15:19 UTC (permalink / raw) To: tarantool-patches; +Cc: korablev, Alexander Turenko Hello, Alexander! please consider this answer to the review! Issues: https://github.com/tarantool/tarantool/issues/3251 https://github.com/tarantool/tarantool/issues/3334 Branch: https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs > On Oct 21, 2018, at 06:51, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > Hi! > > Thanks for your work. > > The email is big, but don't afraid. I don't push you to rewrite the > whole things again :) > > The patch is generally okay for me. Minor comments are added on this. > > Below I answered to your investigation about the libicu code. I found > that you was not right in some assumptions, but propose to postpone > refactoring out of this task. > > Then I found some possible corner cases. They are out of the scope of > your task too, so I proposed to check and file issues. > > WBR, Alexander Turenko. > > 1, 2 - ok. > >>> s=*source; >>> if(sourceLimit<s) { >>> *err=U_ILLEGAL_ARGUMENT_ERROR; >>> return 0xffff; >> >> 3. This one cannot trigger in sql_utf8_pattern_compare(): >> 1) ucnv_getNextUChar is only called when !(sourceLimit<s). > > The discussion is about that the patch lean on the check, but here you > say it cannot be triggered. Mistake? It seems it can be triggered and it > the case we check in our code. So, ok. Yes I’ve mistaken. I forgot that I changed the macro, thank you. > >>> /* >>> * Make sure that the buffer sizes do not exceed the number range for >>> * int32_t because some functions use the size (in units or bytes) >>> * rather than comparing pointers, and because offsets are int32_t values. >>> * >>> * size_t is guaranteed to be unsigned and large enough for the job. >>> * >>> * Return with an error instead of adjusting the limits because we would >>> * not be able to maintain the semantics that either the source must be >>> * consumed or the target filled (unless an error occurs). >>> * An adjustment would be sourceLimit=t+0x7fffffff; for example. >>> */ >>> if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) { >>> *err=U_ILLEGAL_ARGUMENT_ERROR; >>> return 0xffff; >> >> 4. I’m not sure if string data can be this long in our context. >> (string length > (size_t) 0x7ffffffff) > > Note: not 0x7ffffffff, but 0x7fffffff. > > This limit seems to be some weird internal thing related to using > ucnv_getNextUChar inside libicu. > > I propose to lie libicu about the buffer size in case when it exceeds > this limit. A UTF-8 encoded symbol is 4 bytes long at max, so we can > pass the following instead of pattern_end: > > ((size_t) (pattern_end - pattern) > (size_t) 0x7fffffff ? pattern + 0x7fffffff : pattern_end > > I think this trick need to be covered with a unit test (because it is unclear > how to create a string of size >1GiB from lua). Don't sure whether it is > okay to allocate such amount of memory in the test, though... > > Please, don't do that within this patch, because it is about the another bug. > File an issue with all needed information instead (you can provide a link to > this message for example). Ok, thank you for advice. I think that’s a good idea, but there’s one thing I’m getting concerned about: it will cause a lot of operations especially in case we’re using LIKE for scanning a lot of data (). I guess even if it’s relevant it’s a discussion inside of an issue that’s going to be filed. > >>> if(c<0) { >>> /* >>> * call the native getNextUChar() implementation if we are >>> * at a character boundary (toULength==0) >>> * >>> * unlike with _toUnicode(), getNextUChar() implementations must set >>> * U_TRUNCATED_CHAR_FOUND for truncated input, >>> * in addition to setting toULength/toUBytes[] >>> */ >>> if(cnv->toULength==0 && cnv->sharedData->impl->getNextUChar!=NULL) { >>> c=cnv->sharedData->impl->getNextUChar(&args, err); >>> *source=s=args.source; >>> if(*err==U_INDEX_OUTOFBOUNDS_ERROR) { >>> /* reset the converter without calling the callback function */ >>> _reset(cnv, UCNV_RESET_TO_UNICODE, FALSE); >>> return 0xffff; /* no output */ >> >> 5. Occurs when trying to access unindexed data. > > Don't got your note here. It seems we call ucnv_getNextUChar_UTF8 from > ucnv_u8.c here (because of the "utf8" type of the converter in pUtf8conv > in func.c). U_INDEX_OUTOFBOUNDS_ERROR is returned when (s > > sourceLimit), so it cannot occur here. In case of an other error > (U_ILLEGAL_CHAR_FOUND or U_TRUNCATED_CHAR_FOUND) we fall through to > _toUnicode() as the comment (below the code pasted above) suggests. > Don't investigated further. > >>> } else if(U_SUCCESS(*err) && c>=0) { >>> return c; >> >> 6. Returns symbol (can also be 0xfffd, as it is not treated as an actual error). >> >> So if I’m not mistaken we will get results in our function either from >> ‘return’ number 5 or number 6 and the following code will not be executed. > > It is not so. We'll fall through in case of U_ILLEGAL_CHAR_FOUND or > U_TRUNCATED_CHAR_FOUND error. > > To be honest I don't want to continue. It seems we should not lean on > the fact that 0xffff always means end of the buffer, because it does not > guaranteed by the API and is not clear from the code. > > AFAIR, the problem was to choose appropriate symbol to mark end of the > buffer situation and distinguish it from a real error. It seems we have > not one. So we should fairly (and always) check for the buffer before a > call to ucnv_getNextUChar() or check the status it provide after the > call. I would prefer to check it in our code. It seems that it is how > the API works. > > I propose to use the same code pattern for all Utf8Read calls, e.g.: > > if (pattern < pattern_end) > c = Utf8Read(pattern, pattern_end) > else > return SQL_...; > if (c == SQL_INVALID_UTF8_SYMBOL) > return SQL_...; > assert(U_SUCCESS(status)); > > Note: I have added the assert, because it is not clear what we can do > with, say, U_INVALID_TABLE_FORMAT (improper libicu build / > installation). Hope Nikita P. suggests right way, but now I think we > should at least assert on that. > > It seems the code above can be even wrapped into a macro that will get > two pointers (pattern and pattern_end / string and string_end) and two > SQL_... error code to handle two possible errors. Yep, it is generally > discouraged to return from a macro, but if it'll greatly improves the > code readability, so it is appropriate, I think. Just define the macro > right before the function and undefne it after to show a reader it is > some pure internal thing. > > Note: If you will going that way, don't wrap Utf8Read macro into another > macro. Use one with ucnv_getNextUChar call. > > It is refactoring of the code and our of the scope of your issue. > Please, file an issue and link this message into it (but please ask > Nikita P. opinion before). > > It is not good IMHO, but it seems now it worth to leave the code with > assumption 0xffff is the end of buffer. This is kind of splitting the > problem into parts and allow us to proceed with this patch re parsing > bug. > > About the patch > --------------- > > Please, post an issue and a branch links if you don't cite them. > Sometimes it is hard to find them in a mail client history, esp. after > some significant delay in a discussion. > > I'll consider the patch as bugfix + code style fix and will not push you > to rewrite things in significant way. But I'll ask you to formalize > found problems as issues. > > It rebased on 2.1 with conflicts. Need to be fixed. > >> -#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &s, e, &status) >> +#define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) > > 'status' is not a parameter of the macro, no need to enclose it into > parentheses. > > I would prefer to have it as the parameter, but it seems that the code has many > indent levels and will look even more ugly then now if we'll increase lines > lengths. So, just remove the parentheses. Removed. > >> + * @param matchOther The escape char (LIKE) or '[' (GLOB). > > It is a symbol from ESCAPE parameter or a garbage from the likeFunc > stack frame. It seems it worth to initialize 'u32 escape' in likeFunc to > some symbol you cannot hit within 'c' variable in > sql_utf8_pattern_compare. I think it is SQL_END_OF_STRING. Please, fix > it here if it is related to your changes or file an issue if it was > already here. Changed to SQL_END_OF_STRING. >> + /* Next pattern and input string chars */ >> + UChar32 c, c2; >> + /* "?" or "_" */ >> + UChar32 matchOne = pInfo->matchOne; >> + /* "*" or "%" */ >> + UChar32 matchAll = pInfo->matchAll; >> + /* True if uppercase==lowercase */ >> + UChar32 noCase = pInfo->noCase; >> + /* One past the last escaped input char */ > > Our code style suggests to have a period at end of a comment. Fixed. > >> - assert(matchOther < 0x80); /* '[' is a single-byte character */ >> + assert(matchOther < 0x80); > > The comment was helpful, IMHO. > > What if we'll use LIKE with ESCAPE with symbol, say, 'ё'? We have not > such tests cases as I see. > > Again, it does not seems to be the problem you solve here. Please, write > a test case and file an issue if this does not work correctly (it seems > we can hit the assert above). > > Ouch, now I see, it will be removed in the 2nd commit of the patchset. > So, please, comment it in the commit message of the 1st commit to don't > confuse a reviewer. However the case with non-ASCII ESCAPE character is > worth to be checked anyway. I think I will just return the fixed comment to the first commit as anyways it’s going to be deleted in next commit. Wrote tests for non-ASCII chars in e_expr.test.lua. > > The code of the sql_utf8_pattern_compare function looks okay for me > (except things I suggested to handle separately). > >> test/sql-tap/gh-3251-string-pattern-comparison.test.lua >> >> - test_name = prefix .. "8." .. tostring(i) >> + local test_name = prefix .. "8." .. tostring(i) > > It is from the 2nd patch, but I think should be here. > Moved to the first patch. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-10-26 15:19 ` Nikita Tatunov @ 2018-10-29 13:01 ` Alexander Turenko 2018-10-31 5:25 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-10-29 13:01 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, korablev The patch is okay except one note re test case. WBR, Alexander Turenko. > --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by > --- calling the function glob(Y,X) and can be modified by overriding that > --- function. This test case was removed, while we have not a similar one for LIKE. > >>> if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) { > >>> *err=U_ILLEGAL_ARGUMENT_ERROR; > >>> return 0xffff; > >> > >> 4. I’m not sure if string data can be this long in our context. > >> (string length > (size_t) 0x7ffffffff) > > > > Note: not 0x7ffffffff, but 0x7fffffff. > > > > This limit seems to be some weird internal thing related to using > > ucnv_getNextUChar inside libicu. > > > > I propose to lie libicu about the buffer size in case when it exceeds > > this limit. A UTF-8 encoded symbol is 4 bytes long at max, so we can > > pass the following instead of pattern_end: > > > > ((size_t) (pattern_end - pattern) > (size_t) 0x7fffffff ? pattern + 0x7fffffff : pattern_end > > > > I think this trick need to be covered with a unit test (because it is unclear > > how to create a string of size >1GiB from lua). Don't sure whether it is > > okay to allocate such amount of memory in the test, though... > > > > Please, don't do that within this patch, because it is about the another bug. > > File an issue with all needed information instead (you can provide a link to > > this message for example). > > Ok, thank you for advice. I think that’s a good idea, but there’s one thing > I’m getting concerned about: it will cause a lot of operations especially > in case we’re using LIKE for scanning a lot of data (). I guess even if it’s > relevant it’s a discussion inside of an issue that’s going to be filed. Filed https://github.com/tarantool/tarantool/issues/3773 > >>> } else if(U_SUCCESS(*err) && c>=0) { > >>> return c; > >> > >> 6. Returns symbol (can also be 0xfffd, as it is not treated as an actual error). > >> > >> So if I’m not mistaken we will get results in our function either from > >> ‘return’ number 5 or number 6 and the following code will not be executed. > > > > It is not so. We'll fall through in case of U_ILLEGAL_CHAR_FOUND or > > U_TRUNCATED_CHAR_FOUND error. > > > > To be honest I don't want to continue. It seems we should not lean on > > the fact that 0xffff always means end of the buffer, because it does not > > guaranteed by the API and is not clear from the code. > > > > AFAIR, the problem was to choose appropriate symbol to mark end of the > > buffer situation and distinguish it from a real error. It seems we have > > not one. So we should fairly (and always) check for the buffer before a > > call to ucnv_getNextUChar() or check the status it provide after the > > call. I would prefer to check it in our code. It seems that it is how > > the API works. > > > > I propose to use the same code pattern for all Utf8Read calls, e.g.: > > > > if (pattern < pattern_end) > > c = Utf8Read(pattern, pattern_end) > > else > > return SQL_...; > > if (c == SQL_INVALID_UTF8_SYMBOL) > > return SQL_...; > > assert(U_SUCCESS(status)); > > > > Note: I have added the assert, because it is not clear what we can do > > with, say, U_INVALID_TABLE_FORMAT (improper libicu build / > > installation). Hope Nikita P. suggests right way, but now I think we > > should at least assert on that. > > > > It seems the code above can be even wrapped into a macro that will get > > two pointers (pattern and pattern_end / string and string_end) and two > > SQL_... error code to handle two possible errors. Yep, it is generally > > discouraged to return from a macro, but if it'll greatly improves the > > code readability, so it is appropriate, I think. Just define the macro > > right before the function and undefne it after to show a reader it is > > some pure internal thing. > > > > Note: If you will going that way, don't wrap Utf8Read macro into another > > macro. Use one with ucnv_getNextUChar call. > > > > It is refactoring of the code and our of the scope of your issue. > > Please, file an issue and link this message into it (but please ask > > Nikita P. opinion before). > > > > It is not good IMHO, but it seems now it worth to leave the code with > > assumption 0xffff is the end of buffer. This is kind of splitting the > > problem into parts and allow us to proceed with this patch re parsing > > bug. Filed https://github.com/tarantool/tarantool/issues/3774 ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-10-29 13:01 ` Alexander Turenko @ 2018-10-31 5:25 ` Nikita Tatunov 2018-11-01 10:30 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-10-31 5:25 UTC (permalink / raw) To: Alexander Turenko; +Cc: tarantool-patches, korablev > On Oct 29, 2018, at 16:01, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > The patch is okay except one note re test case. > > WBR, Alexander Turenko. > >> --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by >> --- calling the function glob(Y,X) and can be modified by overriding that >> --- function. > > This test case was removed, while we have not a similar one for LIKE. I guess it is concerned more with the second patch. Anyways. If you mean the tests following this comment then actually there are some similar tests for LIKE (15.1.x). > >>>>> if(((size_t)(sourceLimit-s)>(size_t)0x7fffffff && sourceLimit>s)) { >>>>> *err=U_ILLEGAL_ARGUMENT_ERROR; >>>>> return 0xffff; >>>> >>>> 4. I’m not sure if string data can be this long in our context. >>>> (string length > (size_t) 0x7ffffffff) >>> >>> Note: not 0x7ffffffff, but 0x7fffffff. >>> >>> This limit seems to be some weird internal thing related to using >>> ucnv_getNextUChar inside libicu. >>> >>> I propose to lie libicu about the buffer size in case when it exceeds >>> this limit. A UTF-8 encoded symbol is 4 bytes long at max, so we can >>> pass the following instead of pattern_end: >>> >>> ((size_t) (pattern_end - pattern) > (size_t) 0x7fffffff ? pattern + 0x7fffffff : pattern_end >>> >>> I think this trick need to be covered with a unit test (because it is unclear >>> how to create a string of size >1GiB from lua). Don't sure whether it is >>> okay to allocate such amount of memory in the test, though... >>> >>> Please, don't do that within this patch, because it is about the another bug. >>> File an issue with all needed information instead (you can provide a link to >>> this message for example). >> >> Ok, thank you for advice. I think that’s a good idea, but there’s one thing >> I’m getting concerned about: it will cause a lot of operations especially >> in case we’re using LIKE for scanning a lot of data (). I guess even if it’s >> relevant it’s a discussion inside of an issue that’s going to be filed. > > Filed https://github.com/tarantool/tarantool/issues/3773 > >>>>> } else if(U_SUCCESS(*err) && c>=0) { >>>>> return c; >>>> >>>> 6. Returns symbol (can also be 0xfffd, as it is not treated as an actual error). >>>> >>>> So if I’m not mistaken we will get results in our function either from >>>> ‘return’ number 5 or number 6 and the following code will not be executed. >>> >>> It is not so. We'll fall through in case of U_ILLEGAL_CHAR_FOUND or >>> U_TRUNCATED_CHAR_FOUND error. >>> >>> To be honest I don't want to continue. It seems we should not lean on >>> the fact that 0xffff always means end of the buffer, because it does not >>> guaranteed by the API and is not clear from the code. >>> >>> AFAIR, the problem was to choose appropriate symbol to mark end of the >>> buffer situation and distinguish it from a real error. It seems we have >>> not one. So we should fairly (and always) check for the buffer before a >>> call to ucnv_getNextUChar() or check the status it provide after the >>> call. I would prefer to check it in our code. It seems that it is how >>> the API works. >>> >>> I propose to use the same code pattern for all Utf8Read calls, e.g.: >>> >>> if (pattern < pattern_end) >>> c = Utf8Read(pattern, pattern_end) >>> else >>> return SQL_...; >>> if (c == SQL_INVALID_UTF8_SYMBOL) >>> return SQL_...; >>> assert(U_SUCCESS(status)); >>> >>> Note: I have added the assert, because it is not clear what we can do >>> with, say, U_INVALID_TABLE_FORMAT (improper libicu build / >>> installation). Hope Nikita P. suggests right way, but now I think we >>> should at least assert on that. >>> >>> It seems the code above can be even wrapped into a macro that will get >>> two pointers (pattern and pattern_end / string and string_end) and two >>> SQL_... error code to handle two possible errors. Yep, it is generally >>> discouraged to return from a macro, but if it'll greatly improves the >>> code readability, so it is appropriate, I think. Just define the macro >>> right before the function and undefne it after to show a reader it is >>> some pure internal thing. >>> >>> Note: If you will going that way, don't wrap Utf8Read macro into another >>> macro. Use one with ucnv_getNextUChar call. >>> >>> It is refactoring of the code and our of the scope of your issue. >>> Please, file an issue and link this message into it (but please ask >>> Nikita P. opinion before). >>> >>> It is not good IMHO, but it seems now it worth to leave the code with >>> assumption 0xffff is the end of buffer. This is kind of splitting the >>> problem into parts and allow us to proceed with this patch re parsing >>> bug. > > Filed https://github.com/tarantool/tarantool/issues/3774 ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-10-31 5:25 ` Nikita Tatunov @ 2018-11-01 10:30 ` Alexander Turenko 2018-11-14 14:16 ` n.pettik 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-11-01 10:30 UTC (permalink / raw) To: Nikita Tatunov; +Cc: korablev, tarantool-patches On Wed, Oct 31, 2018 at 08:25:12AM +0300, Nikita Tatunov wrote: > > > > On Oct 29, 2018, at 16:01, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > > > The patch is okay except one note re test case. > > > > WBR, Alexander Turenko. > > > >> --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by > >> --- calling the function glob(Y,X) and can be modified by overriding that > >> --- function. > > > > This test case was removed, while we have not a similar one for LIKE. > > I guess it is concerned more with the second patch. > Anyways. If you mean the tests following this comment then > actually there are some similar tests for LIKE (15.1.x). Found test cases with user-defined like function. Missed it before, sorry. I have no more comments re this commit. Please, proceed with Nikita. WBR, Alexander Turenko. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-11-01 10:30 ` Alexander Turenko @ 2018-11-14 14:16 ` n.pettik 2018-11-14 17:06 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: n.pettik @ 2018-11-14 14:16 UTC (permalink / raw) To: tarantool-patches; +Cc: Nikita Tatunov, Alexander Turenko Hello, guys. I suggest following diff. It doesn’t involve any functional changes. Obviously, as far as bug has been fixed, patch LGTM. It is up to you whether discard my fixes or apply them. I pushed fixes to the separate branch, since I had to solve rebase conflicts after adding my fixes. np/gh-3251-where-like-hangs diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 6632c5983..e01519aa9 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -650,12 +650,16 @@ static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; /** - * Possible error returns from sql_utf8_pattern_compare(). + * Returns codes from sql_utf8_pattern_compare(). */ -#define SQL_MATCH 0 -#define SQL_NOMATCH 1 -#define SQL_NOWILDCARDMATCH 2 -#define SQL_INVALID_PATTERN 3 +enum pattern_match_status { + MATCH = 0, + NO_MATCH = 1, + /** No match in spite of having * or % wildcards. */ + NO_WILDCARD_MATCH = 2, + /** Pattern contains invalid UTF-8 symbol. */ + INVALID_PATTERN = 3 +}; /** * Compare two UTF-8 strings for equality where the first string @@ -699,12 +703,7 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; * @param compareInfo Information about how to compare. * @param matchOther The escape char (LIKE) or '[' (GLOB). * - * @retval SQL_MATCH: Match. - * SQL_NOMATCH: No match. - * SQL_NOWILDCARDMATCH: No match in spite of having * - * or % wildcards. - * SQL_INVALID_PATTERN: Pattern contains invalid - * symbol. + * @retval One of pattern_match_status values. */ static int sql_utf8_pattern_compare(const char *pattern, @@ -729,10 +728,11 @@ sql_utf8_pattern_compare(const char *pattern, while (pattern < pattern_end) { c = Utf8Read(pattern, pattern_end); if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c == matchAll) { /* Match "*" */ + return INVALID_PATTERN; + if (c == matchAll) { /* - * Skip over multiple "*" characters in + * Match *: + * skip over multiple "*" characters in * the pattern. If there are also "?" * characters, skip those as well, but * consume a single character of the @@ -741,29 +741,28 @@ sql_utf8_pattern_compare(const char *pattern, while ((c = Utf8Read(pattern, pattern_end)) != SQL_END_OF_STRING) { if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; if (c != matchAll && c != matchOne) break; if (c == matchOne && (c2 = Utf8Read(string, string_end)) == SQL_END_OF_STRING) - return SQL_NOWILDCARDMATCH; + return NO_WILDCARD_MATCH; if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; + return NO_MATCH; } /* * "*" at the end of the pattern matches. */ - if (c == SQL_END_OF_STRING) { - return SQL_MATCH; - } + if (c == SQL_END_OF_STRING) + return MATCH; if (c == matchOther) { if (pInfo->matchSet == 0) { c = Utf8Read(pattern, pattern_end); if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; if (c == SQL_END_OF_STRING) - return SQL_NOWILDCARDMATCH; + return NO_WILDCARD_MATCH; } else { /* "[...]" immediately * follows the "*". We @@ -785,13 +784,13 @@ sql_utf8_pattern_compare(const char *pattern, string, pInfo, matchOther); - if (bMatch != SQL_NOMATCH) + if (bMatch != NO_MATCH) return bMatch; c = Utf8Read(string, string_end); if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; + return NO_MATCH; } - return SQL_NOWILDCARDMATCH; + return NO_WILDCARD_MATCH; } } @@ -825,7 +824,7 @@ sql_utf8_pattern_compare(const char *pattern, */ c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; + return NO_MATCH; if (!noCase) { if (c2 != c) continue; @@ -837,18 +836,18 @@ sql_utf8_pattern_compare(const char *pattern, string, pInfo, matchOther); - if (bMatch != SQL_NOMATCH) + if (bMatch != NO_MATCH) return bMatch; } - return SQL_NOWILDCARDMATCH; + return NO_WILDCARD_MATCH; } if (c == matchOther) { if (pInfo->matchSet == 0) { c = Utf8Read(pattern, pattern_end); if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; if (c == SQL_END_OF_STRING) - return SQL_NOMATCH; + return NO_MATCH; zEscaped = pattern; } else { UChar32 prior_c = 0; @@ -856,24 +855,24 @@ sql_utf8_pattern_compare(const char *pattern, int invert = 0; c = Utf8Read(string, string_end); if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; + return NO_MATCH; if (string == string_end) - return SQL_NOMATCH; + return NO_MATCH; c2 = Utf8Read(pattern, pattern_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; if (c2 == '^') { invert = 1; c2 = Utf8Read(pattern, pattern_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; } if (c2 == ']') { if (c == ']') seen = 1; c2 = Utf8Read(pattern, pattern_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; } while (c2 != SQL_END_OF_STRING && c2 != ']') { if (c2 == '-' && pattern[0] != ']' @@ -881,30 +880,28 @@ sql_utf8_pattern_compare(const char *pattern, && prior_c > 0) { c2 = Utf8Read(pattern, pattern_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; if (c >= prior_c && c <= c2) seen = 1; prior_c = 0; } else { - if (c == c2) { + if (c == c2) seen = 1; - } prior_c = c2; } c2 = Utf8Read(pattern, pattern_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; + return INVALID_PATTERN; } if (pattern == pattern_end || - (seen ^ invert) == 0) { - return SQL_NOMATCH; - } + (seen ^ invert) == 0) + return NO_MATCH; continue; } } c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; + return NO_MATCH; if (c == c2) continue; if (noCase){ @@ -916,16 +913,15 @@ sql_utf8_pattern_compare(const char *pattern, * to_lower allows to respect Turkish 'İ' * in default locale. */ - if (u_tolower(c) == c2 || - c == u_tolower(c2)) + if (u_tolower(c) == c2 || c == u_tolower(c2)) continue; } if (c == matchOne && pattern != zEscaped && c2 != SQL_END_OF_STRING) continue; - return SQL_NOMATCH; + return NO_MATCH; } - return string == string_end ? SQL_MATCH : SQL_NOMATCH; + return string == string_end ? MATCH : NO_MATCH; } /* @@ -1030,12 +1026,12 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) #endif int res; res = sql_utf8_pattern_compare(zB, zA, pInfo, escape); - if (res == SQL_INVALID_PATTERN) { + if (res == INVALID_PATTERN) { sqlite3_result_error(context, "LIKE or GLOB pattern can only" " contain UTF-8 characters", -1); return; } - sqlite3_result_int(context, res == SQL_MATCH); + sqlite3_result_int(context, res == MATCH); } /* diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index 3697b7d7f..682771f36 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -99,10 +99,10 @@ operations = { {"<<", ">>", "&", "|"}, {"<", "<=", ">", ">="}, -- NOTE: This test needs refactoring after deletion of GLOB & --- type restrictions for LIKE. (See #3572) --- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & --- are waiting for their hour, don't confuse them --- being commented with ticket above. +-- type restrictions for LIKE. (See #3572) +-- Also, MATCH & REGEXP aren't supported in Tarantool & +-- are waiting for their hour, don't confuse them +-- being commented with ticket above. {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, {"AND"}, {"OR"}, @@ -493,7 +493,6 @@ for _, op in ipairs(oplist) do end end end - --------------------------------------------------------------------------- -- Test the IS and IS NOT operators. -- 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 c2a2a4d92..612b8183a 100755 --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua @@ -133,7 +133,7 @@ local invalid_testcases = { '\xD0', } --- Invalid testcases. +-- Invalid unicode symbols. for i, tested_string in ipairs(invalid_testcases) do -- We should raise an error in case @@ -183,7 +183,7 @@ local valid_testcases = { '\xE2\x80\xA9', } --- Valid testcases. +-- Valid unicode symbols. for i, tested_string in ipairs(valid_testcases) do local test_name = prefix .. "8." .. tostring(i) local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue 2018-11-14 14:16 ` n.pettik @ 2018-11-14 17:06 ` Alexander Turenko 0 siblings, 0 replies; 46+ messages in thread From: Alexander Turenko @ 2018-11-14 17:06 UTC (permalink / raw) To: n.pettik; +Cc: tarantool-patches, Nikita Tatunov On Wed, Nov 14, 2018 at 05:16:49PM +0300, n.pettik wrote: > Hello, guys. > > I suggest following diff. It doesn’t involve any functional changes. > Obviously, as far as bug has been fixed, patch LGTM. > It is up to you whether discard my fixes or apply them. > I pushed fixes to the separate branch, since I had to solve > rebase conflicts after adding my fixes. > > np/gh-3251-where-like-hangs > I don't have objections against your changes. WBR, Alexander Turenko. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-16 17:00 [tarantool-patches] [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal N.Tatunov 2018-08-16 17:00 ` [tarantool-patches] [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue N.Tatunov @ 2018-08-16 17:00 ` N.Tatunov 2018-08-17 8:25 ` [tarantool-patches] " Alex Khatskevich 2018-11-15 4:57 ` [tarantool-patches] Re: [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal Kirill Yukhin 2 siblings, 1 reply; 46+ messages in thread From: N.Tatunov @ 2018-08-16 17:00 UTC (permalink / raw) To: tarantool-patches; +Cc: avkhatskevich, N.Tatunov GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to be close to ANSI SQL & LIKE to depend on collations, we do not want to support it. This patch totally removes it from Tarantool along with any mentions of it. Part of #3589 Part of #3572 Needed for #3251 Needed for #3334 --- extra/mkkeywordhash.c | 1 - src/box/sql/analyze.c | 7 +- src/box/sql/func.c | 381 +- src/box/sql/pragma.c | 6 +- src/box/sql/sqliteInt.h | 16 +- src/box/sql/sqliteLimit.h | 3 +- src/box/sql/vdbe.c | 2 +- src/box/sql/wherecode.c | 2 +- src/box/sql/whereexpr.c | 157 +- test/sql-tap/alter.test.lua | 6 +- test/sql-tap/analyze9.test.lua | 8 +- test/sql-tap/e_expr.test.lua | 311 +- .../gh-3251-string-pattern-comparison.test.lua | 6 +- test/sql-tap/like2.test.lua | 10 +- test/sql-tap/like3.test.lua | 26 +- test/sql-tap/tkt1537.test.lua | 4 +- test/sql-tap/triggerA.test.lua | 2 +- test/sql-tap/where3.test.lua | 6 +- test/sql-tap/where7.test.lua | 4780 ++++++++++---------- 19 files changed, 2818 insertions(+), 2916 deletions(-) diff --git a/extra/mkkeywordhash.c b/extra/mkkeywordhash.c index 990c419..1fee3a7 100644 --- a/extra/mkkeywordhash.c +++ b/extra/mkkeywordhash.c @@ -159,7 +159,6 @@ static Keyword aKeywordTable[] = { { "FOR", "TK_FOR", TRIGGER, true }, { "FOREIGN", "TK_FOREIGN", FKEY, true }, { "FROM", "TK_FROM", ALWAYS, true }, - { "GLOB", "TK_LIKE_KW", ALWAYS, false }, { "GROUP", "TK_GROUP", ALWAYS, true }, { "HAVING", "TK_HAVING", ALWAYS, true }, { "IF", "TK_IF", ALWAYS, true }, diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c index 5f73f02..fc7588c 100644 --- a/src/box/sql/analyze.c +++ b/src/box/sql/analyze.c @@ -829,7 +829,7 @@ analyzeOneTable(Parse * pParse, /* Parser context */ return; } assert(pTab->tnum != 0); - if (sqlite3_strlike("\\_%", pTab->def->name, '\\') == 0) { + if (sql_strlike_ci("\\_%", pTab->def->name, '\\') == 0) { /* Do not gather statistics on system tables */ return; } @@ -1333,11 +1333,10 @@ analysis_loader(void *data, int argc, char **argv, char **unused) /* Position ptr at the end of stat string. */ for (; *z == ' ' || (*z >= '0' && *z <= '9'); ++z); while (z[0]) { - if (sqlite3_strglob("unordered*", z) == 0) { + if (sql_strlike_cs("unordered%", z, '[') == 0) index->def->opts.stat->is_unordered = true; - } else if (sqlite3_strglob("noskipscan*", z) == 0) { + else if (sql_strlike_cs("noskipscan%", z, '[') == 0) index->def->opts.stat->skip_scan_enabled = false; - } while (z[0] != 0 && z[0] != ' ') z++; while (z[0] == ' ') diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 66cae17..177193e 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -607,41 +607,32 @@ total_changes(sqlite3_context * context, int NotUsed, sqlite3_value ** NotUsed2) sqlite3_result_int(context, sqlite3_total_changes(db)); } -/* - * A structure defining how to do GLOB-style comparisons. - */ -struct compareInfo { - u8 matchAll; /* "*" or "%" */ - u8 matchOne; /* "?" or "_" */ - u8 matchSet; /* "[" or 0 */ - u8 noCase; /* true to ignore case differences */ -}; - /** - * Providing there are symbols in string s this - * macro returns UTF-8 code of character and - * promotes pointer to the next symbol in the string. - * Otherwise return code is SQL_END_OF_STRING. + * Providing there are symbols in string s this macro returns + * UTF-8 code of character and promotes pointer to the next + * symbol in the string. If s points to an invalid UTF-8 symbol + * return code is SQL_INVALID_UTF8_SYMBOL. If there're no symbols + * left in string s return code is SQL_END_OF_STRING. */ #define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) #define SQL_END_OF_STRING 0xffff #define SQL_INVALID_UTF8_SYMBOL 0xfffd -static const struct compareInfo globInfo = { '*', '?', '[', 0 }; - -/* The correct SQL-92 behavior is for the LIKE operator to ignore - * case. Thus 'a' LIKE 'A' would be true. +/** + * If SQLITE_CASE_SENSITIVE_LIKE is not defined, then the LIKE + * operator is not case sensitive. */ -static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; +static const int case_insensitive_like = 1; -/* If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE operator - * is case sensitive causing 'a' LIKE 'A' to be false +/** + * If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE + * operator is case sensitive causing 'a' LIKE 'A' to be false. */ -static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; +static const int case_sensitive_like = 0; -/* - * Possible error returns from sql_utf8_pattern_compare() +/** + * Possible error returns from sql_utf8_pattern_compare(). */ #define SQL_MATCH 0 #define SQL_NOMATCH 1 @@ -650,138 +641,95 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; /** * Compare two UTF-8 strings for equality where the first string - * is a GLOB or LIKE expression. - * - * Globbing rules: - * - * '*' Matches any sequence of zero or more characters. - * - * '?' Matches exactly one character. - * - * [...] Matches one character from the enclosed list of - * characters. - * - * [^...] Matches one character not in the enclosed list. - * - * With the [...] and [^...] matching, a ']' character can be - * included in the list by making it the first character after - * '[' or '^'. A range of characters can be specified using '-'. - * Example: "[a-z]" matches any single lower-case letter. - * To match a '-', make it the last character in the list. + * is a LIKE expression. * * Like matching rules: * - * '%' Matches any sequence of zero or more characters. + * '%' Matches any sequence of zero or more + * characters. * * '_' Matches any one character. * - * Ec Where E is the "esc" character and c is any other - * character, including '%', '_', and esc, match - * exactly c. - * - * The comments within this routine usually assume glob matching. + * Ec Where E is the "esc" character and c is any + * other character, including '%', '_', and esc, + * match exactly c. * * This routine is usually quick, but can be N**2 in the worst * case. * * @param pattern String containing comparison pattern. * @param string String being compared. - * @param compareInfo Information about how to compare. - * @param matchOther The escape char (LIKE) or '[' (GLOB). + * @param is_like_ci true if LIKE is case insensitive. + * @param match_other The escape char for LIKE. * * @retval SQL_MATCH: Match. * SQL_NOMATCH: No match. - * SQL_NOWILDCARDMATCH: No match in spite of having * - * or % wildcards. + * SQL_NOWILDCARDMATCH: No match in spite of having % + * wildcard. * SQL_INVALID_PATTERN: Pattern contains invalid * symbol. */ static int sql_utf8_pattern_compare(const char *pattern, const char *string, - const struct compareInfo *pInfo, - UChar32 matchOther) + const int *is_like_ci, + UChar32 match_other) { /* Next pattern and input string chars */ UChar32 c, c2; - /* "?" or "_" */ - UChar32 matchOne = pInfo->matchOne; - /* "*" or "%" */ - UChar32 matchAll = pInfo->matchAll; - /* True if uppercase==lowercase */ - UChar32 noCase = pInfo->noCase; + /* "_" */ + UChar32 match_one = '_'; + /* "%" */ + UChar32 match_all = '%'; /* One past the last escaped input char */ const char *zEscaped = 0; - const char * pattern_end = pattern + strlen(pattern); - const char * string_end = string + strlen(string); + const char *pattern_end = pattern + strlen(pattern); + const char *string_end = string + strlen(string); UErrorCode status = U_ZERO_ERROR; while (pattern < pattern_end) { c = Utf8Read(pattern, pattern_end); if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; - if (c == matchAll) { /* Match "*" */ - /* Skip over multiple "*" characters in - * the pattern. If there are also "?" + if (c == match_all) { + /** + * Skip over multiple "%" characters in + * the pattern. If there are also "_" * characters, skip those as well, but * consume a single character of the - * input string for each "?" skipped. + * input string for each "_" skipped. */ while ((c = Utf8Read(pattern, pattern_end)) != SQL_END_OF_STRING) { if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; - if (c != matchAll && c != matchOne) + if (c != match_all && c != match_one) break; - if (c == matchOne && + if (c == match_one && (c2 = Utf8Read(string, string_end)) == SQL_END_OF_STRING) return SQL_NOWILDCARDMATCH; if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; } - /* - * "*" at the end of the pattern matches. + /** + * "%" at the end of the pattern matches. */ if (c == SQL_END_OF_STRING) { return SQL_MATCH; } - if (c == matchOther) { - if (pInfo->matchSet == 0) { - c = Utf8Read(pattern, pattern_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c == SQL_END_OF_STRING) - return SQL_NOWILDCARDMATCH; - } else { - /* "[...]" immediately - * follows the "*". We - * have to do a slow - * recursive search in - * this case, but it is - * an unusual case. - */ - assert(matchOther < 0x80); - while (string < string_end) { - int bMatch = - sql_utf8_pattern_compare( - &pattern[-1], - string, - pInfo, - matchOther); - if (bMatch != SQL_NOMATCH) - return bMatch; - c = Utf8Read(string, string_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; - } + if (c == match_other) { + c = Utf8Read(pattern, pattern_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; + if (c == SQL_END_OF_STRING) return SQL_NOWILDCARDMATCH; - } } - /* At this point variable c contains the + /** + * At this point variable c contains the * first character of the pattern string - * past the "*". Search in the input + * past the "%". Search in the input * string for the first matching * character and recursively continue the * match from that point. @@ -793,7 +741,7 @@ sql_utf8_pattern_compare(const char *pattern, */ int bMatch; - if (noCase) + if (*is_like_ci) c = u_tolower(c); while (string < string_end){ /** @@ -809,7 +757,7 @@ sql_utf8_pattern_compare(const char *pattern, c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; - if (!noCase) { + if (!(*is_like_ci)) { if (c2 != c) continue; } else { @@ -818,79 +766,27 @@ sql_utf8_pattern_compare(const char *pattern, } bMatch = sql_utf8_pattern_compare(pattern, string, - pInfo, - matchOther); + is_like_ci, + match_other); if (bMatch != SQL_NOMATCH) return bMatch; } return SQL_NOWILDCARDMATCH; } - if (c == matchOther) { - if (pInfo->matchSet == 0) { - c = Utf8Read(pattern, pattern_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c == SQL_END_OF_STRING) - return SQL_NOMATCH; - zEscaped = pattern; - } else { - UChar32 prior_c = 0; - int seen = 0; - int invert = 0; - c = Utf8Read(string, string_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; - if (string == string_end) - return SQL_NOMATCH; - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c2 == '^') { - invert = 1; - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - } - if (c2 == ']') { - if (c == ']') - seen = 1; - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - } - while (c2 != SQL_END_OF_STRING && c2 != ']') { - if (c2 == '-' && pattern[0] != ']' - && pattern < pattern_end - && prior_c > 0) { - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c >= prior_c && c <= c2) - seen = 1; - prior_c = 0; - } else { - if (c == c2) { - seen = 1; - } - prior_c = c2; - } - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - } - if (pattern == pattern_end || - (seen ^ invert) == 0) { - return SQL_NOMATCH; - } - continue; - } + if (c == match_other) { + c = Utf8Read(pattern, pattern_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; + if (c == SQL_END_OF_STRING) + return SQL_NOMATCH; + zEscaped = pattern; } c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; if (c == c2) continue; - if (noCase){ + if (*is_like_ci) { /** * Small optimisation. Reduce number of * calls to u_tolower function. SQL @@ -903,7 +799,7 @@ sql_utf8_pattern_compare(const char *pattern, c == u_tolower(c2)) continue; } - if (c == matchOne && pattern != zEscaped && + if (c == match_one && pattern != zEscaped && c2 != SQL_END_OF_STRING) continue; return SQL_NOMATCH; @@ -911,55 +807,52 @@ sql_utf8_pattern_compare(const char *pattern, return string == string_end ? SQL_MATCH : SQL_NOMATCH; } -/* - * The sqlite3_strglob() interface. Return 0 on a match (like strcmp()) and - * non-zero if there is no match. +/** + * Compare two UTF-8 strings for equality using case sensitive + * sql_utf8_pattern_compare. */ int -sqlite3_strglob(const char *zGlobPattern, const char *zString) +sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); + return sql_utf8_pattern_compare(zPattern, zStr, &case_sensitive_like, esc); } -/* - * The sqlite3_strlike() interface. Return 0 on a match and non-zero for - * a miss - like strcmp(). +/** + * Compare two UTF-8 strings for equality using case insensitive + * sql_utf8_pattern_compare. */ int -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); + return sql_utf8_pattern_compare(zPattern, zStr, &case_insensitive_like, esc); } -/* - * Count the number of times that the LIKE operator (or GLOB which is - * just a variation of LIKE) gets called. This is used for testing - * only. +/** + * Count the number of times that the LIKE operator gets called. + * This is used for testing only. */ #ifdef SQLITE_TEST int sqlite3_like_count = 0; #endif -/* - * Implementation of the like() SQL function. This function implements - * the build-in LIKE operator. The first argument to the function is the - * pattern and the second argument is the string. So, the SQL statements: +/** + * Implementation of the like() SQL function. This function + * implements the built-in LIKE operator. The first argument to + * the function is the pattern and the second argument is the + * string. So, the SQL statements of the following type: * * A LIKE B * - * is implemented as like(B,A). - * - * This same function (with a different compareInfo structure) computes - * the GLOB operator. + * are implemented as like(B,A). */ static void -likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) +likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) { const char *zA, *zB; u32 escape; int nPat; sqlite3 *db = sqlite3_context_db_handle(context); - struct compareInfo *pInfo = sqlite3_user_data(context); + int *is_like_ci = sqlite3_user_data(context); #ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS if (sqlite3_value_type(argv[0]) == SQLITE_BLOB @@ -974,8 +867,9 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) zB = (const char *) sqlite3_value_text(argv[0]); zA = (const char *) sqlite3_value_text(argv[1]); - /* Limit the length of the LIKE or GLOB pattern to avoid - * problems of deep recursion and N*N behavior in + /** + * Limit the length of the LIKE pattern to avoid problems + * of deep recursion and N*N behavior in * sql_utf8_pattern_compare(). */ nPat = sqlite3_value_bytes(argv[0]); @@ -983,28 +877,29 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) testcase(nPat == db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH] + 1); if (nPat > db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]) { sqlite3_result_error(context, - "LIKE or GLOB pattern too complex", -1); + "LIKE pattern is too complex", -1); return; } /* Encoding did not change */ assert(zB == (const char *) sqlite3_value_text(argv[0])); if (argc == 3) { - /* The escape character string must consist of a single UTF-8 character. - * Otherwise, return an error. + /** + * The escape character string must consist of a + * single UTF-8 character. Otherwise, return an + * error. */ const unsigned char *zEsc = sqlite3_value_text(argv[2]); if (zEsc == 0) return; if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { sqlite3_result_error(context, - "ESCAPE expression must be a single character", + "ESCAPE expression must be a" + " single character", -1); return; } escape = sqlite3Utf8Read(&zEsc); - } else { - escape = pInfo->matchSet; } if (!zA || !zB) return; @@ -1012,10 +907,10 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) sqlite3_like_count++; #endif int res; - res = sql_utf8_pattern_compare(zB, zA, pInfo, escape); + res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); if (res == SQL_INVALID_PATTERN) { - sqlite3_result_error(context, "LIKE or GLOB pattern can only" - " contain UTF-8 characters", -1); + sqlite3_result_error(context, "LIKE pattern can only contain" + " UTF-8 characters", -1); return; } sqlite3_result_int(context, res == SQL_MATCH); @@ -1811,64 +1706,54 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) } } -/* - * Register the built-in LIKE and GLOB functions. The caseSensitive - * parameter determines whether or not the LIKE operator is case - * sensitive. GLOB is always case sensitive. +/** + * Register the built-in LIKE function. + * + * @param db database structure. + * @param is_case_sensitive whether like should be case sensitive + * or not. + * + * @retval none. */ void -sqlite3RegisterLikeFunctions(sqlite3 * db, int caseSensitive) +sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) { - struct compareInfo *pInfo; - if (caseSensitive) { - pInfo = (struct compareInfo *)&likeInfoAlt; - } else { - pInfo = (struct compareInfo *)&likeInfoNorm; - } - sqlite3CreateFunc(db, "LIKE", 2, 0, pInfo, likeFunc, 0, 0, 0); - sqlite3CreateFunc(db, "LIKE", 3, 0, pInfo, likeFunc, 0, 0, 0); - sqlite3CreateFunc(db, "GLOB", 2, 0, (struct compareInfo *)&globInfo, likeFunc, 0, 0, 0); - setLikeOptFlag(db, "GLOB", SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE); + int *is_like_ci; + if (is_case_sensitive) + is_like_ci = (int *)&case_sensitive_like; + else + is_like_ci = (int *)&case_insensitive_like; + sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); + sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); setLikeOptFlag(db, "LIKE", - caseSensitive ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : - SQLITE_FUNC_LIKE); + is_case_sensitive ? (SQLITE_FUNC_LIKE | + SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); } -/* - * pExpr points to an expression which implements a function. If - * it is appropriate to apply the LIKE optimization to that function - * then set aWc[0] through aWc[2] to the wildcard characters and - * return TRUE. If the function is not a LIKE-style function then - * return FALSE. +/** + * Check if the function implements LIKE-style comparison & if it + * is appropriate to apply a LIKE query optimization. + * + * @param db database structure. + * @param pExpr pointer to a function-implementing expression. + * @param is_like_ci true if LIKE is case insensitive. * - * *pIsNocase is set to true if uppercase and lowercase are equivalent for - * the function (default for LIKE). If the function makes the distinction - * between uppercase and lowercase (as does GLOB) then *pIsNocase is set to - * false. + * @retval 0 if it's appropriate to apply optimization. + * 1 if it's not. */ int -sqlite3IsLikeFunction(sqlite3 * db, Expr * pExpr, int *pIsNocase, char *aWc) +sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_like_ci) { FuncDef *pDef; - if (pExpr->op != TK_FUNCTION - || !pExpr->x.pList || pExpr->x.pList->nExpr != 2) { + if (pExpr->op != TK_FUNCTION || !pExpr->x.pList || + pExpr->x.pList->nExpr != 2) return 0; - } assert(!ExprHasProperty(pExpr, EP_xIsSelect)); pDef = sqlite3FindFunction(db, pExpr->u.zToken, 2, 0); if (NEVER(pDef == 0) || (pDef->funcFlags & SQLITE_FUNC_LIKE) == 0) { return 0; } - - /* The memcpy() statement assumes that the wildcard characters are - * the first three statements in the compareInfo structure. The - * asserts() that follow verify that assumption - */ - memcpy(aWc, pDef->pUserData, 3); - assert((char *)&likeInfoAlt == (char *)&likeInfoAlt.matchAll); - assert(&((char *)&likeInfoAlt)[1] == (char *)&likeInfoAlt.matchOne); - assert(&((char *)&likeInfoAlt)[2] == (char *)&likeInfoAlt.matchSet); - *pIsNocase = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; + *is_like_ci = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; return 1; } @@ -1962,16 +1847,14 @@ sqlite3RegisterBuiltinFunctions(void) AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, groupConcatFinalize), - LIKEFUNC(glob, 2, &globInfo, - SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), #ifdef SQLITE_CASE_SENSITIVE_LIKE - LIKEFUNC(like, 2, &likeInfoAlt, + LIKEFUNC(like, 2, &case_sensitive_like, SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), - LIKEFUNC(like, 3, &likeInfoAlt, + LIKEFUNC(like, 3, &case_sensitive_like, SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), #else - LIKEFUNC(like, 2, &likeInfoNorm, SQLITE_FUNC_LIKE), - LIKEFUNC(like, 3, &likeInfoNorm, SQLITE_FUNC_LIKE), + LIKEFUNC(like, 2, &case_insensitive_like, SQLITE_FUNC_LIKE), + LIKEFUNC(like, 3, &case_insensitive_like, SQLITE_FUNC_LIKE), #endif #ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION FUNCTION(unknown, -1, 0, 0, unknownFunc), diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c index 5fb29c7..26a602b 100644 --- a/src/box/sql/pragma.c +++ b/src/box/sql/pragma.c @@ -771,8 +771,10 @@ sqlite3Pragma(Parse * pParse, Token * pId, /* First part of [schema.]id field */ } #endif - /* Reinstall the LIKE and GLOB functions. The variant of LIKE * - * used will be case sensitive or not depending on the RHS. + /** + * Reinstall the LIKE and functions. The variant + * of LIKE * used will be case sensitive or not + * depending on the RHS. */ case PragTyp_CASE_SENSITIVE_LIKE:{ if (zRight) { diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h index e7a02dc..a805adf 100644 --- a/src/box/sql/sqliteInt.h +++ b/src/box/sql/sqliteInt.h @@ -565,17 +565,16 @@ char * sqlite3_vsnprintf(int, char *, const char *, va_list); int -sqlite3_strlike(const char *zGlob, const char *zStr, - unsigned int cEsc); +sql_strlike_cs(const char *zLike, const char *zStr, unsigned int cEsc); + +int +sql_strlike_ci(const char *zLike, const char *zStr, unsigned int cEsc); typedef void (*sqlite3_destructor_type) (void *); #define SQLITE_STATIC ((sqlite3_destructor_type)0) #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) int -sqlite3_strglob(const char *zGlob, const char *zStr); - -int sqlite3_prepare(sqlite3 * db, /* Database handle */ const char *zSql, /* SQL statement, UTF-8 encoded */ int nByte, /* Maximum length of zSql in bytes. */ @@ -701,9 +700,6 @@ struct on_conflict { enum on_conflict_action optimized_action; }; -void * -sqlite3_user_data(sqlite3_context *); - void sqlite3_randomness(int N, void *P); @@ -2355,7 +2351,7 @@ struct Expr { #define EP_Distinct 0x000010 /* Aggregate function with DISTINCT keyword */ #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */ #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */ -#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */ +#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, etc */ #define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */ #define EP_Generic 0x000200 /* Ignore COLLATE or affinity on this tree */ #define EP_IntValue 0x000400 /* Integer value contained in u.iValue */ @@ -4378,7 +4374,7 @@ index_column_count(const Index *); bool index_is_unique_not_null(const Index *); void sqlite3RegisterLikeFunctions(sqlite3 *, int); -int sqlite3IsLikeFunction(sqlite3 *, Expr *, int *, char *); +int sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_case_insensitive); void sqlite3SchemaClear(sqlite3 *); Schema *sqlite3SchemaCreate(sqlite3 *); int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, diff --git a/src/box/sql/sqliteLimit.h b/src/box/sql/sqliteLimit.h index b88c9c6..e76353a 100644 --- a/src/box/sql/sqliteLimit.h +++ b/src/box/sql/sqliteLimit.h @@ -164,8 +164,7 @@ enum { #endif /* - * Maximum length (in bytes) of the pattern in a LIKE or GLOB - * operator. + * Maximum length (in bytes) of the pattern in a LIKE operator. */ #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH #define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c index 0c97814..3f10f4d 100644 --- a/src/box/sql/vdbe.c +++ b/src/box/sql/vdbe.c @@ -5521,7 +5521,7 @@ vdbe_return: testcase( nVmStep>0); p->aCounter[SQLITE_STMTSTATUS_VM_STEP] += (int)nVmStep; assert(rc!=SQLITE_OK || nExtraDelete==0 - || sqlite3_strlike("DELETE%",p->zSql,0)!=0 + || sql_strlike_ci("DELETE%", p->zSql, 0) != 0 ); return rc; diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c index c35c25a..f864ea7 100644 --- a/src/box/sql/wherecode.c +++ b/src/box/sql/wherecode.c @@ -339,7 +339,7 @@ sqlite3WhereAddScanStatus(Vdbe * v, /* Vdbe to add scanstatus entry to */ * automatically disabled. In this way, terms get disabled if derived * virtual terms are tested first. For example: * - * x GLOB 'abc*' AND x>='abc' AND x<'acd' + * x LIKE 'abc%' AND x>='abc' AND x<'acd' * \___________/ \______/ \_____/ * parent child1 child2 * diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index 6128686..947bd5d 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -219,37 +219,57 @@ operatorMask(int op) } #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION -/* - * Check to see if the given expression is a LIKE or GLOB operator that - * can be optimized using inequality constraints. Return TRUE if it is - * so and false if not. +/** + * Check to see if the given expression is a LIKE operator that + * can be optimized using inequality constraints. + * + * In order for the operator to be optimizible, the RHS must be a + * string literal that does not begin with a wildcard. The LHS + * must be a column that may only be NULL, a string, or a BLOB, + * never a number. The collating sequence for the column on the + * LHS must be appropriate for the operator. + * + * @param pParse Parsing and code generating context. + * @param pExpr Test this expression. + * @param ppPrefix Pointer to TK_STRING expression with + * pattern prefix. + * @param pisComplete True if the only wildcard is '%' in the + * last character. + * @param pnoCase True if case insensitive. * - * In order for the operator to be optimizible, the RHS must be a string - * literal that does not begin with a wildcard. The LHS must be a column - * that may only be NULL, a string, or a BLOB, never a number. The - * collating sequence for the column on the LHS must be appropriate for - * the operator. + * @retval True if the given expr is a LIKE operator & is + * optimizable using inequality constraints. + * False if not. */ static int -isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ - Expr * pExpr, /* Test this expression */ - Expr ** ppPrefix, /* Pointer to TK_STRING expression with pattern prefix */ - int *pisComplete, /* True if the only wildcard is % in the last character */ - int *pnoCase /* True if uppercase is equivalent to lowercase */ - ) +is_like(Parse *pParse, + Expr *pExpr, + Expr **ppPrefix, + int *pisComplete, + int *pnoCase) { - const char *z = 0; /* String on RHS of LIKE operator */ - Expr *pRight, *pLeft; /* Right and left size of LIKE operator */ - ExprList *pList; /* List of operands to the LIKE operator */ - int c; /* One character in z[] */ - int cnt; /* Number of non-wildcard prefix characters */ - char wc[3]; /* Wildcard characters */ - sqlite3 *db = pParse->db; /* Database connection */ + /* String on RHS of LIKE operator */ + const char *z = 0; + /* Right and left size of LIKE operator */ + Expr *pRight, *pLeft; + /* List of operands to the LIKE operator */ + ExprList *pList; + /* One character in z[] */ + int c; + /* Number of non-wildcard prefix characters */ + int cnt; + /* Wildcard characters */ + char match_all = '%'; + char match_one = '_'; + /* Database connection */ + sqlite3 *db = pParse->db; sqlite3_value *pVal = 0; - int op; /* Opcode of pRight */ - int rc; /* Result code to return */ + /* Opcode of pRight */ + int op; + /* Result code to return */ + int rc; - if (!sqlite3IsLikeFunction(db, pExpr, pnoCase, wc)) { + if (!sql_is_like_func(db, pExpr, pnoCase)) { return 0; } pList = pExpr->x.pList; @@ -257,8 +277,9 @@ isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ /* Value might be numeric */ if (pLeft->op != TK_COLUMN || sqlite3ExprAffinity(pLeft) != AFFINITY_TEXT) { - /* IMP: R-02065-49465 The left-hand side of the LIKE or GLOB operator must - * be the name of an indexed column with TEXT affinity. + /* IMP: R-02065-49465 The left-hand side of the + * LIKE operator must be the name of an indexed + * column with TEXT affinity. */ return 0; } @@ -281,13 +302,11 @@ isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ } if (z) { cnt = 0; - while ((c = z[cnt]) != 0 && c != wc[0] && c != wc[1] - && c != wc[2]) { + while ((c = z[cnt]) != 0 && c != match_one && c != match_all) cnt++; - } if (cnt != 0 && 255 != (u8) z[cnt - 1]) { Expr *pPrefix; - *pisComplete = c == wc[0] && z[cnt + 1] == 0; + *pisComplete = c == match_all && z[cnt + 1] == 0; pPrefix = sqlite3Expr(db, TK_STRING, z); if (pPrefix) pPrefix->u.zToken[cnt] = 0; @@ -943,19 +962,32 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ int idxTerm /* Index of the term to be analyzed */ ) { - WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ - WhereTerm *pTerm; /* The term to be analyzed */ - WhereMaskSet *pMaskSet; /* Set of table index masks */ - Expr *pExpr; /* The expression to be analyzed */ - Bitmask prereqLeft; /* Prerequesites of the pExpr->pLeft */ - Bitmask prereqAll; /* Prerequesites of pExpr */ - Bitmask extraRight = 0; /* Extra dependencies on LEFT JOIN */ - Expr *pStr1 = 0; /* RHS of LIKE/GLOB operator */ - int isComplete = 0; /* RHS of LIKE/GLOB ends with wildcard */ - int noCase = 0; /* uppercase equivalent to lowercase */ - int op; /* Top-level operator. pExpr->op */ - Parse *pParse = pWInfo->pParse; /* Parsing context */ - sqlite3 *db = pParse->db; /* Database connection */ + /* WHERE clause processing context */ + WhereInfo *pWInfo = pWC->pWInfo; + /* The term to be analyzed */ + WhereTerm *pTerm; + /* Set of table index masks */ + WhereMaskSet *pMaskSet; + /* The expression to be analyzed */ + Expr *pExpr; + /* Prerequesites of the pExpr->pLeft */ + Bitmask prereqLeft; + /* Prerequesites of pExpr */ + Bitmask prereqAll; + /* Extra dependencies on LEFT JOIN */ + Bitmask extraRight = 0; + /* RHS of LIKE operator */ + Expr *pStr1 = 0; + /* RHS of LIKE ends with wildcard */ + int isComplete = 0; + /* uppercase equivalent to lowercase */ + int noCase = 0; + /* Top-level operator. pExpr->op */ + int op; + /* Parsing context */ + Parse *pParse = pWInfo->pParse; + /* Database connection */ + sqlite3 *db = pParse->db; if (db->mallocFailed) { return; @@ -1111,37 +1143,44 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ #endif /* SQLITE_OMIT_OR_OPTIMIZATION */ #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION - /* Add constraints to reduce the search space on a LIKE or GLOB + /** + * Add constraints to reduce the search space on a LIKE * operator. * - * A like pattern of the form "x LIKE 'aBc%'" is changed into constraints + * A like pattern of the form "x LIKE 'aBc%'" is changed + * into constraints: * * x>='ABC' AND x<'abd' AND x LIKE 'aBc%' * - * The last character of the prefix "abc" is incremented to form the - * termination condition "abd". If case is not significant (the default - * for LIKE) then the lower-bound is made all uppercase and the upper- - * bound is made all lowercase so that the bounds also work when comparing - * BLOBs. + * The last character of the prefix "abc" is incremented + * to form the termination condition "abd". If case is + * not significant (the default for LIKE) then the + * lower-bound is made all uppercase and the upper-bound + * is made all lowercase so that the bounds also work + * when comparing BLOBs. */ if (pWC->op == TK_AND - && isLikeOrGlob(pParse, pExpr, &pStr1, &isComplete, &noCase) - ) { - Expr *pLeft; /* LHS of LIKE/GLOB operator */ - Expr *pStr2; /* Copy of pStr1 - RHS of LIKE/GLOB operator */ + && is_like(pParse, pExpr, &pStr1, &isComplete, &noCase)) { + /* LHS of LIKE operator */ + Expr *pLeft; + /* Copy of pStr1 - RHS of LIKE operator */ + Expr *pStr2; Expr *pNewExpr1; Expr *pNewExpr2; int idxNew1; int idxNew2; - const char *zCollSeqName; /* Name of collating sequence */ + /* Name of collating sequence */ + const char *zCollSeqName; const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC; pLeft = pExpr->x.pList->a[1].pExpr; pStr2 = sqlite3ExprDup(db, pStr1, 0); - /* Convert the lower bound to upper-case and the upper bound to - * lower-case (upper-case is less than lower-case in ASCII) so that - * the range constraints also work for BLOBs + /** + * Convert the lower bound to upper-case and the + * upper bound to lower-case (upper-case is less + * than lower-case in ASCII) so that the range + * constraints also work for BLOBs */ if (noCase && !pParse->db->mallocFailed) { int i; diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua index cfe2801..773bdeb 100755 --- a/test/sql-tap/alter.test.lua +++ b/test/sql-tap/alter.test.lua @@ -230,9 +230,10 @@ test:do_execsql_test( test:do_execsql_test( "alter-5.1", [[ + PRAGMA case_sensitive_like = true; CREATE TABLE xyz(x PRIMARY KEY); ALTER TABLE xyz RENAME TO "xyz1234abc"; - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; + SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; ]], { -- <alter-5.1> "xyz1234abc" @@ -243,7 +244,8 @@ test:do_execsql_test( "alter-5.2", [[ ALTER TABLE "xyz1234abc" RENAME TO xyzabc; - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; + SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; + PRAGMA case_sensitive_like = false; ]], { -- <alter-5.2> "XYZABC" diff --git a/test/sql-tap/analyze9.test.lua b/test/sql-tap/analyze9.test.lua index 3b3d52f..ec3e545 100755 --- a/test/sql-tap/analyze9.test.lua +++ b/test/sql-tap/analyze9.test.lua @@ -206,10 +206,10 @@ test:do_execsql_test( INSERT INTO t1 VALUES(81, 1, 'one-i'); INSERT INTO t1 VALUES(91, 1, 'one-j'); INSERT INTO t1 SELECT a+1,2,'two' || substr(c,4) FROM t1; - INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; - INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; - INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; - INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; + INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; + INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; + INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; + INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; CREATE INDEX t1b ON t1(b); ANALYZE; SELECT c FROM t1 WHERE b=3 AND a BETWEEN 30 AND 60; diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index 9780d2c..1620268 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -1,6 +1,6 @@ #!/usr/bin/env tarantool test = require("sqltester") -test:plan(10665) +test:plan(11521) --!./tcltestrunner.lua -- 2010 July 16 @@ -77,10 +77,7 @@ local operations = { {"<>", "ne1"}, {"!=", "ne2"}, {"IS", "is"}, --- NOTE: This test needs refactoring after deletion of GLOB & --- type restrictions for LIKE. (See #3572) --- {"LIKE", "like"}, --- {"GLOB", "glob"}, + {"LIKE", "like"}, {"AND", "and"}, {"OR", "or"}, {"MATCH", "match"}, @@ -98,12 +95,9 @@ operations = { {"+", "-"}, {"<<", ">>", "&", "|"}, {"<", "<=", ">", ">="}, --- NOTE: This test needs refactoring after deletion of GLOB & --- type restrictions for LIKE. (See #3572) -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & --- are waiting for their hour, don't confuse them --- being commented with ticket above. - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, +-- are waiting for their hour. + {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, {"AND"}, {"OR"}, } @@ -128,7 +122,7 @@ end -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary -- operators, in order from highest to lowest precedence: || * / % + - -- << >> & | < <= > >= = == != <> IS IS --- NOT IN LIKE GLOB MATCH REGEXP AND OR +-- NOT IN LIKE MATCH REGEXP AND OR -- -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same -- precedence as =. @@ -467,18 +461,63 @@ literals = { for _, op in ipairs(oplist) do for n1, rhs in ipairs(literals) do for n2, lhs in ipairs(literals) do - local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] - test:do_test( - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), - function() - --print("\n op "..op.." t "..t) - return (((op == "||") and ((t == "text") or - (t == "null"))) or - ((op ~= "||") and (((t == "integer") or - (t == "real")) or - (t == "null")))) and 1 or 0 - end, 1) + if op ~= "LIKE" then + local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] + test:do_test( + string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), + function() + return (((op == "||") and ((t == "text") or + (t == "null"))) or + ((op ~= "||") and (((t == "integer") or + (t == "real")) or + (t == "null")))) and 1 or 0 + end, 1) + end + end + end +end + +local valid_patterns = + {"'abc'", "'hexadecimal'", "''", 123, -123, 0, + 123.4, 0.0, -123.4, "X''", "X'0000'", "NULL"} + +local invalid_patterns = {"X'ABCDEF'"} + +for n1, rhs in ipairs(valid_patterns) do + for n2, lhs in ipairs(literals) do + local t = test:execsql(string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs))[1] + test:do_test( + string.format("e_expr-7.%s.LIKE.%s", n1, n2), + function() + return (t == "integer" or + t == "real" or + t == "null") and 1 or 0 + end, 1) + end +end +for n1, rhs in ipairs(invalid_patterns) do + for n2, lhs in ipairs(literals) do + local t = string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs) + local test_name = string.format("e_expr-7.%s.LIKE.%s", n1 + 12, n2) + if n2 ~= 13 then + test:do_catchsql_test( + test_name, + t, + { + -- <test_name> + 1, "LIKE pattern can only contain UTF-8 characters" + -- <test_name> + }) + else + test:do_catchsql_test( + test_name, + t, + { + -- <test_name> + 0, {"null"} + -- <test_name> + }) end end end @@ -1303,13 +1342,16 @@ end test:execsql [[ CREATE TABLE tblname(cname PRIMARY KEY); ]] -local function glob(args) - return 1 -end -box.internal.sql_create_function("GLOB", glob) -box.internal.sql_create_function("MATCH", glob) -box.internal.sql_create_function("REGEXP", glob) +-- NOTE: GLOB is removed from Tarantool, thus it'll be needed to +-- refactor these calls. They don't work right now since +-- we don't support MATHC & REGEXP. +-- local function glob(args) +-- return 1 +-- end + +-- box.internal.sql_create_function("MATCH", glob) +-- box.internal.sql_create_function("REGEXP", glob) local test_cases12 ={ {1, 123}, {2, 123.4e05}, @@ -1369,47 +1411,43 @@ local test_cases12 ={ {47, "EXPR1 LIKE EXPR2"}, {48, "EXPR1 LIKE EXPR2 ESCAPE EXPR"}, - {49, "EXPR1 GLOB EXPR2"}, - {50, "EXPR1 GLOB EXPR2 ESCAPE EXPR"}, - {51, "EXPR1 REGEXP EXPR2"}, - {52, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, - {53, "EXPR1 MATCH EXPR2"}, - {54, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, - {55, "EXPR1 NOT LIKE EXPR2"}, - {56, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, - {57, "EXPR1 NOT GLOB EXPR2"}, - {58, "EXPR1 NOT GLOB EXPR2 ESCAPE EXPR"}, - {59, "EXPR1 NOT REGEXP EXPR2"}, - {60, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, - {61, "EXPR1 NOT MATCH EXPR2"}, - {62, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, - - {63, "EXPR IS NULL"}, - {64, "EXPR IS NOT NULL"}, - - {65, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, - {66, "EXPR BETWEEN EXPR1 AND EXPR2"}, - - {67, "EXPR NOT IN (SELECT cname FROM tblname)"}, - {68, "EXPR NOT IN (1)"}, - {69, "EXPR NOT IN (1, 2, 3)"}, - {70, "EXPR NOT IN tblname"}, - {71, "EXPR IN (SELECT cname FROM tblname)"}, - {72, "EXPR IN (1)"}, - {73, "EXPR IN (1, 2, 3)"}, - {74, "EXPR IN tblname"}, - - {75, "EXISTS (SELECT cname FROM tblname)"}, - {76, "NOT EXISTS (SELECT cname FROM tblname)"}, - - {77, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, - {78, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, - {79, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, - {80, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, - {81, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, - {82, "CASE WHEN EXPR1 THEN EXPR2 END"}, - {83, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, - {84, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, + {49, "EXPR1 REGEXP EXPR2"}, + {50, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, + {51, "EXPR1 MATCH EXPR2"}, + {52, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, + {53, "EXPR1 NOT LIKE EXPR2"}, + {54, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, + {55, "EXPR1 NOT REGEXP EXPR2"}, + {56, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, + {57, "EXPR1 NOT MATCH EXPR2"}, + {58, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, + + {59, "EXPR IS NULL"}, + {60, "EXPR IS NOT NULL"}, + + {61, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, + {62, "EXPR BETWEEN EXPR1 AND EXPR2"}, + + {63, "EXPR NOT IN (SELECT cname FROM tblname)"}, + {64, "EXPR NOT IN (1)"}, + {65, "EXPR NOT IN (1, 2, 3)"}, + {66, "EXPR NOT IN tblname"}, + {67, "EXPR IN (SELECT cname FROM tblname)"}, + {68, "EXPR IN (1)"}, + {69, "EXPR IN (1, 2, 3)"}, + {70, "EXPR IN tblname"}, + + {71, "EXISTS (SELECT cname FROM tblname)"}, + {72, "NOT EXISTS (SELECT cname FROM tblname)"}, + + {73, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, + {74, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, + {75, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, + {76, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, + {77, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, + {78, "CASE WHEN EXPR1 THEN EXPR2 END"}, + {79, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, + {80, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, } for _, val in ipairs(test_cases12) do @@ -1802,7 +1840,7 @@ test:do_execsql_test( }) --------------------------------------------------------------------------- --- Test the statements related to the LIKE and GLOB operators. +-- Test the statements related to the LIKE operator. -- -- EVIDENCE-OF: R-16584-60189 The LIKE operator does a pattern matching -- comparison. @@ -2274,15 +2312,23 @@ test:do_execsql_test( -- </e_expr-16.1.7> }) --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but --- uses the Unix file globbing syntax for its wildcards. --- --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. +-- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing +-- syntax for its wildcards. -- test:do_execsql_test( + "e_expr-17.1.0", + [[ + PRAGMA case_sensitive_like = 1 + ]], { + -- <e_expr-17.1.0> + + -- <e_expr-17.1.0> + }) + +test:do_execsql_test( "e_expr-17.1.1", [[ - SELECT 'abcxyz' GLOB 'abc%' + SELECT 'abcxyz' LIKE 'abc*' ]], { -- <e_expr-17.1.1> 0 @@ -2292,7 +2338,7 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.1.2", [[ - SELECT 'abcxyz' GLOB 'abc*' + SELECT 'abcxyz' LIKE 'abc%' ]], { -- <e_expr-17.1.2> 1 @@ -2302,7 +2348,7 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.1.3", [[ - SELECT 'abcxyz' GLOB 'abc___' + SELECT 'abcxyz' LIKE 'abc???' ]], { -- <e_expr-17.1.3> 0 @@ -2312,7 +2358,7 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.1.4", [[ - SELECT 'abcxyz' GLOB 'abc???' + SELECT 'abcxyz' LIKE 'abc___' ]], { -- <e_expr-17.1.4> 1 @@ -2322,7 +2368,7 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.1.5", [[ - SELECT 'abcxyz' GLOB 'abc*' + SELECT 'abcxyz' LIKE 'abc%' ]], { -- <e_expr-17.1.5> 1 @@ -2332,7 +2378,7 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.1.6", [[ - SELECT 'ABCxyz' GLOB 'abc*' + SELECT 'ABCxyz' LIKE 'abc%' ]], { -- <e_expr-17.1.6> 0 @@ -2342,34 +2388,44 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.1.7", [[ - SELECT 'abcxyz' GLOB 'ABC*' + SELECT 'abcxyz' LIKE 'ABC%' ]], { -- <e_expr-17.1.7> 0 -- </e_expr-17.1.7> }) --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the -- NOT keyword to invert the sense of the test. -- test:do_execsql_test( + "e_expr-17.2.0", + [[ + SELECT 'abcxyz' NOT LIKE 'ABC%' + ]], { + -- <e_expr-17.2.0> + 1 + -- </e_expr-17.2.0> + }) + +test:do_execsql_test( "e_expr-17.2.1", [[ - SELECT 'abcxyz' NOT GLOB 'ABC*' + SELECT 'abcxyz' NOT LIKE 'abc%' ]], { -- <e_expr-17.2.1> - 1 + 0 -- </e_expr-17.2.1> }) test:do_execsql_test( "e_expr-17.2.2", [[ - SELECT 'abcxyz' NOT GLOB 'abc*' + PRAGMA case_sensitive_like = 0 ]], { -- <e_expr-17.2.2> - 0 - -- </e_expr-17.2.2> + + -- <e_expr-17.2.2> }) test:do_execsql_test( @@ -2405,10 +2461,11 @@ test:do_execsql_test( -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions if 0>0 then db("nullvalue", "null") + test:do_execsql_test( "e_expr-17.2.6", [[ - SELECT 'abcxyz' NOT GLOB NULL + SELECT 'abcxyz' NOT LIKE NULL ]], { -- <e_expr-17.2.6> "null" @@ -2418,92 +2475,16 @@ if 0>0 then test:do_execsql_test( "e_expr-17.2.7", [[ - SELECT 'abcxyz' NOT LIKE NULL + SELECT NULL NOT LIKE 'ABC%' ]], { -- <e_expr-17.2.7> "null" -- </e_expr-17.2.7> }) - test:do_execsql_test( - "e_expr-17.2.8", - [[ - SELECT NULL NOT GLOB 'abc*' - ]], { - -- <e_expr-17.2.8> - "null" - -- </e_expr-17.2.8> - }) - - test:do_execsql_test( - "e_expr-17.2.9", - [[ - SELECT NULL NOT LIKE 'ABC%' - ]], { - -- <e_expr-17.2.9> - "null" - -- </e_expr-17.2.9> - }) - db("nullvalue", "") end --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by --- calling the function glob(Y,X) and can be modified by overriding that --- function. - -local globargs = {} -local function globfunc(...) - local args = {...} - for i, v in ipairs(args) do - table.insert(globargs, v) - end - return 1 -end -box.internal.sql_create_function("GLOB", globfunc, 2) ---db("func", "glob", "-argcount", 2, "globfunc") - -test:do_execsql_test( - "e_expr-17.3.1", - [[ - SELECT 'abc' GLOB 'def' - ]], { - -- <e_expr-17.3.1> - 1 - -- </e_expr-17.3.1> - }) - -test:do_test( - "e_expr-17.3.2", - function() - return globargs - end, { - -- <e_expr-17.3.2> - "def", "abc" - -- </e_expr-17.3.2> - }) - -globargs = { } -test:do_execsql_test( - "e_expr-17.3.3", - [[ - SELECT 'X' NOT GLOB 'Y' - ]], { - -- <e_expr-17.3.3> - 0 - -- </e_expr-17.3.3> - }) - -test:do_test( - "e_expr-17.3.4", - function() - return globargs - end, { - -- <e_expr-17.3.4> - "Y", "X" - -- </e_expr-17.3.4> - }) - --sqlite3("db", "test.db") -- EVIDENCE-OF: R-41650-20872 No regexp() user function is defined by -- default and so use of the REGEXP operator will normally result in an 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 addf0e3..5594334 100755 --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua @@ -142,17 +142,17 @@ for i, tested_string in ipairs(invalid_testcases) do local test_name = prefix .. "2." .. tostring(i) local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" test:do_catchsql_test(test_name, test_itself, - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + {1, "LIKE pattern can only contain UTF-8 characters"}) test_name = prefix .. "3." .. tostring(i) test_itself = "SELECT 'abc' LIKE 'abc" .. tested_string .. "';" test:do_catchsql_test(test_name, test_itself, - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + {1, "LIKE pattern can only contain UTF-8 characters"}) test_name = prefix .. "4." .. tostring(i) test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "c';" test:do_catchsql_test(test_name, test_itself, - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + {1, "LIKE pattern can only contain UTF-8 characters"}) -- Just skipping if row value predicand contains invalid character. diff --git a/test/sql-tap/like2.test.lua b/test/sql-tap/like2.test.lua index abcac39..c6c81cb 100755 --- a/test/sql-tap/like2.test.lua +++ b/test/sql-tap/like2.test.lua @@ -12,11 +12,11 @@ test:plan(282) -- May you find forgiveness for yourself and forgive others. -- May you share freely, never taking more than you give. -- -------------------------------------------------------------------------- --- This file implements regression tests for SQLite library. The --- focus of this file is testing the LIKE and GLOB operators and --- in particular the optimizations that occur to help those operators --- run faster. +----------------------------------------------------------------- +-- This file implements regression tests for SQLite library. The +-- focus of this file is testing the LIKE operator and +-- in particular the optimizations that occur to help this +-- operator run faster. -- -- $Id: like2.test,v 1.1 2008/05/26 18:33:41 drh Exp $ -- ["set","testdir",[["file","dirname",["argv0"]]]] diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua index 505d2fa..0bc71a0 100755 --- a/test/sql-tap/like3.test.lua +++ b/test/sql-tap/like3.test.lua @@ -12,13 +12,13 @@ test:plan(7) -- May you find forgiveness for yourself and forgive others. -- May you share freely, never taking more than you give. -- -------------------------------------------------------------------------- +----------------------------------------------------------------- -- --- This file implements regression tests for SQLite library. The --- focus of this file is testing the LIKE and GLOB operators and --- in particular the optimizations that occur to help those operators --- run faster and that those optimizations work correctly when there --- are both strings and blobs being tested. +-- This file implements regression tests for SQLite library. The +-- focus of this file is testing the LIKE operator and +-- in particular the optimizations that occur to help this +-- operator run faster and that those optimizations work +-- correctly when there are both strings and blobs being tested. -- -- Ticket 05f43be8fdda9fbd948d374319b99b054140bc36 shows that the following -- SQL was not working correctly: @@ -70,10 +70,11 @@ test:do_execsql_test( test:do_execsql_test( "like3-2.0", [[ + PRAGMA case_sensitive_like = 1; CREATE TABLE t2(a PRIMARY KEY, b TEXT); INSERT INTO t2 SELECT a, b FROM t1; CREATE INDEX t2ba ON t2(b,a); - SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; + SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; ]], { -- <like3-2.0> 1, "abc", 4, "abc" @@ -83,7 +84,7 @@ test:do_execsql_test( test:do_execsql_test( "like3-2.1", [[ - SELECT a, b FROM t2 WHERE +b GLOB 'ab*' ORDER BY +a; + SELECT a, b FROM t2 WHERE +b LIKE 'ab%' ORDER BY +a; ]], { -- <like3-2.1> 1, "abc", 4, "abc" @@ -93,7 +94,7 @@ test:do_execsql_test( test:do_execsql_test( "like3-2.2", [[ - SELECT a, b FROM t2 WHERE b>=x'6162' AND b GLOB 'ab*' + SELECT a, b FROM t2 WHERE b>=x'6162' AND b LIKE 'ab%' ]], { -- <like3-2.2> 4, "abc" @@ -103,7 +104,7 @@ test:do_execsql_test( test:do_execsql_test( "like3-2.3", [[ - SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b GLOB 'ab*' + SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b LIKE 'ab%' ]], { -- <like3-2.3> 4, "abc" @@ -113,7 +114,7 @@ test:do_execsql_test( test:do_execsql_test( "like3-2.4", [[ - SELECT a, b FROM t2 WHERE b GLOB 'ab*' AND b>=x'6162' + SELECT a, b FROM t2 WHERE b LIKE 'ab%' AND b>=x'6162' ]], { -- <like3-2.4> 4, "abc" @@ -123,7 +124,8 @@ test:do_execsql_test( test:do_execsql_test( "like3-2.5", [[ - SELECT a, b FROM t2 WHERE +b GLOB 'ab*' AND +b>=x'6162' + SELECT a, b FROM t2 WHERE +b LIKE 'ab%' AND +b>=x'6162'; + PRAGMA case_sensitive_like = 0; ]], { -- <like3-2.5> 4, "abc" diff --git a/test/sql-tap/tkt1537.test.lua b/test/sql-tap/tkt1537.test.lua index caa4284..4b2d78c 100755 --- a/test/sql-tap/tkt1537.test.lua +++ b/test/sql-tap/tkt1537.test.lua @@ -185,7 +185,7 @@ test:do_execsql_test( test:do_execsql_test( "tkt1537-3.1", [[ - SELECT * FROM t1 LEFT JOIN t2 ON b GLOB 'abc*' WHERE t1.id=1; + SELECT * FROM t1 LEFT JOIN t2 ON b LIKE 'abc%' WHERE t1.id=1; ]], { -- <tkt1537-3.1> 1, "", "", "", "" @@ -195,7 +195,7 @@ test:do_execsql_test( test:do_execsql_test( "tkt1537-3.2", [[ - SELECT * FROM t2 LEFT JOIN t1 ON a1 GLOB 'abc*' WHERE t2.id=3; + SELECT * FROM t2 LEFT JOIN t1 ON a1 LIKE 'abc%' WHERE t2.id=3; ]], { -- <tkt1537-3.2> 3, 1, "", "", "" diff --git a/test/sql-tap/triggerA.test.lua b/test/sql-tap/triggerA.test.lua index da1add8..530e488 100755 --- a/test/sql-tap/triggerA.test.lua +++ b/test/sql-tap/triggerA.test.lua @@ -76,7 +76,7 @@ test:do_test( "triggerA-1.3", function() return test:execsql [[ - CREATE VIEW v2 AS SELECT x, y FROM t1 WHERE y GLOB '*e*'; + CREATE VIEW v2 AS SELECT x, y FROM t1 WHERE y LIKE '%e%'; SELECT * FROM v2 ORDER BY 1; ]] end, { diff --git a/test/sql-tap/where3.test.lua b/test/sql-tap/where3.test.lua index 4582737..9676131 100755 --- a/test/sql-tap/where3.test.lua +++ b/test/sql-tap/where3.test.lua @@ -404,7 +404,7 @@ if 0 CREATE TABLE t401(p INTEGER PRIMARY KEY, q, r); CREATE TABLE t402(x INTEGER PRIMARY KEY, y, z); EXPLAIN QUERY PLAN - SELECT * FROM t400, t401, t402 WHERE t402.z GLOB 'abc*'; + SELECT * FROM t400, t401, t402 WHERE t402.z LIKE 'abc%'; ]], { -- <where3-4.0> 0, 0, 2, "SCAN TABLE T402", 0, 1, 0, "SCAN TABLE T400", 0, 2, 1, "SCAN TABLE T401" @@ -415,7 +415,7 @@ if 0 "where3-4.1", [[ EXPLAIN QUERY PLAN - SELECT * FROM t400, t401, t402 WHERE t401.r GLOB 'abc*'; + SELECT * FROM t400, t401, t402 WHERE t401.r LIKE 'abc%'; ]], { -- <where3-4.1> 0, 0, 1, "SCAN TABLE T401", 0, 1, 0, "SCAN TABLE T400", 0, 2, 2, "SCAN TABLE T402" @@ -426,7 +426,7 @@ if 0 "where3-4.2", [[ EXPLAIN QUERY PLAN - SELECT * FROM t400, t401, t402 WHERE t400.c GLOB 'abc*'; + SELECT * FROM t400, t401, t402 WHERE t400.c LIKE 'abc%'; ]], { -- <where3-4.2> 0, 0, 0, "SCAN TABLE T400", 0, 1, 1, "SCAN TABLE T401", 0, 2, 2, "SCAN TABLE T402" diff --git a/test/sql-tap/where7.test.lua b/test/sql-tap/where7.test.lua index 6691dd0..27d25e6 100755 --- a/test/sql-tap/where7.test.lua +++ b/test/sql-tap/where7.test.lua @@ -448,12 +448,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1070 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.2.1> @@ -467,12 +467,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1070 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.2.2> @@ -487,11 +487,11 @@ test:do_test( SELECT a FROM t2 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR ((a BETWEEN 33 AND 35) AND a!=34) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=220 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.3.1> @@ -506,11 +506,11 @@ test:do_test( SELECT a FROM t3 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR ((a BETWEEN 33 AND 35) AND a!=34) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=220 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.3.2> @@ -525,7 +525,7 @@ test:do_test( SELECT a FROM t2 WHERE b=190 OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=407 ]]) end, { @@ -541,7 +541,7 @@ test:do_test( SELECT a FROM t3 WHERE b=190 OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=407 ]]) end, { @@ -555,7 +555,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=795 OR b=1103 OR b=583 @@ -571,7 +571,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=795 OR b=1103 OR b=583 @@ -589,7 +589,7 @@ test:do_test( SELECT a FROM t2 WHERE a=74 OR a=50 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 16 AND 18) AND a!=17) OR c=21021 OR ((a BETWEEN 82 AND 84) AND a!=83) @@ -607,7 +607,7 @@ test:do_test( SELECT a FROM t3 WHERE a=74 OR a=50 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 16 AND 18) AND a!=17) OR c=21021 OR ((a BETWEEN 82 AND 84) AND a!=83) @@ -746,7 +746,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR c=11011 OR c=20020 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) @@ -763,7 +763,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR c=11011 OR c=20020 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) @@ -781,7 +781,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=792 OR a=97 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) @@ -804,7 +804,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=792 OR a=97 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) @@ -827,11 +827,11 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 50 AND 52) AND a!=51) OR c=9009 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=539 OR b=297 - OR (g='wvutsrq' AND f GLOB 'klmno*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='wvutsrq' AND f LIKE 'klmno%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=957 OR f='xyzabcdef' OR b=619 @@ -849,11 +849,11 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 50 AND 52) AND a!=51) OR c=9009 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=539 OR b=297 - OR (g='wvutsrq' AND f GLOB 'klmno*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='wvutsrq' AND f LIKE 'klmno%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=957 OR f='xyzabcdef' OR b=619 @@ -931,7 +931,7 @@ test:do_test( SELECT a FROM t2 WHERE b=938 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.16.1> @@ -946,7 +946,7 @@ test:do_test( SELECT a FROM t3 WHERE b=938 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.16.2> @@ -963,12 +963,12 @@ test:do_test( OR f='zabcdefgh' OR b=308 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=443 OR ((a BETWEEN 12 AND 14) AND a!=13) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.17.1> @@ -985,12 +985,12 @@ test:do_test( OR f='zabcdefgh' OR b=308 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=443 OR ((a BETWEEN 12 AND 14) AND a!=13) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.17.2> @@ -1037,13 +1037,13 @@ test:do_test( SELECT a FROM t2 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=46 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=73 OR c=20020 OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=267 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.19.1> @@ -1058,13 +1058,13 @@ test:do_test( SELECT a FROM t3 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=46 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=73 OR c=20020 OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=267 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.19.2> @@ -1078,7 +1078,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 27 AND 29) AND a!=28) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.20.1> @@ -1092,7 +1092,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 27 AND 29) AND a!=28) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.20.2> @@ -1111,9 +1111,9 @@ test:do_test( OR ((a BETWEEN 87 AND 89) AND a!=88) OR f='bcdefghij' OR b=586 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) OR a=9 ]]) @@ -1134,9 +1134,9 @@ test:do_test( OR ((a BETWEEN 87 AND 89) AND a!=88) OR f='bcdefghij' OR b=586 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) OR a=9 ]]) @@ -1154,7 +1154,7 @@ test:do_test( WHERE b=399 OR c=28028 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) end, { @@ -1171,7 +1171,7 @@ test:do_test( WHERE b=399 OR c=28028 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) end, { @@ -1185,15 +1185,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR ((a BETWEEN 96 AND 98) AND a!=97) OR c=14014 OR c=33033 OR a=89 OR b=770 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR a=35 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR b=253 OR c=14014 ]]) @@ -1208,15 +1208,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR ((a BETWEEN 96 AND 98) AND a!=97) OR c=14014 OR c=33033 OR a=89 OR b=770 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR a=35 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR b=253 OR c=14014 ]]) @@ -1231,10 +1231,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=330 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=16 ]]) end, { @@ -1248,10 +1248,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=330 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=16 ]]) end, { @@ -1268,7 +1268,7 @@ test:do_test( WHERE c=5005 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR ((a BETWEEN 36 AND 38) AND a!=37) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.25.1> @@ -1284,7 +1284,7 @@ test:do_test( WHERE c=5005 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR ((a BETWEEN 36 AND 38) AND a!=37) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.25.2> @@ -1298,9 +1298,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR ((a BETWEEN 64 AND 66) AND a!=65) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=33 ]]) end, { @@ -1315,9 +1315,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR ((a BETWEEN 64 AND 66) AND a!=65) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=33 ]]) end, { @@ -1361,8 +1361,8 @@ test:do_test( SELECT a FROM t2 WHERE c=18018 OR a=94 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1012 OR a=3 OR d>1e10 @@ -1382,8 +1382,8 @@ test:do_test( SELECT a FROM t3 WHERE c=18018 OR a=94 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1012 OR a=3 OR d>1e10 @@ -1405,11 +1405,11 @@ test:do_test( OR c=11011 OR b=297 OR a=63 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR a=76 OR b=1026 OR a=26 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR c=30030 ]]) end, { @@ -1427,11 +1427,11 @@ test:do_test( OR c=11011 OR b=297 OR a=63 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR a=76 OR b=1026 OR a=26 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR c=30030 ]]) end, { @@ -1449,7 +1449,7 @@ test:do_test( OR b=1070 OR a=59 OR b=715 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.30.1> @@ -1466,7 +1466,7 @@ test:do_test( OR b=1070 OR a=59 OR b=715 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.30.2> @@ -1479,13 +1479,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=1056 OR b=1012 OR ((a BETWEEN 57 AND 59) AND a!=58) OR ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.31.1> @@ -1498,13 +1498,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=1056 OR b=1012 OR ((a BETWEEN 57 AND 59) AND a!=58) OR ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.31.2> @@ -1518,7 +1518,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='rstuvwxyz' - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) @@ -1534,7 +1534,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='rstuvwxyz' - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) @@ -1549,13 +1549,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR c=12012 OR a=18 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.33.1> @@ -1568,13 +1568,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR c=12012 OR a=18 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.33.2> @@ -1622,7 +1622,7 @@ test:do_test( OR ((a BETWEEN 67 AND 69) AND a!=68) OR c=33033 OR b=11 - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR ((a BETWEEN 7 AND 9) AND a!=8) ]]) end, { @@ -1643,7 +1643,7 @@ test:do_test( OR ((a BETWEEN 67 AND 69) AND a!=68) OR c=33033 OR b=11 - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR ((a BETWEEN 7 AND 9) AND a!=8) ]]) end, { @@ -1719,7 +1719,7 @@ test:do_test( SELECT a FROM t2 WHERE b=165 OR b=201 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR a=32 ]]) end, { @@ -1735,7 +1735,7 @@ test:do_test( SELECT a FROM t3 WHERE b=165 OR b=201 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR a=32 ]]) end, { @@ -1749,8 +1749,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.39.1> @@ -1763,8 +1763,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.39.2> @@ -1785,8 +1785,8 @@ test:do_test( OR a=18 OR a=34 OR b=132 - OR (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR c=18018 ]]) end, { @@ -1808,8 +1808,8 @@ test:do_test( OR a=18 OR a=34 OR b=132 - OR (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR c=18018 ]]) end, { @@ -1851,13 +1851,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR b=297 OR b=113 OR b=176 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) OR a=67 OR c=26026 @@ -1873,13 +1873,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR b=297 OR b=113 OR b=176 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) OR a=67 OR c=26026 @@ -1940,8 +1940,8 @@ test:do_test( OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=487 OR b=619 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.44.1> @@ -1959,8 +1959,8 @@ test:do_test( OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=487 OR b=619 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.44.2> @@ -1980,7 +1980,7 @@ test:do_test( OR c=17017 OR a=82 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=39.0 AND d<40.0 AND d IS NOT NULL) ]]) @@ -2002,7 +2002,7 @@ test:do_test( OR c=17017 OR a=82 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=39.0 AND d<40.0 AND d IS NOT NULL) ]]) @@ -2017,7 +2017,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR c=22022 ]]) end, { @@ -2031,7 +2031,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR c=22022 ]]) end, { @@ -2048,7 +2048,7 @@ test:do_test( WHERE c=7007 OR b=91 OR b=212 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR c=28028 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) ]]) @@ -2066,7 +2066,7 @@ test:do_test( WHERE c=7007 OR b=91 OR b=212 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR c=28028 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) ]]) @@ -2111,9 +2111,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR c=4004 OR b=322 @@ -2131,9 +2131,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR c=4004 OR b=322 @@ -2156,8 +2156,8 @@ test:do_test( OR a=46 OR b=660 OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=355 OR a=93 OR b=297 @@ -2178,8 +2178,8 @@ test:do_test( OR a=46 OR b=660 OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=355 OR a=93 OR b=297 @@ -2197,7 +2197,7 @@ test:do_test( SELECT a FROM t2 WHERE b=190 OR a=62 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.51.1> @@ -2212,7 +2212,7 @@ test:do_test( SELECT a FROM t3 WHERE b=190 OR a=62 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.51.2> @@ -2306,7 +2306,7 @@ test:do_test( OR b=256 OR a=72 OR c>=34035 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=674 OR a=22 ]]) @@ -2328,7 +2328,7 @@ test:do_test( OR b=256 OR a=72 OR c>=34035 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=674 OR a=22 ]]) @@ -2381,9 +2381,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.56.1> @@ -2396,9 +2396,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.56.2> @@ -2413,7 +2413,7 @@ test:do_test( SELECT a FROM t2 WHERE b=748 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR b=630 ]]) @@ -2430,7 +2430,7 @@ test:do_test( SELECT a FROM t3 WHERE b=748 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR b=630 ]]) @@ -2521,7 +2521,7 @@ test:do_test( SELECT a FROM t2 WHERE b=979 OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.60.1> @@ -2536,7 +2536,7 @@ test:do_test( SELECT a FROM t3 WHERE b=979 OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.60.2> @@ -2555,7 +2555,7 @@ test:do_test( OR b=726 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -2575,7 +2575,7 @@ test:do_test( OR b=726 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -2593,10 +2593,10 @@ test:do_test( OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=924 OR c=11011 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=231 OR b=872 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.62.1> @@ -2613,10 +2613,10 @@ test:do_test( OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=924 OR c=11011 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=231 OR b=872 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.62.2> @@ -2631,8 +2631,8 @@ test:do_test( SELECT a FROM t2 WHERE a=24 OR b=473 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=509 OR b=924 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -2650,8 +2650,8 @@ test:do_test( SELECT a FROM t3 WHERE a=24 OR b=473 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=509 OR b=924 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -2668,11 +2668,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=363 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 56 AND 58) AND a!=57) ]]) @@ -2688,11 +2688,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=363 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 56 AND 58) AND a!=57) ]]) @@ -2711,9 +2711,9 @@ test:do_test( OR e IS NULL OR b=495 OR 1000000<b - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR a=45 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=85 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -2732,9 +2732,9 @@ test:do_test( OR e IS NULL OR b=495 OR 1000000<b - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR a=45 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=85 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -2781,9 +2781,9 @@ test:do_test( SELECT a FROM t2 WHERE c>=34035 OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR a=91 ]]) @@ -2800,9 +2800,9 @@ test:do_test( SELECT a FROM t3 WHERE c>=34035 OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR a=91 ]]) @@ -2817,9 +2817,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=649 OR b=231 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -2837,9 +2837,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=649 OR b=231 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -2918,11 +2918,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=65 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR c=22022 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR b=671 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=91 OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR ((a BETWEEN 47 AND 49) AND a!=48) @@ -2941,11 +2941,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=65 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR c=22022 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR b=671 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=91 OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR ((a BETWEEN 47 AND 49) AND a!=48) @@ -2995,7 +2995,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR a=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=212 @@ -3014,7 +3014,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR a=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=212 @@ -3031,11 +3031,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR b=168 OR b=25 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.74.1> @@ -3048,11 +3048,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR b=168 OR b=25 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.74.2> @@ -3098,10 +3098,10 @@ test:do_test( WHERE c=31031 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR ((a BETWEEN 87 AND 89) AND a!=88) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=49 OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.76.1> @@ -3117,10 +3117,10 @@ test:do_test( WHERE c=31031 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR ((a BETWEEN 87 AND 89) AND a!=88) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=49 OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.76.2> @@ -3170,7 +3170,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR ((a BETWEEN 30 AND 32) AND a!=31) OR b=1089 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) @@ -3187,7 +3187,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR ((a BETWEEN 30 AND 32) AND a!=31) OR b=1089 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) @@ -3205,8 +3205,8 @@ test:do_test( SELECT a FROM t2 WHERE b=399 OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=10 OR b=1026 ]]) @@ -3223,8 +3223,8 @@ test:do_test( SELECT a FROM t3 WHERE b=399 OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=10 OR b=1026 ]]) @@ -3239,11 +3239,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=465 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.80.1> @@ -3256,11 +3256,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=465 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.80.2> @@ -3275,7 +3275,7 @@ test:do_test( SELECT a FROM t2 WHERE a=25 OR b=792 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.81.1> @@ -3290,7 +3290,7 @@ test:do_test( SELECT a FROM t3 WHERE a=25 OR b=792 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.81.2> @@ -3308,10 +3308,10 @@ test:do_test( OR a=13 OR a=15 OR ((a BETWEEN 6 AND 8) AND a!=7) - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=27 OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=32 OR a=39 ]]) @@ -3331,10 +3331,10 @@ test:do_test( OR a=13 OR a=15 OR ((a BETWEEN 6 AND 8) AND a!=7) - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=27 OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=32 OR a=39 ]]) @@ -3350,14 +3350,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='hijklmnop' - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) OR b=528 OR c=30030 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.83.1> @@ -3371,14 +3371,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='hijklmnop' - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) OR b=528 OR c=30030 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.83.2> @@ -3425,11 +3425,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR b=748 OR b=696 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.85.1> @@ -3442,11 +3442,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR b=748 OR b=696 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.85.2> @@ -3460,10 +3460,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=87 OR a=80 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=784 OR a=49 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -3480,10 +3480,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=87 OR a=80 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=784 OR a=49 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -3500,13 +3500,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 14 AND 16) AND a!=15) - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR c=1001 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR c=33033 ]]) end, { @@ -3521,13 +3521,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 14 AND 16) AND a!=15) - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR c=1001 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR c=33033 ]]) end, { @@ -3611,13 +3611,13 @@ test:do_test( OR b=553 OR a=64 OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR a=62 OR b=1081 OR b=770 OR b=762 OR b=803 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.90.1> @@ -3634,13 +3634,13 @@ test:do_test( OR b=553 OR a=64 OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR a=62 OR b=1081 OR b=770 OR b=762 OR b=803 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.90.2> @@ -3653,8 +3653,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR c=17017 OR b=168 OR ((a BETWEEN 77 AND 79) AND a!=78) @@ -3670,8 +3670,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR c=17017 OR b=168 OR ((a BETWEEN 77 AND 79) AND a!=78) @@ -3690,12 +3690,12 @@ test:do_test( WHERE c=34034 OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) OR a=44 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR c=31031 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=619 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR ((a BETWEEN 29 AND 31) AND a!=30) ]]) end, { @@ -3712,12 +3712,12 @@ test:do_test( WHERE c=34034 OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) OR a=44 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR c=31031 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=619 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR ((a BETWEEN 29 AND 31) AND a!=30) ]]) end, { @@ -3738,10 +3738,10 @@ test:do_test( OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=110 OR f='klmnopqrs' - OR (g='fedcbaz' AND f GLOB 'qrstu*') - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=674 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.93.1> @@ -3761,10 +3761,10 @@ test:do_test( OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=110 OR f='klmnopqrs' - OR (g='fedcbaz' AND f GLOB 'qrstu*') - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=674 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.93.2> @@ -3882,7 +3882,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=231 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.97.1> @@ -3896,7 +3896,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=231 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.97.2> @@ -4057,7 +4057,7 @@ test:do_test( OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=630 OR c=19019 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR a=24 OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) @@ -4077,7 +4077,7 @@ test:do_test( OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=630 OR c=19019 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR a=24 OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) @@ -4128,11 +4128,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='stuvwxyza' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 1 AND 3) AND a!=2) OR b=1037 OR f='zabcdefgh' - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.104.1> @@ -4146,11 +4146,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='stuvwxyza' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 1 AND 3) AND a!=2) OR b=1037 OR f='zabcdefgh' - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.104.2> @@ -4163,7 +4163,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 30 AND 32) AND a!=31) ]]) @@ -4178,7 +4178,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 30 AND 32) AND a!=31) ]]) @@ -4197,8 +4197,8 @@ test:do_test( OR b=190 OR ((a BETWEEN 38 AND 40) AND a!=39) OR ((a BETWEEN 70 AND 72) AND a!=71) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=704 ]]) end, { @@ -4216,8 +4216,8 @@ test:do_test( OR b=190 OR ((a BETWEEN 38 AND 40) AND a!=39) OR ((a BETWEEN 70 AND 72) AND a!=71) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=704 ]]) end, { @@ -4234,7 +4234,7 @@ test:do_test( WHERE b=88 OR f='vwxyzabcd' OR f='fghijklmn' - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.107.1> @@ -4250,7 +4250,7 @@ test:do_test( WHERE b=88 OR f='vwxyzabcd' OR f='fghijklmn' - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.107.2> @@ -4296,7 +4296,7 @@ test:do_test( WHERE ((a BETWEEN 47 AND 49) AND a!=48) OR a=5 OR b=179 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=69 ]]) end, { @@ -4313,7 +4313,7 @@ test:do_test( WHERE ((a BETWEEN 47 AND 49) AND a!=48) OR a=5 OR b=179 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=69 ]]) end, { @@ -4328,8 +4328,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=971 - OR (g='xwvutsr' AND f GLOB 'hijkl*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=828 OR a=81 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -4350,8 +4350,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=971 - OR (g='xwvutsr' AND f GLOB 'hijkl*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=828 OR a=81 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -4399,8 +4399,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'opqrs*') - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (g='lkjihgf' AND f LIKE 'opqrs%') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.112.1> @@ -4413,8 +4413,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'opqrs*') - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (g='lkjihgf' AND f LIKE 'opqrs%') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.112.2> @@ -4463,8 +4463,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=396 ]]) end, { @@ -4478,8 +4478,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=396 ]]) end, { @@ -4531,7 +4531,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=396 OR b=630 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR c=3003 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) ]]) @@ -4552,7 +4552,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=396 OR b=630 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR c=3003 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) ]]) @@ -4573,8 +4573,8 @@ test:do_test( OR b=957 OR b=311 OR b=143 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) end, { @@ -4594,8 +4594,8 @@ test:do_test( OR b=957 OR b=311 OR b=143 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) end, { @@ -4612,7 +4612,7 @@ test:do_test( WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 94 AND 96) AND a!=95) OR b=451 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.118.1> @@ -4628,7 +4628,7 @@ test:do_test( WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 94 AND 96) AND a!=95) OR b=451 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.118.2> @@ -4645,11 +4645,11 @@ test:do_test( OR b=451 OR b=363 OR b=330 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 52 AND 54) AND a!=53) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 81 AND 83) AND a!=82) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.119.1> @@ -4666,11 +4666,11 @@ test:do_test( OR b=451 OR b=363 OR b=330 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 52 AND 54) AND a!=53) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 81 AND 83) AND a!=82) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.119.2> @@ -4683,9 +4683,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR e IS NULL OR b=759 ]]) @@ -4700,9 +4700,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR e IS NULL OR b=759 ]]) @@ -4717,9 +4717,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.121.1> @@ -4732,9 +4732,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.121.2> @@ -4815,14 +4815,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'tuvwx*') + WHERE (g='fedcbaz' AND f LIKE 'tuvwx%') OR b=421 OR b=429 OR b=498 OR b=33 OR b=198 OR c=14014 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.124.1> @@ -4835,14 +4835,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'tuvwx*') + WHERE (g='fedcbaz' AND f LIKE 'tuvwx%') OR b=421 OR b=429 OR b=498 OR b=33 OR b=198 OR c=14014 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.124.2> @@ -4858,13 +4858,13 @@ test:do_test( WHERE b=47 OR c=31031 OR a=38 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=242 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR b=352 OR a=49 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.125.1> @@ -4880,13 +4880,13 @@ test:do_test( WHERE b=47 OR c=31031 OR a=38 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=242 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR b=352 OR a=49 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.125.2> @@ -4969,9 +4969,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=528 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.128.1> @@ -4984,9 +4984,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=528 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.128.2> @@ -5031,7 +5031,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR 1000000<b - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=24 ]]) @@ -5048,7 +5048,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR 1000000<b - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=24 ]]) @@ -5071,8 +5071,8 @@ test:do_test( OR a=14 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=440 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') ]]) end, { -- <where7-2.131.1> @@ -5093,8 +5093,8 @@ test:do_test( OR a=14 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=440 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') ]]) end, { -- <where7-2.131.2> @@ -5226,9 +5226,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=27 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=1045 OR a=84 OR f='qrstuvwxy' @@ -5245,9 +5245,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=27 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=1045 OR a=84 OR f='qrstuvwxy' @@ -5266,7 +5266,7 @@ test:do_test( WHERE b=704 OR b=949 OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=24024 OR b=553 OR a=18 @@ -5286,7 +5286,7 @@ test:do_test( WHERE b=704 OR b=949 OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=24024 OR b=553 OR a=18 @@ -5303,8 +5303,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=902 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=25 @@ -5323,8 +5323,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=902 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=25 @@ -5405,8 +5405,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=641 OR ((a BETWEEN 36 AND 38) AND a!=37) ]]) @@ -5421,8 +5421,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=641 OR ((a BETWEEN 36 AND 38) AND a!=37) ]]) @@ -5442,9 +5442,9 @@ test:do_test( OR ((a BETWEEN 44 AND 46) AND a!=45) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=11 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=52 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=13 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -5464,9 +5464,9 @@ test:do_test( OR ((a BETWEEN 44 AND 46) AND a!=45) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=11 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=52 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=13 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -5487,7 +5487,7 @@ test:do_test( OR b=1045 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.143.1> @@ -5506,7 +5506,7 @@ test:do_test( OR b=1045 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.143.2> @@ -5562,9 +5562,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=91 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR b=102 @@ -5584,9 +5584,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=91 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR b=102 @@ -5605,8 +5605,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'opqrs*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='vutsrqp' AND f LIKE 'opqrs%') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=990 OR a=52 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) @@ -5622,8 +5622,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'opqrs*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='vutsrqp' AND f LIKE 'opqrs%') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=990 OR a=52 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) @@ -5683,13 +5683,13 @@ test:do_test( OR b=421 OR ((a BETWEEN 22 AND 24) AND a!=23) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR c=22022 OR b=825 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.148.1> @@ -5706,13 +5706,13 @@ test:do_test( OR b=421 OR ((a BETWEEN 22 AND 24) AND a!=23) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR c=22022 OR b=825 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.148.2> @@ -5729,7 +5729,7 @@ test:do_test( OR b=484 OR b=1026 OR a=90 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=608 OR a=32 ]]) @@ -5748,7 +5748,7 @@ test:do_test( OR b=484 OR b=1026 OR a=90 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=608 OR a=32 ]]) @@ -5771,7 +5771,7 @@ test:do_test( OR a=55 OR b=773 OR b=319 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.150.1> @@ -5792,7 +5792,7 @@ test:do_test( OR a=55 OR b=773 OR b=319 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.150.2> @@ -5805,7 +5805,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR f='mnopqrstu' OR a=62 ]]) @@ -5820,7 +5820,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR f='mnopqrstu' OR a=62 ]]) @@ -5839,9 +5839,9 @@ test:do_test( OR b=1045 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR c=13013 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=124 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.152.1> @@ -5858,9 +5858,9 @@ test:do_test( OR b=1045 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR c=13013 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=124 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.152.2> @@ -5880,7 +5880,7 @@ test:do_test( OR b=421 OR b=803 OR c=4004 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.153.1> @@ -5900,7 +5900,7 @@ test:do_test( OR b=421 OR b=803 OR c=4004 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.153.2> @@ -5913,9 +5913,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=99 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.154.1> @@ -5928,9 +5928,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=99 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.154.2> @@ -5972,9 +5972,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=795 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='jklmnopqr' - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=1056 ]]) @@ -5990,9 +5990,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=795 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='jklmnopqr' - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=1056 ]]) @@ -6146,7 +6146,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=23 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=641 OR b=352 OR b=179 @@ -6166,7 +6166,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=23 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=641 OR b=352 OR b=179 @@ -6189,7 +6189,7 @@ test:do_test( OR b=1078 OR ((a BETWEEN 11 AND 13) AND a!=12) OR c=12012 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=319 OR c=5005 OR 1000000<b @@ -6211,7 +6211,7 @@ test:do_test( OR b=1078 OR ((a BETWEEN 11 AND 13) AND a!=12) OR c=12012 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=319 OR c=5005 OR 1000000<b @@ -6230,8 +6230,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='cdefghijk' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) ]]) end, { @@ -6246,8 +6246,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='cdefghijk' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) ]]) end, { @@ -6297,13 +6297,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=891 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR b=484 OR a=62 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.165.1> @@ -6316,13 +6316,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=891 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR b=484 OR a=62 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.165.2> @@ -6336,11 +6336,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=363 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=39 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -6356,11 +6356,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=363 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=39 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -6378,7 +6378,7 @@ test:do_test( WHERE c=30030 OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=850 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.167.1> @@ -6394,7 +6394,7 @@ test:do_test( WHERE c=30030 OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=850 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.167.2> @@ -6540,7 +6540,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=333 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=407 OR a=5 @@ -6559,7 +6559,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=333 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=407 OR a=5 @@ -6580,7 +6580,7 @@ test:do_test( WHERE b<0 OR b=352 OR b=517 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 12 AND 14) AND a!=13) OR b=1012 OR ((a BETWEEN 11 AND 13) AND a!=12) @@ -6599,7 +6599,7 @@ test:do_test( WHERE b<0 OR b=352 OR b=517 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 12 AND 14) AND a!=13) OR b=1012 OR ((a BETWEEN 11 AND 13) AND a!=12) @@ -6615,11 +6615,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR c<=10 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=32 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR d<0.0 ]]) end, { @@ -6633,11 +6633,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR c<=10 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=32 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR d<0.0 ]]) end, { @@ -6653,9 +6653,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 20 AND 22) AND a!=21) OR b=1045 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=26 - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.175.1> @@ -6670,9 +6670,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 20 AND 22) AND a!=21) OR b=1045 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=26 - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.175.2> @@ -6714,7 +6714,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR c=32032 OR b=289 OR ((a BETWEEN 17 AND 19) AND a!=18) @@ -6732,7 +6732,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR c=32032 OR b=289 OR ((a BETWEEN 17 AND 19) AND a!=18) @@ -6752,7 +6752,7 @@ test:do_test( WHERE ((a BETWEEN 15 AND 17) AND a!=16) OR ((a BETWEEN 57 AND 59) AND a!=58) OR b=33 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.178.1> @@ -6768,7 +6768,7 @@ test:do_test( WHERE ((a BETWEEN 15 AND 17) AND a!=16) OR ((a BETWEEN 57 AND 59) AND a!=58) OR b=33 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.178.2> @@ -6783,15 +6783,15 @@ test:do_test( SELECT a FROM t2 WHERE b=828 OR b=341 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=902 OR ((a BETWEEN 64 AND 66) AND a!=65) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=242 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.179.1> @@ -6806,15 +6806,15 @@ test:do_test( SELECT a FROM t3 WHERE b=828 OR b=341 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=902 OR ((a BETWEEN 64 AND 66) AND a!=65) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=242 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.179.2> @@ -6827,7 +6827,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR b=982 OR b=781 OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -6845,7 +6845,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR b=982 OR b=781 OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -6863,13 +6863,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR a=31 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=76 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=176 ]]) end, { @@ -6883,13 +6883,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR a=31 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=76 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=176 ]]) end, { @@ -6903,11 +6903,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=14 OR ((a BETWEEN 88 AND 90) AND a!=89) OR f='zabcdefgh' @@ -6923,11 +6923,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=14 OR ((a BETWEEN 88 AND 90) AND a!=89) OR f='zabcdefgh' @@ -6943,7 +6943,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR b=286 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=91 @@ -6960,7 +6960,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR b=286 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=91 @@ -6977,9 +6977,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'nopqr*') + WHERE (g='lkjihgf' AND f LIKE 'nopqr%') OR c=19019 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=374 ]]) end, { @@ -6993,9 +6993,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'nopqr*') + WHERE (g='lkjihgf' AND f LIKE 'nopqr%') OR c=19019 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=374 ]]) end, { @@ -7010,7 +7010,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE g IS NULL - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.185.1> @@ -7024,7 +7024,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE g IS NULL - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.185.2> @@ -7067,10 +7067,10 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 66 AND 68) AND a!=67) OR b=564 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=234 OR b=641 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) OR a=98 @@ -7088,10 +7088,10 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 66 AND 68) AND a!=67) OR b=564 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=234 OR b=641 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) OR a=98 @@ -7111,12 +7111,12 @@ test:do_test( OR b=44 OR b=539 OR c=11011 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=69 OR b=1001 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 32 AND 34) AND a!=33) ]]) end, { @@ -7134,12 +7134,12 @@ test:do_test( OR b=44 OR b=539 OR c=11011 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=69 OR b=1001 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 32 AND 34) AND a!=33) ]]) end, { @@ -7224,7 +7224,7 @@ test:do_test( WHERE c=23023 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) OR a=66 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=51 OR a=23 OR c=4004 @@ -7243,7 +7243,7 @@ test:do_test( WHERE c=23023 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) OR a=66 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=51 OR a=23 OR c=4004 @@ -7260,7 +7260,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=36 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=80 ]]) end, { @@ -7275,7 +7275,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=36 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=80 ]]) end, { @@ -7289,7 +7289,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=55 OR f='efghijklm' @@ -7310,7 +7310,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=55 OR f='efghijklm' @@ -7333,11 +7333,11 @@ test:do_test( SELECT a FROM t2 WHERE (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR b=836 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=91 OR b=594 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.194.1> @@ -7352,11 +7352,11 @@ test:do_test( SELECT a FROM t3 WHERE (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR b=836 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=91 OR b=594 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.194.2> @@ -7369,8 +7369,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR ((a BETWEEN 50 AND 52) AND a!=51) @@ -7389,8 +7389,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR ((a BETWEEN 50 AND 52) AND a!=51) @@ -7415,10 +7415,10 @@ test:do_test( OR b=121 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR b=660 OR b=792 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.196.1> @@ -7437,10 +7437,10 @@ test:do_test( OR b=121 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR b=660 OR b=792 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.196.2> @@ -7456,10 +7456,10 @@ test:do_test( WHERE b=1089 OR b=495 OR b=157 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR f='wxyzabcde' ]]) @@ -7477,10 +7477,10 @@ test:do_test( WHERE b=1089 OR b=495 OR b=157 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR f='wxyzabcde' ]]) @@ -7497,7 +7497,7 @@ test:do_test( SELECT a FROM t2 WHERE f='bcdefghij' OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR b=157 OR b=267 OR c=34034 @@ -7515,7 +7515,7 @@ test:do_test( SELECT a FROM t3 WHERE f='bcdefghij' OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR b=157 OR b=267 OR c=34034 @@ -7534,7 +7534,7 @@ test:do_test( WHERE a=19 OR a=23 OR c<=10 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.199.1> @@ -7550,7 +7550,7 @@ test:do_test( WHERE a=19 OR a=23 OR c<=10 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.199.2> @@ -7567,7 +7567,7 @@ test:do_test( OR b=792 OR b=803 OR b=36 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.200.1> @@ -7584,7 +7584,7 @@ test:do_test( OR b=792 OR b=803 OR b=36 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.200.2> @@ -7597,11 +7597,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'uvwxy*') + WHERE (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR ((a BETWEEN 76 AND 78) AND a!=77) OR f='jklmnopqr' - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=891 OR a=40 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -7617,11 +7617,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'uvwxy*') + WHERE (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR ((a BETWEEN 76 AND 78) AND a!=77) OR f='jklmnopqr' - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=891 OR a=40 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -7644,7 +7644,7 @@ test:do_test( OR d>1e10 OR b=429 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR c=10010 OR ((a BETWEEN 83 AND 85) AND a!=84) ]]) @@ -7666,7 +7666,7 @@ test:do_test( OR d>1e10 OR b=429 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR c=10010 OR ((a BETWEEN 83 AND 85) AND a!=84) ]]) @@ -7681,14 +7681,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'defgh*') + WHERE (g='xwvutsr' AND f LIKE 'defgh%') OR a=22 OR a=26 OR a=81 OR a=53 OR ((a BETWEEN 92 AND 94) AND a!=93) OR c=30030 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=82 OR b=594 ]]) @@ -7703,14 +7703,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'defgh*') + WHERE (g='xwvutsr' AND f LIKE 'defgh%') OR a=22 OR a=26 OR a=81 OR a=53 OR ((a BETWEEN 92 AND 94) AND a!=93) OR c=30030 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=82 OR b=594 ]]) @@ -7727,14 +7727,14 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 34 AND 36) AND a!=35) OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR a=83 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 99 AND 101) AND a!=100) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=1092 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=25 ]]) end, { @@ -7750,14 +7750,14 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 34 AND 36) AND a!=35) OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR a=83 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 99 AND 101) AND a!=100) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=1092 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=25 ]]) end, { @@ -7773,9 +7773,9 @@ test:do_test( SELECT a FROM t2 WHERE a=20 OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR a=50 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) end, { @@ -7791,9 +7791,9 @@ test:do_test( SELECT a FROM t3 WHERE a=20 OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR a=50 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) end, { @@ -7808,7 +7808,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=960 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.206.1> @@ -7822,7 +7822,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=960 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.206.2> @@ -7899,7 +7899,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=957 OR ((a BETWEEN 48 AND 50) AND a!=49) ]]) @@ -7914,7 +7914,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=957 OR ((a BETWEEN 48 AND 50) AND a!=49) ]]) @@ -7961,7 +7961,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=11 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 14 AND 16) AND a!=15) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=99 @@ -7979,7 +7979,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=11 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 14 AND 16) AND a!=15) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=99 @@ -7997,12 +7997,12 @@ test:do_test( SELECT a FROM t2 WHERE f='fghijklmn' OR a=16 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 60 AND 62) AND a!=61) OR ((a BETWEEN 90 AND 92) AND a!=91) OR ((a BETWEEN 9 AND 11) AND a!=10) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=80 ]]) end, { @@ -8018,12 +8018,12 @@ test:do_test( SELECT a FROM t3 WHERE f='fghijklmn' OR a=16 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 60 AND 62) AND a!=61) OR ((a BETWEEN 90 AND 92) AND a!=91) OR ((a BETWEEN 9 AND 11) AND a!=10) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=80 ]]) end, { @@ -8037,10 +8037,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR a=44 OR a=43 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR b=25 ]]) end, { @@ -8054,10 +8054,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR a=44 OR a=43 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR b=25 ]]) end, { @@ -8134,10 +8134,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') OR b=1015 OR c=16016 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR f='abcdefghi' OR b=605 OR a=63 @@ -8154,10 +8154,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') OR b=1015 OR c=16016 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR f='abcdefghi' OR b=605 OR a=63 @@ -8173,7 +8173,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='yxwvuts' AND f LIKE 'bcdef%') OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=641 OR b=795 @@ -8189,7 +8189,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='yxwvuts' AND f LIKE 'bcdef%') OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=641 OR b=795 @@ -8281,7 +8281,7 @@ test:do_test( OR b=1089 OR ((a BETWEEN 69 AND 71) AND a!=70) OR f IS NULL - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.220.1> @@ -8302,7 +8302,7 @@ test:do_test( OR b=1089 OR ((a BETWEEN 69 AND 71) AND a!=70) OR f IS NULL - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.220.2> @@ -8317,15 +8317,15 @@ test:do_test( SELECT a FROM t2 WHERE b=1026 OR b=407 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=564 OR c=23023 OR b=891 OR c=22022 OR ((a BETWEEN 22 AND 24) AND a!=23) OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.221.1> @@ -8340,15 +8340,15 @@ test:do_test( SELECT a FROM t3 WHERE b=1026 OR b=407 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=564 OR c=23023 OR b=891 OR c=22022 OR ((a BETWEEN 22 AND 24) AND a!=23) OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.221.2> @@ -8395,7 +8395,7 @@ test:do_test( OR ((a BETWEEN 79 AND 81) AND a!=80) OR c=18018 OR b=792 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) @@ -8417,7 +8417,7 @@ test:do_test( OR ((a BETWEEN 79 AND 81) AND a!=80) OR c=18018 OR b=792 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) @@ -8437,10 +8437,10 @@ test:do_test( SELECT a FROM t2 WHERE b=429 OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1070 - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.224.1> @@ -8455,10 +8455,10 @@ test:do_test( SELECT a FROM t3 WHERE b=429 OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1070 - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.224.2> @@ -8471,7 +8471,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=572 ]]) end, { @@ -8485,7 +8485,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=572 ]]) end, { @@ -8501,7 +8501,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 62 AND 64) AND a!=63) OR f='abcdefghi' - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.226.1> @@ -8516,7 +8516,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 62 AND 64) AND a!=63) OR f='abcdefghi' - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.226.2> @@ -8562,7 +8562,7 @@ test:do_test( OR a=1 OR ((a BETWEEN 75 AND 77) AND a!=76) OR a=75 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -8581,7 +8581,7 @@ test:do_test( OR a=1 OR ((a BETWEEN 75 AND 77) AND a!=76) OR a=75 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -8595,9 +8595,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=231 OR a=87 ]]) @@ -8612,9 +8612,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=231 OR a=87 ]]) @@ -8630,8 +8630,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=77 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'hijkl%') OR c=24024 OR c=5005 ]]) @@ -8647,8 +8647,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=77 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'hijkl%') OR c=24024 OR c=5005 ]]) @@ -8663,13 +8663,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=682 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) ]]) end, { @@ -8683,13 +8683,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=682 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) ]]) end, { @@ -8707,7 +8707,7 @@ test:do_test( OR b=121 OR c=2002 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.232.1> @@ -8724,7 +8724,7 @@ test:do_test( OR b=121 OR c=2002 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.232.2> @@ -8740,8 +8740,8 @@ test:do_test( WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=267 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=82 OR a=54 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) @@ -8761,8 +8761,8 @@ test:do_test( WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=267 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=82 OR a=54 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) @@ -8815,9 +8815,9 @@ test:do_test( OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=94.0 AND d<95.0 AND d IS NOT NULL) OR 1000000<b - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') - OR (g='rqponml' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') + OR (g='rqponml' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.235.1> @@ -8836,9 +8836,9 @@ test:do_test( OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=94.0 AND d<95.0 AND d IS NOT NULL) OR 1000000<b - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') - OR (g='rqponml' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') + OR (g='rqponml' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.235.2> @@ -8853,7 +8853,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1001 OR b=168 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) ]]) end, { @@ -8869,7 +8869,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1001 OR b=168 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) ]]) end, { @@ -8884,8 +8884,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=51 - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=330 ]]) end, { @@ -8900,8 +8900,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=51 - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=330 ]]) end, { @@ -8915,13 +8915,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=704 OR a=62 OR f='pqrstuvwx' OR b=495 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b<0 OR b=597 ]]) @@ -8936,13 +8936,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=704 OR a=62 OR f='pqrstuvwx' OR b=495 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b<0 OR b=597 ]]) @@ -8992,7 +8992,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=14014 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=572 OR c=15015 ]]) @@ -9008,7 +9008,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=14014 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=572 OR c=15015 ]]) @@ -9023,9 +9023,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=850 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=88 OR f='hijklmnop' @@ -9044,9 +9044,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=850 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=88 OR f='hijklmnop' @@ -9073,8 +9073,8 @@ test:do_test( OR b=374 OR b=938 OR b=773 - OR (g='jihgfed' AND f GLOB 'zabcd*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='jihgfed' AND f LIKE 'zabcd%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.242.1> @@ -9095,8 +9095,8 @@ test:do_test( OR b=374 OR b=938 OR b=773 - OR (g='jihgfed' AND f GLOB 'zabcd*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='jihgfed' AND f LIKE 'zabcd%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.242.2> @@ -9109,7 +9109,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=146 ]]) end, { @@ -9123,7 +9123,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=146 ]]) end, { @@ -9171,7 +9171,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=399 OR b=1004 OR c=16016 @@ -9193,7 +9193,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=399 OR b=1004 OR c=16016 @@ -9222,8 +9222,8 @@ test:do_test( OR b=861 OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR b=949 - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.246.1> @@ -9243,8 +9243,8 @@ test:do_test( OR b=861 OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR b=949 - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.246.2> @@ -9257,7 +9257,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=83 OR c=26026 OR a=49 @@ -9276,7 +9276,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=83 OR c=26026 OR a=49 @@ -9328,7 +9328,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=451 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.249.1> @@ -9342,7 +9342,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=451 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.249.2> @@ -9356,7 +9356,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=47 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.250.1> @@ -9370,7 +9370,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=47 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.250.2> @@ -9384,7 +9384,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1037 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=344 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) @@ -9401,7 +9401,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1037 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=344 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) @@ -9419,7 +9419,7 @@ test:do_test( SELECT a FROM t2 WHERE b=506 OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=429 OR b=275 ]]) @@ -9436,7 +9436,7 @@ test:do_test( SELECT a FROM t3 WHERE b=506 OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=429 OR b=275 ]]) @@ -9458,7 +9458,7 @@ test:do_test( OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR a=60 OR b=80 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=616 ]]) end, { @@ -9479,7 +9479,7 @@ test:do_test( OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR a=60 OR b=80 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=616 ]]) end, { @@ -9521,13 +9521,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=43 OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=586 OR c=17017 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR a=87 OR b=968 ]]) @@ -9542,13 +9542,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=43 OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=586 OR c=17017 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR a=87 OR b=968 ]]) @@ -9597,8 +9597,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'jklmn*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='rqponml' AND f LIKE 'jklmn%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c>=34035 OR b=850 OR ((a BETWEEN 32 AND 34) AND a!=33) @@ -9620,8 +9620,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'jklmn*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='rqponml' AND f LIKE 'jklmn%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c>=34035 OR b=850 OR ((a BETWEEN 32 AND 34) AND a!=33) @@ -9705,7 +9705,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=993 ]]) @@ -9720,7 +9720,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=993 ]]) @@ -9739,7 +9739,7 @@ test:do_test( OR a=22 OR b=289 OR b=795 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=242 OR a=59 OR b=1045 @@ -9760,7 +9760,7 @@ test:do_test( OR a=22 OR b=289 OR b=795 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=242 OR a=59 OR b=1045 @@ -9778,9 +9778,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=245 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR c=3003 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) @@ -9798,9 +9798,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=245 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR c=3003 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) @@ -9817,15 +9817,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') OR b=220 OR b=443 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=62 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=1023 OR a=100 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) end, { @@ -9839,15 +9839,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') OR b=220 OR b=443 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=62 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=1023 OR a=100 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) end, { @@ -9863,8 +9863,8 @@ test:do_test( SELECT a FROM t2 WHERE c=11011 OR f='tuvwxyzab' - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.264.1> @@ -9879,8 +9879,8 @@ test:do_test( SELECT a FROM t3 WHERE c=11011 OR f='tuvwxyzab' - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.264.2> @@ -10005,15 +10005,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=443 OR b=33 OR b=762 OR b=575 OR c=16016 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1092 ]]) end, { @@ -10027,15 +10027,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=443 OR b=33 OR b=762 OR b=575 OR c=16016 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1092 ]]) end, { @@ -10051,14 +10051,14 @@ test:do_test( SELECT a FROM t2 WHERE b=806 OR b=872 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR f='uvwxyzabc' OR b=748 OR b=586 OR ((a BETWEEN 15 AND 17) AND a!=16) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=891 ]]) end, { @@ -10074,14 +10074,14 @@ test:do_test( SELECT a FROM t3 WHERE b=806 OR b=872 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR f='uvwxyzabc' OR b=748 OR b=586 OR ((a BETWEEN 15 AND 17) AND a!=16) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=891 ]]) end, { @@ -10097,8 +10097,8 @@ test:do_test( SELECT a FROM t2 WHERE b=693 OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'hijkl*') - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='rqponml' AND f LIKE 'hijkl%') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=96 ]]) @@ -10115,8 +10115,8 @@ test:do_test( SELECT a FROM t3 WHERE b=693 OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'hijkl*') - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='rqponml' AND f LIKE 'hijkl%') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=96 ]]) @@ -10131,7 +10131,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') OR b=451 OR ((a BETWEEN 96 AND 98) AND a!=97) OR ((a BETWEEN 97 AND 99) AND a!=98) @@ -10148,7 +10148,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') OR b=451 OR ((a BETWEEN 96 AND 98) AND a!=97) OR ((a BETWEEN 97 AND 99) AND a!=98) @@ -10165,16 +10165,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'bcdef*') + WHERE (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=75 OR b=960 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR b=616 OR b=330 OR ((a BETWEEN 16 AND 18) AND a!=17) OR a=26 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.272.1> @@ -10187,16 +10187,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'bcdef*') + WHERE (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=75 OR b=960 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR b=616 OR b=330 OR ((a BETWEEN 16 AND 18) AND a!=17) OR a=26 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.272.2> @@ -10210,7 +10210,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=762 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.273.1> @@ -10224,7 +10224,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=762 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.273.2> @@ -10310,7 +10310,7 @@ test:do_test( OR b=176 OR ((a BETWEEN 34 AND 36) AND a!=35) OR b=220 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR a=4 ]]) end, { @@ -10329,7 +10329,7 @@ test:do_test( OR b=176 OR ((a BETWEEN 34 AND 36) AND a!=35) OR b=220 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR a=4 ]]) end, { @@ -10344,7 +10344,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=29 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=979 OR b=275 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -10364,7 +10364,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=29 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=979 OR b=275 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -10384,11 +10384,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=74 OR ((a BETWEEN 7 AND 9) AND a!=8) @@ -10405,11 +10405,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=74 OR ((a BETWEEN 7 AND 9) AND a!=8) @@ -10426,10 +10426,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.279.1> @@ -10443,10 +10443,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.279.2> @@ -10495,11 +10495,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR c=23023 OR b=377 OR b=858 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.281.1> @@ -10512,11 +10512,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR c=23023 OR b=377 OR b=858 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.281.2> @@ -10532,13 +10532,13 @@ test:do_test( WHERE (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=322 OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=432 OR b=55 OR a=53 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=25 ]]) end, { @@ -10555,13 +10555,13 @@ test:do_test( WHERE (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=322 OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=432 OR b=55 OR a=53 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=25 ]]) end, { @@ -10576,7 +10576,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=484 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=616 OR c=5005 OR ((a BETWEEN 27 AND 29) AND a!=28) @@ -10593,7 +10593,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=484 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=616 OR c=5005 OR ((a BETWEEN 27 AND 29) AND a!=28) @@ -10610,11 +10610,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=916 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1048 OR c=6006 OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR ((a BETWEEN 59 AND 61) AND a!=60) OR b=751 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -10631,11 +10631,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=916 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1048 OR c=6006 OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR ((a BETWEEN 59 AND 61) AND a!=60) OR b=751 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -10656,7 +10656,7 @@ test:do_test( OR b=275 OR b=396 OR c=4004 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR b=319 OR ((a BETWEEN 83 AND 85) AND a!=84) OR a=3 @@ -10678,7 +10678,7 @@ test:do_test( OR b=275 OR b=396 OR c=4004 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR b=319 OR ((a BETWEEN 83 AND 85) AND a!=84) OR a=3 @@ -10695,16 +10695,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'lmnop*') + WHERE (g='wvutsrq' AND f LIKE 'lmnop%') OR b=718 OR f='vwxyzabcd' OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR ((a BETWEEN 66 AND 68) AND a!=67) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -10718,16 +10718,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'lmnop*') + WHERE (g='wvutsrq' AND f LIKE 'lmnop%') OR b=718 OR f='vwxyzabcd' OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR ((a BETWEEN 66 AND 68) AND a!=67) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -10920,9 +10920,9 @@ test:do_test( OR b=231 OR b=212 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR c=30030 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') ]]) end, { -- <where7-2.292.1> @@ -10940,9 +10940,9 @@ test:do_test( OR b=231 OR b=212 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR c=30030 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') ]]) end, { -- <where7-2.292.2> @@ -10996,8 +10996,8 @@ test:do_test( OR f='vwxyzabcd' OR b=762 OR a=60 - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='xwvutsr' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.294.1> @@ -11015,8 +11015,8 @@ test:do_test( OR f='vwxyzabcd' OR b=762 OR a=60 - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='xwvutsr' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.294.2> @@ -11029,14 +11029,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'ghijk*') + WHERE (g='mlkjihg' AND f LIKE 'ghijk%') OR a=3 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=498 OR a=100 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=69 ]]) end, { @@ -11050,14 +11050,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'ghijk*') + WHERE (g='mlkjihg' AND f LIKE 'ghijk%') OR a=3 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=498 OR a=100 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=69 ]]) end, { @@ -11071,12 +11071,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR b=300 OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR b=58 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=286 OR b=234 OR ((a BETWEEN 43 AND 45) AND a!=44) @@ -11094,12 +11094,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR b=300 OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR b=58 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=286 OR b=234 OR ((a BETWEEN 43 AND 45) AND a!=44) @@ -11121,12 +11121,12 @@ test:do_test( OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 23 AND 25) AND a!=24) OR b=594 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR ((a BETWEEN 56 AND 58) AND a!=57) OR ((a BETWEEN 18 AND 20) AND a!=19) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -11144,12 +11144,12 @@ test:do_test( OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 23 AND 25) AND a!=24) OR b=594 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR ((a BETWEEN 56 AND 58) AND a!=57) OR ((a BETWEEN 18 AND 20) AND a!=19) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -11164,8 +11164,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=949 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.298.1> @@ -11179,8 +11179,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=949 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.298.2> @@ -11195,13 +11195,13 @@ test:do_test( SELECT a FROM t2 WHERE b=960 OR a=44 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=39 OR b=828 OR ((a BETWEEN 3 AND 5) AND a!=4) OR d<0.0 OR b=770 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=594 OR ((a BETWEEN 89 AND 91) AND a!=90) ]]) @@ -11218,13 +11218,13 @@ test:do_test( SELECT a FROM t3 WHERE b=960 OR a=44 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=39 OR b=828 OR ((a BETWEEN 3 AND 5) AND a!=4) OR d<0.0 OR b=770 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=594 OR ((a BETWEEN 89 AND 91) AND a!=90) ]]) @@ -11278,7 +11278,7 @@ test:do_test( WHERE b=1081 OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=1004 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 29 AND 31) AND a!=30) OR b=660 OR b=957 @@ -11298,7 +11298,7 @@ test:do_test( WHERE b=1081 OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=1004 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 29 AND 31) AND a!=30) OR b=660 OR b=957 @@ -11320,9 +11320,9 @@ test:do_test( OR f='yzabcdefg' OR b=880 OR a=63 - OR (g='ponmlkj' AND f GLOB 'stuvw*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.302.1> @@ -11340,9 +11340,9 @@ test:do_test( OR f='yzabcdefg' OR b=880 OR a=63 - OR (g='ponmlkj' AND f GLOB 'stuvw*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.302.2> @@ -11357,12 +11357,12 @@ test:do_test( SELECT a FROM t2 WHERE a=69 OR b=1103 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='wxyzabcde' - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') + OR (g='gfedcba' AND f LIKE 'klmno%') OR f='pqrstuvwx' - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR a=59 OR b=946 ]]) @@ -11379,12 +11379,12 @@ test:do_test( SELECT a FROM t3 WHERE a=69 OR b=1103 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='wxyzabcde' - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') + OR (g='gfedcba' AND f LIKE 'klmno%') OR f='pqrstuvwx' - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR a=59 OR b=946 ]]) @@ -11400,7 +11400,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR a=68 OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) @@ -11416,7 +11416,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR a=68 OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) @@ -11432,7 +11432,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.305.1> @@ -11446,7 +11446,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.305.2> @@ -11526,12 +11526,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR c=14014 OR b=990 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR c=14014 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=740 OR c=3003 ]]) @@ -11547,12 +11547,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR c=14014 OR b=990 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR c=14014 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=740 OR c=3003 ]]) @@ -11640,7 +11640,7 @@ test:do_test( OR a=4 OR b=311 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=396 ]]) end, { @@ -11663,7 +11663,7 @@ test:do_test( OR a=4 OR b=311 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=396 ]]) end, { @@ -11679,7 +11679,7 @@ test:do_test( SELECT a FROM t2 WHERE a=82 OR b=333 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=99 OR a=63 OR a=35 @@ -11698,7 +11698,7 @@ test:do_test( SELECT a FROM t3 WHERE a=82 OR b=333 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=99 OR a=63 OR a=35 @@ -11803,9 +11803,9 @@ test:do_test( OR f='hijklmnop' OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=817 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) @@ -11824,9 +11824,9 @@ test:do_test( OR f='hijklmnop' OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=817 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) @@ -11841,12 +11841,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR b=311 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=48 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR c=32032 OR f='opqrstuvw' OR b=300 @@ -11864,12 +11864,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR b=311 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=48 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR c=32032 OR f='opqrstuvw' OR b=300 @@ -11889,7 +11889,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR b=1070 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=22 @@ -11912,7 +11912,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR b=1070 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=22 @@ -11934,7 +11934,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR a=21 OR b=1026 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -11952,7 +11952,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR a=21 OR b=1026 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -11975,7 +11975,7 @@ test:do_test( OR a=29 OR c=15015 OR a=87 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.319.1> @@ -11994,7 +11994,7 @@ test:do_test( OR a=29 OR c=15015 OR a=87 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.319.2> @@ -12042,7 +12042,7 @@ test:do_test( OR a=91 OR b=1015 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 91 AND 93) AND a!=92) ]]) end, { @@ -12061,7 +12061,7 @@ test:do_test( OR a=91 OR b=1015 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 91 AND 93) AND a!=92) ]]) end, { @@ -12076,12 +12076,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=7 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=1015 OR b=839 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=410 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR a=71 ]]) end, { @@ -12096,12 +12096,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=7 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=1015 OR b=839 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=410 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR a=71 ]]) end, { @@ -12118,12 +12118,12 @@ test:do_test( WHERE b=880 OR b=982 OR a=52 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=24 OR ((a BETWEEN 47 AND 49) AND a!=48) - OR (g='mlkjihg' AND f GLOB 'ijklm*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.323.1> @@ -12139,12 +12139,12 @@ test:do_test( WHERE b=880 OR b=982 OR a=52 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=24 OR ((a BETWEEN 47 AND 49) AND a!=48) - OR (g='mlkjihg' AND f GLOB 'ijklm*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.323.2> @@ -12158,9 +12158,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.324.1> @@ -12174,9 +12174,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.324.2> @@ -12192,7 +12192,7 @@ test:do_test( WHERE f='abcdefghi' OR a=5 OR b=124 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=432 OR 1000000<b OR a=58 @@ -12214,7 +12214,7 @@ test:do_test( WHERE f='abcdefghi' OR a=5 OR b=124 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=432 OR 1000000<b OR a=58 @@ -12271,7 +12271,7 @@ test:do_test( OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR f='uvwxyzabc' ]]) end, { @@ -12293,7 +12293,7 @@ test:do_test( OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR f='uvwxyzabc' ]]) end, { @@ -12308,16 +12308,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 57 AND 59) AND a!=58) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=564 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR b=77 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=968 OR b=847 - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.328.1> @@ -12331,16 +12331,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 57 AND 59) AND a!=58) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=564 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR b=77 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=968 OR b=847 - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.328.2> @@ -12421,7 +12421,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR b=693 - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=132 @@ -12441,7 +12441,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR b=693 - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=132 @@ -12496,11 +12496,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=190 - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=924 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=759 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.333.1> @@ -12514,11 +12514,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=190 - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=924 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=759 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.333.2> @@ -12576,12 +12576,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=26026 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR c=17017 - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) ]]) @@ -12597,12 +12597,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=26026 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR c=17017 - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) ]]) @@ -12662,9 +12662,9 @@ test:do_test( OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR b=300 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=41 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=135 OR b=605 ]]) @@ -12684,9 +12684,9 @@ test:do_test( OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR b=300 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=41 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=135 OR b=605 ]]) @@ -12701,16 +12701,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=762 OR b=484 OR b=190 OR ((a BETWEEN 95 AND 97) AND a!=96) OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1023 ]]) end, { @@ -12724,16 +12724,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=762 OR b=484 OR b=190 OR ((a BETWEEN 95 AND 97) AND a!=96) OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1023 ]]) end, { @@ -12747,7 +12747,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR a=34 OR f='rstuvwxyz' OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) @@ -12764,7 +12764,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR a=34 OR f='rstuvwxyz' OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) @@ -12783,7 +12783,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=1004 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR g IS NULL ]]) end, { @@ -12799,7 +12799,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=1004 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR g IS NULL ]]) end, { @@ -12822,8 +12822,8 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR a=44 OR a=23 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.341.1> @@ -12845,8 +12845,8 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR a=44 OR a=23 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.341.2> @@ -12864,8 +12864,8 @@ test:do_test( OR a=11 OR ((a BETWEEN 12 AND 14) AND a!=13) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=13 OR a=15 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) @@ -12887,8 +12887,8 @@ test:do_test( OR a=11 OR ((a BETWEEN 12 AND 14) AND a!=13) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=13 OR a=15 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) @@ -13019,16 +13019,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'klmno*') + WHERE (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR a=48 OR b=113 OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=880 OR ((a BETWEEN 85 AND 87) AND a!=86) OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.346.1> @@ -13041,16 +13041,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'klmno*') + WHERE (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR a=48 OR b=113 OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=880 OR ((a BETWEEN 85 AND 87) AND a!=86) OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.346.2> @@ -13065,10 +13065,10 @@ test:do_test( SELECT a FROM t2 WHERE b=517 OR b=187 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR b=1092 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.347.1> @@ -13083,10 +13083,10 @@ test:do_test( SELECT a FROM t3 WHERE b=517 OR b=187 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR b=1092 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.347.2> @@ -13259,7 +13259,7 @@ test:do_test( OR a=30 OR c=3003 OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR b=564 OR b=55 OR a=38 @@ -13281,7 +13281,7 @@ test:do_test( OR a=30 OR c=3003 OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR b=564 OR b=55 OR a=38 @@ -13328,7 +13328,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=792 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.354.1> @@ -13342,7 +13342,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=792 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.354.2> @@ -13357,9 +13357,9 @@ test:do_test( SELECT a FROM t2 WHERE (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR c=21021 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR f='zabcdefgh' - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=781 OR a=64 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) @@ -13377,9 +13377,9 @@ test:do_test( SELECT a FROM t3 WHERE (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR c=21021 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR f='zabcdefgh' - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=781 OR a=64 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) @@ -13395,12 +13395,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR a=34 - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'klmno*') - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'klmno%') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=319 OR b=330 OR ((a BETWEEN 28 AND 30) AND a!=29) @@ -13416,12 +13416,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR a=34 - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'klmno*') - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'klmno%') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=319 OR b=330 OR ((a BETWEEN 28 AND 30) AND a!=29) @@ -13437,8 +13437,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=45 OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) ]]) @@ -13453,8 +13453,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=45 OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) ]]) @@ -13470,7 +13470,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=53.0 AND d<54.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=165 OR b=836 ]]) @@ -13486,7 +13486,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=53.0 AND d<54.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=165 OR b=836 ]]) @@ -13503,7 +13503,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1034 OR f='vwxyzabcd' - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 57 AND 59) AND a!=58) ]]) end, { @@ -13519,7 +13519,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1034 OR f='vwxyzabcd' - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 57 AND 59) AND a!=58) ]]) end, { @@ -13575,12 +13575,12 @@ test:do_test( SELECT a FROM t2 WHERE a=37 OR b=88 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=23023 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR a=56 OR ((a BETWEEN 13 AND 15) AND a!=14) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR f='ijklmnopq' OR ((a BETWEEN 85 AND 87) AND a!=86) ]]) @@ -13597,12 +13597,12 @@ test:do_test( SELECT a FROM t3 WHERE a=37 OR b=88 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=23023 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR a=56 OR ((a BETWEEN 13 AND 15) AND a!=14) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR f='ijklmnopq' OR ((a BETWEEN 85 AND 87) AND a!=86) ]]) @@ -13620,7 +13620,7 @@ test:do_test( WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) OR a=74 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 42 AND 44) AND a!=43) ]]) end, { @@ -13637,7 +13637,7 @@ test:do_test( WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) OR a=74 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 42 AND 44) AND a!=43) ]]) end, { @@ -13747,13 +13747,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=212 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=20 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=627 ]]) end, { @@ -13767,13 +13767,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=212 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=20 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=627 ]]) end, { @@ -13787,7 +13787,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=157 OR b=1026 @@ -13803,7 +13803,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=157 OR b=1026 @@ -13823,10 +13823,10 @@ test:do_test( OR a=16 OR ((a BETWEEN 80 AND 82) AND a!=81) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR f='zabcdefgh' - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.368.1> @@ -13843,10 +13843,10 @@ test:do_test( OR a=16 OR ((a BETWEEN 80 AND 82) AND a!=81) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR f='zabcdefgh' - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.368.2> @@ -13895,11 +13895,11 @@ test:do_test( SELECT a FROM t2 WHERE f IS NULL OR a=37 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR b=168 OR b=22 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=506 ]]) end, { @@ -13915,11 +13915,11 @@ test:do_test( SELECT a FROM t3 WHERE f IS NULL OR a=37 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR b=168 OR b=22 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=506 ]]) end, { @@ -13935,11 +13935,11 @@ test:do_test( SELECT a FROM t2 WHERE a=29 OR ((a BETWEEN 26 AND 28) AND a!=27) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='qponmlk' AND f GLOB 'qrstu*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='qponmlk' AND f LIKE 'qrstu%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=209 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR b=146 ]]) end, { @@ -13955,11 +13955,11 @@ test:do_test( SELECT a FROM t3 WHERE a=29 OR ((a BETWEEN 26 AND 28) AND a!=27) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='qponmlk' AND f GLOB 'qrstu*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='qponmlk' AND f LIKE 'qrstu%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=209 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR b=146 ]]) end, { @@ -14017,7 +14017,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=113 OR ((a BETWEEN 40 AND 42) AND a!=41) @@ -14035,7 +14035,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=113 OR ((a BETWEEN 40 AND 42) AND a!=41) @@ -14081,7 +14081,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'ijklm*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') OR a=99 OR a=100 OR b=429 @@ -14104,7 +14104,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'ijklm*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') OR a=99 OR a=100 OR b=429 @@ -14164,9 +14164,9 @@ test:do_test( OR c=6006 OR a=18 OR c=24024 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR ((a BETWEEN 44 AND 46) AND a!=45) @@ -14187,9 +14187,9 @@ test:do_test( OR c=6006 OR a=18 OR c=24024 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR ((a BETWEEN 44 AND 46) AND a!=45) @@ -14243,7 +14243,7 @@ test:do_test( SELECT a FROM t2 WHERE b=99 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.379.1> @@ -14258,7 +14258,7 @@ test:do_test( SELECT a FROM t3 WHERE b=99 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.379.2> @@ -14271,7 +14271,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?hijk*' AND f GLOB 'ghij*') + WHERE (f LIKE '_hijk%' AND f LIKE 'ghij%') OR ((a BETWEEN 79 AND 81) AND a!=80) OR b=715 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -14287,7 +14287,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?hijk*' AND f GLOB 'ghij*') + WHERE (f LIKE '_hijk%' AND f LIKE 'ghij%') OR ((a BETWEEN 79 AND 81) AND a!=80) OR b=715 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -14304,7 +14304,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR a=46 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) ]]) @@ -14320,7 +14320,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR a=46 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) ]]) @@ -14335,7 +14335,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR b=1056 @@ -14352,7 +14352,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR b=1056 @@ -14453,7 +14453,7 @@ test:do_test( OR ((a BETWEEN 39 AND 41) AND a!=40) OR b=242 OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=300 OR ((a BETWEEN 24 AND 26) AND a!=25) OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -14476,7 +14476,7 @@ test:do_test( OR ((a BETWEEN 39 AND 41) AND a!=40) OR b=242 OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=300 OR ((a BETWEEN 24 AND 26) AND a!=25) OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -14502,7 +14502,7 @@ test:do_test( OR b=1048 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 ]]) end, { @@ -14525,7 +14525,7 @@ test:do_test( OR b=1048 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 ]]) end, { @@ -14608,10 +14608,10 @@ test:do_test( OR a=58 OR b=333 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=572 OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.389.1> @@ -14631,10 +14631,10 @@ test:do_test( OR a=58 OR b=333 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=572 OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.389.2> @@ -14649,7 +14649,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1034 OR f='lmnopqrst' - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.390.1> @@ -14664,7 +14664,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1034 OR f='lmnopqrst' - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.390.2> @@ -14679,7 +14679,7 @@ test:do_test( SELECT a FROM t2 WHERE c=15015 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=58 OR b=674 OR b=979 @@ -14697,7 +14697,7 @@ test:do_test( SELECT a FROM t3 WHERE c=15015 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=58 OR b=674 OR b=979 @@ -14747,9 +14747,9 @@ test:do_test( OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR b=630 OR a=19 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR f='wxyzabcde' - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=377 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=77 @@ -14770,9 +14770,9 @@ test:do_test( OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR b=630 OR a=19 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR f='wxyzabcde' - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=377 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=77 @@ -14818,14 +14818,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=64 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR c=14014 OR b=586 OR c=27027 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.395.1> @@ -14839,14 +14839,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=64 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR c=14014 OR b=586 OR c=27027 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.395.2> @@ -14903,11 +14903,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR a=23 OR b=737 OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) @@ -14926,11 +14926,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR a=23 OR b=737 OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) @@ -14983,10 +14983,10 @@ test:do_test( SELECT a FROM t2 WHERE a=18 OR b=1059 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=795 ]]) end, { @@ -15002,10 +15002,10 @@ test:do_test( SELECT a FROM t3 WHERE a=18 OR b=1059 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=795 ]]) end, { @@ -15019,7 +15019,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=93 OR a=11 OR f='nopqrstuv' @@ -15039,7 +15039,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=93 OR a=11 OR f='nopqrstuv' @@ -15062,8 +15062,8 @@ test:do_test( WHERE b=685 OR a=33 OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='vutsrqp' AND f GLOB 'qrstu*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 39 AND 41) AND a!=40) OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=715 @@ -15085,8 +15085,8 @@ test:do_test( WHERE b=685 OR a=33 OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='vutsrqp' AND f GLOB 'qrstu*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 39 AND 41) AND a!=40) OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=715 @@ -15107,7 +15107,7 @@ test:do_test( SELECT a FROM t2 WHERE a=89 OR b=1037 - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.402.1> @@ -15122,7 +15122,7 @@ test:do_test( SELECT a FROM t3 WHERE a=89 OR b=1037 - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.402.2> @@ -15179,9 +15179,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR b=726 OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) @@ -15201,9 +15201,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR b=726 OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) @@ -15223,7 +15223,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=924 OR f='lmnopqrst' OR b=1048 @@ -15239,7 +15239,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=924 OR f='lmnopqrst' OR b=1048 @@ -15256,7 +15256,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=198 OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) @@ -15276,7 +15276,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=198 OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) @@ -15341,7 +15341,7 @@ test:do_test( OR b=630 OR a=55 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) ]]) end, { @@ -15359,7 +15359,7 @@ test:do_test( OR b=630 OR a=55 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) ]]) end, { @@ -15375,12 +15375,12 @@ test:do_test( SELECT a FROM t2 WHERE f='uvwxyzabc' OR f='xyzabcdef' - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.409.1> @@ -15395,12 +15395,12 @@ test:do_test( SELECT a FROM t3 WHERE f='uvwxyzabc' OR f='xyzabcdef' - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.409.2> @@ -15417,7 +15417,7 @@ test:do_test( OR b=454 OR ((a BETWEEN 92 AND 94) AND a!=93) OR b=179 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='qrstuvwxy' ]]) end, { @@ -15435,7 +15435,7 @@ test:do_test( OR b=454 OR ((a BETWEEN 92 AND 94) AND a!=93) OR b=179 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='qrstuvwxy' ]]) end, { @@ -15452,7 +15452,7 @@ test:do_test( WHERE ((a BETWEEN 6 AND 8) AND a!=7) OR b=619 OR a=20 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=946 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=64 @@ -15474,7 +15474,7 @@ test:do_test( WHERE ((a BETWEEN 6 AND 8) AND a!=7) OR b=619 OR a=20 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=946 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=64 @@ -15527,8 +15527,8 @@ test:do_test( SELECT a FROM t2 WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=32 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c=32032 ]]) end, { @@ -15544,8 +15544,8 @@ test:do_test( SELECT a FROM t3 WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=32 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c=32032 ]]) end, { @@ -15654,7 +15654,7 @@ test:do_test( WHERE (d>=32.0 AND d<33.0 AND d IS NOT NULL) OR a=27 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.417.1> @@ -15670,7 +15670,7 @@ test:do_test( WHERE (d>=32.0 AND d<33.0 AND d IS NOT NULL) OR a=27 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.417.2> @@ -15720,7 +15720,7 @@ test:do_test( OR b=561 OR b=352 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR a=95 ]]) end, { @@ -15743,7 +15743,7 @@ test:do_test( OR b=561 OR b=352 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR a=95 ]]) end, { @@ -15761,7 +15761,7 @@ test:do_test( OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='ghijklmno' OR b=619 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=476 OR a=83 @@ -15782,7 +15782,7 @@ test:do_test( OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='ghijklmno' OR b=619 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=476 OR a=83 @@ -15868,8 +15868,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1059 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=47 OR b=660 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -15887,8 +15887,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1059 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=47 OR b=660 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -15936,13 +15936,13 @@ test:do_test( WHERE b=597 OR f='lmnopqrst' OR a=24 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 31 AND 33) AND a!=32) OR b=1023 OR a=53 OR a=78 OR f='efghijklm' - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) ]]) end, { @@ -15959,13 +15959,13 @@ test:do_test( WHERE b=597 OR f='lmnopqrst' OR a=24 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 31 AND 33) AND a!=32) OR b=1023 OR a=53 OR a=78 OR f='efghijklm' - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) ]]) end, { @@ -16012,11 +16012,11 @@ test:do_test( WHERE f='tuvwxyzab' OR b=388 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=957 OR b=663 OR b=847 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.427.1> @@ -16032,11 +16032,11 @@ test:do_test( WHERE f='tuvwxyzab' OR b=388 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=957 OR b=663 OR b=847 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.427.2> @@ -16051,7 +16051,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR a=56 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.428.1> @@ -16066,7 +16066,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR a=56 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.428.2> @@ -16082,7 +16082,7 @@ test:do_test( WHERE c>=34035 OR b=168 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.429.1> @@ -16098,7 +16098,7 @@ test:do_test( WHERE c>=34035 OR b=168 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.429.2> @@ -16144,9 +16144,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR f='rstuvwxyz' - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.431.1> @@ -16160,9 +16160,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR f='rstuvwxyz' - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.431.2> @@ -16246,7 +16246,7 @@ test:do_test( WHERE b=113 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=113 - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -16267,7 +16267,7 @@ test:do_test( WHERE b=113 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=113 - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -16285,7 +16285,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR c=22022 OR ((a BETWEEN 79 AND 81) AND a!=80) @@ -16303,7 +16303,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR c=22022 OR ((a BETWEEN 79 AND 81) AND a!=80) @@ -16322,7 +16322,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 74 AND 76) AND a!=75) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=47 OR ((a BETWEEN 44 AND 46) AND a!=45) OR a=92 @@ -16331,7 +16331,7 @@ test:do_test( OR c=7007 OR a=93 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.436.1> @@ -16345,7 +16345,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 74 AND 76) AND a!=75) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=47 OR ((a BETWEEN 44 AND 46) AND a!=45) OR a=92 @@ -16354,7 +16354,7 @@ test:do_test( OR c=7007 OR a=93 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.436.2> @@ -16367,11 +16367,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=13 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR c=29029 OR b=311 OR b=366 @@ -16389,11 +16389,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=13 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR c=29029 OR b=311 OR b=366 @@ -16453,12 +16453,12 @@ test:do_test( SELECT a FROM t2 WHERE (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=41 - OR (g='xwvutsr' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR b=913 ]]) end, { @@ -16474,12 +16474,12 @@ test:do_test( SELECT a FROM t3 WHERE (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=41 - OR (g='xwvutsr' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR b=913 ]]) end, { @@ -16593,12 +16593,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=102 OR b=212 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=487 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.443.1> @@ -16611,12 +16611,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=102 OR b=212 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=487 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.443.2> @@ -16661,7 +16661,7 @@ test:do_test( SELECT a FROM t2 WHERE b=872 OR ((a BETWEEN 58 AND 60) AND a!=59) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=957 OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR a=67 @@ -16680,7 +16680,7 @@ test:do_test( SELECT a FROM t3 WHERE b=872 OR ((a BETWEEN 58 AND 60) AND a!=59) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=957 OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR a=67 @@ -16700,12 +16700,12 @@ test:do_test( WHERE b=66 OR b=102 OR b=396 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 7 AND 9) AND a!=8) OR b=759 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR f='ghijklmno' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) @@ -16723,12 +16723,12 @@ test:do_test( WHERE b=66 OR b=102 OR b=396 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 7 AND 9) AND a!=8) OR b=759 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR f='ghijklmno' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) @@ -16744,8 +16744,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 69 AND 71) AND a!=70) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=72 OR b=1100 OR b=102 @@ -16763,8 +16763,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 69 AND 71) AND a!=70) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=72 OR b=1100 OR b=102 @@ -16878,7 +16878,7 @@ test:do_test( WHERE b=47 OR a=91 OR d>1e10 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.451.1> @@ -16894,7 +16894,7 @@ test:do_test( WHERE b=47 OR a=91 OR d>1e10 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.451.2> @@ -16975,13 +16975,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=619 OR ((a BETWEEN 91 AND 93) AND a!=92) OR c=11011 OR b=550 OR b=1059 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -16998,13 +16998,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=619 OR ((a BETWEEN 91 AND 93) AND a!=92) OR c=11011 OR b=550 OR b=1059 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -17021,16 +17021,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'vwxyz*') + WHERE (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=78 OR a=27 OR b=792 OR b=946 OR c=22022 OR a=23 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=388 ]]) end, { @@ -17044,16 +17044,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'vwxyz*') + WHERE (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=78 OR a=27 OR b=792 OR b=946 OR c=22022 OR a=23 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=388 ]]) end, { @@ -17070,8 +17070,8 @@ test:do_test( WHERE c=32032 OR f IS NULL OR ((a BETWEEN 37 AND 39) AND a!=38) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=825 ]]) end, { @@ -17088,8 +17088,8 @@ test:do_test( WHERE c=32032 OR f IS NULL OR ((a BETWEEN 37 AND 39) AND a!=38) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=825 ]]) end, { @@ -17104,7 +17104,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=84.0 AND d<85.0 AND d IS NOT NULL) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=1078 @@ -17126,7 +17126,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=84.0 AND d<85.0 AND d IS NOT NULL) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=1078 @@ -17147,11 +17147,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR c=25025 OR b=550 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.458.1> @@ -17164,11 +17164,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR c=25025 OR b=550 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.458.2> @@ -17183,7 +17183,7 @@ test:do_test( SELECT a FROM t2 WHERE b=432 OR f='opqrstuvw' - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.459.1> @@ -17198,7 +17198,7 @@ test:do_test( SELECT a FROM t3 WHERE b=432 OR f='opqrstuvw' - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.459.2> @@ -17213,7 +17213,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 14 AND 16) AND a!=15) OR b=847 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=583 OR ((a BETWEEN 63 AND 65) AND a!=64) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) @@ -17234,7 +17234,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 14 AND 16) AND a!=15) OR b=847 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=583 OR ((a BETWEEN 63 AND 65) AND a!=64) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) @@ -17299,7 +17299,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=586 OR d<0.0 OR c=9009 @@ -17315,7 +17315,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=586 OR d<0.0 OR c=9009 @@ -17378,7 +17378,7 @@ test:do_test( WHERE ((a BETWEEN 44 AND 46) AND a!=45) OR a=53 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=594 OR b=80 OR ((a BETWEEN 18 AND 20) AND a!=19) @@ -17399,7 +17399,7 @@ test:do_test( WHERE ((a BETWEEN 44 AND 46) AND a!=45) OR a=53 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=594 OR b=80 OR ((a BETWEEN 18 AND 20) AND a!=19) @@ -17482,9 +17482,9 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='wxyzabcde' - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR a=70 OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -17503,9 +17503,9 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='wxyzabcde' - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR a=70 OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -17522,7 +17522,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=69 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.468.1> @@ -17536,7 +17536,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=69 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.468.2> @@ -17552,8 +17552,8 @@ test:do_test( WHERE a=41 OR a=43 OR a=92 - OR (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.469.1> @@ -17569,8 +17569,8 @@ test:do_test( WHERE a=41 OR a=43 OR a=92 - OR (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.469.2> @@ -17617,7 +17617,7 @@ test:do_test( SELECT a FROM t2 WHERE f='fghijklmn' OR f='fghijklmn' - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=465 OR b=586 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) @@ -17639,7 +17639,7 @@ test:do_test( SELECT a FROM t3 WHERE f='fghijklmn' OR f='fghijklmn' - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=465 OR b=586 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) @@ -17660,10 +17660,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='fedcbaz' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=814 OR a=20 OR 1000000<b @@ -17681,10 +17681,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='fedcbaz' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=814 OR a=20 OR 1000000<b @@ -17701,14 +17701,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR c=1001 OR b=484 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR c<=10 OR a=92 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR b=1026 ]]) @@ -17723,14 +17723,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR c=1001 OR b=484 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR c<=10 OR a=92 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR b=1026 ]]) @@ -17746,13 +17746,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=54 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=993 OR c=22022 OR a=68 OR ((a BETWEEN 99 AND 101) AND a!=100) OR a=62 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=1015 ]]) end, { @@ -17767,13 +17767,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=54 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=993 OR c=22022 OR a=68 OR ((a BETWEEN 99 AND 101) AND a!=100) OR a=62 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=1015 ]]) end, { @@ -17789,7 +17789,7 @@ test:do_test( SELECT a FROM t2 WHERE b=319 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -17808,7 +17808,7 @@ test:do_test( SELECT a FROM t3 WHERE b=319 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -17889,14 +17889,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR b=407 OR b=454 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) OR b=627 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.478.1> @@ -17909,14 +17909,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR b=407 OR b=454 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) OR b=627 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.478.2> @@ -17933,7 +17933,7 @@ test:do_test( OR c=34034 OR ((a BETWEEN 24 AND 26) AND a!=25) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR a=67 ]]) end, { @@ -17951,7 +17951,7 @@ test:do_test( OR c=34034 OR ((a BETWEEN 24 AND 26) AND a!=25) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR a=67 ]]) end, { @@ -17970,7 +17970,7 @@ test:do_test( OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') ]]) end, { -- <where7-2.480.1> @@ -17988,7 +17988,7 @@ test:do_test( OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') ]]) end, { -- <where7-2.480.2> @@ -18006,12 +18006,12 @@ test:do_test( OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) OR b=201 OR a=99 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 36 AND 38) AND a!=37) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=946 OR b=993 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.481.1> @@ -18029,12 +18029,12 @@ test:do_test( OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) OR b=201 OR a=99 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 36 AND 38) AND a!=37) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=946 OR b=993 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.481.2> @@ -18048,7 +18048,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=806 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR b=916 OR b<0 @@ -18070,7 +18070,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=806 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR b=916 OR b<0 @@ -18093,11 +18093,11 @@ test:do_test( SELECT a FROM t2 WHERE b=836 OR d>1e10 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR f='pqrstuvwx' OR ((a BETWEEN 3 AND 5) AND a!=4) OR f='abcdefghi' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=33 OR ((a BETWEEN 19 AND 21) AND a!=20) OR ((a BETWEEN 88 AND 90) AND a!=89) @@ -18116,11 +18116,11 @@ test:do_test( SELECT a FROM t3 WHERE b=836 OR d>1e10 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR f='pqrstuvwx' OR ((a BETWEEN 3 AND 5) AND a!=4) OR f='abcdefghi' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=33 OR ((a BETWEEN 19 AND 21) AND a!=20) OR ((a BETWEEN 88 AND 90) AND a!=89) @@ -18140,10 +18140,10 @@ test:do_test( WHERE a=48 OR a=92 OR a=1 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=905 OR ((a BETWEEN 51 AND 53) AND a!=52) ]]) @@ -18161,10 +18161,10 @@ test:do_test( WHERE a=48 OR a=92 OR a=1 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=905 OR ((a BETWEEN 51 AND 53) AND a!=52) ]]) @@ -18215,12 +18215,12 @@ test:do_test( SELECT a FROM t2 WHERE b=740 OR b=564 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=11 OR ((a BETWEEN 44 AND 46) AND a!=45) OR b=322 OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR b=902 OR c>=34035 ]]) @@ -18237,12 +18237,12 @@ test:do_test( SELECT a FROM t3 WHERE b=740 OR b=564 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=11 OR ((a BETWEEN 44 AND 46) AND a!=45) OR b=322 OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR b=902 OR c>=34035 ]]) @@ -18264,7 +18264,7 @@ test:do_test( OR a=48 OR b=927 OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR f='abcdefghi' OR b=91 OR b=55 @@ -18287,7 +18287,7 @@ test:do_test( OR a=48 OR b=927 OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR f='abcdefghi' OR b=91 OR b=55 @@ -18303,7 +18303,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='srqponm' AND f GLOB 'efghi*') + WHERE (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR a=20 OR b=11 @@ -18319,7 +18319,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='srqponm' AND f GLOB 'efghi*') + WHERE (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR a=20 OR b=11 @@ -18338,7 +18338,7 @@ test:do_test( WHERE (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR b=55 OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=50 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) @@ -18358,7 +18358,7 @@ test:do_test( WHERE (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR b=55 OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=50 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) @@ -18375,8 +18375,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'ijklm*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.490.1> @@ -18389,8 +18389,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'ijklm*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.490.2> @@ -18405,7 +18405,7 @@ test:do_test( SELECT a FROM t2 WHERE b=704 OR b=924 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=113 ]]) end, { @@ -18421,7 +18421,7 @@ test:do_test( SELECT a FROM t3 WHERE b=704 OR b=924 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=113 ]]) end, { @@ -18503,11 +18503,11 @@ test:do_test( OR b=726 OR f='abcdefghi' OR b=179 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=539 OR b=66 OR ((a BETWEEN 86 AND 88) AND a!=87) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.494.1> @@ -18524,11 +18524,11 @@ test:do_test( OR b=726 OR f='abcdefghi' OR b=179 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=539 OR b=66 OR ((a BETWEEN 86 AND 88) AND a!=87) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.494.2> @@ -18573,11 +18573,11 @@ test:do_test( OR b=682 OR b=443 OR b=836 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR b=110 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.496.1> @@ -18594,11 +18594,11 @@ test:do_test( OR b=682 OR b=443 OR b=836 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR b=110 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.496.2> @@ -18611,15 +18611,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?zabc*' AND f GLOB 'yzab*') + WHERE (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=462 OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=22 OR b=594 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.497.1> @@ -18632,15 +18632,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?zabc*' AND f GLOB 'yzab*') + WHERE (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=462 OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=22 OR b=594 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.497.2> @@ -18653,11 +18653,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR f='vwxyzabcd' - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR a=37 OR a=50 ]]) @@ -18672,11 +18672,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR f='vwxyzabcd' - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR a=37 OR a=50 ]]) @@ -18693,10 +18693,10 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 83 AND 85) AND a!=84) OR b=784 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR b=825 OR a=80 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=531 OR a=100 @@ -18714,10 +18714,10 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 83 AND 85) AND a!=84) OR b=784 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR b=825 OR a=80 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=531 OR a=100 @@ -18733,7 +18733,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=220 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) @@ -18748,7 +18748,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=220 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) @@ -18797,9 +18797,9 @@ test:do_test( OR b=894 OR c=28028 OR b=905 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR b=1037 ]]) end, { @@ -18817,9 +18817,9 @@ test:do_test( OR b=894 OR c=28028 OR b=905 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR b=1037 ]]) end, { @@ -18863,9 +18863,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR b=861 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.504.1> @@ -18878,9 +18878,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR b=861 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.504.2> @@ -18894,13 +18894,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=704 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=25 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=487 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 77 AND 79) AND a!=78) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) @@ -18917,13 +18917,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=704 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=25 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=487 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 77 AND 79) AND a!=78) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) @@ -18940,16 +18940,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=19 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=674 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=355 OR ((a BETWEEN 72 AND 74) AND a!=73) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=28028 OR b=649 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='srqponm' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.506.1> @@ -18963,16 +18963,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=19 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=674 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=355 OR ((a BETWEEN 72 AND 74) AND a!=73) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=28028 OR b=649 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='srqponm' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.506.2> @@ -19020,7 +19020,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=135 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -19035,7 +19035,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=135 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -19049,8 +19049,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.509.1> @@ -19063,8 +19063,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.509.2> @@ -19077,7 +19077,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR f='ghijklmno' ]]) end, { @@ -19091,7 +19091,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR f='ghijklmno' ]]) end, { @@ -19187,7 +19187,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=99 OR a=54 @@ -19203,7 +19203,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=99 OR a=54 @@ -19220,7 +19220,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=300 - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=319 OR f='fghijklmn' OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -19238,7 +19238,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=300 - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=319 OR f='fghijklmn' OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -19263,7 +19263,7 @@ test:do_test( OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=748 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.515.1> @@ -19284,7 +19284,7 @@ test:do_test( OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=748 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.515.2> @@ -19333,10 +19333,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR b=110 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR c=26026 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR b=850 @@ -19353,10 +19353,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR b=110 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR c=26026 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR b=850 @@ -19375,9 +19375,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 1 AND 3) AND a!=2) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=135 OR a=28 OR ((a BETWEEN 1 AND 3) AND a!=2) @@ -19396,9 +19396,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 1 AND 3) AND a!=2) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=135 OR a=28 OR ((a BETWEEN 1 AND 3) AND a!=2) @@ -19485,9 +19485,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=52 ]]) end, { @@ -19501,9 +19501,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=52 ]]) end, { @@ -19517,7 +19517,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'abcde*') + WHERE (g='ihgfedc' AND f LIKE 'abcde%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR a=86 OR c=33033 @@ -19535,7 +19535,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'abcde*') + WHERE (g='ihgfedc' AND f LIKE 'abcde%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR a=86 OR c=33033 @@ -19557,7 +19557,7 @@ test:do_test( OR b=517 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR f='defghijkl' OR b=707 OR c>=34035 @@ -19580,7 +19580,7 @@ test:do_test( OR b=517 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR f='defghijkl' OR b=707 OR c>=34035 @@ -19602,7 +19602,7 @@ test:do_test( WHERE (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=209 OR b=399 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.524.1> @@ -19618,7 +19618,7 @@ test:do_test( WHERE (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=209 OR b=399 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.524.2> @@ -19632,11 +19632,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=597 OR a=95 - OR (g='nmlkjih' AND f GLOB 'defgh*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='nmlkjih' AND f LIKE 'defgh%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=432 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) ]]) @@ -19652,11 +19652,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=597 OR a=95 - OR (g='nmlkjih' AND f GLOB 'defgh*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='nmlkjih' AND f LIKE 'defgh%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=432 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) ]]) @@ -19680,7 +19680,7 @@ test:do_test( OR c=21021 OR b=330 OR b=231 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.526.1> @@ -19702,7 +19702,7 @@ test:do_test( OR c=21021 OR b=330 OR b=231 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.526.2> @@ -19715,7 +19715,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'fghij*') + WHERE (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR f IS NULL ]]) @@ -19730,7 +19730,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'fghij*') + WHERE (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR f IS NULL ]]) @@ -19746,9 +19746,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 99 AND 101) AND a!=100) - OR (g='fedcbaz' AND f GLOB 'pqrst*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') OR 1000000<b - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=990 ]]) end, { @@ -19763,9 +19763,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 99 AND 101) AND a!=100) - OR (g='fedcbaz' AND f GLOB 'pqrst*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') OR 1000000<b - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=990 ]]) end, { @@ -19781,7 +19781,7 @@ test:do_test( SELECT a FROM t2 WHERE b=165 OR a=69 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.529.1> @@ -19796,7 +19796,7 @@ test:do_test( SELECT a FROM t3 WHERE b=165 OR a=69 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.529.2> @@ -19809,13 +19809,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=784 OR b=583 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=814 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=619 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) ]]) @@ -19830,13 +19830,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=784 OR b=583 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=814 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=619 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) ]]) @@ -19853,7 +19853,7 @@ test:do_test( SELECT a FROM t2 WHERE a=86 OR b=484 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR b=418 OR b=509 OR a=42 @@ -19876,7 +19876,7 @@ test:do_test( SELECT a FROM t3 WHERE a=86 OR b=484 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR b=418 OR b=509 OR a=42 @@ -20007,7 +20007,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR c=5005 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=93 @@ -20015,7 +20015,7 @@ test:do_test( OR b=619 OR b=234 OR b=55 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) ]]) end, { @@ -20029,7 +20029,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR c=5005 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=93 @@ -20037,7 +20037,7 @@ test:do_test( OR b=619 OR b=234 OR b=55 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) ]]) end, { @@ -20053,11 +20053,11 @@ test:do_test( SELECT a FROM t2 WHERE b=355 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=806 OR b=462 OR b=531 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR f='mnopqrstu' ]]) end, { @@ -20073,11 +20073,11 @@ test:do_test( SELECT a FROM t3 WHERE b=355 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=806 OR b=462 OR b=531 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR f='mnopqrstu' ]]) end, { @@ -20093,9 +20093,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 60 AND 62) AND a!=61) OR f='pqrstuvwx' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=495 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR a=75 ]]) end, { @@ -20111,9 +20111,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 60 AND 62) AND a!=61) OR f='pqrstuvwx' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=495 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR a=75 ]]) end, { @@ -20127,8 +20127,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=748 OR b=913 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -20145,8 +20145,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=748 OR b=913 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -20167,7 +20167,7 @@ test:do_test( OR b=902 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=168 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=50 OR f='uvwxyzabc' OR b=836 @@ -20189,7 +20189,7 @@ test:do_test( OR b=902 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=168 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=50 OR f='uvwxyzabc' OR b=836 @@ -20243,13 +20243,13 @@ test:do_test( SELECT a FROM t2 WHERE b=814 OR c=30030 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR a=16 OR b=1048 OR b=113 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=729 OR a=54 ]]) @@ -20266,13 +20266,13 @@ test:do_test( SELECT a FROM t3 WHERE b=814 OR c=30030 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR a=16 OR b=1048 OR b=113 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=729 OR a=54 ]]) @@ -20288,15 +20288,15 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=399 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=814 OR c=22022 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=1 OR b=311 OR b=121 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=198 ]]) end, { @@ -20311,15 +20311,15 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=399 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=814 OR c=22022 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=1 OR b=311 OR b=121 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=198 ]]) end, { @@ -20403,7 +20403,7 @@ test:do_test( OR a=22 OR b=594 OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.545.1> @@ -20424,7 +20424,7 @@ test:do_test( OR a=22 OR b=594 OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.545.2> @@ -20443,7 +20443,7 @@ test:do_test( OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='mnopqrstu' OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=902 @@ -20465,7 +20465,7 @@ test:do_test( OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='mnopqrstu' OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=902 @@ -20481,8 +20481,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=13 ]]) end, { @@ -20496,8 +20496,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=13 ]]) end, { @@ -20511,11 +20511,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=410 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=418 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) end, { @@ -20529,11 +20529,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=410 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=418 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) end, { @@ -20552,8 +20552,8 @@ test:do_test( OR a=56 OR a=46 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) ]]) end, { @@ -20572,8 +20572,8 @@ test:do_test( OR a=56 OR a=46 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) ]]) end, { @@ -20633,7 +20633,7 @@ test:do_test( SELECT a FROM t2 WHERE b=539 OR b=418 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=759 ]]) end, { @@ -20649,7 +20649,7 @@ test:do_test( SELECT a FROM t3 WHERE b=539 OR b=418 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=759 ]]) end, { @@ -20664,8 +20664,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1001 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR c=34034 OR a=84 ]]) @@ -20681,8 +20681,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1001 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR c=34034 OR a=84 ]]) @@ -20702,7 +20702,7 @@ test:do_test( OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR ((a BETWEEN 71 AND 73) AND a!=72) OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=322 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR c=34034 @@ -20724,7 +20724,7 @@ test:do_test( OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR ((a BETWEEN 71 AND 73) AND a!=72) OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=322 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR c=34034 @@ -20742,12 +20742,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=13013 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=47 OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=828 ]]) end, { @@ -20762,12 +20762,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=13013 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=47 OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=828 ]]) end, { @@ -20783,7 +20783,7 @@ test:do_test( SELECT a FROM t2 WHERE b=451 OR b=836 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.555.1> @@ -20798,7 +20798,7 @@ test:do_test( SELECT a FROM t3 WHERE b=451 OR b=836 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.555.2> @@ -20848,7 +20848,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='tuvwxyzab' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.557.1> @@ -20862,7 +20862,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='tuvwxyzab' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.557.2> @@ -20881,7 +20881,7 @@ test:do_test( OR d<0.0 OR b=982 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR e IS NULL OR c=32032 @@ -20904,7 +20904,7 @@ test:do_test( OR d<0.0 OR b=982 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR e IS NULL OR c=32032 @@ -20922,9 +20922,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=62 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.559.1> @@ -20938,9 +20938,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=62 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.559.2> @@ -20994,8 +20994,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.561.1> @@ -21009,8 +21009,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.561.2> @@ -21026,7 +21026,7 @@ test:do_test( WHERE b=883 OR b=311 OR b=880 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=88 OR b=154 @@ -21048,7 +21048,7 @@ test:do_test( WHERE b=883 OR b=311 OR b=880 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=88 OR b=154 @@ -21067,12 +21067,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='onmlkji' AND f GLOB 'xyzab*') + WHERE (g='onmlkji' AND f LIKE 'xyzab%') OR a=10 OR b=190 OR ((a BETWEEN 8 AND 10) AND a!=9) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 67 AND 69) AND a!=68) OR b=385 OR a=82 @@ -21090,12 +21090,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='onmlkji' AND f GLOB 'xyzab*') + WHERE (g='onmlkji' AND f LIKE 'xyzab%') OR a=10 OR b=190 OR ((a BETWEEN 8 AND 10) AND a!=9) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 67 AND 69) AND a!=68) OR b=385 OR a=82 @@ -21151,7 +21151,7 @@ test:do_test( OR a=49 OR ((a BETWEEN 33 AND 35) AND a!=34) OR c=33033 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR g IS NULL OR b=220 @@ -21174,7 +21174,7 @@ test:do_test( OR a=49 OR ((a BETWEEN 33 AND 35) AND a!=34) OR c=33033 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR g IS NULL OR b=220 @@ -21191,7 +21191,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=212 OR b=418 OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -21207,7 +21207,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=212 OR b=418 OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -21283,8 +21283,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.569.1> @@ -21297,8 +21297,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.569.2> @@ -21356,7 +21356,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=18018 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=410 OR b=858 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21373,7 +21373,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=18018 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=410 OR b=858 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21389,7 +21389,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=781 ]]) end, { @@ -21403,7 +21403,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=781 ]]) end, { @@ -21420,10 +21420,10 @@ test:do_test( WHERE b=1070 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=54 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR a=9 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) ]]) end, { @@ -21440,10 +21440,10 @@ test:do_test( WHERE b=1070 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=54 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR a=9 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) ]]) end, { @@ -21460,8 +21460,8 @@ test:do_test( WHERE a=55 OR a=62 OR a=63 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'ijklm%') OR ((a BETWEEN 99 AND 101) AND a!=100) ]]) end, { @@ -21478,8 +21478,8 @@ test:do_test( WHERE a=55 OR a=62 OR a=63 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'ijklm%') OR ((a BETWEEN 99 AND 101) AND a!=100) ]]) end, { @@ -21527,9 +21527,9 @@ test:do_test( SELECT a FROM t2 WHERE b=553 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=583 OR a=56 ]]) @@ -21546,9 +21546,9 @@ test:do_test( SELECT a FROM t3 WHERE b=553 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=583 OR a=56 ]]) @@ -21565,7 +21565,7 @@ test:do_test( SELECT a FROM t2 WHERE a=83 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR a=1 OR ((a BETWEEN 17 AND 19) AND a!=18) OR ((a BETWEEN 49 AND 51) AND a!=50) @@ -21584,7 +21584,7 @@ test:do_test( SELECT a FROM t3 WHERE a=83 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR a=1 OR ((a BETWEEN 17 AND 19) AND a!=18) OR ((a BETWEEN 49 AND 51) AND a!=50) @@ -21635,7 +21635,7 @@ test:do_test( OR a=92 OR a=63 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.579.1> @@ -21652,7 +21652,7 @@ test:do_test( OR a=92 OR a=63 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.579.2> @@ -21668,7 +21668,7 @@ test:do_test( WHERE b=440 OR f='vwxyzabcd' OR b=190 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR b=88 OR b=58 @@ -21687,7 +21687,7 @@ test:do_test( WHERE b=440 OR f='vwxyzabcd' OR b=190 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR b=88 OR b=58 @@ -21707,7 +21707,7 @@ test:do_test( OR c=24024 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=1001 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR d>1e10 OR b=531 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21728,7 +21728,7 @@ test:do_test( OR c=24024 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=1001 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR d>1e10 OR b=531 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21774,7 +21774,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR ((a BETWEEN 80 AND 82) AND a!=81) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 91 AND 93) AND a!=92) @@ -21795,7 +21795,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR ((a BETWEEN 80 AND 82) AND a!=81) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 91 AND 93) AND a!=92) @@ -21820,8 +21820,8 @@ test:do_test( OR b=806 OR b=605 OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.584.1> @@ -21839,8 +21839,8 @@ test:do_test( OR b=806 OR b=605 OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.584.2> @@ -21856,9 +21856,9 @@ test:do_test( WHERE ((a BETWEEN 84 AND 86) AND a!=85) OR b=572 OR c=10010 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=29 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.585.1> @@ -21874,9 +21874,9 @@ test:do_test( WHERE ((a BETWEEN 84 AND 86) AND a!=85) OR b=572 OR c=10010 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=29 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.585.2> @@ -21962,9 +21962,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=5005 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR b=143 OR a=68 OR a=77 @@ -21982,9 +21982,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=5005 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR b=143 OR a=68 OR a=77 @@ -22002,10 +22002,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=5.0 AND d<6.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR ((a BETWEEN 76 AND 78) AND a!=77) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=99 OR ((a BETWEEN 12 AND 14) AND a!=13) ]]) @@ -22021,10 +22021,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=5.0 AND d<6.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR ((a BETWEEN 76 AND 78) AND a!=77) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=99 OR ((a BETWEEN 12 AND 14) AND a!=13) ]]) @@ -22039,12 +22039,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'opqrs*') + WHERE (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=971 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.590.1> @@ -22057,12 +22057,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'opqrs*') + WHERE (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=971 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.590.2> @@ -22075,12 +22075,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=806 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=1015 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.591.1> @@ -22093,12 +22093,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=806 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=1015 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.591.2> @@ -22119,7 +22119,7 @@ test:do_test( OR a=26 OR b=1048 OR b=561 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR a=56 ]]) @@ -22142,7 +22142,7 @@ test:do_test( OR a=26 OR b=1048 OR b=561 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR a=56 ]]) @@ -22165,7 +22165,7 @@ test:do_test( OR b=113 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) OR b=385 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.593.1> @@ -22186,7 +22186,7 @@ test:do_test( OR b=113 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) OR b=385 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.593.2> @@ -22204,7 +22204,7 @@ test:do_test( OR b=674 OR b=825 OR b=704 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=76 @@ -22227,7 +22227,7 @@ test:do_test( OR b=674 OR b=825 OR b=704 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=76 @@ -22246,7 +22246,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=869 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.595.1> @@ -22260,7 +22260,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=869 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.595.2> @@ -22303,12 +22303,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'hijkl*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='rqponml' AND f LIKE 'hijkl%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=8 OR a=72 OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.597.1> @@ -22321,12 +22321,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'hijkl*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='rqponml' AND f LIKE 'hijkl%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=8 OR a=72 OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.597.2> @@ -22342,7 +22342,7 @@ test:do_test( WHERE a=20 OR ((a BETWEEN 74 AND 76) AND a!=75) OR b=341 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=814 OR b=1026 OR a=14 @@ -22364,7 +22364,7 @@ test:do_test( WHERE a=20 OR ((a BETWEEN 74 AND 76) AND a!=75) OR b=341 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=814 OR b=1026 OR a=14 @@ -22387,8 +22387,8 @@ test:do_test( OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=839 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'xyzab*') - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'xyzab%') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR c=7007 ]]) end, { @@ -22406,8 +22406,8 @@ test:do_test( OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=839 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'xyzab*') - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'xyzab%') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR c=7007 ]]) end, { @@ -22421,7 +22421,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=21 OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -22443,7 +22443,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=21 OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -22469,11 +22469,11 @@ test:do_test( OR f='bcdefghij' OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=762 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.601.1> @@ -22490,11 +22490,11 @@ test:do_test( OR f='bcdefghij' OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=762 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.601.2> @@ -22574,7 +22574,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=1067 OR b=231 @@ -22595,7 +22595,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=1067 OR b=231 @@ -22620,7 +22620,7 @@ test:do_test( OR b=396 OR b=1059 OR a=69 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=440 OR b=825 ]]) @@ -22640,7 +22640,7 @@ test:do_test( OR b=396 OR b=1059 OR a=69 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=440 OR b=825 ]]) @@ -22658,7 +22658,7 @@ test:do_test( WHERE (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR b=308 OR c<=10 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR f='ghijklmno' OR b=289 OR a=5 @@ -22680,7 +22680,7 @@ test:do_test( WHERE (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR b=308 OR c<=10 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR f='ghijklmno' OR b=289 OR a=5 @@ -22703,9 +22703,9 @@ test:do_test( OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=993 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=663 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=869 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=121 @@ -22725,9 +22725,9 @@ test:do_test( OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=993 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=663 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=869 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=121 @@ -22743,9 +22743,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=770 ]]) end, { @@ -22759,9 +22759,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=770 ]]) end, { @@ -22776,10 +22776,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (g='nmlkjih' AND f GLOB 'fghij*') - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='nmlkjih' AND f LIKE 'fghij%') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.609.1> @@ -22793,10 +22793,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (g='nmlkjih' AND f GLOB 'fghij*') - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='nmlkjih' AND f LIKE 'fghij%') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.609.2> @@ -22855,16 +22855,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') OR b=1092 - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR a=77 OR a=63 OR b=762 OR b=894 OR b=685 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.611.1> @@ -22877,16 +22877,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') OR b=1092 - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR a=77 OR a=63 OR b=762 OR b=894 OR b=685 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.611.2> @@ -22899,7 +22899,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=231 ]]) @@ -22914,7 +22914,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=231 ]]) @@ -22930,7 +22930,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=828 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 8 AND 10) AND a!=9) ]]) end, { @@ -22945,7 +22945,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=828 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 8 AND 10) AND a!=9) ]]) end, { @@ -22959,13 +22959,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=520 OR ((a BETWEEN 4 AND 6) AND a!=5) OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR a=21 ]]) end, { @@ -22979,13 +22979,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=520 OR ((a BETWEEN 4 AND 6) AND a!=5) OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR a=21 ]]) end, { @@ -23000,7 +23000,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=553 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR b=1034 OR b=418 OR a=57 @@ -23019,7 +23019,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=553 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR b=1034 OR b=418 OR a=57 @@ -23038,9 +23038,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=43 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=418 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=594 OR a=21 @@ -23060,9 +23060,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=43 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=418 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=594 OR a=21 @@ -23082,7 +23082,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=671 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 95 AND 97) AND a!=96) ]]) end, { @@ -23097,7 +23097,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=671 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 95 AND 97) AND a!=96) ]]) end, { @@ -23148,7 +23148,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=806 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) OR b=275 @@ -23166,7 +23166,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=806 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) OR b=275 @@ -23184,12 +23184,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=24024 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=429 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR b=110 OR a=39 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.620.1> @@ -23203,12 +23203,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=24024 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=429 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR b=110 OR a=39 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.620.2> @@ -23287,7 +23287,7 @@ test:do_test( SELECT a FROM t2 WHERE b=509 OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=718 OR a=4 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -23307,7 +23307,7 @@ test:do_test( SELECT a FROM t3 WHERE b=509 OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=718 OR a=4 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -23325,7 +23325,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=1026 OR a=93 OR c=18018 @@ -23341,7 +23341,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=1026 OR a=93 OR c=18018 @@ -23422,11 +23422,11 @@ test:do_test( WHERE b=990 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=531 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR f='qrstuvwxy' ]]) end, { @@ -23443,11 +23443,11 @@ test:do_test( WHERE b=990 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=531 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR f='qrstuvwxy' ]]) end, { @@ -23462,9 +23462,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=60 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=627 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR b=883 @@ -23484,9 +23484,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=60 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=627 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR b=883 @@ -23572,13 +23572,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=28 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=69 OR ((a BETWEEN 85 AND 87) AND a!=86) OR b=781 OR a=64 OR b=91 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR a=16 OR b=278 OR a=26 @@ -23595,13 +23595,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=28 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=69 OR ((a BETWEEN 85 AND 87) AND a!=86) OR b=781 OR a=64 OR b=91 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR a=16 OR b=278 OR a=26 @@ -23710,7 +23710,7 @@ test:do_test( WHERE f='yzabcdefg' OR ((a BETWEEN 48 AND 50) AND a!=49) OR a=100 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR a=62 OR a=67 OR b=605 @@ -23733,7 +23733,7 @@ test:do_test( WHERE f='yzabcdefg' OR ((a BETWEEN 48 AND 50) AND a!=49) OR a=100 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR a=62 OR a=67 OR b=605 @@ -23787,9 +23787,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=751 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR a=67 OR b=102 @@ -23805,9 +23805,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=751 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR a=67 OR b=102 @@ -23862,14 +23862,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=2002 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=33 OR b=817 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) ]]) end, { @@ -23884,14 +23884,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=2002 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=33 OR b=817 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) ]]) end, { @@ -23905,8 +23905,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=80 OR a=53 OR a=62 @@ -23926,8 +23926,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=80 OR a=53 OR a=62 @@ -23951,7 +23951,7 @@ test:do_test( OR b=652 OR a=72 OR b=209 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR a=38 OR ((a BETWEEN 66 AND 68) AND a!=67) OR d>1e10 @@ -23971,7 +23971,7 @@ test:do_test( OR b=652 OR a=72 OR b=209 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR a=38 OR ((a BETWEEN 66 AND 68) AND a!=67) OR d>1e10 @@ -24016,11 +24016,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=179 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=509 OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='bcdefghij' ]]) end, { @@ -24035,11 +24035,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=179 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=509 OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='bcdefghij' ]]) end, { @@ -24149,13 +24149,13 @@ test:do_test( SELECT a FROM t2 WHERE (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR b=421 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=704 OR a=90 OR a=78 OR 1000000<b OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -24171,13 +24171,13 @@ test:do_test( SELECT a FROM t3 WHERE (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR b=421 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=704 OR a=90 OR a=78 OR 1000000<b OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -24191,7 +24191,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'pqrst*') + WHERE (g='fedcbaz' AND f LIKE 'pqrst%') OR ((a BETWEEN 93 AND 95) AND a!=94) ]]) end, { @@ -24205,7 +24205,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'pqrst*') + WHERE (g='fedcbaz' AND f LIKE 'pqrst%') OR ((a BETWEEN 93 AND 95) AND a!=94) ]]) end, { @@ -24226,7 +24226,7 @@ test:do_test( OR ((a BETWEEN 25 AND 27) AND a!=26) OR e IS NULL OR a=48 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.649.1> @@ -24246,7 +24246,7 @@ test:do_test( OR ((a BETWEEN 25 AND 27) AND a!=26) OR e IS NULL OR a=48 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.649.2> @@ -24292,7 +24292,7 @@ test:do_test( WHERE b=275 OR ((a BETWEEN 57 AND 59) AND a!=58) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) OR f='ijklmnopq' ]]) @@ -24310,7 +24310,7 @@ test:do_test( WHERE b=275 OR ((a BETWEEN 57 AND 59) AND a!=58) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) OR f='ijklmnopq' ]]) @@ -24360,7 +24360,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='zabcdefgh' - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR a=54 OR b=770 OR ((a BETWEEN 96 AND 98) AND a!=97) @@ -24380,7 +24380,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='zabcdefgh' - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR a=54 OR b=770 OR ((a BETWEEN 96 AND 98) AND a!=97) @@ -24446,7 +24446,7 @@ test:do_test( WHERE b=223 OR a=14 OR ((a BETWEEN 74 AND 76) AND a!=75) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=539 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -24467,7 +24467,7 @@ test:do_test( WHERE b=223 OR a=14 OR ((a BETWEEN 74 AND 76) AND a!=75) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=539 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -24486,7 +24486,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=99 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=73 OR a=56 OR b=253 @@ -24504,7 +24504,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=99 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=73 OR a=56 OR b=253 @@ -24524,8 +24524,8 @@ test:do_test( WHERE b=927 OR b=300 OR b=223 - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=154 OR b=759 ]]) @@ -24543,8 +24543,8 @@ test:do_test( WHERE b=927 OR b=300 OR b=223 - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=154 OR b=759 ]]) @@ -24562,7 +24562,7 @@ test:do_test( WHERE b=242 OR b=905 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR a=24 OR ((a BETWEEN 67 AND 69) AND a!=68) @@ -24584,7 +24584,7 @@ test:do_test( WHERE b=242 OR b=905 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR a=24 OR ((a BETWEEN 67 AND 69) AND a!=68) @@ -24606,10 +24606,10 @@ test:do_test( WHERE b=190 OR a=72 OR b=377 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) OR b=476 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.659.1> @@ -24625,10 +24625,10 @@ test:do_test( WHERE b=190 OR a=72 OR b=377 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) OR b=476 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.659.2> @@ -24644,12 +24644,12 @@ test:do_test( WHERE b=245 OR b=638 OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR f='opqrstuvw' OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=817 OR a=85 - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.660.1> @@ -24665,12 +24665,12 @@ test:do_test( WHERE b=245 OR b=638 OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR f='opqrstuvw' OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=817 OR a=85 - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.660.2> @@ -24749,9 +24749,9 @@ test:do_test( OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR c<=10 OR ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=553 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=1045 ]]) end, { @@ -24769,9 +24769,9 @@ test:do_test( OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR c<=10 OR ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=553 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=1045 ]]) end, { @@ -24788,12 +24788,12 @@ test:do_test( WHERE b=440 OR ((a BETWEEN 3 AND 5) AND a!=4) OR ((a BETWEEN 44 AND 46) AND a!=45) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=89 OR c=18018 OR b=154 OR b=506 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=78 OR b=751 ]]) @@ -24811,12 +24811,12 @@ test:do_test( WHERE b=440 OR ((a BETWEEN 3 AND 5) AND a!=4) OR ((a BETWEEN 44 AND 46) AND a!=45) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=89 OR c=18018 OR b=154 OR b=506 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=78 OR b=751 ]]) @@ -24832,13 +24832,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=407 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=209 OR b=814 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) OR b=1092 ]]) @@ -24854,13 +24854,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=407 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=209 OR b=814 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) OR b=1092 ]]) @@ -25002,10 +25002,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=27 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=121 OR ((a BETWEEN 7 AND 9) AND a!=8) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=67 OR ((a BETWEEN 30 AND 32) AND a!=31) OR c=1001 @@ -25024,10 +25024,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=27 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=121 OR ((a BETWEEN 7 AND 9) AND a!=8) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=67 OR ((a BETWEEN 30 AND 32) AND a!=31) OR c=1001 @@ -25046,7 +25046,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=99 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) @@ -25063,7 +25063,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=99 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) @@ -25083,9 +25083,9 @@ test:do_test( OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=355 OR b=814 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=81 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=542 OR b=795 ]]) @@ -25104,9 +25104,9 @@ test:do_test( OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=355 OR b=814 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=81 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=542 OR b=795 ]]) @@ -25124,10 +25124,10 @@ test:do_test( WHERE (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=363 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=619 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=73 ]]) end, { @@ -25144,10 +25144,10 @@ test:do_test( WHERE (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=363 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=619 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=73 ]]) end, { @@ -25163,9 +25163,9 @@ test:do_test( SELECT a FROM t2 WHERE b=935 OR a=42 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=330 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.673.1> @@ -25180,9 +25180,9 @@ test:do_test( SELECT a FROM t3 WHERE b=935 OR a=42 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=330 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.673.2> @@ -25201,7 +25201,7 @@ test:do_test( OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR a=64 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=89 ]]) end, { @@ -25221,7 +25221,7 @@ test:do_test( OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR a=64 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=89 ]]) end, { @@ -25240,9 +25240,9 @@ test:do_test( OR b=663 OR c=17017 OR b=561 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=495 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR b=352 OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) @@ -25262,9 +25262,9 @@ test:do_test( OR b=663 OR c=17017 OR b=561 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=495 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR b=352 OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) @@ -25280,7 +25280,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR f='klmnopqrs' OR f='lmnopqrst' ]]) @@ -25296,7 +25296,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR f='klmnopqrs' OR f='lmnopqrst' ]]) @@ -25342,16 +25342,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=36 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=682 OR ((a BETWEEN 53 AND 55) AND a!=54) OR b=91 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 95 AND 97) AND a!=96) OR c=12012 OR b=267 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.678.1> @@ -25365,16 +25365,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=36 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=682 OR ((a BETWEEN 53 AND 55) AND a!=54) OR b=91 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 95 AND 97) AND a!=96) OR c=12012 OR b=267 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.678.2> @@ -25390,12 +25390,12 @@ test:do_test( WHERE b=594 OR f='hijklmnop' OR ((a BETWEEN 65 AND 67) AND a!=66) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=707 OR b=363 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=157 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.679.1> @@ -25411,12 +25411,12 @@ test:do_test( WHERE b=594 OR f='hijklmnop' OR ((a BETWEEN 65 AND 67) AND a!=66) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=707 OR b=363 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=157 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.679.2> @@ -25473,7 +25473,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') OR b=674 OR ((a BETWEEN 38 AND 40) AND a!=39) OR c=3003 @@ -25492,7 +25492,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') OR b=674 OR ((a BETWEEN 38 AND 40) AND a!=39) OR c=3003 @@ -25554,7 +25554,7 @@ test:do_test( OR b=707 OR f='vwxyzabcd' OR b=286 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=693 OR ((a BETWEEN 6 AND 8) AND a!=7) ]]) @@ -25576,7 +25576,7 @@ test:do_test( OR b=707 OR f='vwxyzabcd' OR b=286 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=693 OR ((a BETWEEN 6 AND 8) AND a!=7) ]]) @@ -25596,8 +25596,8 @@ test:do_test( OR a=52 OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR d<0.0 - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=168 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' @@ -25619,8 +25619,8 @@ test:do_test( OR a=52 OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR d<0.0 - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=168 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' @@ -25638,12 +25638,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='rstuvwxyz' - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=14 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) ]]) @@ -25659,12 +25659,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='rstuvwxyz' - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=14 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) ]]) @@ -25681,9 +25681,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 13 AND 15) AND a!=14) OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='mnopqrstu' - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR a=38 OR c=26026 @@ -25701,9 +25701,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 13 AND 15) AND a!=14) OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='mnopqrstu' - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR a=38 OR c=26026 @@ -25719,11 +25719,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=7 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='srqponm' AND f LIKE 'ghijk%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -25737,11 +25737,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=7 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='srqponm' AND f LIKE 'ghijk%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -25759,8 +25759,8 @@ test:do_test( OR b=938 OR b=484 OR b=652 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='opqrstuvw' ]]) end, { @@ -25778,8 +25778,8 @@ test:do_test( OR b=938 OR b=484 OR b=652 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='opqrstuvw' ]]) end, { @@ -25835,12 +25835,12 @@ test:do_test( SELECT a FROM t2 WHERE a=25 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=443 OR b=564 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=531 OR b=1081 OR a=96 @@ -25858,12 +25858,12 @@ test:do_test( SELECT a FROM t3 WHERE a=25 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=443 OR b=564 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=531 OR b=1081 OR a=96 @@ -25880,7 +25880,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=36 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.691.1> @@ -25894,7 +25894,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=36 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.691.2> @@ -25907,7 +25907,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') OR b=531 OR ((a BETWEEN 93 AND 95) AND a!=94) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -25923,7 +25923,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') OR b=531 OR ((a BETWEEN 93 AND 95) AND a!=94) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -25975,8 +25975,8 @@ test:do_test( OR b=718 OR a=18 OR a=3 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR c=28028 ]]) end, { @@ -25998,8 +25998,8 @@ test:do_test( OR b=718 OR a=18 OR a=3 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR c=28028 ]]) end, { @@ -26062,7 +26062,7 @@ test:do_test( OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR ((a BETWEEN 30 AND 32) AND a!=31) OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) ]]) end, { @@ -26081,7 +26081,7 @@ test:do_test( OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR ((a BETWEEN 30 AND 32) AND a!=31) OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) ]]) end, { @@ -26095,7 +26095,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR b=883 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=938 @@ -26115,7 +26115,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR b=883 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=938 @@ -26167,7 +26167,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'abcde*') + WHERE (g='tsrqpon' AND f LIKE 'abcde%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR ((a BETWEEN 68 AND 70) AND a!=69) OR ((a BETWEEN 74 AND 76) AND a!=75) @@ -26185,7 +26185,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'abcde*') + WHERE (g='tsrqpon' AND f LIKE 'abcde%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR ((a BETWEEN 68 AND 70) AND a!=69) OR ((a BETWEEN 74 AND 76) AND a!=75) @@ -26271,12 +26271,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR f='lmnopqrst' OR ((a BETWEEN 11 AND 13) AND a!=12) OR b=872 @@ -26294,12 +26294,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR f='lmnopqrst' OR ((a BETWEEN 11 AND 13) AND a!=12) OR b=872 @@ -26319,14 +26319,14 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 71 AND 73) AND a!=72) OR a=20 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=1004 OR b=77 OR b=927 OR a=99 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.703.1> @@ -26341,14 +26341,14 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 71 AND 73) AND a!=72) OR a=20 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=1004 OR b=77 OR b=927 OR a=99 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.703.2> @@ -26394,7 +26394,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=572 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.705.1> @@ -26408,7 +26408,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=572 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.705.2> @@ -26424,8 +26424,8 @@ test:do_test( WHERE (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 54 AND 56) AND a!=55) OR f='lmnopqrst' - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=23 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) @@ -26443,8 +26443,8 @@ test:do_test( WHERE (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 54 AND 56) AND a!=55) OR f='lmnopqrst' - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=23 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) @@ -26463,13 +26463,13 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=605 OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR b=759 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 38 AND 40) AND a!=39) OR a=40 OR f='ghijklmno' - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.707.1> @@ -26486,13 +26486,13 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=605 OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR b=759 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 38 AND 40) AND a!=39) OR a=40 OR f='ghijklmno' - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.707.2> @@ -26601,7 +26601,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR a=34 OR ((a BETWEEN 6 AND 8) AND a!=7) OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) @@ -26619,7 +26619,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR a=34 OR ((a BETWEEN 6 AND 8) AND a!=7) OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) @@ -26637,16 +26637,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR a=52 OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='ghijklmno' - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=319 OR a=34 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR f='hijklmnop' ]]) end, { @@ -26660,16 +26660,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR a=52 OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='ghijklmno' - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=319 OR a=34 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR f='hijklmnop' ]]) end, { @@ -26683,7 +26683,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR a=47 @@ -26699,7 +26699,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR a=47 @@ -26781,11 +26781,11 @@ test:do_test( SELECT a FROM t2 WHERE c=31031 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=256 OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=715 OR b=212 OR b=99 @@ -26804,11 +26804,11 @@ test:do_test( SELECT a FROM t3 WHERE c=31031 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=256 OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=715 OR b=212 OR b=99 @@ -26899,7 +26899,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 62 AND 64) AND a!=63) ]]) end, { @@ -26913,7 +26913,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 62 AND 64) AND a!=63) ]]) end, { @@ -26929,11 +26929,11 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 43 AND 45) AND a!=44) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=43 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) OR b=729 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.720.1> @@ -26948,11 +26948,11 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 43 AND 45) AND a!=44) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=43 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) OR b=729 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.720.2> @@ -26972,7 +26972,7 @@ test:do_test( OR c=8008 OR f='opqrstuvw' OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.721.1> @@ -26992,7 +26992,7 @@ test:do_test( OR c=8008 OR f='opqrstuvw' OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.721.2> @@ -27008,9 +27008,9 @@ test:do_test( WHERE ((a BETWEEN 40 AND 42) AND a!=41) OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR c<=10 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR a=35 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=1089 OR a=73 OR b=737 @@ -27031,9 +27031,9 @@ test:do_test( WHERE ((a BETWEEN 40 AND 42) AND a!=41) OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR c<=10 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR a=35 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=1089 OR a=73 OR b=737 @@ -27053,7 +27053,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 0 AND 2) AND a!=1) OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=762 OR ((a BETWEEN 39 AND 41) AND a!=40) OR a=80 @@ -27071,7 +27071,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 0 AND 2) AND a!=1) OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=762 OR ((a BETWEEN 39 AND 41) AND a!=40) OR a=80 @@ -27092,10 +27092,10 @@ test:do_test( OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=979 OR a=36 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=55 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.724.1> @@ -27113,10 +27113,10 @@ test:do_test( OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=979 OR a=36 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=55 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.724.2> @@ -27131,8 +27131,8 @@ test:do_test( SELECT a FROM t2 WHERE a=75 OR a=61 - OR (g='onmlkji' AND f GLOB 'abcde*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'abcde%') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.725.1> @@ -27147,8 +27147,8 @@ test:do_test( SELECT a FROM t3 WHERE a=75 OR a=61 - OR (g='onmlkji' AND f GLOB 'abcde*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'abcde%') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.725.2> @@ -27162,7 +27162,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1004 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR a=56 ]]) @@ -27178,7 +27178,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1004 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR a=56 ]]) @@ -27194,13 +27194,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=93 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR a=83 OR b=828 OR b=454 OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=924 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR a=50 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) ]]) @@ -27216,13 +27216,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=93 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR a=83 OR b=828 OR b=454 OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=924 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR a=50 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) ]]) @@ -27269,7 +27269,7 @@ test:do_test( SELECT a FROM t2 WHERE a=55 OR a=65 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.729.1> @@ -27284,7 +27284,7 @@ test:do_test( SELECT a FROM t3 WHERE a=55 OR a=65 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.729.2> @@ -27300,7 +27300,7 @@ test:do_test( WHERE ((a BETWEEN 72 AND 74) AND a!=73) OR b=605 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR f='ijklmnopq' OR ((a BETWEEN 86 AND 88) AND a!=87) @@ -27322,7 +27322,7 @@ test:do_test( WHERE ((a BETWEEN 72 AND 74) AND a!=73) OR b=605 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR f='ijklmnopq' OR ((a BETWEEN 86 AND 88) AND a!=87) @@ -27342,7 +27342,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=476 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=982 OR a=43 OR b=355 @@ -27359,7 +27359,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=476 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=982 OR a=43 OR b=355 @@ -27377,8 +27377,8 @@ test:do_test( SELECT a FROM t2 WHERE a=85 OR b=718 - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) ]]) end, { @@ -27394,8 +27394,8 @@ test:do_test( SELECT a FROM t3 WHERE a=85 OR b=718 - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) ]]) end, { @@ -27515,12 +27515,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=465 OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=37 OR b=1056 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=1023 ]]) @@ -27535,12 +27535,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=465 OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=37 OR b=1056 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=1023 ]]) @@ -27557,7 +27557,7 @@ test:do_test( SELECT a FROM t2 WHERE a=76 OR a=8 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=495 OR b=663 OR a=98 @@ -27576,7 +27576,7 @@ test:do_test( SELECT a FROM t3 WHERE a=76 OR a=8 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=495 OR b=663 OR a=98 @@ -27595,7 +27595,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1081 OR b=542 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=828 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -27615,7 +27615,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1081 OR b=542 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=828 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -27745,9 +27745,9 @@ test:do_test( SELECT a FROM t2 WHERE b=880 OR b=696 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=308 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 96 AND 98) AND a!=97) ]]) end, { @@ -27763,9 +27763,9 @@ test:do_test( SELECT a FROM t3 WHERE b=880 OR b=696 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=308 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 96 AND 98) AND a!=97) ]]) end, { @@ -27779,7 +27779,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR a=24 OR f IS NULL OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) @@ -27798,7 +27798,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR a=24 OR f IS NULL OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) @@ -27819,7 +27819,7 @@ test:do_test( SELECT a FROM t2 WHERE a=94 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=792 OR a=77 OR a=26 @@ -27839,7 +27839,7 @@ test:do_test( SELECT a FROM t3 WHERE a=94 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=792 OR a=77 OR a=26 @@ -27935,11 +27935,11 @@ test:do_test( OR c=19019 OR a=42 OR b=938 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.747.1> @@ -27958,11 +27958,11 @@ test:do_test( OR c=19019 OR a=42 OR b=938 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.747.2> @@ -27977,7 +27977,7 @@ test:do_test( SELECT a FROM t2 WHERE b=179 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.748.1> @@ -27992,7 +27992,7 @@ test:do_test( SELECT a FROM t3 WHERE b=179 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.748.2> @@ -28005,12 +28005,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') OR f='xyzabcdef' OR ((a BETWEEN 49 AND 51) AND a!=50) OR b=575 OR b=385 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=46 OR b=220 @@ -28027,12 +28027,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') OR f='xyzabcdef' OR ((a BETWEEN 49 AND 51) AND a!=50) OR b=575 OR b=385 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=46 OR b=220 @@ -28055,7 +28055,7 @@ test:do_test( OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR c=31031 OR b=869 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=245 OR a=92 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) @@ -28078,7 +28078,7 @@ test:do_test( OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR c=31031 OR b=869 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=245 OR a=92 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) @@ -28099,8 +28099,8 @@ test:do_test( OR c=28028 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR ((a BETWEEN 17 AND 19) AND a!=18) OR c=9009 OR a=17 @@ -28121,8 +28121,8 @@ test:do_test( OR c=28028 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR ((a BETWEEN 17 AND 19) AND a!=18) OR c=9009 OR a=17 @@ -28141,7 +28141,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=57.0 AND d<58.0 AND d IS NOT NULL) OR b=762 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='tuvwxyzab' OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -28161,7 +28161,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=57.0 AND d<58.0 AND d IS NOT NULL) OR b=762 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='tuvwxyzab' OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -28219,7 +28219,7 @@ test:do_test( OR a=14 OR c=16016 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR f='jklmnopqr' OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) @@ -28240,7 +28240,7 @@ test:do_test( OR a=14 OR c=16016 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR f='jklmnopqr' OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) @@ -28258,12 +28258,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=949 - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR c<=10 OR a=14 OR b=608 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=121 OR b=333 @@ -28281,12 +28281,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=949 - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR c<=10 OR a=14 OR b=608 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=121 OR b=333 @@ -28303,7 +28303,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=355 OR b=627 OR b=1001 @@ -28321,7 +28321,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=355 OR b=627 OR b=1001 @@ -28339,7 +28339,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) ]]) end, { @@ -28353,7 +28353,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) ]]) end, { @@ -28370,11 +28370,11 @@ test:do_test( WHERE b=685 OR a=14 OR b=990 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='efghijklm' OR c=1001 OR b=784 - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) end, { @@ -28391,11 +28391,11 @@ test:do_test( WHERE b=685 OR a=14 OR b=990 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='efghijklm' OR c=1001 OR b=784 - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) end, { @@ -28410,7 +28410,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=54 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR c=26026 OR ((a BETWEEN 97 AND 99) AND a!=98) ]]) @@ -28426,7 +28426,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=54 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR c=26026 OR ((a BETWEEN 97 AND 99) AND a!=98) ]]) @@ -28441,13 +28441,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ghijk*') + WHERE (g='hgfedcb' AND f LIKE 'ghijk%') OR c=24024 OR a=98 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=5 OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='pqrstuvwx' OR f='bcdefghij' OR b=1001 @@ -28464,13 +28464,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ghijk*') + WHERE (g='hgfedcb' AND f LIKE 'ghijk%') OR c=24024 OR a=98 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=5 OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='pqrstuvwx' OR f='bcdefghij' OR b=1001 @@ -28488,11 +28488,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=781 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR f='lmnopqrst' OR a=39 OR a=100 @@ -28510,11 +28510,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=781 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR f='lmnopqrst' OR a=39 OR a=100 @@ -28533,11 +28533,11 @@ test:do_test( SELECT a FROM t2 WHERE c=4004 OR b=718 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=50 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR b=363 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR b=1023 ]]) end, { @@ -28553,11 +28553,11 @@ test:do_test( SELECT a FROM t3 WHERE c=4004 OR b=718 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=50 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR b=363 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR b=1023 ]]) end, { @@ -28576,8 +28576,8 @@ test:do_test( OR b=473 OR ((a BETWEEN 43 AND 45) AND a!=44) OR b=586 - OR (g='tsrqpon' AND f GLOB 'abcde*') - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (g='tsrqpon' AND f LIKE 'abcde%') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.763.1> @@ -28595,8 +28595,8 @@ test:do_test( OR b=473 OR ((a BETWEEN 43 AND 45) AND a!=44) OR b=586 - OR (g='tsrqpon' AND f GLOB 'abcde*') - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (g='tsrqpon' AND f LIKE 'abcde%') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.763.2> @@ -28609,7 +28609,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) ]]) @@ -28624,7 +28624,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) ]]) @@ -28639,11 +28639,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 76 AND 78) AND a!=77) OR a=47 - OR (g='kjihgfe' AND f GLOB 'qrstu*') - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR f='lmnopqrst' ]]) @@ -28658,11 +28658,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 76 AND 78) AND a!=77) OR a=47 - OR (g='kjihgfe' AND f GLOB 'qrstu*') - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR f='lmnopqrst' ]]) @@ -28680,7 +28680,7 @@ test:do_test( WHERE c>=34035 OR a=29 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR f='abcdefghi' OR b=993 OR ((a BETWEEN 52 AND 54) AND a!=53) @@ -28700,7 +28700,7 @@ test:do_test( WHERE c>=34035 OR a=29 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR f='abcdefghi' OR b=993 OR ((a BETWEEN 52 AND 54) AND a!=53) @@ -28878,7 +28878,7 @@ test:do_test( WHERE ((a BETWEEN 32 AND 34) AND a!=33) OR b=1045 OR c=27027 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') ]]) end, { -- <where7-2.771.1> @@ -28894,7 +28894,7 @@ test:do_test( WHERE ((a BETWEEN 32 AND 34) AND a!=33) OR b=1045 OR c=27027 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') ]]) end, { -- <where7-2.771.2> @@ -28910,7 +28910,7 @@ test:do_test( WHERE a=87 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=487 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.772.1> @@ -28926,7 +28926,7 @@ test:do_test( WHERE a=87 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=487 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.772.2> @@ -29018,10 +29018,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=220 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=363 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) ]]) @@ -29037,10 +29037,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=220 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=363 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) ]]) @@ -29096,8 +29096,8 @@ test:do_test( WHERE b=1059 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=960 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=894 OR c=2002 ]]) @@ -29115,8 +29115,8 @@ test:do_test( WHERE b=1059 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=960 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=894 OR c=2002 ]]) @@ -29132,7 +29132,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.778.1> @@ -29146,7 +29146,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.778.2> @@ -29160,7 +29160,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=806 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=795 OR ((a BETWEEN 99 AND 101) AND a!=100) OR ((a BETWEEN 21 AND 23) AND a!=22) @@ -29180,7 +29180,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=806 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=795 OR ((a BETWEEN 99 AND 101) AND a!=100) OR ((a BETWEEN 21 AND 23) AND a!=22) @@ -29200,7 +29200,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=726 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR f='abcdefghi' OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -29218,7 +29218,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=726 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR f='abcdefghi' OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -29238,7 +29238,7 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=1081 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.781.1> @@ -29254,7 +29254,7 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=1081 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.781.2> @@ -29267,15 +29267,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR b=1037 OR b=132 OR c=1001 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=32 ]]) end, { @@ -29289,15 +29289,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR b=1037 OR b=132 OR c=1001 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=32 ]]) end, { @@ -29355,7 +29355,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1001 OR ((a BETWEEN 23 AND 25) AND a!=24) OR a=83 @@ -29371,7 +29371,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1001 OR ((a BETWEEN 23 AND 25) AND a!=24) OR a=83 @@ -29389,13 +29389,13 @@ test:do_test( SELECT a FROM t2 WHERE (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=36 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 46 AND 48) AND a!=47) OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'efghi*') - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='ihgfedc' AND f LIKE 'efghi%') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR ((a BETWEEN 26 AND 28) AND a!=27) ]]) @@ -29412,13 +29412,13 @@ test:do_test( SELECT a FROM t3 WHERE (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=36 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 46 AND 48) AND a!=47) OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'efghi*') - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='ihgfedc' AND f LIKE 'efghi%') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR ((a BETWEEN 26 AND 28) AND a!=27) ]]) @@ -29434,7 +29434,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=69 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=98 OR b=300 @@ -29456,7 +29456,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=69 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=98 OR b=300 @@ -29480,8 +29480,8 @@ test:do_test( WHERE ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR ((a BETWEEN 94 AND 96) AND a!=95) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 22 AND 24) AND a!=23) OR b=619 OR c=6006 @@ -29503,8 +29503,8 @@ test:do_test( WHERE ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR ((a BETWEEN 94 AND 96) AND a!=95) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 22 AND 24) AND a!=23) OR b=619 OR c=6006 @@ -29525,7 +29525,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 9 AND 11) AND a!=10) OR a=55 - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.788.1> @@ -29540,7 +29540,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 9 AND 11) AND a!=10) OR a=55 - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.788.2> @@ -29558,7 +29558,7 @@ test:do_test( OR b=201 OR a=7 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR b=957 ]]) end, { @@ -29577,7 +29577,7 @@ test:do_test( OR b=201 OR a=7 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR b=957 ]]) end, { @@ -29593,10 +29593,10 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 90 AND 92) AND a!=91) OR a=74 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=89 ]]) end, { @@ -29612,10 +29612,10 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 90 AND 92) AND a!=91) OR a=74 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=89 ]]) end, { @@ -29636,7 +29636,7 @@ test:do_test( OR b=495 OR b=564 OR b=289 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.791.1> @@ -29656,7 +29656,7 @@ test:do_test( OR b=495 OR b=564 OR b=289 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.791.2> @@ -29669,7 +29669,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR a=69 OR a=12 OR b=718 @@ -29686,7 +29686,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR a=69 OR a=12 OR b=718 @@ -29703,7 +29703,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR f='klmnopqrs' OR b=674 OR a=96 @@ -29712,7 +29712,7 @@ test:do_test( OR b=707 OR f='cdefghijk' OR a=91 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.793.1> @@ -29725,7 +29725,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR f='klmnopqrs' OR b=674 OR a=96 @@ -29734,7 +29734,7 @@ test:do_test( OR b=707 OR f='cdefghijk' OR a=91 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.793.2> @@ -29747,12 +29747,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=564 OR b=784 OR b=418 OR b=275 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR a=58 OR c=11011 OR b=660 @@ -29768,12 +29768,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=564 OR b=784 OR b=418 OR b=275 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR a=58 OR c=11011 OR b=660 @@ -29794,7 +29794,7 @@ test:do_test( OR b=1004 OR ((a BETWEEN 28 AND 30) AND a!=29) OR ((a BETWEEN 57 AND 59) AND a!=58) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR f='pqrstuvwx' ]]) end, { @@ -29813,7 +29813,7 @@ test:do_test( OR b=1004 OR ((a BETWEEN 28 AND 30) AND a!=29) OR ((a BETWEEN 57 AND 59) AND a!=58) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR f='pqrstuvwx' ]]) end, { @@ -29886,7 +29886,7 @@ test:do_test( WHERE a=19 OR a=29 OR b=476 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=91 ]]) end, { @@ -29903,7 +29903,7 @@ test:do_test( WHERE a=19 OR a=29 OR b=476 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=91 ]]) end, { @@ -29954,8 +29954,8 @@ test:do_test( OR ((a BETWEEN 95 AND 97) AND a!=96) OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=44 - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=707 OR b=322 ]]) @@ -29975,8 +29975,8 @@ test:do_test( OR ((a BETWEEN 95 AND 97) AND a!=96) OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=44 - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=707 OR b=322 ]]) @@ -29991,8 +29991,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR f='jklmnopqr' ]]) @@ -30007,8 +30007,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR f='jklmnopqr' ]]) @@ -30024,14 +30024,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=946 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=47 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=80 OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.802.1> @@ -30045,14 +30045,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=946 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=47 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=80 OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.802.2> @@ -30069,10 +30069,10 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR b=1015 OR a=57 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR ((a BETWEEN 47 AND 49) AND a!=48) OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=165 ]]) @@ -30091,10 +30091,10 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR b=1015 OR a=57 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR ((a BETWEEN 47 AND 49) AND a!=48) OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=165 ]]) @@ -30113,7 +30113,7 @@ test:do_test( OR a=73 OR b=1048 OR c>=34035 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=72 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=638 @@ -30133,7 +30133,7 @@ test:do_test( OR a=73 OR b=1048 OR c>=34035 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=72 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=638 @@ -30181,10 +30181,10 @@ test:do_test( SELECT a FROM t2 WHERE a=50 OR ((a BETWEEN 61 AND 63) AND a!=62) - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=32 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR a=14 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=946 @@ -30204,10 +30204,10 @@ test:do_test( SELECT a FROM t3 WHERE a=50 OR ((a BETWEEN 61 AND 63) AND a!=62) - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=32 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR a=14 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=946 @@ -30228,7 +30228,7 @@ test:do_test( WHERE ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.807.1> @@ -30244,7 +30244,7 @@ test:do_test( WHERE ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.807.2> @@ -30259,7 +30259,7 @@ test:do_test( SELECT a FROM t2 WHERE a=6 OR f='tuvwxyzab' - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=286 OR b=781 ]]) @@ -30276,7 +30276,7 @@ test:do_test( SELECT a FROM t3 WHERE a=6 OR f='tuvwxyzab' - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=286 OR b=781 ]]) @@ -30291,12 +30291,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='vwxyzabcd' OR b=275 ]]) @@ -30311,12 +30311,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='vwxyzabcd' OR b=275 ]]) @@ -30332,10 +30332,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR a=59 ]]) end, { @@ -30350,10 +30350,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR a=59 ]]) end, { @@ -30367,10 +30367,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=663 OR f='ghijklmno' OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -30390,10 +30390,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=663 OR f='ghijklmno' OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -30420,9 +30420,9 @@ test:do_test( OR b=597 OR ((a BETWEEN 92 AND 94) AND a!=93) OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=168 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.812.1> @@ -30442,9 +30442,9 @@ test:do_test( OR b=597 OR ((a BETWEEN 92 AND 94) AND a!=93) OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=168 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.812.2> @@ -30498,7 +30498,7 @@ test:do_test( OR a=75 OR b=179 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR b=850 OR a=62 @@ -30519,7 +30519,7 @@ test:do_test( OR a=75 OR b=179 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR b=850 OR a=62 @@ -30583,7 +30583,7 @@ test:do_test( SELECT a FROM t2 WHERE b=176 OR b=297 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR f='ijklmnopq' ]]) end, { @@ -30599,7 +30599,7 @@ test:do_test( SELECT a FROM t3 WHERE b=176 OR b=297 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR f='ijklmnopq' ]]) end, { @@ -30653,9 +30653,9 @@ test:do_test( SELECT a FROM t2 WHERE (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=396 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=1012 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=784 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=979 @@ -30676,9 +30676,9 @@ test:do_test( SELECT a FROM t3 WHERE (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=396 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=1012 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=784 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=979 @@ -30726,9 +30726,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 79 AND 81) AND a!=80) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.820.1> @@ -30742,9 +30742,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 79 AND 81) AND a!=80) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.820.2> @@ -30830,7 +30830,7 @@ test:do_test( OR c=19019 OR b=245 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR b=572 OR ((a BETWEEN 22 AND 24) AND a!=23) @@ -30853,7 +30853,7 @@ test:do_test( OR c=19019 OR b=245 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR b=572 OR ((a BETWEEN 22 AND 24) AND a!=23) @@ -30915,7 +30915,7 @@ test:do_test( OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=828 OR b=363 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.825.1> @@ -30934,7 +30934,7 @@ test:do_test( OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=828 OR b=363 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.825.2> @@ -30947,7 +30947,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') OR a=41 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=825 @@ -30963,7 +30963,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') OR a=41 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=825 @@ -30986,7 +30986,7 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=561 OR c=8008 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=935 OR c=1001 ]]) @@ -31008,7 +31008,7 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=561 OR c=8008 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=935 OR c=1001 ]]) @@ -31024,7 +31024,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.828.1> @@ -31038,7 +31038,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.828.2> @@ -31114,9 +31114,9 @@ test:do_test( OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR f='zabcdefgh' OR b=861 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=28 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=311 ]]) end, { @@ -31137,9 +31137,9 @@ test:do_test( OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR f='zabcdefgh' OR b=861 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=28 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=311 ]]) end, { @@ -31154,10 +31154,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=575 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR b=418 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=792 OR b=861 OR b=220 @@ -31175,10 +31175,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=575 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR b=418 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=792 OR b=861 OR b=220 @@ -31233,7 +31233,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR b=693 OR a=73 OR b=627 @@ -31243,7 +31243,7 @@ test:do_test( OR b=267 OR b=872 OR a=27 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.834.1> @@ -31256,7 +31256,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR b=693 OR a=73 OR b=627 @@ -31266,7 +31266,7 @@ test:do_test( OR b=267 OR b=872 OR a=27 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.834.2> @@ -31351,15 +31351,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=66 OR b=322 OR b=465 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=454 ]]) @@ -31374,15 +31374,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=66 OR b=322 OR b=465 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=454 ]]) @@ -31402,7 +31402,7 @@ test:do_test( OR c=15015 OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=803 ]]) end, { @@ -31421,7 +31421,7 @@ test:do_test( OR c=15015 OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=803 ]]) end, { @@ -31436,12 +31436,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1100 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 68 AND 70) AND a!=69) OR a=75 OR a=45 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=27 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=850 @@ -31459,12 +31459,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1100 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 68 AND 70) AND a!=69) OR a=75 OR a=45 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=27 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=850 @@ -31484,7 +31484,7 @@ test:do_test( WHERE b=751 OR ((a BETWEEN 96 AND 98) AND a!=97) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=89 OR ((a BETWEEN 36 AND 38) AND a!=37) @@ -31503,7 +31503,7 @@ test:do_test( WHERE b=751 OR ((a BETWEEN 96 AND 98) AND a!=97) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=89 OR ((a BETWEEN 36 AND 38) AND a!=37) @@ -31519,10 +31519,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR a=1 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.841.1> @@ -31535,10 +31535,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR a=1 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.841.2> @@ -31557,9 +31557,9 @@ test:do_test( OR c=8008 OR ((a BETWEEN 41 AND 43) AND a!=42) OR b=960 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR b=443 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.842.1> @@ -31578,9 +31578,9 @@ test:do_test( OR c=8008 OR ((a BETWEEN 41 AND 43) AND a!=42) OR b=960 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR b=443 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.842.2> @@ -31624,14 +31624,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=685 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR b=520 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) OR a=53 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=938 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR c=25025 ]]) end, { @@ -31646,14 +31646,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=685 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR b=520 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) OR a=53 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=938 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR c=25025 ]]) end, { @@ -31700,7 +31700,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='abcdefghi' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.846.1> @@ -31714,7 +31714,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='abcdefghi' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.846.2> @@ -31802,7 +31802,7 @@ test:do_test( WHERE b=209 OR b=806 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.849.1> @@ -31818,7 +31818,7 @@ test:do_test( WHERE b=209 OR b=806 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.849.2> @@ -31863,10 +31863,10 @@ test:do_test( SELECT a FROM t2 WHERE (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR a=45 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=69 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.851.1> @@ -31881,10 +31881,10 @@ test:do_test( SELECT a FROM t3 WHERE (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR a=45 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=69 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.851.2> @@ -31899,9 +31899,9 @@ test:do_test( SELECT a FROM t2 WHERE c=9009 OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.852.1> @@ -31916,9 +31916,9 @@ test:do_test( SELECT a FROM t3 WHERE c=9009 OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.852.2> @@ -31937,7 +31937,7 @@ test:do_test( OR a=47 OR c=24024 OR a=27 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) end, { @@ -31957,7 +31957,7 @@ test:do_test( OR a=47 OR c=24024 OR a=27 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) end, { @@ -31971,9 +31971,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=19 ]]) end, { @@ -31987,9 +31987,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=19 ]]) end, { @@ -32006,7 +32006,7 @@ test:do_test( WHERE c=12012 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR ((a BETWEEN 16 AND 18) AND a!=17) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.855.1> @@ -32022,7 +32022,7 @@ test:do_test( WHERE c=12012 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR ((a BETWEEN 16 AND 18) AND a!=17) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.855.2> @@ -32036,7 +32036,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=429 OR f='jklmnopqr' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -32054,7 +32054,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=429 OR f='jklmnopqr' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -32071,7 +32071,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=190 ]]) end, { @@ -32085,7 +32085,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=190 ]]) end, { @@ -32099,7 +32099,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=674 OR b=289 ]]) @@ -32114,7 +32114,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=674 OR b=289 ]]) @@ -32131,8 +32131,8 @@ test:do_test( SELECT a FROM t2 WHERE a=17 OR b=539 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.859.1> @@ -32147,8 +32147,8 @@ test:do_test( SELECT a FROM t3 WHERE a=17 OR b=539 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.859.2> @@ -32259,12 +32259,12 @@ test:do_test( SELECT a FROM t2 WHERE f='ghijklmno' OR a=26 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=81 OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) OR ((a BETWEEN 28 AND 30) AND a!=29) OR b=275 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=311 OR b=894 OR b=872 @@ -32282,12 +32282,12 @@ test:do_test( SELECT a FROM t3 WHERE f='ghijklmno' OR a=26 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=81 OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) OR ((a BETWEEN 28 AND 30) AND a!=29) OR b=275 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=311 OR b=894 OR b=872 @@ -32376,12 +32376,12 @@ test:do_test( WHERE a=44 OR b=55 OR a=30 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR 1000000<b OR a=24 OR b=1089 OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.866.1> @@ -32397,12 +32397,12 @@ test:do_test( WHERE a=44 OR b=55 OR a=30 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR 1000000<b OR a=24 OR b=1089 OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.866.2> @@ -32487,14 +32487,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'uvwxy*') + WHERE (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 25 AND 27) AND a!=26) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='xyzabcdef' OR b=517 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.869.1> @@ -32507,14 +32507,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'uvwxy*') + WHERE (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 25 AND 27) AND a!=26) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='xyzabcdef' OR b=517 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.869.2> @@ -32555,9 +32555,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') OR b=762 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=25 OR ((a BETWEEN 65 AND 67) AND a!=66) ]]) @@ -32572,9 +32572,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') OR b=762 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=25 OR ((a BETWEEN 65 AND 67) AND a!=66) ]]) @@ -32594,9 +32594,9 @@ test:do_test( OR b=839 OR f='defghijkl' OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=498 ]]) end, { @@ -32615,9 +32615,9 @@ test:do_test( OR b=839 OR f='defghijkl' OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=498 ]]) end, { @@ -32667,7 +32667,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=256 OR b=586 OR a=74 @@ -32686,7 +32686,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=256 OR b=586 OR a=74 @@ -32739,14 +32739,14 @@ test:do_test( SELECT a FROM t2 WHERE b=308 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=83 OR c=23023 OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR a=58 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR c=4004 ]]) end, { @@ -32762,14 +32762,14 @@ test:do_test( SELECT a FROM t3 WHERE b=308 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=83 OR c=23023 OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR a=58 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR c=4004 ]]) end, { @@ -32789,7 +32789,7 @@ test:do_test( OR b=762 OR b=157 OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.877.1> @@ -32808,7 +32808,7 @@ test:do_test( OR b=762 OR b=157 OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.877.2> @@ -32825,12 +32825,12 @@ test:do_test( OR a=1 OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=278 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR f='qrstuvwxy' - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 82 AND 84) AND a!=83) - OR (g='edcbazy' AND f GLOB 'uvwxy*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) ]]) end, { @@ -32848,12 +32848,12 @@ test:do_test( OR a=1 OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=278 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR f='qrstuvwxy' - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 82 AND 84) AND a!=83) - OR (g='edcbazy' AND f GLOB 'uvwxy*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) ]]) end, { @@ -32872,9 +32872,9 @@ test:do_test( OR ((a BETWEEN 41 AND 43) AND a!=42) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=759 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 45 AND 47) AND a!=46) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.879.1> @@ -32892,9 +32892,9 @@ test:do_test( OR ((a BETWEEN 41 AND 43) AND a!=42) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=759 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 45 AND 47) AND a!=46) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.879.2> @@ -32916,7 +32916,7 @@ test:do_test( OR b=44 OR f='zabcdefgh' OR b=979 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.880.1> @@ -32938,7 +32938,7 @@ test:do_test( OR b=44 OR f='zabcdefgh' OR b=979 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.880.2> @@ -32988,7 +32988,7 @@ test:do_test( OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=90 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR f='nopqrstuv' ]]) end, { @@ -33011,7 +33011,7 @@ test:do_test( OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=90 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR f='nopqrstuv' ]]) end, { @@ -33061,7 +33061,7 @@ test:do_test( OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 69 AND 71) AND a!=70) OR d<0.0 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=9009 ]]) end, { @@ -33083,7 +33083,7 @@ test:do_test( OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 69 AND 71) AND a!=70) OR d<0.0 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=9009 ]]) end, { @@ -33097,7 +33097,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=814 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -33112,7 +33112,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=814 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -33127,7 +33127,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=333 OR b=275 ]]) @@ -33142,7 +33142,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=333 OR b=275 ]]) @@ -33157,7 +33157,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -33171,7 +33171,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -33187,7 +33187,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 11 AND 13) AND a!=12) OR b=253 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=286 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) @@ -33204,7 +33204,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 11 AND 13) AND a!=12) OR b=253 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=286 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) @@ -33220,10 +33220,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 26 AND 28) AND a!=27) OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='ijklmnopq' OR b=891 OR b=1056 @@ -33240,10 +33240,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 26 AND 28) AND a!=27) OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='ijklmnopq' OR b=891 OR b=1056 @@ -33260,10 +33260,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='fghijklmn' - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=671 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.890.1> @@ -33277,10 +33277,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='fghijklmn' - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=671 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.890.2> @@ -33293,10 +33293,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'lmnop*') - OR (g='srqponm' AND f GLOB 'fghij*') + WHERE (g='lkjihgf' AND f LIKE 'lmnop%') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -33310,10 +33310,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'lmnop*') - OR (g='srqponm' AND f GLOB 'fghij*') + WHERE (g='lkjihgf' AND f LIKE 'lmnop%') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -33439,11 +33439,11 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=46 OR b=187 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.895.1> @@ -33458,11 +33458,11 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=46 OR b=187 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.895.2> @@ -33522,7 +33522,7 @@ test:do_test( OR b=729 OR ((a BETWEEN 81 AND 83) AND a!=82) OR a=58 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=608 ]]) end, { @@ -33543,7 +33543,7 @@ test:do_test( OR b=729 OR ((a BETWEEN 81 AND 83) AND a!=82) OR a=58 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=608 ]]) end, { @@ -33561,7 +33561,7 @@ test:do_test( OR f='efghijklm' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=26 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') ]]) end, { -- <where7-2.898.1> @@ -33578,7 +33578,7 @@ test:do_test( OR f='efghijklm' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=26 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') ]]) end, { -- <where7-2.898.2> @@ -33592,11 +33592,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=59 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR a=7 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.899.1> @@ -33610,11 +33610,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=59 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR a=7 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.899.2> @@ -33627,7 +33627,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR b=539 OR b=399 ]]) @@ -33642,7 +33642,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR b=539 OR b=399 ]]) @@ -33687,10 +33687,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='rqponml' AND f GLOB 'klmno*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='lmnopqrst' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.902.1> @@ -33703,10 +33703,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='rqponml' AND f GLOB 'klmno*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='lmnopqrst' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.902.2> @@ -33751,14 +33751,14 @@ test:do_test( SELECT a FROM t2 WHERE b=1067 OR ((a BETWEEN 53 AND 55) AND a!=54) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=520 OR b=399 OR b=209 OR a=68 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.904.1> @@ -33773,14 +33773,14 @@ test:do_test( SELECT a FROM t3 WHERE b=1067 OR ((a BETWEEN 53 AND 55) AND a!=54) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=520 OR b=399 OR b=209 OR a=68 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.904.2> @@ -33798,7 +33798,7 @@ test:do_test( OR b=55 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR ((a BETWEEN 21 AND 23) AND a!=22) ]]) @@ -33818,7 +33818,7 @@ test:do_test( OR b=55 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR ((a BETWEEN 21 AND 23) AND a!=22) ]]) @@ -33837,7 +33837,7 @@ test:do_test( OR a=2 OR b=784 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=850 ]]) end, { @@ -33855,7 +33855,7 @@ test:do_test( OR a=2 OR b=784 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=850 ]]) end, { @@ -33903,17 +33903,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR a=18 OR a=30 OR ((a BETWEEN 9 AND 11) AND a!=10) OR ((a BETWEEN 84 AND 86) AND a!=85) OR ((a BETWEEN 8 AND 10) AND a!=9) OR b=792 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR ((a BETWEEN 19 AND 21) AND a!=20) OR c=26026 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.908.1> @@ -33926,17 +33926,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR a=18 OR a=30 OR ((a BETWEEN 9 AND 11) AND a!=10) OR ((a BETWEEN 84 AND 86) AND a!=85) OR ((a BETWEEN 8 AND 10) AND a!=9) OR b=792 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR ((a BETWEEN 19 AND 21) AND a!=20) OR c=26026 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.908.2> @@ -33949,11 +33949,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'qrstu*') + WHERE (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR a=78 OR ((a BETWEEN 90 AND 92) AND a!=91) @@ -33969,11 +33969,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'qrstu*') + WHERE (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR a=78 OR ((a BETWEEN 90 AND 92) AND a!=91) @@ -34096,7 +34096,7 @@ test:do_test( OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR a=81 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR f='mnopqrstu' ]]) end, { @@ -34117,7 +34117,7 @@ test:do_test( OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR a=81 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR f='mnopqrstu' ]]) end, { @@ -34177,7 +34177,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR ((a BETWEEN 27 AND 29) AND a!=28) OR b=319 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) end, { @@ -34197,7 +34197,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR ((a BETWEEN 27 AND 29) AND a!=28) OR b=319 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) end, { @@ -34214,7 +34214,7 @@ test:do_test( WHERE b=179 OR ((a BETWEEN 95 AND 97) AND a!=96) OR a=46 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR a=25 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -34237,7 +34237,7 @@ test:do_test( WHERE b=179 OR ((a BETWEEN 95 AND 97) AND a!=96) OR a=46 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR a=25 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -34257,7 +34257,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'fghij*') + WHERE (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) ]]) end, { @@ -34271,7 +34271,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'fghij*') + WHERE (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) ]]) end, { @@ -34286,7 +34286,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=748 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=32 OR b=110 OR b=297 @@ -34308,7 +34308,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=748 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=32 OR b=110 OR b=297 @@ -34332,13 +34332,13 @@ test:do_test( WHERE (d>=33.0 AND d<34.0 AND d IS NOT NULL) OR b=905 OR a=97 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR c=27027 OR f='bcdefghij' OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.919.1> @@ -34354,13 +34354,13 @@ test:do_test( WHERE (d>=33.0 AND d<34.0 AND d IS NOT NULL) OR b=905 OR a=97 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR c=27027 OR f='bcdefghij' OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.919.2> @@ -34403,13 +34403,13 @@ test:do_test( SELECT a FROM t2 WHERE b=594 OR b=80 - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=421 OR b=418 OR b=828 OR a=88 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) ]]) end, { @@ -34425,13 +34425,13 @@ test:do_test( SELECT a FROM t3 WHERE b=594 OR b=80 - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=421 OR b=418 OR b=828 OR a=88 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) ]]) end, { @@ -34446,11 +34446,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=366 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR c=16016 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR c=9009 ]]) end, { @@ -34465,11 +34465,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=366 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR c=16016 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR c=9009 ]]) end, { @@ -34485,7 +34485,7 @@ test:do_test( SELECT a FROM t2 WHERE b=33 OR f='qrstuvwxy' - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR b=858 ]]) end, { @@ -34501,7 +34501,7 @@ test:do_test( SELECT a FROM t3 WHERE b=33 OR f='qrstuvwxy' - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR b=858 ]]) end, { @@ -34516,7 +34516,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=861 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=682 OR ((a BETWEEN 93 AND 95) AND a!=94) @@ -34534,7 +34534,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=861 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=682 OR ((a BETWEEN 93 AND 95) AND a!=94) @@ -34584,7 +34584,7 @@ test:do_test( WHERE f='abcdefghi' OR c=9009 OR b=663 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR b=91 ]]) end, { @@ -34601,7 +34601,7 @@ test:do_test( WHERE f='abcdefghi' OR c=9009 OR b=663 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR b=91 ]]) end, { @@ -34615,15 +34615,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'qrstu*') + WHERE (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 29 AND 31) AND a!=30) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1015 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=916 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.927.1> @@ -34636,15 +34636,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'qrstu*') + WHERE (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 29 AND 31) AND a!=30) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1015 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=916 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.927.2> @@ -34664,7 +34664,7 @@ test:do_test( OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR a=63 OR f='mnopqrstu' - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=495 OR a=35 OR a=22 @@ -34687,7 +34687,7 @@ test:do_test( OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR a=63 OR f='mnopqrstu' - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=495 OR a=35 OR a=22 @@ -34704,7 +34704,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=869 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=289 OR a=62 OR ((a BETWEEN 9 AND 11) AND a!=10) @@ -34721,7 +34721,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=869 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=289 OR a=62 OR ((a BETWEEN 9 AND 11) AND a!=10) @@ -34774,7 +34774,7 @@ test:do_test( WHERE ((a BETWEEN 57 AND 59) AND a!=58) OR b=1078 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=429 ]]) @@ -34792,7 +34792,7 @@ test:do_test( WHERE ((a BETWEEN 57 AND 59) AND a!=58) OR b=1078 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=429 ]]) @@ -34876,7 +34876,7 @@ test:do_test( WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=858 OR a=58 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR c=21021 OR ((a BETWEEN 45 AND 47) AND a!=46) OR b=616 @@ -34897,7 +34897,7 @@ test:do_test( WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=858 OR a=58 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR c=21021 OR ((a BETWEEN 45 AND 47) AND a!=46) OR b=616 @@ -34917,7 +34917,7 @@ test:do_test( SELECT a FROM t2 WHERE b=682 OR b=99 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR b=531 ]]) end, { @@ -34933,7 +34933,7 @@ test:do_test( SELECT a FROM t3 WHERE b=682 OR b=99 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR b=531 ]]) end, { @@ -34948,13 +34948,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 56 AND 58) AND a!=57) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR b=726 OR a=79 OR a=47 OR b=212 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR c=8008 ]]) end, { @@ -34969,13 +34969,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 56 AND 58) AND a!=57) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR b=726 OR a=79 OR a=47 OR b=212 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR c=8008 ]]) end, { @@ -34993,7 +34993,7 @@ test:do_test( OR ((a BETWEEN 60 AND 62) AND a!=61) OR a=5 OR b=33 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR a=59 OR b=44 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -35014,7 +35014,7 @@ test:do_test( OR ((a BETWEEN 60 AND 62) AND a!=61) OR a=5 OR b=33 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR a=59 OR b=44 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -35213,8 +35213,8 @@ test:do_test( SELECT a FROM t2 WHERE a=96 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=85 OR ((a BETWEEN 10 AND 12) AND a!=11) @@ -35236,8 +35236,8 @@ test:do_test( SELECT a FROM t3 WHERE a=96 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=85 OR ((a BETWEEN 10 AND 12) AND a!=11) @@ -35299,17 +35299,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=60 OR a=4 OR b=520 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=44 OR a=36 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=715 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.945.1> @@ -35322,17 +35322,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=60 OR a=4 OR b=520 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=44 OR a=36 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=715 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.945.2> @@ -35349,10 +35349,10 @@ test:do_test( OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR a=24 OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.946.1> @@ -35369,10 +35369,10 @@ test:do_test( OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR a=24 OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.946.2> @@ -35385,12 +35385,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=132 OR f='ghijklmno' OR b=740 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1059 ]]) end, { @@ -35404,12 +35404,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=132 OR f='ghijklmno' OR b=740 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1059 ]]) end, { @@ -35459,10 +35459,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'cdefg*') + WHERE (g='nmlkjih' AND f LIKE 'cdefg%') OR b=1026 OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR b=355 OR b=641 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) @@ -35478,10 +35478,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'cdefg*') + WHERE (g='nmlkjih' AND f LIKE 'cdefg%') OR b=1026 OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR b=355 OR b=641 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) @@ -35506,7 +35506,7 @@ test:do_test( OR f='opqrstuvw' OR a=41 OR a=83 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=751 ]]) end, { @@ -35529,7 +35529,7 @@ test:do_test( OR f='opqrstuvw' OR a=41 OR a=83 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=751 ]]) end, { @@ -35579,7 +35579,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR f='bcdefghij' OR f='hijklmnop' OR a=65 @@ -35602,7 +35602,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR f='bcdefghij' OR f='hijklmnop' OR a=65 @@ -35625,11 +35625,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 10 AND 12) AND a!=11) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=1100 OR c=6006 OR c=4004 @@ -35647,11 +35647,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 10 AND 12) AND a!=11) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=1100 OR c=6006 OR c=4004 @@ -35728,7 +35728,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 21 AND 23) AND a!=22) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=737 @@ -35745,7 +35745,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 21 AND 23) AND a!=22) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=737 @@ -35761,7 +35761,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'klmno*') + WHERE (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 5 AND 7) AND a!=6) ]]) end, { @@ -35775,7 +35775,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'klmno*') + WHERE (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 5 AND 7) AND a!=6) ]]) end, { @@ -35789,7 +35789,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR c=32032 OR f='opqrstuvw' OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -35807,7 +35807,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR c=32032 OR f='opqrstuvw' OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -35875,11 +35875,11 @@ test:do_test( OR ((a BETWEEN 8 AND 10) AND a!=9) OR ((a BETWEEN 86 AND 88) AND a!=87) OR b=146 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 73 AND 75) AND a!=74) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=704 ]]) end, { @@ -35897,11 +35897,11 @@ test:do_test( OR ((a BETWEEN 8 AND 10) AND a!=9) OR ((a BETWEEN 86 AND 88) AND a!=87) OR b=146 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 73 AND 75) AND a!=74) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=704 ]]) end, { @@ -35950,7 +35950,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=17017 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=971 OR a=37 OR a=7 @@ -35970,7 +35970,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=17017 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=971 OR a=37 OR a=7 @@ -35990,7 +35990,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='tuvwxyzab' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.963.1> @@ -36004,7 +36004,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='tuvwxyzab' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.963.2> @@ -36019,7 +36019,7 @@ test:do_test( SELECT a FROM t2 WHERE b=638 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR b=165 OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='stuvwxyza' @@ -36041,7 +36041,7 @@ test:do_test( SELECT a FROM t3 WHERE b=638 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR b=165 OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='stuvwxyza' @@ -36067,7 +36067,7 @@ test:do_test( OR a=93 OR b=858 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.965.1> @@ -36086,7 +36086,7 @@ test:do_test( OR a=93 OR b=858 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.965.2> @@ -36157,7 +36157,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'mnopq*') + WHERE (g='qponmlk' AND f LIKE 'mnopq%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=5 OR b=396 @@ -36174,7 +36174,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'mnopq*') + WHERE (g='qponmlk' AND f LIKE 'mnopq%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=5 OR b=396 @@ -36191,7 +36191,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=748 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) @@ -36210,7 +36210,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=748 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) @@ -36231,7 +36231,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR a=50 OR a=46 OR ((a BETWEEN 38 AND 40) AND a!=39) @@ -36249,7 +36249,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR a=50 OR a=46 OR ((a BETWEEN 38 AND 40) AND a!=39) @@ -36312,7 +36312,7 @@ test:do_test( OR c=16016 OR b=1078 OR b=960 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.972.1> @@ -36330,7 +36330,7 @@ test:do_test( OR c=16016 OR b=1078 OR b=960 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.972.2> @@ -36345,7 +36345,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1081 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=6 @@ -36363,7 +36363,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1081 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=6 @@ -36379,10 +36379,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='rqponml' AND f GLOB 'lmnop*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=92 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='fghijklmn' OR a=100 OR b=209 @@ -36402,10 +36402,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='rqponml' AND f GLOB 'lmnop*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=92 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='fghijklmn' OR a=100 OR b=209 @@ -36458,13 +36458,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 51 AND 53) AND a!=52) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=91 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR b=77 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.976.1> @@ -36478,13 +36478,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 51 AND 53) AND a!=52) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=91 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR b=77 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.976.2> @@ -36582,13 +36582,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=737 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=40 OR f='uvwxyzabc' OR b=311 - OR (g='nmlkjih' AND f GLOB 'bcdef*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=927 OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) ]]) @@ -36604,13 +36604,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=737 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=40 OR f='uvwxyzabc' OR b=311 - OR (g='nmlkjih' AND f GLOB 'bcdef*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=927 OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) ]]) @@ -36657,16 +36657,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR b=487 OR f='tuvwxyzab' - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=971 OR c=19019 OR a=39 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=550 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=660 ]]) end, { @@ -36680,16 +36680,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR b=487 OR f='tuvwxyzab' - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=971 OR c=19019 OR a=39 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=550 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=660 ]]) end, { @@ -36735,7 +36735,7 @@ test:do_test( OR b=630 OR b=935 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR f='yzabcdefg' OR ((a BETWEEN 37 AND 39) AND a!=38) ]]) @@ -36754,7 +36754,7 @@ test:do_test( OR b=630 OR b=935 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR f='yzabcdefg' OR ((a BETWEEN 37 AND 39) AND a!=38) ]]) @@ -36774,7 +36774,7 @@ test:do_test( OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=696 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=682 OR a=32 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -36797,7 +36797,7 @@ test:do_test( OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=696 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=682 OR a=32 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -36815,8 +36815,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=311 ]]) end, { @@ -36830,8 +36830,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=311 ]]) end, { @@ -36884,7 +36884,7 @@ test:do_test( WHERE ((a BETWEEN 98 AND 100) AND a!=99) OR b=110 OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=484 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) ]]) @@ -36902,7 +36902,7 @@ test:do_test( WHERE ((a BETWEEN 98 AND 100) AND a!=99) OR b=110 OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=484 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) ]]) @@ -36925,7 +36925,7 @@ test:do_test( OR c=27027 OR b=1026 OR c=6006 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) ]]) end, { @@ -36947,7 +36947,7 @@ test:do_test( OR c=27027 OR b=1026 OR c=6006 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) ]]) end, { @@ -36963,11 +36963,11 @@ test:do_test( SELECT a FROM t2 WHERE (d>=79.0 AND d<80.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR a=97 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=674 OR c=14014 OR b=69 @@ -36985,11 +36985,11 @@ test:do_test( SELECT a FROM t3 WHERE (d>=79.0 AND d<80.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR a=97 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=674 OR c=14014 OR b=69 @@ -37039,12 +37039,12 @@ test:do_test( SELECT a FROM t2 WHERE b=451 OR ((a BETWEEN 11 AND 13) AND a!=12) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=539 OR a=26 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=465 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.991.1> @@ -37059,12 +37059,12 @@ test:do_test( SELECT a FROM t3 WHERE b=451 OR ((a BETWEEN 11 AND 13) AND a!=12) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=539 OR a=26 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=465 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.991.2> @@ -37135,9 +37135,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=13 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=322 OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=377 @@ -37156,9 +37156,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=13 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=322 OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=377 @@ -37181,9 +37181,9 @@ test:do_test( OR b=990 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR b=605 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR a=66 ]]) @@ -37202,9 +37202,9 @@ test:do_test( OR b=990 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR b=605 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR a=66 ]]) @@ -37220,12 +37220,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1059 - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -37240,12 +37240,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1059 - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -37261,7 +37261,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 41 AND 43) AND a!=42) OR f='nopqrstuv' - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=42 OR b=729 OR b=297 @@ -37282,7 +37282,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 41 AND 43) AND a!=42) OR f='nopqrstuv' - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=42 OR b=729 OR b=297 @@ -37337,9 +37337,9 @@ test:do_test( SELECT a FROM t2 WHERE b=451 OR b=660 - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=781 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=198 OR b=1023 OR a=98 @@ -37359,9 +37359,9 @@ test:do_test( SELECT a FROM t3 WHERE b=451 OR b=660 - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=781 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=198 OR b=1023 OR a=98 @@ -37383,7 +37383,7 @@ test:do_test( OR a=86 OR c=17017 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=80 OR b=773 ]]) @@ -37402,7 +37402,7 @@ test:do_test( OR a=86 OR c=17017 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=80 OR b=773 ]]) @@ -37419,7 +37419,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1092 OR a=23 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR d<0.0 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=91 @@ -37437,7 +37437,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1092 OR a=23 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR d<0.0 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=91 -- 2.7.4 ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-16 17:00 ` [tarantool-patches] [PATCH 2/2] sql: remove GLOB from Tarantool N.Tatunov @ 2018-08-17 8:25 ` Alex Khatskevich 2018-08-17 8:49 ` n.pettik ` (4 more replies) 0 siblings, 5 replies; 46+ messages in thread From: Alex Khatskevich @ 2018-08-17 8:25 UTC (permalink / raw) To: N.Tatunov, tarantool-patches On 16.08.2018 20:00, N.Tatunov wrote: > GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to > be close to ANSI SQL & LIKE to depend on collations, we do not want to > support it. This patch totally removes it from Tarantool along with any > mentions of it. 1.We delete it because it is not working properly, and instead of fixing it we want to replace it with more general regexp. Delete other unnecessary thoughts from this message. 2. Do not use "we", "our" in commit messages. > Part of #3589 > Part of #3572 > Needed for #3251 > Needed for #3334 > --- > extra/mkkeywordhash.c | 1 - > src/box/sql/analyze.c | 7 +- > src/box/sql/func.c | 381 +- > src/box/sql/pragma.c | 6 +- > src/box/sql/sqliteInt.h | 16 +- > src/box/sql/sqliteLimit.h | 3 +- > src/box/sql/vdbe.c | 2 +- > src/box/sql/wherecode.c | 2 +- > src/box/sql/whereexpr.c | 157 +- > test/sql-tap/alter.test.lua | 6 +- > test/sql-tap/analyze9.test.lua | 8 +- > test/sql-tap/e_expr.test.lua | 311 +- > .../gh-3251-string-pattern-comparison.test.lua | 6 +- > test/sql-tap/like2.test.lua | 10 +- > test/sql-tap/like3.test.lua | 26 +- > test/sql-tap/tkt1537.test.lua | 4 +- > test/sql-tap/triggerA.test.lua | 2 +- > test/sql-tap/where3.test.lua | 6 +- > test/sql-tap/where7.test.lua | 4780 ++++++++++---------- > 19 files changed, 2818 insertions(+), 2916 deletions(-) > > diff --git a/extra/mkkeywordhash.c b/extra/mkkeywordhash.c > index 990c419..1fee3a7 100644 > --- a/extra/mkkeywordhash.c > +++ b/extra/mkkeywordhash.c > @@ -159,7 +159,6 @@ static Keyword aKeywordTable[] = { > { "FOR", "TK_FOR", TRIGGER, true }, > { "FOREIGN", "TK_FOREIGN", FKEY, true }, > { "FROM", "TK_FROM", ALWAYS, true }, > - { "GLOB", "TK_LIKE_KW", ALWAYS, false }, > { "GROUP", "TK_GROUP", ALWAYS, true }, > { "HAVING", "TK_HAVING", ALWAYS, true }, > { "IF", "TK_IF", ALWAYS, true }, > diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c > index 5f73f02..fc7588c 100644 > --- a/src/box/sql/analyze.c > +++ b/src/box/sql/analyze.c > @@ -829,7 +829,7 @@ analyzeOneTable(Parse * pParse, /* Parser context */ > return; > } > assert(pTab->tnum != 0); > - if (sqlite3_strlike("\\_%", pTab->def->name, '\\') == 0) { > + if (sql_strlike_ci("\\_%", pTab->def->name, '\\') == 0) { > /* Do not gather statistics on system tables */ > return; > } > @@ -1333,11 +1333,10 @@ analysis_loader(void *data, int argc, char **argv, char **unused) > /* Position ptr at the end of stat string. */ > for (; *z == ' ' || (*z >= '0' && *z <= '9'); ++z); > while (z[0]) { > - if (sqlite3_strglob("unordered*", z) == 0) { > + if (sql_strlike_cs("unordered%", z, '[') == 0) > index->def->opts.stat->is_unordered = true; > - } else if (sqlite3_strglob("noskipscan*", z) == 0) { > + else if (sql_strlike_cs("noskipscan%", z, '[') == 0) > index->def->opts.stat->skip_scan_enabled = false; > - } > while (z[0] != 0 && z[0] != ' ') > z++; > while (z[0] == ' ') > diff --git a/src/box/sql/func.c b/src/box/sql/func.c > index 66cae17..177193e 100644 > --- a/src/box/sql/func.c > +++ b/src/box/sql/func.c > @@ -607,41 +607,32 @@ total_changes(sqlite3_context * context, int NotUsed, sqlite3_value ** NotUsed2) > sqlite3_result_int(context, sqlite3_total_changes(db)); > } > > -/* > - * A structure defining how to do GLOB-style comparisons. > - */ > -struct compareInfo { > - u8 matchAll; /* "*" or "%" */ > - u8 matchOne; /* "?" or "_" */ > - u8 matchSet; /* "[" or 0 */ > - u8 noCase; /* true to ignore case differences */ > -}; > - > /** > - * Providing there are symbols in string s this > - * macro returns UTF-8 code of character and > - * promotes pointer to the next symbol in the string. > - * Otherwise return code is SQL_END_OF_STRING. > + * Providing there are symbols in string s this macro returns > + * UTF-8 code of character and promotes pointer to the next > + * symbol in the string. If s points to an invalid UTF-8 symbol > + * return code is SQL_INVALID_UTF8_SYMBOL. If there're no symbols > + * left in string s return code is SQL_END_OF_STRING. > */ > #define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) > > #define SQL_END_OF_STRING 0xffff > #define SQL_INVALID_UTF8_SYMBOL 0xfffd > > -static const struct compareInfo globInfo = { '*', '?', '[', 0 }; > - > -/* The correct SQL-92 behavior is for the LIKE operator to ignore > - * case. Thus 'a' LIKE 'A' would be true. > +/** > + * If SQLITE_CASE_SENSITIVE_LIKE is not defined, then the LIKE > + * operator is not case sensitive. > */ > -static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; > +static const int case_insensitive_like = 1; > > -/* If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE operator > - * is case sensitive causing 'a' LIKE 'A' to be false > +/** > + * If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE > + * operator is case sensitive causing 'a' LIKE 'A' to be false. > */ > -static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; > +static const int case_sensitive_like = 0; > > -/* > - * Possible error returns from sql_utf8_pattern_compare() > +/** > + * Possible error returns from sql_utf8_pattern_compare(). > */ > #define SQL_MATCH 0 > #define SQL_NOMATCH 1 > @@ -650,138 +641,95 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; > > /** > * Compare two UTF-8 strings for equality where the first string > - * is a GLOB or LIKE expression. > - * > - * Globbing rules: > - * > - * '*' Matches any sequence of zero or more characters. > - * > - * '?' Matches exactly one character. > - * > - * [...] Matches one character from the enclosed list of > - * characters. > - * > - * [^...] Matches one character not in the enclosed list. > - * > - * With the [...] and [^...] matching, a ']' character can be > - * included in the list by making it the first character after > - * '[' or '^'. A range of characters can be specified using '-'. > - * Example: "[a-z]" matches any single lower-case letter. > - * To match a '-', make it the last character in the list. > + * is a LIKE expression. > * > * Like matching rules: > * > - * '%' Matches any sequence of zero or more characters. > + * '%' Matches any sequence of zero or more > + * characters. > * > * '_' Matches any one character. > * > - * Ec Where E is the "esc" character and c is any other > - * character, including '%', '_', and esc, match > - * exactly c. > - * > - * The comments within this routine usually assume glob matching. > + * Ec Where E is the "esc" character and c is any > + * other character, including '%', '_', and esc, > + * match exactly c. > * > * This routine is usually quick, but can be N**2 in the worst > * case. > * > * @param pattern String containing comparison pattern. > * @param string String being compared. > - * @param compareInfo Information about how to compare. > - * @param matchOther The escape char (LIKE) or '[' (GLOB). > + * @param is_like_ci true if LIKE is case insensitive. > + * @param match_other The escape char for LIKE. > * > * @retval SQL_MATCH: Match. > * SQL_NOMATCH: No match. > - * SQL_NOWILDCARDMATCH: No match in spite of having * > - * or % wildcards. > + * SQL_NOWILDCARDMATCH: No match in spite of having % > + * wildcard. > * SQL_INVALID_PATTERN: Pattern contains invalid > * symbol. > */ > static int > sql_utf8_pattern_compare(const char *pattern, > const char *string, > - const struct compareInfo *pInfo, > - UChar32 matchOther) > + const int *is_like_ci, Pass this parameter by value. > + UChar32 match_other) > { > /* Next pattern and input string chars */ > UChar32 c, c2; > - /* "?" or "_" */ > - UChar32 matchOne = pInfo->matchOne; > - /* "*" or "%" */ > - UChar32 matchAll = pInfo->matchAll; > - /* True if uppercase==lowercase */ > - UChar32 noCase = pInfo->noCase; > + /* "_" */ > + UChar32 match_one = '_'; > + /* "%" */ > + UChar32 match_all = '%'; This variables consumes stack. Can they be moved to defines? If it will break smth, make them const. > /* One past the last escaped input char */ > const char *zEscaped = 0; > - const char * pattern_end = pattern + strlen(pattern); > - const char * string_end = string + strlen(string); > + const char *pattern_end = pattern + strlen(pattern); > + const char *string_end = string + strlen(string); > UErrorCode status = U_ZERO_ERROR; > > while (pattern < pattern_end) { > c = Utf8Read(pattern, pattern_end); > if (c == SQL_INVALID_UTF8_SYMBOL) > return SQL_INVALID_PATTERN; > - if (c == matchAll) { /* Match "*" */ > - /* Skip over multiple "*" characters in > - * the pattern. If there are also "?" > + if (c == match_all) { > + /** > + * Skip over multiple "%" characters in > + * the pattern. If there are also "_" > * characters, skip those as well, but > * consume a single character of the > - * input string for each "?" skipped. > + * input string for each "_" skipped. > */ > while ((c = Utf8Read(pattern, pattern_end)) != > SQL_END_OF_STRING) { > if (c == SQL_INVALID_UTF8_SYMBOL) > return SQL_INVALID_PATTERN; > - if (c != matchAll && c != matchOne) > + if (c != match_all && c != match_one) > break; > - if (c == matchOne && > + if (c == match_one && > (c2 = Utf8Read(string, string_end)) == > SQL_END_OF_STRING) > return SQL_NOWILDCARDMATCH; > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > } > - /* > - * "*" at the end of the pattern matches. > + /** > + * "%" at the end of the pattern matches. > */ > if (c == SQL_END_OF_STRING) { > return SQL_MATCH; > } > - if (c == matchOther) { > - if (pInfo->matchSet == 0) { > - c = Utf8Read(pattern, pattern_end); > - if (c == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - if (c == SQL_END_OF_STRING) > - return SQL_NOWILDCARDMATCH; > - } else { > - /* "[...]" immediately > - * follows the "*". We > - * have to do a slow > - * recursive search in > - * this case, but it is > - * an unusual case. > - */ > - assert(matchOther < 0x80); > - while (string < string_end) { > - int bMatch = > - sql_utf8_pattern_compare( > - &pattern[-1], > - string, > - pInfo, > - matchOther); > - if (bMatch != SQL_NOMATCH) > - return bMatch; > - c = Utf8Read(string, string_end); > - if (c == SQL_INVALID_UTF8_SYMBOL) > - return SQL_NOMATCH; > - } > + if (c == match_other) { > + c = Utf8Read(pattern, pattern_end); > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > + if (c == SQL_END_OF_STRING) > return SQL_NOWILDCARDMATCH; > - } > } > > - /* At this point variable c contains the > + /** > + * At this point variable c contains the > * first character of the pattern string > - * past the "*". Search in the input > + * past the "%". Search in the input > * string for the first matching > * character and recursively continue the > * match from that point. > @@ -793,7 +741,7 @@ sql_utf8_pattern_compare(const char *pattern, > */ > > int bMatch; > - if (noCase) > + if (*is_like_ci) > c = u_tolower(c); > while (string < string_end){ > /** > @@ -809,7 +757,7 @@ sql_utf8_pattern_compare(const char *pattern, > c2 = Utf8Read(string, string_end); > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > - if (!noCase) { > + if (!(*is_like_ci)) { > if (c2 != c) > continue; > } else { > @@ -818,79 +766,27 @@ sql_utf8_pattern_compare(const char *pattern, > } > bMatch = sql_utf8_pattern_compare(pattern, > string, > - pInfo, > - matchOther); > + is_like_ci, > + match_other); > if (bMatch != SQL_NOMATCH) > return bMatch; > } > return SQL_NOWILDCARDMATCH; > } > - if (c == matchOther) { > - if (pInfo->matchSet == 0) { > - c = Utf8Read(pattern, pattern_end); > - if (c == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - if (c == SQL_END_OF_STRING) > - return SQL_NOMATCH; > - zEscaped = pattern; > - } else { > - UChar32 prior_c = 0; > - int seen = 0; > - int invert = 0; > - c = Utf8Read(string, string_end); > - if (c == SQL_INVALID_UTF8_SYMBOL) > - return SQL_NOMATCH; > - if (string == string_end) > - return SQL_NOMATCH; > - c2 = Utf8Read(pattern, pattern_end); > - if (c2 == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - if (c2 == '^') { > - invert = 1; > - c2 = Utf8Read(pattern, pattern_end); > - if (c2 == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - } > - if (c2 == ']') { > - if (c == ']') > - seen = 1; > - c2 = Utf8Read(pattern, pattern_end); > - if (c2 == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - } > - while (c2 != SQL_END_OF_STRING && c2 != ']') { > - if (c2 == '-' && pattern[0] != ']' > - && pattern < pattern_end > - && prior_c > 0) { > - c2 = Utf8Read(pattern, pattern_end); > - if (c2 == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - if (c >= prior_c && c <= c2) > - seen = 1; > - prior_c = 0; > - } else { > - if (c == c2) { > - seen = 1; > - } > - prior_c = c2; > - } > - c2 = Utf8Read(pattern, pattern_end); > - if (c2 == SQL_INVALID_UTF8_SYMBOL) > - return SQL_INVALID_PATTERN; > - } > - if (pattern == pattern_end || > - (seen ^ invert) == 0) { > - return SQL_NOMATCH; > - } > - continue; > - } > + if (c == match_other) { > + c = Utf8Read(pattern, pattern_end); > + if (c == SQL_INVALID_UTF8_SYMBOL) > + return SQL_INVALID_PATTERN; > + if (c == SQL_END_OF_STRING) > + return SQL_NOMATCH; > + zEscaped = pattern; > } > c2 = Utf8Read(string, string_end); > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > if (c == c2) > continue; > - if (noCase){ > + if (*is_like_ci) { > /** > * Small optimisation. Reduce number of > * calls to u_tolower function. SQL > @@ -903,7 +799,7 @@ sql_utf8_pattern_compare(const char *pattern, > c == u_tolower(c2)) > continue; > } > - if (c == matchOne && pattern != zEscaped && > + if (c == match_one && pattern != zEscaped && > c2 != SQL_END_OF_STRING) > continue; > return SQL_NOMATCH; > @@ -911,55 +807,52 @@ sql_utf8_pattern_compare(const char *pattern, > return string == string_end ? SQL_MATCH : SQL_NOMATCH; > } > > -/* > - * The sqlite3_strglob() interface. Return 0 on a match (like strcmp()) and > - * non-zero if there is no match. > +/** > + * Compare two UTF-8 strings for equality using case sensitive > + * sql_utf8_pattern_compare. > */ > int > -sqlite3_strglob(const char *zGlobPattern, const char *zString) > +sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) > { > - return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); > + return sql_utf8_pattern_compare(zPattern, zStr, &case_sensitive_like, esc); > } > > -/* > - * The sqlite3_strlike() interface. Return 0 on a match and non-zero for > - * a miss - like strcmp(). > +/** > + * Compare two UTF-8 strings for equality using case insensitive > + * sql_utf8_pattern_compare. > */ > int > -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) > +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) > { > - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); > + return sql_utf8_pattern_compare(zPattern, zStr, &case_insensitive_like, esc); Hardcode `case_insensitive_like` value here. > } > > -/* > - * Count the number of times that the LIKE operator (or GLOB which is > - * just a variation of LIKE) gets called. This is used for testing > - * only. > +/** > + * Count the number of times that the LIKE operator gets called. > + * This is used for testing only. > */ > #ifdef SQLITE_TEST > int sqlite3_like_count = 0; > #endif > > -/* > - * Implementation of the like() SQL function. This function implements > - * the build-in LIKE operator. The first argument to the function is the > - * pattern and the second argument is the string. So, the SQL statements: > +/** > + * Implementation of the like() SQL function. This function > + * implements the built-in LIKE operator. The first argument to > + * the function is the pattern and the second argument is the > + * string. So, the SQL statements of the following type: > * > * A LIKE B > * > - * is implemented as like(B,A). > - * > - * This same function (with a different compareInfo structure) computes > - * the GLOB operator. > + * are implemented as like(B,A). > */ > static void > -likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) > +likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) > { > const char *zA, *zB; > u32 escape; > int nPat; > sqlite3 *db = sqlite3_context_db_handle(context); > - struct compareInfo *pInfo = sqlite3_user_data(context); > + int *is_like_ci = sqlite3_user_data(context); > > #ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS > if (sqlite3_value_type(argv[0]) == SQLITE_BLOB > @@ -974,8 +867,9 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) > zB = (const char *) sqlite3_value_text(argv[0]); > zA = (const char *) sqlite3_value_text(argv[1]); > > - /* Limit the length of the LIKE or GLOB pattern to avoid > - * problems of deep recursion and N*N behavior in > + /** > + * Limit the length of the LIKE pattern to avoid problems > + * of deep recursion and N*N behavior in I thought that only globe could require N*N time. Check delete the comment. > * sql_utf8_pattern_compare(). > */ > nPat = sqlite3_value_bytes(argv[0]); > @@ -983,28 +877,29 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) > testcase(nPat == db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH] + 1); > if (nPat > db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]) { > sqlite3_result_error(context, > - "LIKE or GLOB pattern too complex", -1); > + "LIKE pattern is too complex", -1); > return; > } > /* Encoding did not change */ > assert(zB == (const char *) sqlite3_value_text(argv[0])); > > if (argc == 3) { > - /* The escape character string must consist of a single UTF-8 character. > - * Otherwise, return an error. > + /** > + * The escape character string must consist of a > + * single UTF-8 character. Otherwise, return an > + * error. > */ > const unsigned char *zEsc = sqlite3_value_text(argv[2]); > if (zEsc == 0) > return; > if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { > sqlite3_result_error(context, > - "ESCAPE expression must be a single character", > + "ESCAPE expression must be a" > + " single character", Do not split error messages at the middle of a sentence. It makes errors ungreppable. Make it <80 somehow different. > -1); > return; > } > escape = sqlite3Utf8Read(&zEsc); > - } else { > - escape = pInfo->matchSet; > } > if (!zA || !zB) > return; > @@ -1012,10 +907,10 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) > sqlite3_like_count++; > #endif > int res; > - res = sql_utf8_pattern_compare(zB, zA, pInfo, escape); > + res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); > if (res == SQL_INVALID_PATTERN) { > - sqlite3_result_error(context, "LIKE or GLOB pattern can only" > - " contain UTF-8 characters", -1); > + sqlite3_result_error(context, "LIKE pattern can only contain" > + " UTF-8 characters", -1); Do not split error messages at the middle of a sentence. Make it <80 somehow different. > return; > } > sqlite3_result_int(context, res == SQL_MATCH); > @@ -1811,64 +1706,54 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) > } > } > > -/* > - * Register the built-in LIKE and GLOB functions. The caseSensitive > - * parameter determines whether or not the LIKE operator is case > - * sensitive. GLOB is always case sensitive. > +/** > + * Register the built-in LIKE function. > + * > + * @param db database structure. > + * @param is_case_sensitive whether like should be case sensitive > + * or not. > + * > + * @retval none. > */ > void > -sqlite3RegisterLikeFunctions(sqlite3 * db, int caseSensitive) > +sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) > { > - struct compareInfo *pInfo; > - if (caseSensitive) { > - pInfo = (struct compareInfo *)&likeInfoAlt; > - } else { > - pInfo = (struct compareInfo *)&likeInfoNorm; > - } > - sqlite3CreateFunc(db, "LIKE", 2, 0, pInfo, likeFunc, 0, 0, 0); > - sqlite3CreateFunc(db, "LIKE", 3, 0, pInfo, likeFunc, 0, 0, 0); > - sqlite3CreateFunc(db, "GLOB", 2, 0, (struct compareInfo *)&globInfo, likeFunc, 0, 0, 0); > - setLikeOptFlag(db, "GLOB", SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE); > + int *is_like_ci; > + if (is_case_sensitive) > + is_like_ci = (int *)&case_sensitive_like; pass this var by value. > + else > + is_like_ci = (int *)&case_insensitive_like; > + sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); > + sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); > setLikeOptFlag(db, "LIKE", > - caseSensitive ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : > - SQLITE_FUNC_LIKE); > + is_case_sensitive ? (SQLITE_FUNC_LIKE | > + SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); > } > > -/* > - * pExpr points to an expression which implements a function. If > - * it is appropriate to apply the LIKE optimization to that function > - * then set aWc[0] through aWc[2] to the wildcard characters and > - * return TRUE. If the function is not a LIKE-style function then > - * return FALSE. > +/** > + * Check if the function implements LIKE-style comparison & if it > + * is appropriate to apply a LIKE query optimization. > + * > + * @param db database structure. > + * @param pExpr pointer to a function-implementing expression. > + * @param is_like_ci true if LIKE is case insensitive. > * > - * *pIsNocase is set to true if uppercase and lowercase are equivalent for > - * the function (default for LIKE). If the function makes the distinction > - * between uppercase and lowercase (as does GLOB) then *pIsNocase is set to > - * false. > + * @retval 0 if it's appropriate to apply optimization. > + * 1 if it's not. > */ > int > -sqlite3IsLikeFunction(sqlite3 * db, Expr * pExpr, int *pIsNocase, char *aWc) > +sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_like_ci) > { > FuncDef *pDef; > - if (pExpr->op != TK_FUNCTION > - || !pExpr->x.pList || pExpr->x.pList->nExpr != 2) { > + if (pExpr->op != TK_FUNCTION || !pExpr->x.pList || > + pExpr->x.pList->nExpr != 2) > return 0; > - } > assert(!ExprHasProperty(pExpr, EP_xIsSelect)); > pDef = sqlite3FindFunction(db, pExpr->u.zToken, 2, 0); > if (NEVER(pDef == 0) || (pDef->funcFlags & SQLITE_FUNC_LIKE) == 0) { > return 0; > } > - > - /* The memcpy() statement assumes that the wildcard characters are > - * the first three statements in the compareInfo structure. The > - * asserts() that follow verify that assumption > - */ > - memcpy(aWc, pDef->pUserData, 3); > - assert((char *)&likeInfoAlt == (char *)&likeInfoAlt.matchAll); > - assert(&((char *)&likeInfoAlt)[1] == (char *)&likeInfoAlt.matchOne); > - assert(&((char *)&likeInfoAlt)[2] == (char *)&likeInfoAlt.matchSet); > - *pIsNocase = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; > + *is_like_ci = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; > return 1; > } > > @@ -1962,16 +1847,14 @@ sqlite3RegisterBuiltinFunctions(void) > AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, > groupConcatFinalize), > > - LIKEFUNC(glob, 2, &globInfo, > - SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), > #ifdef SQLITE_CASE_SENSITIVE_LIKE > - LIKEFUNC(like, 2, &likeInfoAlt, > + LIKEFUNC(like, 2, &case_sensitive_like, > SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), > - LIKEFUNC(like, 3, &likeInfoAlt, > + LIKEFUNC(like, 3, &case_sensitive_like, > SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), > #else > - LIKEFUNC(like, 2, &likeInfoNorm, SQLITE_FUNC_LIKE), > - LIKEFUNC(like, 3, &likeInfoNorm, SQLITE_FUNC_LIKE), > + LIKEFUNC(like, 2, &case_insensitive_like, SQLITE_FUNC_LIKE), > + LIKEFUNC(like, 3, &case_insensitive_like, SQLITE_FUNC_LIKE), > #endif > #ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION > FUNCTION(unknown, -1, 0, 0, unknownFunc), > diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c > index 5fb29c7..26a602b 100644 > --- a/src/box/sql/pragma.c > +++ b/src/box/sql/pragma.c > @@ -771,8 +771,10 @@ sqlite3Pragma(Parse * pParse, Token * pId, /* First part of [schema.]id field */ > } > #endif > > - /* Reinstall the LIKE and GLOB functions. The variant of LIKE * > - * used will be case sensitive or not depending on the RHS. > + /** > + * Reinstall the LIKE and functions. The variant > + * of LIKE * used will be case sensitive or not > + * depending on the RHS. > */ > case PragTyp_CASE_SENSITIVE_LIKE:{ > if (zRight) { > diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h > index e7a02dc..a805adf 100644 > --- a/src/box/sql/sqliteInt.h > +++ b/src/box/sql/sqliteInt.h > @@ -565,17 +565,16 @@ char * > sqlite3_vsnprintf(int, char *, const char *, va_list); > > int > -sqlite3_strlike(const char *zGlob, const char *zStr, > - unsigned int cEsc); > +sql_strlike_cs(const char *zLike, const char *zStr, unsigned int cEsc); > + > +int > +sql_strlike_ci(const char *zLike, const char *zStr, unsigned int cEsc); > > typedef void (*sqlite3_destructor_type) (void *); > #define SQLITE_STATIC ((sqlite3_destructor_type)0) > #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) > > int > -sqlite3_strglob(const char *zGlob, const char *zStr); > - > -int > sqlite3_prepare(sqlite3 * db, /* Database handle */ > const char *zSql, /* SQL statement, UTF-8 encoded */ > int nByte, /* Maximum length of zSql in bytes. */ > @@ -701,9 +700,6 @@ struct on_conflict { > enum on_conflict_action optimized_action; > }; > > -void * > -sqlite3_user_data(sqlite3_context *); > - > void > sqlite3_randomness(int N, void *P); > > @@ -2355,7 +2351,7 @@ struct Expr { > #define EP_Distinct 0x000010 /* Aggregate function with DISTINCT keyword */ > #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */ > #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */ > -#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */ > +#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, etc */ > #define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */ > #define EP_Generic 0x000200 /* Ignore COLLATE or affinity on this tree */ > #define EP_IntValue 0x000400 /* Integer value contained in u.iValue */ > @@ -4378,7 +4374,7 @@ index_column_count(const Index *); > bool > index_is_unique_not_null(const Index *); > void sqlite3RegisterLikeFunctions(sqlite3 *, int); > -int sqlite3IsLikeFunction(sqlite3 *, Expr *, int *, char *); > +int sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_case_insensitive); > void sqlite3SchemaClear(sqlite3 *); > Schema *sqlite3SchemaCreate(sqlite3 *); > int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, > diff --git a/src/box/sql/sqliteLimit.h b/src/box/sql/sqliteLimit.h > index b88c9c6..e76353a 100644 > --- a/src/box/sql/sqliteLimit.h > +++ b/src/box/sql/sqliteLimit.h > @@ -164,8 +164,7 @@ enum { > #endif > > /* > - * Maximum length (in bytes) of the pattern in a LIKE or GLOB > - * operator. > + * Maximum length (in bytes) of the pattern in a LIKE operator. > */ > #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH > #define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 > diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c > index 0c97814..3f10f4d 100644 > --- a/src/box/sql/vdbe.c > +++ b/src/box/sql/vdbe.c > @@ -5521,7 +5521,7 @@ vdbe_return: > testcase( nVmStep>0); > p->aCounter[SQLITE_STMTSTATUS_VM_STEP] += (int)nVmStep; > assert(rc!=SQLITE_OK || nExtraDelete==0 > - || sqlite3_strlike("DELETE%",p->zSql,0)!=0 > + || sql_strlike_ci("DELETE%", p->zSql, 0) != 0 > ); > return rc; > > diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c > index c35c25a..f864ea7 100644 > --- a/src/box/sql/wherecode.c > +++ b/src/box/sql/wherecode.c > @@ -339,7 +339,7 @@ sqlite3WhereAddScanStatus(Vdbe * v, /* Vdbe to add scanstatus entry to */ > * automatically disabled. In this way, terms get disabled if derived > * virtual terms are tested first. For example: > * > - * x GLOB 'abc*' AND x>='abc' AND x<'acd' > + * x LIKE 'abc%' AND x>='abc' AND x<'acd' > * \___________/ \______/ \_____/ > * parent child1 child2 > * > diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c > index 6128686..947bd5d 100644 > --- a/src/box/sql/whereexpr.c > +++ b/src/box/sql/whereexpr.c > @@ -219,37 +219,57 @@ operatorMask(int op) > } > > #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION > -/* > - * Check to see if the given expression is a LIKE or GLOB operator that > - * can be optimized using inequality constraints. Return TRUE if it is > - * so and false if not. > +/** > + * Check to see if the given expression is a LIKE operator that > + * can be optimized using inequality constraints. > + * > + * In order for the operator to be optimizible, the RHS must be a > + * string literal that does not begin with a wildcard. The LHS > + * must be a column that may only be NULL, a string, or a BLOB, > + * never a number. The collating sequence for the column on the > + * LHS must be appropriate for the operator. > + * > + * @param pParse Parsing and code generating context. > + * @param pExpr Test this expression. > + * @param ppPrefix Pointer to TK_STRING expression with > + * pattern prefix. > + * @param pisComplete True if the only wildcard is '%' in the > + * last character. > + * @param pnoCase True if case insensitive. > * > - * In order for the operator to be optimizible, the RHS must be a string > - * literal that does not begin with a wildcard. The LHS must be a column > - * that may only be NULL, a string, or a BLOB, never a number. The > - * collating sequence for the column on the LHS must be appropriate for > - * the operator. > + * @retval True if the given expr is a LIKE operator & is > + * optimizable using inequality constraints. > + * False if not. > */ > static int > -isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ > - Expr * pExpr, /* Test this expression */ > - Expr ** ppPrefix, /* Pointer to TK_STRING expression with pattern prefix */ > - int *pisComplete, /* True if the only wildcard is % in the last character */ > - int *pnoCase /* True if uppercase is equivalent to lowercase */ > - ) > +is_like(Parse *pParse, > + Expr *pExpr, > + Expr **ppPrefix, > + int *pisComplete, > + int *pnoCase) > { > - const char *z = 0; /* String on RHS of LIKE operator */ > - Expr *pRight, *pLeft; /* Right and left size of LIKE operator */ > - ExprList *pList; /* List of operands to the LIKE operator */ > - int c; /* One character in z[] */ > - int cnt; /* Number of non-wildcard prefix characters */ > - char wc[3]; /* Wildcard characters */ > - sqlite3 *db = pParse->db; /* Database connection */ > + /* String on RHS of LIKE operator */ > + const char *z = 0; > + /* Right and left size of LIKE operator */ > + Expr *pRight, *pLeft; > + /* List of operands to the LIKE operator */ > + ExprList *pList; > + /* One character in z[] */ > + int c; > + /* Number of non-wildcard prefix characters */ > + int cnt; > + /* Wildcard characters */ > + char match_all = '%'; > + char match_one = '_'; > + /* Database connection */ > + sqlite3 *db = pParse->db; > sqlite3_value *pVal = 0; > - int op; /* Opcode of pRight */ > - int rc; /* Result code to return */ > + /* Opcode of pRight */ > + int op; > + /* Result code to return */ > + int rc; > > - if (!sqlite3IsLikeFunction(db, pExpr, pnoCase, wc)) { > + if (!sql_is_like_func(db, pExpr, pnoCase)) { > return 0; > } > pList = pExpr->x.pList; > @@ -257,8 +277,9 @@ isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ > /* Value might be numeric */ > if (pLeft->op != TK_COLUMN || > sqlite3ExprAffinity(pLeft) != AFFINITY_TEXT) { > - /* IMP: R-02065-49465 The left-hand side of the LIKE or GLOB operator must > - * be the name of an indexed column with TEXT affinity. > + /* IMP: R-02065-49465 The left-hand side of the > + * LIKE operator must be the name of an indexed > + * column with TEXT affinity. > */ > return 0; > } > @@ -281,13 +302,11 @@ isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ > } > if (z) { > cnt = 0; > - while ((c = z[cnt]) != 0 && c != wc[0] && c != wc[1] > - && c != wc[2]) { > + while ((c = z[cnt]) != 0 && c != match_one && c != match_all) > cnt++; > - } > if (cnt != 0 && 255 != (u8) z[cnt - 1]) { > Expr *pPrefix; > - *pisComplete = c == wc[0] && z[cnt + 1] == 0; > + *pisComplete = c == match_all && z[cnt + 1] == 0; > pPrefix = sqlite3Expr(db, TK_STRING, z); > if (pPrefix) > pPrefix->u.zToken[cnt] = 0; > @@ -943,19 +962,32 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ > int idxTerm /* Index of the term to be analyzed */ > ) > { > - WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ > - WhereTerm *pTerm; /* The term to be analyzed */ > - WhereMaskSet *pMaskSet; /* Set of table index masks */ > - Expr *pExpr; /* The expression to be analyzed */ > - Bitmask prereqLeft; /* Prerequesites of the pExpr->pLeft */ > - Bitmask prereqAll; /* Prerequesites of pExpr */ > - Bitmask extraRight = 0; /* Extra dependencies on LEFT JOIN */ > - Expr *pStr1 = 0; /* RHS of LIKE/GLOB operator */ > - int isComplete = 0; /* RHS of LIKE/GLOB ends with wildcard */ > - int noCase = 0; /* uppercase equivalent to lowercase */ > - int op; /* Top-level operator. pExpr->op */ > - Parse *pParse = pWInfo->pParse; /* Parsing context */ > - sqlite3 *db = pParse->db; /* Database connection */ > + /* WHERE clause processing context */ > + WhereInfo *pWInfo = pWC->pWInfo; > + /* The term to be analyzed */ > + WhereTerm *pTerm; > + /* Set of table index masks */ > + WhereMaskSet *pMaskSet; > + /* The expression to be analyzed */ > + Expr *pExpr; > + /* Prerequesites of the pExpr->pLeft */ > + Bitmask prereqLeft; > + /* Prerequesites of pExpr */ > + Bitmask prereqAll; > + /* Extra dependencies on LEFT JOIN */ > + Bitmask extraRight = 0; > + /* RHS of LIKE operator */ > + Expr *pStr1 = 0; > + /* RHS of LIKE ends with wildcard */ > + int isComplete = 0; > + /* uppercase equivalent to lowercase */ > + int noCase = 0; > + /* Top-level operator. pExpr->op */ > + int op; > + /* Parsing context */ > + Parse *pParse = pWInfo->pParse; > + /* Database connection */ > + sqlite3 *db = pParse->db; > > if (db->mallocFailed) { > return; > @@ -1111,37 +1143,44 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ > #endif /* SQLITE_OMIT_OR_OPTIMIZATION */ > > #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION > - /* Add constraints to reduce the search space on a LIKE or GLOB > + /** > + * Add constraints to reduce the search space on a LIKE > * operator. > * > - * A like pattern of the form "x LIKE 'aBc%'" is changed into constraints > + * A like pattern of the form "x LIKE 'aBc%'" is changed > + * into constraints: > * > * x>='ABC' AND x<'abd' AND x LIKE 'aBc%' > * > - * The last character of the prefix "abc" is incremented to form the > - * termination condition "abd". If case is not significant (the default > - * for LIKE) then the lower-bound is made all uppercase and the upper- > - * bound is made all lowercase so that the bounds also work when comparing > - * BLOBs. > + * The last character of the prefix "abc" is incremented > + * to form the termination condition "abd". If case is > + * not significant (the default for LIKE) then the > + * lower-bound is made all uppercase and the upper-bound > + * is made all lowercase so that the bounds also work > + * when comparing BLOBs. > */ > if (pWC->op == TK_AND > - && isLikeOrGlob(pParse, pExpr, &pStr1, &isComplete, &noCase) > - ) { > - Expr *pLeft; /* LHS of LIKE/GLOB operator */ > - Expr *pStr2; /* Copy of pStr1 - RHS of LIKE/GLOB operator */ > + && is_like(pParse, pExpr, &pStr1, &isComplete, &noCase)) { > + /* LHS of LIKE operator */ > + Expr *pLeft; > + /* Copy of pStr1 - RHS of LIKE operator */ > + Expr *pStr2; > Expr *pNewExpr1; > Expr *pNewExpr2; > int idxNew1; > int idxNew2; > - const char *zCollSeqName; /* Name of collating sequence */ > + /* Name of collating sequence */ > + const char *zCollSeqName; > const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC; > > pLeft = pExpr->x.pList->a[1].pExpr; > pStr2 = sqlite3ExprDup(db, pStr1, 0); > > - /* Convert the lower bound to upper-case and the upper bound to > - * lower-case (upper-case is less than lower-case in ASCII) so that > - * the range constraints also work for BLOBs > + /** > + * Convert the lower bound to upper-case and the > + * upper bound to lower-case (upper-case is less > + * than lower-case in ASCII) so that the range > + * constraints also work for BLOBs > */ > if (noCase && !pParse->db->mallocFailed) { > int i; > diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua > index cfe2801..773bdeb 100755 > --- a/test/sql-tap/alter.test.lua > +++ b/test/sql-tap/alter.test.lua > @@ -230,9 +230,10 @@ test:do_execsql_test( > test:do_execsql_test( > "alter-5.1", > [[ > + PRAGMA case_sensitive_like = true; > CREATE TABLE xyz(x PRIMARY KEY); > ALTER TABLE xyz RENAME TO "xyz1234abc"; > - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; > + SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; This test become unreasonably complex. Do just "select where name = 'xyz1234abc' Or at least delete case_sensitive... > ]], { > -- <alter-5.1> > "xyz1234abc" > @@ -243,7 +244,8 @@ test:do_execsql_test( > "alter-5.2", > [[ > ALTER TABLE "xyz1234abc" RENAME TO xyzabc; > - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; > + SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; > + PRAGMA case_sensitive_like = false; This test become unreasonably complex. Do just "select where name = 'xyz1234abc' > ]], { > -- <alter-5.2> > "XYZABC" > diff --git a/test/sql-tap/analyze9.test.lua b/test/sql-tap/analyze9.test.lua > index 3b3d52f..ec3e545 100755 > --- a/test/sql-tap/analyze9.test.lua > +++ b/test/sql-tap/analyze9.test.lua > @@ -206,10 +206,10 @@ test:do_execsql_test( > INSERT INTO t1 VALUES(81, 1, 'one-i'); > INSERT INTO t1 VALUES(91, 1, 'one-j'); > INSERT INTO t1 SELECT a+1,2,'two' || substr(c,4) FROM t1; > - INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; > - INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; > - INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; > - INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; > + INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; > + INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; > + INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; > + INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; > CREATE INDEX t1b ON t1(b); > ANALYZE; > SELECT c FROM t1 WHERE b=3 AND a BETWEEN 30 AND 60; > diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua > index 9780d2c..1620268 100755 > --- a/test/sql-tap/e_expr.test.lua > +++ b/test/sql-tap/e_expr.test.lua > @@ -1,6 +1,6 @@ > #!/usr/bin/env tarantool > test = require("sqltester") > -test:plan(10665) > +test:plan(11521) > > --!./tcltestrunner.lua > -- 2010 July 16 > @@ -77,10 +77,7 @@ local operations = { > {"<>", "ne1"}, > {"!=", "ne2"}, > {"IS", "is"}, > --- NOTE: This test needs refactoring after deletion of GLOB & > --- type restrictions for LIKE. (See #3572) > --- {"LIKE", "like"}, > --- {"GLOB", "glob"}, > + {"LIKE", "like"}, > {"AND", "and"}, > {"OR", "or"}, > {"MATCH", "match"}, > @@ -98,12 +95,9 @@ operations = { > {"+", "-"}, > {"<<", ">>", "&", "|"}, > {"<", "<=", ">", ">="}, > --- NOTE: This test needs refactoring after deletion of GLOB & > --- type restrictions for LIKE. (See #3572) > -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & > --- are waiting for their hour, don't confuse them > --- being commented with ticket above. > - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, > +-- are waiting for their hour. > + {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, > {"AND"}, > {"OR"}, > } > @@ -128,7 +122,7 @@ end > -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary > -- operators, in order from highest to lowest precedence: || * / % + - > -- << >> & | < <= > >= = == != <> IS IS > --- NOT IN LIKE GLOB MATCH REGEXP AND OR > +-- NOT IN LIKE MATCH REGEXP AND OR > -- > -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same > -- precedence as =. > @@ -467,18 +461,63 @@ literals = { > for _, op in ipairs(oplist) do > for n1, rhs in ipairs(literals) do > for n2, lhs in ipairs(literals) do > - local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] > - test:do_test( > - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), > - function() > - --print("\n op "..op.." t "..t) > - return (((op == "||") and ((t == "text") or > - (t == "null"))) or > - ((op ~= "||") and (((t == "integer") or > - (t == "real")) or > - (t == "null")))) and 1 or 0 > - end, 1) > + if op ~= "LIKE" then 1. Why do not just delete like from `oplist`? 2. We were discussing this place with you and Georgy, and decided that you do not touch this for loop at all. > + local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] > + test:do_test( > + string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), > + function() > + return (((op == "||") and ((t == "text") or > + (t == "null"))) or > + ((op ~= "||") and (((t == "integer") or > + (t == "real")) or > + (t == "null")))) and 1 or 0 > + end, 1) > + end > + end > + end > +end > + > +local valid_patterns = > + {"'abc'", "'hexadecimal'", "''", 123, -123, 0, > + 123.4, 0.0, -123.4, "X''", "X'0000'", "NULL"} > + > +local invalid_patterns = {"X'ABCDEF'"} > + > +for n1, rhs in ipairs(valid_patterns) do > + for n2, lhs in ipairs(literals) do > + local t = test:execsql(string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs))[1] > + test:do_test( > + string.format("e_expr-7.%s.LIKE.%s", n1, n2), > + function() > + return (t == "integer" or > + t == "real" or > + t == "null") and 1 or 0 > + end, 1) > + end > +end > > +for n1, rhs in ipairs(invalid_patterns) do > + for n2, lhs in ipairs(literals) do > + local t = string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs) > + local test_name = string.format("e_expr-7.%s.LIKE.%s", n1 + 12, n2) > + if n2 ~= 13 then > + test:do_catchsql_test( > + test_name, > + t, > + { > + -- <test_name> > + 1, "LIKE pattern can only contain UTF-8 characters" > + -- <test_name> > + }) > + else > + test:do_catchsql_test( > + test_name, > + t, > + { > + -- <test_name> > + 0, {"null"} > + -- <test_name> > + }) > end > end > end > @@ -1303,13 +1342,16 @@ end > test:execsql [[ > CREATE TABLE tblname(cname PRIMARY KEY); > ]] > -local function glob(args) > - return 1 > -end > > -box.internal.sql_create_function("GLOB", glob) > -box.internal.sql_create_function("MATCH", glob) > -box.internal.sql_create_function("REGEXP", glob) > +-- NOTE: GLOB is removed from Tarantool, thus it'll be needed to > +-- refactor these calls. They don't work right now since > +-- we don't support MATHC & REGEXP. > +-- local function glob(args) > +-- return 1 > +-- end This test do not test the glob function. Delete this comment. > + > +-- box.internal.sql_create_function("MATCH", glob) > +-- box.internal.sql_create_function("REGEXP", glob) You was lucky that commenting those lines do not break the tests. (because there is a similar code above) Return it back. > local test_cases12 ={ > {1, 123}, > {2, 123.4e05}, > @@ -1369,47 +1411,43 @@ local test_cases12 ={ > > {47, "EXPR1 LIKE EXPR2"}, > {48, "EXPR1 LIKE EXPR2 ESCAPE EXPR"}, > - {49, "EXPR1 GLOB EXPR2"}, > - {50, "EXPR1 GLOB EXPR2 ESCAPE EXPR"}, > - {51, "EXPR1 REGEXP EXPR2"}, > - {52, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, > - {53, "EXPR1 MATCH EXPR2"}, > - {54, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, > - {55, "EXPR1 NOT LIKE EXPR2"}, > - {56, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, > - {57, "EXPR1 NOT GLOB EXPR2"}, > - {58, "EXPR1 NOT GLOB EXPR2 ESCAPE EXPR"}, > - {59, "EXPR1 NOT REGEXP EXPR2"}, > - {60, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, > - {61, "EXPR1 NOT MATCH EXPR2"}, > - {62, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, > - > - {63, "EXPR IS NULL"}, > - {64, "EXPR IS NOT NULL"}, > - > - {65, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, > - {66, "EXPR BETWEEN EXPR1 AND EXPR2"}, > - > - {67, "EXPR NOT IN (SELECT cname FROM tblname)"}, > - {68, "EXPR NOT IN (1)"}, > - {69, "EXPR NOT IN (1, 2, 3)"}, > - {70, "EXPR NOT IN tblname"}, > - {71, "EXPR IN (SELECT cname FROM tblname)"}, > - {72, "EXPR IN (1)"}, > - {73, "EXPR IN (1, 2, 3)"}, > - {74, "EXPR IN tblname"}, > - > - {75, "EXISTS (SELECT cname FROM tblname)"}, > - {76, "NOT EXISTS (SELECT cname FROM tblname)"}, > - > - {77, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > - {78, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, > - {79, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, > - {80, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > - {81, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > - {82, "CASE WHEN EXPR1 THEN EXPR2 END"}, > - {83, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, > - {84, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > + {49, "EXPR1 REGEXP EXPR2"}, > + {50, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, > + {51, "EXPR1 MATCH EXPR2"}, > + {52, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, > + {53, "EXPR1 NOT LIKE EXPR2"}, > + {54, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, > + {55, "EXPR1 NOT REGEXP EXPR2"}, > + {56, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, > + {57, "EXPR1 NOT MATCH EXPR2"}, > + {58, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, > + > + {59, "EXPR IS NULL"}, > + {60, "EXPR IS NOT NULL"}, > + > + {61, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, > + {62, "EXPR BETWEEN EXPR1 AND EXPR2"}, > + > + {63, "EXPR NOT IN (SELECT cname FROM tblname)"}, > + {64, "EXPR NOT IN (1)"}, > + {65, "EXPR NOT IN (1, 2, 3)"}, > + {66, "EXPR NOT IN tblname"}, > + {67, "EXPR IN (SELECT cname FROM tblname)"}, > + {68, "EXPR IN (1)"}, > + {69, "EXPR IN (1, 2, 3)"}, > + {70, "EXPR IN tblname"}, > + > + {71, "EXISTS (SELECT cname FROM tblname)"}, > + {72, "NOT EXISTS (SELECT cname FROM tblname)"}, > + > + {73, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > + {74, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, > + {75, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, > + {76, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > + {77, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > + {78, "CASE WHEN EXPR1 THEN EXPR2 END"}, > + {79, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, > + {80, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > } > > for _, val in ipairs(test_cases12) do > @@ -1802,7 +1840,7 @@ test:do_execsql_test( > }) > > --------------------------------------------------------------------------- > --- Test the statements related to the LIKE and GLOB operators. > +-- Test the statements related to the LIKE operator. > -- > -- EVIDENCE-OF: R-16584-60189 The LIKE operator does a pattern matching > -- comparison. > @@ -2274,15 +2312,23 @@ test:do_execsql_test( > -- </e_expr-16.1.7> > }) > > --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but > --- uses the Unix file globbing syntax for its wildcards. > --- > --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. > +-- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing > +-- syntax for its wildcards. Those test was designed especially for the glob function. There are similar tests for like above. You should delete it instead of renaming. > -- > test:do_execsql_test( > + "e_expr-17.1.0", > + [[ > + PRAGMA case_sensitive_like = 1 > + ]], { > + -- <e_expr-17.1.0> > + > + -- <e_expr-17.1.0> > + }) > + > +test:do_execsql_test( > "e_expr-17.1.1", > [[ > - SELECT 'abcxyz' GLOB 'abc%' > + SELECT 'abcxyz' LIKE 'abc*' > ]], { > -- <e_expr-17.1.1> > 0 > @@ -2292,7 +2338,7 @@ test:do_execsql_test( > test:do_execsql_test( > "e_expr-17.1.2", > [[ > - SELECT 'abcxyz' GLOB 'abc*' > + SELECT 'abcxyz' LIKE 'abc%' > ]], { > -- <e_expr-17.1.2> > 1 > @@ -2302,7 +2348,7 @@ test:do_execsql_test( > test:do_execsql_test( > "e_expr-17.1.3", > [[ > - SELECT 'abcxyz' GLOB 'abc___' > + SELECT 'abcxyz' LIKE 'abc???' > ]], { > -- <e_expr-17.1.3> > 0 > @@ -2312,7 +2358,7 @@ test:do_execsql_test( > test:do_execsql_test( > "e_expr-17.1.4", > [[ > - SELECT 'abcxyz' GLOB 'abc???' > + SELECT 'abcxyz' LIKE 'abc___' > ]], { > -- <e_expr-17.1.4> > 1 > @@ -2322,7 +2368,7 @@ test:do_execsql_test( > test:do_execsql_test( > "e_expr-17.1.5", > [[ > - SELECT 'abcxyz' GLOB 'abc*' > + SELECT 'abcxyz' LIKE 'abc%' > ]], { > -- <e_expr-17.1.5> > 1 > @@ -2332,7 +2378,7 @@ test:do_execsql_test( > test:do_execsql_test( > "e_expr-17.1.6", > [[ > - SELECT 'ABCxyz' GLOB 'abc*' > + SELECT 'ABCxyz' LIKE 'abc%' > ]], { > -- <e_expr-17.1.6> > 0 > @@ -2342,34 +2388,44 @@ test:do_execsql_test( > test:do_execsql_test( > "e_expr-17.1.7", > [[ > - SELECT 'abcxyz' GLOB 'ABC*' > + SELECT 'abcxyz' LIKE 'ABC%' > ]], { > -- <e_expr-17.1.7> > 0 > -- </e_expr-17.1.7> > }) > > --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the > +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the > -- NOT keyword to invert the sense of the test. > -- > test:do_execsql_test( > + "e_expr-17.2.0", > + [[ > + SELECT 'abcxyz' NOT LIKE 'ABC%' > + ]], { > + -- <e_expr-17.2.0> > + 1 > + -- </e_expr-17.2.0> > + }) > + > +test:do_execsql_test( > "e_expr-17.2.1", > [[ > - SELECT 'abcxyz' NOT GLOB 'ABC*' > + SELECT 'abcxyz' NOT LIKE 'abc%' > ]], { > -- <e_expr-17.2.1> > - 1 > + 0 > -- </e_expr-17.2.1> > }) > > test:do_execsql_test( > "e_expr-17.2.2", > [[ > - SELECT 'abcxyz' NOT GLOB 'abc*' > + PRAGMA case_sensitive_like = 0 > ]], { > -- <e_expr-17.2.2> > - 0 > - -- </e_expr-17.2.2> > + > + -- <e_expr-17.2.2> > }) > > test:do_execsql_test( > @@ -2405,10 +2461,11 @@ test:do_execsql_test( > -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions > if 0>0 then > db("nullvalue", "null") do not change tests which are not working. There is a chance chat you do it wrong and you do not know about it. > + > test:do_execsql_test( > "e_expr-17.2.6", > [[ > - SELECT 'abcxyz' NOT GLOB NULL > + SELECT 'abcxyz' NOT LIKE NULL > ]], { > -- <e_expr-17.2.6> > "null" > @@ -2418,92 +2475,16 @@ if 0>0 then > test:do_execsql_test( > "e_expr-17.2.7", > [[ > - SELECT 'abcxyz' NOT LIKE NULL > + SELECT NULL NOT LIKE 'ABC%' > ]], { > -- <e_expr-17.2.7> > "null" > -- </e_expr-17.2.7> > }) > > - test:do_execsql_test( > - "e_expr-17.2.8", > - [[ > - SELECT NULL NOT GLOB 'abc*' > - ]], { > - -- <e_expr-17.2.8> > - "null" > - -- </e_expr-17.2.8> > - }) > - > - test:do_execsql_test( > - "e_expr-17.2.9", > - [[ > - SELECT NULL NOT LIKE 'ABC%' > - ]], { > - -- <e_expr-17.2.9> > - "null" > - -- </e_expr-17.2.9> > - }) > - > db("nullvalue", "") > end > > --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by > --- calling the function glob(Y,X) and can be modified by overriding that > --- function. > - > -local globargs = {} > -local function globfunc(...) > - local args = {...} > - for i, v in ipairs(args) do > - table.insert(globargs, v) > - end > - return 1 > -end > -box.internal.sql_create_function("GLOB", globfunc, 2) > ---db("func", "glob", "-argcount", 2, "globfunc") > - > -test:do_execsql_test( > - "e_expr-17.3.1", > - [[ > - SELECT 'abc' GLOB 'def' > - ]], { > - -- <e_expr-17.3.1> > - 1 > - -- </e_expr-17.3.1> > - }) > - > -test:do_test( > - "e_expr-17.3.2", > - function() > - return globargs > - end, { > - -- <e_expr-17.3.2> > - "def", "abc" > - -- </e_expr-17.3.2> > - }) > - > -globargs = { } > -test:do_execsql_test( > - "e_expr-17.3.3", > - [[ > - SELECT 'X' NOT GLOB 'Y' > - ]], { > - -- <e_expr-17.3.3> > - 0 > - -- </e_expr-17.3.3> > - }) > - > -test:do_test( > - "e_expr-17.3.4", > - function() > - return globargs > - end, { > - -- <e_expr-17.3.4> > - "Y", "X" > - -- </e_expr-17.3.4> > - }) > - > --sqlite3("db", "test.db") > -- EVIDENCE-OF: R-41650-20872 No regexp() user function is defined by > -- default and so use of the REGEXP operator will normally result in an > 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 addf0e3..5594334 100755 > --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua > +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua > @@ -142,17 +142,17 @@ for i, tested_string in ipairs(invalid_testcases) do > local test_name = prefix .. "2." .. tostring(i) > local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" > test:do_catchsql_test(test_name, test_itself, > - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) > + {1, "LIKE pattern can only contain UTF-8 characters"}) > > test_name = prefix .. "3." .. tostring(i) > test_itself = "SELECT 'abc' LIKE 'abc" .. tested_string .. "';" > test:do_catchsql_test(test_name, test_itself, > - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) > + {1, "LIKE pattern can only contain UTF-8 characters"}) > > test_name = prefix .. "4." .. tostring(i) > test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "c';" > test:do_catchsql_test(test_name, test_itself, > - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) > + {1, "LIKE pattern can only contain UTF-8 characters"}) > > -- Just skipping if row value predicand contains invalid character. > > diff --git a/test/sql-tap/like2.test.lua b/test/sql-tap/like2.test.lua > index abcac39..c6c81cb 100755 > --- a/test/sql-tap/like2.test.lua > +++ b/test/sql-tap/like2.test.lua > @@ -12,11 +12,11 @@ test:plan(282) > -- May you find forgiveness for yourself and forgive others. > -- May you share freely, never taking more than you give. > -- > -------------------------------------------------------------------------- > --- This file implements regression tests for SQLite library. The > --- focus of this file is testing the LIKE and GLOB operators and > --- in particular the optimizations that occur to help those operators > --- run faster. > +----------------------------------------------------------------- > +-- This file implements regression tests for SQLite library. The > +-- focus of this file is testing the LIKE operator and > +-- in particular the optimizations that occur to help this > +-- operator run faster. > -- > -- $Id: like2.test,v 1.1 2008/05/26 18:33:41 drh Exp $ > -- ["set","testdir",[["file","dirname",["argv0"]]]] > diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua > index 505d2fa..0bc71a0 100755 > --- a/test/sql-tap/like3.test.lua > +++ b/test/sql-tap/like3.test.lua > @@ -12,13 +12,13 @@ test:plan(7) > -- May you find forgiveness for yourself and forgive others. > -- May you share freely, never taking more than you give. > -- > -------------------------------------------------------------------------- > +----------------------------------------------------------------- > -- > --- This file implements regression tests for SQLite library. The > --- focus of this file is testing the LIKE and GLOB operators and > --- in particular the optimizations that occur to help those operators > --- run faster and that those optimizations work correctly when there > --- are both strings and blobs being tested. > +-- This file implements regression tests for SQLite library. The > +-- focus of this file is testing the LIKE operator and > +-- in particular the optimizations that occur to help this > +-- operator run faster and that those optimizations work > +-- correctly when there are both strings and blobs being tested. > -- > -- Ticket 05f43be8fdda9fbd948d374319b99b054140bc36 shows that the following > -- SQL was not working correctly: > @@ -70,10 +70,11 @@ test:do_execsql_test( > test:do_execsql_test( > "like3-2.0", > [[ > + PRAGMA case_sensitive_like = 1; > CREATE TABLE t2(a PRIMARY KEY, b TEXT); > INSERT INTO t2 SELECT a, b FROM t1; > CREATE INDEX t2ba ON t2(b,a); > - SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; > + SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; Those tests were especially created for glob. Delete it instead of renaming. > ]], { > -- <like3-2.0> > 1, "abc", 4, "abc" > @@ -83,7 +84,7 @@ test:do_execsql_test( > test:do_execsql_test( > "like3-2.1", > [[ > - SELECT a, b FROM t2 WHERE +b GLOB 'ab*' ORDER BY +a; > + SELECT a, b FROM t2 WHERE +b LIKE 'ab%' ORDER BY +a; > ]], { > -- <like3-2.1> > 1, "abc", 4, "abc" > @@ -93,7 +94,7 @@ test:do_execsql_test( > test:do_execsql_test( > "like3-2.2", > [[ > - SELECT a, b FROM t2 WHERE b>=x'6162' AND b GLOB 'ab*' > + SELECT a, b FROM t2 WHERE b>=x'6162' AND b LIKE 'ab%' > ]], { > -- <like3-2.2> > 4, "abc" > @@ -103,7 +104,7 @@ test:do_execsql_test( > test:do_execsql_test( > "like3-2.3", > [[ > - SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b GLOB 'ab*' > + SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b LIKE 'ab%' > ]], { > -- <like3-2.3> > 4, "abc" > @@ -113,7 +114,7 @@ test:do_execsql_test( > test:do_execsql_test( > "like3-2.4", > [[ > - SELECT a, b FROM t2 WHERE b GLOB 'ab*' AND b>=x'6162' > + SELECT a, b FROM t2 WHERE b LIKE 'ab%' AND b>=x'6162' > ]], { > -- <like3-2.4> > 4, "abc" > @@ -123,7 +124,8 @@ test:do_execsql_test( > test:do_execsql_test( > "like3-2.5", > [[ > - SELECT a, b FROM t2 WHERE +b GLOB 'ab*' AND +b>=x'6162' > + SELECT a, b FROM t2 WHERE +b LIKE 'ab%' AND +b>=x'6162'; > + PRAGMA case_sensitive_like = 0; > ]], { > -- <like3-2.5> > 4, "abc" > diff --git a/test/sql-tap/tkt1537.test.lua b/test/sql-tap/tkt1537.test.lua > index caa4284..4b2d78c 100755 > --- a/test/sql-tap/tkt1537.test.lua > +++ b/test/sql-tap/tkt1537.test.lua > @@ -185,7 +185,7 @@ test:do_execsql_test( > test:do_execsql_test( > "tkt1537-3.1", > [[ > - SELECT * FROM t1 LEFT JOIN t2 ON b GLOB 'abc*' WHERE t1.id=1; > + SELECT * FROM t1 LEFT JOIN t2 ON b LIKE 'abc%' WHERE t1.id=1; > ]], { > -- <tkt1537-3.1> > 1, "", "", "", "" > @@ -195,7 +195,7 @@ test:do_execsql_test( > test:do_execsql_test( > "tkt1537-3.2", > [[ > - SELECT * FROM t2 LEFT JOIN t1 ON a1 GLOB 'abc*' WHERE t2.id=3; > + SELECT * FROM t2 LEFT JOIN t1 ON a1 LIKE 'abc%' WHERE t2.id=3; > ]], { > -- <tkt1537-3.2> > 3, 1, "", "", "" > diff --git a/test/sql-tap/triggerA.test.lua b/test/sql-tap/triggerA.test.lua > index da1add8..530e488 100755 > --- a/test/sql-tap/triggerA.test.lua > +++ b/test/sql-tap/triggerA.test.lua > @@ -76,7 +76,7 @@ test:do_test( > "triggerA-1.3", > function() > return test:execsql [[ > - CREATE VIEW v2 AS SELECT x, y FROM t1 WHERE y GLOB '*e*'; > + CREATE VIEW v2 AS SELECT x, y FROM t1 WHERE y LIKE '%e%'; > SELECT * FROM v2 ORDER BY 1; > ]] > end, { > diff --git a/test/sql-tap/where3.test.lua b/test/sql-tap/where3.test.lua > index 4582737..9676131 100755 > --- a/test/sql-tap/where3.test.lua > +++ b/test/sql-tap/where3.test.lua > @@ -404,7 +404,7 @@ if 0 > CREATE TABLE t401(p INTEGER PRIMARY KEY, q, r); > CREATE TABLE t402(x INTEGER PRIMARY KEY, y, z); > EXPLAIN QUERY PLAN > - SELECT * FROM t400, t401, t402 WHERE t402.z GLOB 'abc*'; > + SELECT * FROM t400, t401, t402 WHERE t402.z LIKE 'abc%'; > ]], { > -- <where3-4.0> > 0, 0, 2, "SCAN TABLE T402", 0, 1, 0, "SCAN TABLE T400", 0, 2, 1, "SCAN TABLE T401" > @@ -415,7 +415,7 @@ if 0 > "where3-4.1", > [[ > EXPLAIN QUERY PLAN > - SELECT * FROM t400, t401, t402 WHERE t401.r GLOB 'abc*'; > + SELECT * FROM t400, t401, t402 WHERE t401.r LIKE 'abc%'; > ]], { > -- <where3-4.1> > 0, 0, 1, "SCAN TABLE T401", 0, 1, 0, "SCAN TABLE T400", 0, 2, 2, "SCAN TABLE T402" > @@ -426,7 +426,7 @@ if 0 > "where3-4.2", > [[ > EXPLAIN QUERY PLAN > - SELECT * FROM t400, t401, t402 WHERE t400.c GLOB 'abc*'; > + SELECT * FROM t400, t401, t402 WHERE t400.c LIKE 'abc%'; > ]], { > -- <where3-4.2> > 0, 0, 0, "SCAN TABLE T400", 0, 1, 1, "SCAN TABLE T401", 0, 2, 2, "SCAN TABLE T402" > diff --git a/test/sql-tap/where7.test.lua b/test/sql-tap/where7.test.lua > index 6691dd0..27d25e6 100755 > --- a/test/sql-tap/where7.test.lua > +++ b/test/sql-tap/where7.test.lua > @@ -448,12 +448,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1070 > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR ((a BETWEEN 18 AND 20) AND a!=19) > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > ]]) > end, { > -- <where7-2.2.1> > @@ -467,12 +467,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1070 > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR ((a BETWEEN 18 AND 20) AND a!=19) > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > ]]) > end, { > -- <where7-2.2.2> > @@ -487,11 +487,11 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR ((a BETWEEN 33 AND 35) AND a!=34) > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR b=220 > OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) > OR ((a BETWEEN 67 AND 69) AND a!=68) > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.3.1> > @@ -506,11 +506,11 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR ((a BETWEEN 33 AND 35) AND a!=34) > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR b=220 > OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) > OR ((a BETWEEN 67 AND 69) AND a!=68) > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.3.2> > @@ -525,7 +525,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=190 > OR ((a BETWEEN 49 AND 51) AND a!=50) > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR b=407 > ]]) > end, { > @@ -541,7 +541,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=190 > OR ((a BETWEEN 49 AND 51) AND a!=50) > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR b=407 > ]]) > end, { > @@ -555,7 +555,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') > + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=795 > OR b=1103 > OR b=583 > @@ -571,7 +571,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') > + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=795 > OR b=1103 > OR b=583 > @@ -589,7 +589,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=74 > OR a=50 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR ((a BETWEEN 16 AND 18) AND a!=17) > OR c=21021 > OR ((a BETWEEN 82 AND 84) AND a!=83) > @@ -607,7 +607,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=74 > OR a=50 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR ((a BETWEEN 16 AND 18) AND a!=17) > OR c=21021 > OR ((a BETWEEN 82 AND 84) AND a!=83) > @@ -746,7 +746,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR c=11011 > OR c=20020 > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > @@ -763,7 +763,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR c=11011 > OR c=20020 > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > @@ -781,7 +781,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR b=792 > OR a=97 > OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) > @@ -804,7 +804,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR b=792 > OR a=97 > OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) > @@ -827,11 +827,11 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 50 AND 52) AND a!=51) > OR c=9009 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=539 > OR b=297 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR b=957 > OR f='xyzabcdef' > OR b=619 > @@ -849,11 +849,11 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 50 AND 52) AND a!=51) > OR c=9009 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=539 > OR b=297 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR b=957 > OR f='xyzabcdef' > OR b=619 > @@ -931,7 +931,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=938 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.16.1> > @@ -946,7 +946,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=938 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.16.2> > @@ -963,12 +963,12 @@ test:do_test( > OR f='zabcdefgh' > OR b=308 > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR ((a BETWEEN 15 AND 17) AND a!=16) > OR b=443 > OR ((a BETWEEN 12 AND 14) AND a!=13) > OR f='uvwxyzabc' > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > ]]) > end, { > -- <where7-2.17.1> > @@ -985,12 +985,12 @@ test:do_test( > OR f='zabcdefgh' > OR b=308 > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR ((a BETWEEN 15 AND 17) AND a!=16) > OR b=443 > OR ((a BETWEEN 12 AND 14) AND a!=13) > OR f='uvwxyzabc' > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > ]]) > end, { > -- <where7-2.17.2> > @@ -1037,13 +1037,13 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR a=46 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR a=73 > OR c=20020 > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR b=267 > OR ((a BETWEEN 68 AND 70) AND a!=69) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.19.1> > @@ -1058,13 +1058,13 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR a=46 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR a=73 > OR c=20020 > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR b=267 > OR ((a BETWEEN 68 AND 70) AND a!=69) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.19.2> > @@ -1078,7 +1078,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 27 AND 29) AND a!=28) > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.20.1> > @@ -1092,7 +1092,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 27 AND 29) AND a!=28) > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.20.2> > @@ -1111,9 +1111,9 @@ test:do_test( > OR ((a BETWEEN 87 AND 89) AND a!=88) > OR f='bcdefghij' > OR b=586 > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) > OR a=9 > ]]) > @@ -1134,9 +1134,9 @@ test:do_test( > OR ((a BETWEEN 87 AND 89) AND a!=88) > OR f='bcdefghij' > OR b=586 > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) > OR a=9 > ]]) > @@ -1154,7 +1154,7 @@ test:do_test( > WHERE b=399 > OR c=28028 > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > ]]) > end, { > @@ -1171,7 +1171,7 @@ test:do_test( > WHERE b=399 > OR c=28028 > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > ]]) > end, { > @@ -1185,15 +1185,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR ((a BETWEEN 96 AND 98) AND a!=97) > OR c=14014 > OR c=33033 > OR a=89 > OR b=770 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR a=35 > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR b=253 > OR c=14014 > ]]) > @@ -1208,15 +1208,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR ((a BETWEEN 96 AND 98) AND a!=97) > OR c=14014 > OR c=33033 > OR a=89 > OR b=770 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR a=35 > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR b=253 > OR c=14014 > ]]) > @@ -1231,10 +1231,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') > + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 32 AND 34) AND a!=33) > OR b=330 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR a=16 > ]]) > end, { > @@ -1248,10 +1248,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') > + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 32 AND 34) AND a!=33) > OR b=330 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR a=16 > ]]) > end, { > @@ -1268,7 +1268,7 @@ test:do_test( > WHERE c=5005 > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > OR ((a BETWEEN 36 AND 38) AND a!=37) > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.25.1> > @@ -1284,7 +1284,7 @@ test:do_test( > WHERE c=5005 > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > OR ((a BETWEEN 36 AND 38) AND a!=37) > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.25.2> > @@ -1298,9 +1298,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=33 > ]]) > end, { > @@ -1315,9 +1315,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=33 > ]]) > end, { > @@ -1361,8 +1361,8 @@ test:do_test( > SELECT a FROM t2 > WHERE c=18018 > OR a=94 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=1012 > OR a=3 > OR d>1e10 > @@ -1382,8 +1382,8 @@ test:do_test( > SELECT a FROM t3 > WHERE c=18018 > OR a=94 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=1012 > OR a=3 > OR d>1e10 > @@ -1405,11 +1405,11 @@ test:do_test( > OR c=11011 > OR b=297 > OR a=63 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR a=76 > OR b=1026 > OR a=26 > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR c=30030 > ]]) > end, { > @@ -1427,11 +1427,11 @@ test:do_test( > OR c=11011 > OR b=297 > OR a=63 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR a=76 > OR b=1026 > OR a=26 > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR c=30030 > ]]) > end, { > @@ -1449,7 +1449,7 @@ test:do_test( > OR b=1070 > OR a=59 > OR b=715 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > ]]) > end, { > -- <where7-2.30.1> > @@ -1466,7 +1466,7 @@ test:do_test( > OR b=1070 > OR a=59 > OR b=715 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > ]]) > end, { > -- <where7-2.30.2> > @@ -1479,13 +1479,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=1056 > OR b=1012 > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR ((a BETWEEN 67 AND 69) AND a!=68) > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > ]]) > end, { > -- <where7-2.31.1> > @@ -1498,13 +1498,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=1056 > OR b=1012 > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR ((a BETWEEN 67 AND 69) AND a!=68) > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > ]]) > end, { > -- <where7-2.31.2> > @@ -1518,7 +1518,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='rstuvwxyz' > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR ((a BETWEEN 90 AND 92) AND a!=91) > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > ]]) > @@ -1534,7 +1534,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='rstuvwxyz' > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR ((a BETWEEN 90 AND 92) AND a!=91) > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > ]]) > @@ -1549,13 +1549,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') > + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR c=12012 > OR a=18 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > ]]) > end, { > -- <where7-2.33.1> > @@ -1568,13 +1568,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') > + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR c=12012 > OR a=18 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > ]]) > end, { > -- <where7-2.33.2> > @@ -1622,7 +1622,7 @@ test:do_test( > OR ((a BETWEEN 67 AND 69) AND a!=68) > OR c=33033 > OR b=11 > - OR (g='wvutsrq' AND f GLOB 'lmnop*') > + OR (g='wvutsrq' AND f LIKE 'lmnop%') > OR ((a BETWEEN 7 AND 9) AND a!=8) > ]]) > end, { > @@ -1643,7 +1643,7 @@ test:do_test( > OR ((a BETWEEN 67 AND 69) AND a!=68) > OR c=33033 > OR b=11 > - OR (g='wvutsrq' AND f GLOB 'lmnop*') > + OR (g='wvutsrq' AND f LIKE 'lmnop%') > OR ((a BETWEEN 7 AND 9) AND a!=8) > ]]) > end, { > @@ -1719,7 +1719,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=165 > OR b=201 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR a=32 > ]]) > end, { > @@ -1735,7 +1735,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=165 > OR b=201 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR a=32 > ]]) > end, { > @@ -1749,8 +1749,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > ]]) > end, { > -- <where7-2.39.1> > @@ -1763,8 +1763,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > ]]) > end, { > -- <where7-2.39.2> > @@ -1785,8 +1785,8 @@ test:do_test( > OR a=18 > OR a=34 > OR b=132 > - OR (g='gfedcba' AND f GLOB 'lmnop*') > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR c=18018 > ]]) > end, { > @@ -1808,8 +1808,8 @@ test:do_test( > OR a=18 > OR a=34 > OR b=132 > - OR (g='gfedcba' AND f GLOB 'lmnop*') > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR c=18018 > ]]) > end, { > @@ -1851,13 +1851,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR b=297 > OR b=113 > OR b=176 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) > OR a=67 > OR c=26026 > @@ -1873,13 +1873,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR b=297 > OR b=113 > OR b=176 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) > OR a=67 > OR c=26026 > @@ -1940,8 +1940,8 @@ test:do_test( > OR ((a BETWEEN 32 AND 34) AND a!=33) > OR b=487 > OR b=619 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.44.1> > @@ -1959,8 +1959,8 @@ test:do_test( > OR ((a BETWEEN 32 AND 34) AND a!=33) > OR b=487 > OR b=619 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.44.2> > @@ -1980,7 +1980,7 @@ test:do_test( > OR c=17017 > OR a=82 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR (d>=39.0 AND d<40.0 AND d IS NOT NULL) > ]]) > @@ -2002,7 +2002,7 @@ test:do_test( > OR c=17017 > OR a=82 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR (d>=39.0 AND d<40.0 AND d IS NOT NULL) > ]]) > @@ -2017,7 +2017,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') > + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') > OR c=22022 > ]]) > end, { > @@ -2031,7 +2031,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') > + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') > OR c=22022 > ]]) > end, { > @@ -2048,7 +2048,7 @@ test:do_test( > WHERE c=7007 > OR b=91 > OR b=212 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR c=28028 > OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) > ]]) > @@ -2066,7 +2066,7 @@ test:do_test( > WHERE c=7007 > OR b=91 > OR b=212 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR c=28028 > OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) > ]]) > @@ -2111,9 +2111,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR ((a BETWEEN 0 AND 2) AND a!=1) > OR c=4004 > OR b=322 > @@ -2131,9 +2131,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR ((a BETWEEN 0 AND 2) AND a!=1) > OR c=4004 > OR b=322 > @@ -2156,8 +2156,8 @@ test:do_test( > OR a=46 > OR b=660 > OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR b=355 > OR a=93 > OR b=297 > @@ -2178,8 +2178,8 @@ test:do_test( > OR a=46 > OR b=660 > OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR b=355 > OR a=93 > OR b=297 > @@ -2197,7 +2197,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=190 > OR a=62 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.51.1> > @@ -2212,7 +2212,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=190 > OR a=62 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.51.2> > @@ -2306,7 +2306,7 @@ test:do_test( > OR b=256 > OR a=72 > OR c>=34035 > - OR (g='rqponml' AND f GLOB 'jklmn*') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=674 > OR a=22 > ]]) > @@ -2328,7 +2328,7 @@ test:do_test( > OR b=256 > OR a=72 > OR c>=34035 > - OR (g='rqponml' AND f GLOB 'jklmn*') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=674 > OR a=22 > ]]) > @@ -2381,9 +2381,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 96 AND 98) AND a!=97) > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.56.1> > @@ -2396,9 +2396,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 96 AND 98) AND a!=97) > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.56.2> > @@ -2413,7 +2413,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=748 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > OR b=630 > ]]) > @@ -2430,7 +2430,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=748 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > OR b=630 > ]]) > @@ -2521,7 +2521,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=979 > OR ((a BETWEEN 3 AND 5) AND a!=4) > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.60.1> > @@ -2536,7 +2536,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=979 > OR ((a BETWEEN 3 AND 5) AND a!=4) > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.60.2> > @@ -2555,7 +2555,7 @@ test:do_test( > OR b=726 > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR ((a BETWEEN 50 AND 52) AND a!=51) > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > ]]) > end, { > @@ -2575,7 +2575,7 @@ test:do_test( > OR b=726 > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR ((a BETWEEN 50 AND 52) AND a!=51) > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > ]]) > end, { > @@ -2593,10 +2593,10 @@ test:do_test( > OR ((a BETWEEN 18 AND 20) AND a!=19) > OR b=924 > OR c=11011 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR b=231 > OR b=872 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.62.1> > @@ -2613,10 +2613,10 @@ test:do_test( > OR ((a BETWEEN 18 AND 20) AND a!=19) > OR b=924 > OR c=11011 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR b=231 > OR b=872 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.62.2> > @@ -2631,8 +2631,8 @@ test:do_test( > SELECT a FROM t2 > WHERE a=24 > OR b=473 > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR b=509 > OR b=924 > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > @@ -2650,8 +2650,8 @@ test:do_test( > SELECT a FROM t3 > WHERE a=24 > OR b=473 > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR b=509 > OR b=924 > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > @@ -2668,11 +2668,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=93.0 AND d<94.0 AND d IS NOT NULL) > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR b=363 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR ((a BETWEEN 56 AND 58) AND a!=57) > ]]) > @@ -2688,11 +2688,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=93.0 AND d<94.0 AND d IS NOT NULL) > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR b=363 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR ((a BETWEEN 56 AND 58) AND a!=57) > ]]) > @@ -2711,9 +2711,9 @@ test:do_test( > OR e IS NULL > OR b=495 > OR 1000000<b > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR a=45 > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR a=85 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > ]]) > @@ -2732,9 +2732,9 @@ test:do_test( > OR e IS NULL > OR b=495 > OR 1000000<b > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR a=45 > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR a=85 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > ]]) > @@ -2781,9 +2781,9 @@ test:do_test( > SELECT a FROM t2 > WHERE c>=34035 > OR ((a BETWEEN 96 AND 98) AND a!=97) > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > - OR (g='edcbazy' AND f GLOB 'wxyza*') > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR (d>=27.0 AND d<28.0 AND d IS NOT NULL) > OR a=91 > ]]) > @@ -2800,9 +2800,9 @@ test:do_test( > SELECT a FROM t3 > WHERE c>=34035 > OR ((a BETWEEN 96 AND 98) AND a!=97) > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > - OR (g='edcbazy' AND f GLOB 'wxyza*') > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR (d>=27.0 AND d<28.0 AND d IS NOT NULL) > OR a=91 > ]]) > @@ -2817,9 +2817,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='gfedcba' AND f GLOB 'nopqr*') > + WHERE (g='gfedcba' AND f LIKE 'nopqr%') > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR b=649 > OR b=231 > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > @@ -2837,9 +2837,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='gfedcba' AND f GLOB 'nopqr*') > + WHERE (g='gfedcba' AND f LIKE 'nopqr%') > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR b=649 > OR b=231 > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > @@ -2918,11 +2918,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=65 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR c=22022 > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR b=671 > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR a=91 > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > OR ((a BETWEEN 47 AND 49) AND a!=48) > @@ -2941,11 +2941,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=65 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR c=22022 > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR b=671 > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR a=91 > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > OR ((a BETWEEN 47 AND 49) AND a!=48) > @@ -2995,7 +2995,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=11.0 AND d<12.0 AND d IS NOT NULL) > OR a=14 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > OR b=212 > @@ -3014,7 +3014,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=11.0 AND d<12.0 AND d IS NOT NULL) > OR a=14 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > OR b=212 > @@ -3031,11 +3031,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') > + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') > OR b=168 > OR b=25 > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.74.1> > @@ -3048,11 +3048,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') > + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') > OR b=168 > OR b=25 > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.74.2> > @@ -3098,10 +3098,10 @@ test:do_test( > WHERE c=31031 > OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) > OR ((a BETWEEN 87 AND 89) AND a!=88) > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR a=49 > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.76.1> > @@ -3117,10 +3117,10 @@ test:do_test( > WHERE c=31031 > OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) > OR ((a BETWEEN 87 AND 89) AND a!=88) > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR a=49 > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.76.2> > @@ -3170,7 +3170,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=85.0 AND d<86.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR ((a BETWEEN 30 AND 32) AND a!=31) > OR b=1089 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > @@ -3187,7 +3187,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=85.0 AND d<86.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR ((a BETWEEN 30 AND 32) AND a!=31) > OR b=1089 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > @@ -3205,8 +3205,8 @@ test:do_test( > SELECT a FROM t2 > WHERE b=399 > OR ((a BETWEEN 9 AND 11) AND a!=10) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR a=10 > OR b=1026 > ]]) > @@ -3223,8 +3223,8 @@ test:do_test( > SELECT a FROM t3 > WHERE b=399 > OR ((a BETWEEN 9 AND 11) AND a!=10) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR a=10 > OR b=1026 > ]]) > @@ -3239,11 +3239,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'yzabc*') > + WHERE (g='jihgfed' AND f LIKE 'yzabc%') > OR b=465 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.80.1> > @@ -3256,11 +3256,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'yzabc*') > + WHERE (g='jihgfed' AND f LIKE 'yzabc%') > OR b=465 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.80.2> > @@ -3275,7 +3275,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=25 > OR b=792 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > ]]) > end, { > -- <where7-2.81.1> > @@ -3290,7 +3290,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=25 > OR b=792 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > ]]) > end, { > -- <where7-2.81.2> > @@ -3308,10 +3308,10 @@ test:do_test( > OR a=13 > OR a=15 > OR ((a BETWEEN 6 AND 8) AND a!=7) > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR a=27 > OR ((a BETWEEN 98 AND 100) AND a!=99) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR a=32 > OR a=39 > ]]) > @@ -3331,10 +3331,10 @@ test:do_test( > OR a=13 > OR a=15 > OR ((a BETWEEN 6 AND 8) AND a!=7) > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR a=27 > OR ((a BETWEEN 98 AND 100) AND a!=99) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR a=32 > OR a=39 > ]]) > @@ -3350,14 +3350,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='hijklmnop' > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR ((a BETWEEN 77 AND 79) AND a!=78) > OR b=528 > OR c=30030 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.83.1> > @@ -3371,14 +3371,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='hijklmnop' > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR ((a BETWEEN 77 AND 79) AND a!=78) > OR b=528 > OR c=30030 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.83.2> > @@ -3425,11 +3425,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') > + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') > OR b=748 > OR b=696 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > ]]) > end, { > -- <where7-2.85.1> > @@ -3442,11 +3442,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') > + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') > OR b=748 > OR b=696 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > ]]) > end, { > -- <where7-2.85.2> > @@ -3460,10 +3460,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 71 AND 73) AND a!=72) > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR a=87 > OR a=80 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=784 > OR a=49 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -3480,10 +3480,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 71 AND 73) AND a!=72) > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR a=87 > OR a=80 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=784 > OR a=49 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -3500,13 +3500,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 14 AND 16) AND a!=15) > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR c=1001 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR c=33033 > ]]) > end, { > @@ -3521,13 +3521,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 14 AND 16) AND a!=15) > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR c=1001 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR c=33033 > ]]) > end, { > @@ -3611,13 +3611,13 @@ test:do_test( > OR b=553 > OR a=64 > OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR a=62 > OR b=1081 > OR b=770 > OR b=762 > OR b=803 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.90.1> > @@ -3634,13 +3634,13 @@ test:do_test( > OR b=553 > OR a=64 > OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR a=62 > OR b=1081 > OR b=770 > OR b=762 > OR b=803 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.90.2> > @@ -3653,8 +3653,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'klmno*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (g='wvutsrq' AND f LIKE 'klmno%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR c=17017 > OR b=168 > OR ((a BETWEEN 77 AND 79) AND a!=78) > @@ -3670,8 +3670,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'klmno*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (g='wvutsrq' AND f LIKE 'klmno%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR c=17017 > OR b=168 > OR ((a BETWEEN 77 AND 79) AND a!=78) > @@ -3690,12 +3690,12 @@ test:do_test( > WHERE c=34034 > OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) > OR a=44 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR c=31031 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR b=619 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > OR ((a BETWEEN 29 AND 31) AND a!=30) > ]]) > end, { > @@ -3712,12 +3712,12 @@ test:do_test( > WHERE c=34034 > OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) > OR a=44 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR c=31031 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR b=619 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > OR ((a BETWEEN 29 AND 31) AND a!=30) > ]]) > end, { > @@ -3738,10 +3738,10 @@ test:do_test( > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR b=110 > OR f='klmnopqrs' > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR b=674 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.93.1> > @@ -3761,10 +3761,10 @@ test:do_test( > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR b=110 > OR f='klmnopqrs' > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR b=674 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.93.2> > @@ -3882,7 +3882,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=231 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.97.1> > @@ -3896,7 +3896,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=231 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.97.2> > @@ -4057,7 +4057,7 @@ test:do_test( > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR b=630 > OR c=19019 > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR a=24 > OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) > OR ((a BETWEEN 51 AND 53) AND a!=52) > @@ -4077,7 +4077,7 @@ test:do_test( > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR b=630 > OR c=19019 > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR a=24 > OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) > OR ((a BETWEEN 51 AND 53) AND a!=52) > @@ -4128,11 +4128,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='stuvwxyza' > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR ((a BETWEEN 1 AND 3) AND a!=2) > OR b=1037 > OR f='zabcdefgh' > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.104.1> > @@ -4146,11 +4146,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='stuvwxyza' > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR ((a BETWEEN 1 AND 3) AND a!=2) > OR b=1037 > OR f='zabcdefgh' > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.104.2> > @@ -4163,7 +4163,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR ((a BETWEEN 30 AND 32) AND a!=31) > ]]) > @@ -4178,7 +4178,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR ((a BETWEEN 30 AND 32) AND a!=31) > ]]) > @@ -4197,8 +4197,8 @@ test:do_test( > OR b=190 > OR ((a BETWEEN 38 AND 40) AND a!=39) > OR ((a BETWEEN 70 AND 72) AND a!=71) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR b=704 > ]]) > end, { > @@ -4216,8 +4216,8 @@ test:do_test( > OR b=190 > OR ((a BETWEEN 38 AND 40) AND a!=39) > OR ((a BETWEEN 70 AND 72) AND a!=71) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR b=704 > ]]) > end, { > @@ -4234,7 +4234,7 @@ test:do_test( > WHERE b=88 > OR f='vwxyzabcd' > OR f='fghijklmn' > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.107.1> > @@ -4250,7 +4250,7 @@ test:do_test( > WHERE b=88 > OR f='vwxyzabcd' > OR f='fghijklmn' > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.107.2> > @@ -4296,7 +4296,7 @@ test:do_test( > WHERE ((a BETWEEN 47 AND 49) AND a!=48) > OR a=5 > OR b=179 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR a=69 > ]]) > end, { > @@ -4313,7 +4313,7 @@ test:do_test( > WHERE ((a BETWEEN 47 AND 49) AND a!=48) > OR a=5 > OR b=179 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR a=69 > ]]) > end, { > @@ -4328,8 +4328,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=971 > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR b=828 > OR a=81 > OR ((a BETWEEN 23 AND 25) AND a!=24) > @@ -4350,8 +4350,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=971 > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR b=828 > OR a=81 > OR ((a BETWEEN 23 AND 25) AND a!=24) > @@ -4399,8 +4399,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'opqrs*') > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + WHERE (g='lkjihgf' AND f LIKE 'opqrs%') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > ]]) > end, { > -- <where7-2.112.1> > @@ -4413,8 +4413,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'opqrs*') > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + WHERE (g='lkjihgf' AND f LIKE 'opqrs%') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > ]]) > end, { > -- <where7-2.112.2> > @@ -4463,8 +4463,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=396 > ]]) > end, { > @@ -4478,8 +4478,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=396 > ]]) > end, { > @@ -4531,7 +4531,7 @@ test:do_test( > OR ((a BETWEEN 20 AND 22) AND a!=21) > OR b=396 > OR b=630 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR c=3003 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > ]]) > @@ -4552,7 +4552,7 @@ test:do_test( > OR ((a BETWEEN 20 AND 22) AND a!=21) > OR b=396 > OR b=630 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR c=3003 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > ]]) > @@ -4573,8 +4573,8 @@ test:do_test( > OR b=957 > OR b=311 > OR b=143 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > ]]) > end, { > @@ -4594,8 +4594,8 @@ test:do_test( > OR b=957 > OR b=311 > OR b=143 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > ]]) > end, { > @@ -4612,7 +4612,7 @@ test:do_test( > WHERE ((a BETWEEN 74 AND 76) AND a!=75) > OR ((a BETWEEN 94 AND 96) AND a!=95) > OR b=451 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.118.1> > @@ -4628,7 +4628,7 @@ test:do_test( > WHERE ((a BETWEEN 74 AND 76) AND a!=75) > OR ((a BETWEEN 94 AND 96) AND a!=95) > OR b=451 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.118.2> > @@ -4645,11 +4645,11 @@ test:do_test( > OR b=451 > OR b=363 > OR b=330 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR ((a BETWEEN 52 AND 54) AND a!=53) > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR ((a BETWEEN 81 AND 83) AND a!=82) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.119.1> > @@ -4666,11 +4666,11 @@ test:do_test( > OR b=451 > OR b=363 > OR b=330 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR ((a BETWEEN 52 AND 54) AND a!=53) > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR ((a BETWEEN 81 AND 83) AND a!=82) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.119.2> > @@ -4683,9 +4683,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR e IS NULL > OR b=759 > ]]) > @@ -4700,9 +4700,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR e IS NULL > OR b=759 > ]]) > @@ -4717,9 +4717,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR ((a BETWEEN 19 AND 21) AND a!=20) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.121.1> > @@ -4732,9 +4732,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR ((a BETWEEN 19 AND 21) AND a!=20) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.121.2> > @@ -4815,14 +4815,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'tuvwx*') > + WHERE (g='fedcbaz' AND f LIKE 'tuvwx%') > OR b=421 > OR b=429 > OR b=498 > OR b=33 > OR b=198 > OR c=14014 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > ]]) > end, { > -- <where7-2.124.1> > @@ -4835,14 +4835,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'tuvwx*') > + WHERE (g='fedcbaz' AND f LIKE 'tuvwx%') > OR b=421 > OR b=429 > OR b=498 > OR b=33 > OR b=198 > OR c=14014 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > ]]) > end, { > -- <where7-2.124.2> > @@ -4858,13 +4858,13 @@ test:do_test( > WHERE b=47 > OR c=31031 > OR a=38 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR b=242 > OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) > OR b=352 > OR a=49 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.125.1> > @@ -4880,13 +4880,13 @@ test:do_test( > WHERE b=47 > OR c=31031 > OR a=38 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR b=242 > OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) > OR b=352 > OR a=49 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.125.2> > @@ -4969,9 +4969,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=528 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.128.1> > @@ -4984,9 +4984,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=528 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.128.2> > @@ -5031,7 +5031,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=71.0 AND d<72.0 AND d IS NOT NULL) > OR 1000000<b > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR a=24 > ]]) > @@ -5048,7 +5048,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=71.0 AND d<72.0 AND d IS NOT NULL) > OR 1000000<b > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR a=24 > ]]) > @@ -5071,8 +5071,8 @@ test:do_test( > OR a=14 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR b=440 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > ]]) > end, { > -- <where7-2.131.1> > @@ -5093,8 +5093,8 @@ test:do_test( > OR a=14 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR b=440 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > ]]) > end, { > -- <where7-2.131.2> > @@ -5226,9 +5226,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=27 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=1045 > OR a=84 > OR f='qrstuvwxy' > @@ -5245,9 +5245,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=27 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=1045 > OR a=84 > OR f='qrstuvwxy' > @@ -5266,7 +5266,7 @@ test:do_test( > WHERE b=704 > OR b=949 > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR c=24024 > OR b=553 > OR a=18 > @@ -5286,7 +5286,7 @@ test:do_test( > WHERE b=704 > OR b=949 > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR c=24024 > OR b=553 > OR a=18 > @@ -5303,8 +5303,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=902 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR b=25 > @@ -5323,8 +5323,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=902 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR b=25 > @@ -5405,8 +5405,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?qrst*' AND f GLOB 'pqrs*') > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + WHERE (f LIKE '_qrst%' AND f LIKE 'pqrs%') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=641 > OR ((a BETWEEN 36 AND 38) AND a!=37) > ]]) > @@ -5421,8 +5421,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?qrst*' AND f GLOB 'pqrs*') > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + WHERE (f LIKE '_qrst%' AND f LIKE 'pqrs%') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=641 > OR ((a BETWEEN 36 AND 38) AND a!=37) > ]]) > @@ -5442,9 +5442,9 @@ test:do_test( > OR ((a BETWEEN 44 AND 46) AND a!=45) > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR b=11 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR a=52 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR a=13 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > ]]) > @@ -5464,9 +5464,9 @@ test:do_test( > OR ((a BETWEEN 44 AND 46) AND a!=45) > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR b=11 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR a=52 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR a=13 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > ]]) > @@ -5487,7 +5487,7 @@ test:do_test( > OR b=1045 > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR f='uvwxyzabc' > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > ]]) > end, { > -- <where7-2.143.1> > @@ -5506,7 +5506,7 @@ test:do_test( > OR b=1045 > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR f='uvwxyzabc' > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > ]]) > end, { > -- <where7-2.143.2> > @@ -5562,9 +5562,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=91 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > OR b=102 > @@ -5584,9 +5584,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=91 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > OR b=102 > @@ -5605,8 +5605,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='vutsrqp' AND f GLOB 'opqrs*') > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + WHERE (g='vutsrqp' AND f LIKE 'opqrs%') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR b=990 > OR a=52 > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > @@ -5622,8 +5622,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='vutsrqp' AND f GLOB 'opqrs*') > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + WHERE (g='vutsrqp' AND f LIKE 'opqrs%') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR b=990 > OR a=52 > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > @@ -5683,13 +5683,13 @@ test:do_test( > OR b=421 > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR c=22022 > OR b=825 > OR ((a BETWEEN 17 AND 19) AND a!=18) > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > ]]) > end, { > -- <where7-2.148.1> > @@ -5706,13 +5706,13 @@ test:do_test( > OR b=421 > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR c=22022 > OR b=825 > OR ((a BETWEEN 17 AND 19) AND a!=18) > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > ]]) > end, { > -- <where7-2.148.2> > @@ -5729,7 +5729,7 @@ test:do_test( > OR b=484 > OR b=1026 > OR a=90 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=608 > OR a=32 > ]]) > @@ -5748,7 +5748,7 @@ test:do_test( > OR b=484 > OR b=1026 > OR a=90 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=608 > OR a=32 > ]]) > @@ -5771,7 +5771,7 @@ test:do_test( > OR a=55 > OR b=773 > OR b=319 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.150.1> > @@ -5792,7 +5792,7 @@ test:do_test( > OR a=55 > OR b=773 > OR b=319 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.150.2> > @@ -5805,7 +5805,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') > + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') > OR f='mnopqrstu' > OR a=62 > ]]) > @@ -5820,7 +5820,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') > + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') > OR f='mnopqrstu' > OR a=62 > ]]) > @@ -5839,9 +5839,9 @@ test:do_test( > OR b=1045 > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR c=13013 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR b=124 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.152.1> > @@ -5858,9 +5858,9 @@ test:do_test( > OR b=1045 > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR c=13013 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR b=124 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.152.2> > @@ -5880,7 +5880,7 @@ test:do_test( > OR b=421 > OR b=803 > OR c=4004 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > ]]) > end, { > -- <where7-2.153.1> > @@ -5900,7 +5900,7 @@ test:do_test( > OR b=421 > OR b=803 > OR c=4004 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > ]]) > end, { > -- <where7-2.153.2> > @@ -5913,9 +5913,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') > + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR b=99 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.154.1> > @@ -5928,9 +5928,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') > + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR b=99 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.154.2> > @@ -5972,9 +5972,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=795 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR f='jklmnopqr' > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR b=1056 > ]]) > @@ -5990,9 +5990,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=795 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR f='jklmnopqr' > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR b=1056 > ]]) > @@ -6146,7 +6146,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=23 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=641 > OR b=352 > OR b=179 > @@ -6166,7 +6166,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=23 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=641 > OR b=352 > OR b=179 > @@ -6189,7 +6189,7 @@ test:do_test( > OR b=1078 > OR ((a BETWEEN 11 AND 13) AND a!=12) > OR c=12012 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR b=319 > OR c=5005 > OR 1000000<b > @@ -6211,7 +6211,7 @@ test:do_test( > OR b=1078 > OR ((a BETWEEN 11 AND 13) AND a!=12) > OR c=12012 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR b=319 > OR c=5005 > OR 1000000<b > @@ -6230,8 +6230,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='cdefghijk' > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) > ]]) > end, { > @@ -6246,8 +6246,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='cdefghijk' > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) > ]]) > end, { > @@ -6297,13 +6297,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (g='rqponml' AND f GLOB 'jklmn*') > + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=891 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR b=484 > OR a=62 > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.165.1> > @@ -6316,13 +6316,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (g='rqponml' AND f GLOB 'jklmn*') > + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=891 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR b=484 > OR a=62 > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.165.2> > @@ -6336,11 +6336,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=363 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR a=39 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > ]]) > @@ -6356,11 +6356,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=363 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR a=39 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > ]]) > @@ -6378,7 +6378,7 @@ test:do_test( > WHERE c=30030 > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR b=850 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > ]]) > end, { > -- <where7-2.167.1> > @@ -6394,7 +6394,7 @@ test:do_test( > WHERE c=30030 > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR b=850 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > ]]) > end, { > -- <where7-2.167.2> > @@ -6540,7 +6540,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=333 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > OR b=407 > OR a=5 > @@ -6559,7 +6559,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=333 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > OR b=407 > OR a=5 > @@ -6580,7 +6580,7 @@ test:do_test( > WHERE b<0 > OR b=352 > OR b=517 > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 12 AND 14) AND a!=13) > OR b=1012 > OR ((a BETWEEN 11 AND 13) AND a!=12) > @@ -6599,7 +6599,7 @@ test:do_test( > WHERE b<0 > OR b=352 > OR b=517 > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 12 AND 14) AND a!=13) > OR b=1012 > OR ((a BETWEEN 11 AND 13) AND a!=12) > @@ -6615,11 +6615,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > OR c<=10 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR a=32 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR d<0.0 > ]]) > end, { > @@ -6633,11 +6633,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > OR c<=10 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR a=32 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR d<0.0 > ]]) > end, { > @@ -6653,9 +6653,9 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 20 AND 22) AND a!=21) > OR b=1045 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR a=26 > - OR (g='gfedcba' AND f GLOB 'opqrs*') > + OR (g='gfedcba' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.175.1> > @@ -6670,9 +6670,9 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 20 AND 22) AND a!=21) > OR b=1045 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR a=26 > - OR (g='gfedcba' AND f GLOB 'opqrs*') > + OR (g='gfedcba' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.175.2> > @@ -6714,7 +6714,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR c=32032 > OR b=289 > OR ((a BETWEEN 17 AND 19) AND a!=18) > @@ -6732,7 +6732,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR c=32032 > OR b=289 > OR ((a BETWEEN 17 AND 19) AND a!=18) > @@ -6752,7 +6752,7 @@ test:do_test( > WHERE ((a BETWEEN 15 AND 17) AND a!=16) > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR b=33 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > ]]) > end, { > -- <where7-2.178.1> > @@ -6768,7 +6768,7 @@ test:do_test( > WHERE ((a BETWEEN 15 AND 17) AND a!=16) > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR b=33 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > ]]) > end, { > -- <where7-2.178.2> > @@ -6783,15 +6783,15 @@ test:do_test( > SELECT a FROM t2 > WHERE b=828 > OR b=341 > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR b=902 > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=242 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.179.1> > @@ -6806,15 +6806,15 @@ test:do_test( > SELECT a FROM t3 > WHERE b=828 > OR b=341 > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR b=902 > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=242 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.179.2> > @@ -6827,7 +6827,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'efghi*') > + WHERE (g='nmlkjih' AND f LIKE 'efghi%') > OR b=982 > OR b=781 > OR ((a BETWEEN 66 AND 68) AND a!=67) > @@ -6845,7 +6845,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'efghi*') > + WHERE (g='nmlkjih' AND f LIKE 'efghi%') > OR b=982 > OR b=781 > OR ((a BETWEEN 66 AND 68) AND a!=67) > @@ -6863,13 +6863,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > OR a=31 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR a=76 > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=176 > ]]) > end, { > @@ -6883,13 +6883,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > OR a=31 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR a=76 > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=176 > ]]) > end, { > @@ -6903,11 +6903,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') > + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=14 > OR ((a BETWEEN 88 AND 90) AND a!=89) > OR f='zabcdefgh' > @@ -6923,11 +6923,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') > + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=14 > OR ((a BETWEEN 88 AND 90) AND a!=89) > OR f='zabcdefgh' > @@ -6943,7 +6943,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR b=286 > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > OR b=91 > @@ -6960,7 +6960,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR b=286 > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > OR b=91 > @@ -6977,9 +6977,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'nopqr*') > + WHERE (g='lkjihgf' AND f LIKE 'nopqr%') > OR c=19019 > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR b=374 > ]]) > end, { > @@ -6993,9 +6993,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'nopqr*') > + WHERE (g='lkjihgf' AND f LIKE 'nopqr%') > OR c=19019 > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR b=374 > ]]) > end, { > @@ -7010,7 +7010,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE g IS NULL > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.185.1> > @@ -7024,7 +7024,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE g IS NULL > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.185.2> > @@ -7067,10 +7067,10 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 66 AND 68) AND a!=67) > OR b=564 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=234 > OR b=641 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) > OR a=98 > @@ -7088,10 +7088,10 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 66 AND 68) AND a!=67) > OR b=564 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=234 > OR b=641 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) > OR a=98 > @@ -7111,12 +7111,12 @@ test:do_test( > OR b=44 > OR b=539 > OR c=11011 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=69 > OR b=1001 > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR ((a BETWEEN 32 AND 34) AND a!=33) > ]]) > end, { > @@ -7134,12 +7134,12 @@ test:do_test( > OR b=44 > OR b=539 > OR c=11011 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=69 > OR b=1001 > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR ((a BETWEEN 32 AND 34) AND a!=33) > ]]) > end, { > @@ -7224,7 +7224,7 @@ test:do_test( > WHERE c=23023 > OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) > OR a=66 > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR a=51 > OR a=23 > OR c=4004 > @@ -7243,7 +7243,7 @@ test:do_test( > WHERE c=23023 > OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) > OR a=66 > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR a=51 > OR a=23 > OR c=4004 > @@ -7260,7 +7260,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=36 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR a=80 > ]]) > end, { > @@ -7275,7 +7275,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=36 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR a=80 > ]]) > end, { > @@ -7289,7 +7289,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR ((a BETWEEN 37 AND 39) AND a!=38) > OR a=55 > OR f='efghijklm' > @@ -7310,7 +7310,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR ((a BETWEEN 37 AND 39) AND a!=38) > OR a=55 > OR f='efghijklm' > @@ -7333,11 +7333,11 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=87.0 AND d<88.0 AND d IS NOT NULL) > OR b=836 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=91 > OR b=594 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.194.1> > @@ -7352,11 +7352,11 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=87.0 AND d<88.0 AND d IS NOT NULL) > OR b=836 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=91 > OR b=594 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.194.2> > @@ -7369,8 +7369,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 62 AND 64) AND a!=63) > OR c=6006 > OR ((a BETWEEN 50 AND 52) AND a!=51) > @@ -7389,8 +7389,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 62 AND 64) AND a!=63) > OR c=6006 > OR ((a BETWEEN 50 AND 52) AND a!=51) > @@ -7415,10 +7415,10 @@ test:do_test( > OR b=121 > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR ((a BETWEEN 12 AND 14) AND a!=13) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR b=660 > OR b=792 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.196.1> > @@ -7437,10 +7437,10 @@ test:do_test( > OR b=121 > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR ((a BETWEEN 12 AND 14) AND a!=13) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR b=660 > OR b=792 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.196.2> > @@ -7456,10 +7456,10 @@ test:do_test( > WHERE b=1089 > OR b=495 > OR b=157 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR f='wxyzabcde' > ]]) > @@ -7477,10 +7477,10 @@ test:do_test( > WHERE b=1089 > OR b=495 > OR b=157 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR f='wxyzabcde' > ]]) > @@ -7497,7 +7497,7 @@ test:do_test( > SELECT a FROM t2 > WHERE f='bcdefghij' > OR ((a BETWEEN 40 AND 42) AND a!=41) > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR b=157 > OR b=267 > OR c=34034 > @@ -7515,7 +7515,7 @@ test:do_test( > SELECT a FROM t3 > WHERE f='bcdefghij' > OR ((a BETWEEN 40 AND 42) AND a!=41) > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR b=157 > OR b=267 > OR c=34034 > @@ -7534,7 +7534,7 @@ test:do_test( > WHERE a=19 > OR a=23 > OR c<=10 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.199.1> > @@ -7550,7 +7550,7 @@ test:do_test( > WHERE a=19 > OR a=23 > OR c<=10 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.199.2> > @@ -7567,7 +7567,7 @@ test:do_test( > OR b=792 > OR b=803 > OR b=36 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > ]]) > end, { > -- <where7-2.200.1> > @@ -7584,7 +7584,7 @@ test:do_test( > OR b=792 > OR b=803 > OR b=36 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > ]]) > end, { > -- <where7-2.200.2> > @@ -7597,11 +7597,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'uvwxy*') > + WHERE (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR ((a BETWEEN 76 AND 78) AND a!=77) > OR f='jklmnopqr' > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > OR b=891 > OR a=40 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > @@ -7617,11 +7617,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'uvwxy*') > + WHERE (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR ((a BETWEEN 76 AND 78) AND a!=77) > OR f='jklmnopqr' > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > OR b=891 > OR a=40 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > @@ -7644,7 +7644,7 @@ test:do_test( > OR d>1e10 > OR b=429 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > OR c=10010 > OR ((a BETWEEN 83 AND 85) AND a!=84) > ]]) > @@ -7666,7 +7666,7 @@ test:do_test( > OR d>1e10 > OR b=429 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > OR c=10010 > OR ((a BETWEEN 83 AND 85) AND a!=84) > ]]) > @@ -7681,14 +7681,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'defgh*') > + WHERE (g='xwvutsr' AND f LIKE 'defgh%') > OR a=22 > OR a=26 > OR a=81 > OR a=53 > OR ((a BETWEEN 92 AND 94) AND a!=93) > OR c=30030 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=82 > OR b=594 > ]]) > @@ -7703,14 +7703,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'defgh*') > + WHERE (g='xwvutsr' AND f LIKE 'defgh%') > OR a=22 > OR a=26 > OR a=81 > OR a=53 > OR ((a BETWEEN 92 AND 94) AND a!=93) > OR c=30030 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=82 > OR b=594 > ]]) > @@ -7727,14 +7727,14 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 34 AND 36) AND a!=35) > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR a=83 > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR ((a BETWEEN 99 AND 101) AND a!=100) > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=1092 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR b=25 > ]]) > end, { > @@ -7750,14 +7750,14 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 34 AND 36) AND a!=35) > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR a=83 > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR ((a BETWEEN 99 AND 101) AND a!=100) > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=1092 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR b=25 > ]]) > end, { > @@ -7773,9 +7773,9 @@ test:do_test( > SELECT a FROM t2 > WHERE a=20 > OR b=421 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR a=50 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > ]]) > end, { > @@ -7791,9 +7791,9 @@ test:do_test( > SELECT a FROM t3 > WHERE a=20 > OR b=421 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR a=50 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > ]]) > end, { > @@ -7808,7 +7808,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=960 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > ]]) > end, { > -- <where7-2.206.1> > @@ -7822,7 +7822,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=960 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > ]]) > end, { > -- <where7-2.206.2> > @@ -7899,7 +7899,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='edcbazy' AND f GLOB 'wxyza*') > + WHERE (g='edcbazy' AND f LIKE 'wxyza%') > OR b=957 > OR ((a BETWEEN 48 AND 50) AND a!=49) > ]]) > @@ -7914,7 +7914,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='edcbazy' AND f GLOB 'wxyza*') > + WHERE (g='edcbazy' AND f LIKE 'wxyza%') > OR b=957 > OR ((a BETWEEN 48 AND 50) AND a!=49) > ]]) > @@ -7961,7 +7961,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=66.0 AND d<67.0 AND d IS NOT NULL) > OR b=11 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR ((a BETWEEN 14 AND 16) AND a!=15) > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR a=99 > @@ -7979,7 +7979,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=66.0 AND d<67.0 AND d IS NOT NULL) > OR b=11 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR ((a BETWEEN 14 AND 16) AND a!=15) > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR a=99 > @@ -7997,12 +7997,12 @@ test:do_test( > SELECT a FROM t2 > WHERE f='fghijklmn' > OR a=16 > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR ((a BETWEEN 60 AND 62) AND a!=61) > OR ((a BETWEEN 90 AND 92) AND a!=91) > OR ((a BETWEEN 9 AND 11) AND a!=10) > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=80 > ]]) > end, { > @@ -8018,12 +8018,12 @@ test:do_test( > SELECT a FROM t3 > WHERE f='fghijklmn' > OR a=16 > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR ((a BETWEEN 60 AND 62) AND a!=61) > OR ((a BETWEEN 90 AND 92) AND a!=91) > OR ((a BETWEEN 9 AND 11) AND a!=10) > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=80 > ]]) > end, { > @@ -8037,10 +8037,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') > + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') > OR a=44 > OR a=43 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > OR b=25 > ]]) > end, { > @@ -8054,10 +8054,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') > + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') > OR a=44 > OR a=43 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > OR b=25 > ]]) > end, { > @@ -8134,10 +8134,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'opqrs*') > + OR (g='gfedcba' AND f LIKE 'opqrs%') > OR b=1015 > OR c=16016 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR f='abcdefghi' > OR b=605 > OR a=63 > @@ -8154,10 +8154,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'opqrs*') > + OR (g='gfedcba' AND f LIKE 'opqrs%') > OR b=1015 > OR c=16016 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR f='abcdefghi' > OR b=605 > OR a=63 > @@ -8173,7 +8173,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='yxwvuts' AND f GLOB 'bcdef*') > + WHERE (g='yxwvuts' AND f LIKE 'bcdef%') > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR b=641 > OR b=795 > @@ -8189,7 +8189,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='yxwvuts' AND f GLOB 'bcdef*') > + WHERE (g='yxwvuts' AND f LIKE 'bcdef%') > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR b=641 > OR b=795 > @@ -8281,7 +8281,7 @@ test:do_test( > OR b=1089 > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR f IS NULL > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > ]]) > end, { > -- <where7-2.220.1> > @@ -8302,7 +8302,7 @@ test:do_test( > OR b=1089 > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR f IS NULL > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > ]]) > end, { > -- <where7-2.220.2> > @@ -8317,15 +8317,15 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1026 > OR b=407 > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR b=564 > OR c=23023 > OR b=891 > OR c=22022 > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR ((a BETWEEN 9 AND 11) AND a!=10) > - OR (g='rqponml' AND f GLOB 'ijklm*') > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.221.1> > @@ -8340,15 +8340,15 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1026 > OR b=407 > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR b=564 > OR c=23023 > OR b=891 > OR c=22022 > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR ((a BETWEEN 9 AND 11) AND a!=10) > - OR (g='rqponml' AND f GLOB 'ijklm*') > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.221.2> > @@ -8395,7 +8395,7 @@ test:do_test( > OR ((a BETWEEN 79 AND 81) AND a!=80) > OR c=18018 > OR b=792 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > @@ -8417,7 +8417,7 @@ test:do_test( > OR ((a BETWEEN 79 AND 81) AND a!=80) > OR c=18018 > OR b=792 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > @@ -8437,10 +8437,10 @@ test:do_test( > SELECT a FROM t2 > WHERE b=429 > OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR b=1070 > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.224.1> > @@ -8455,10 +8455,10 @@ test:do_test( > SELECT a FROM t3 > WHERE b=429 > OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR b=1070 > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.224.2> > @@ -8471,7 +8471,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') > + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=572 > ]]) > end, { > @@ -8485,7 +8485,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') > + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=572 > ]]) > end, { > @@ -8501,7 +8501,7 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 62 AND 64) AND a!=63) > OR f='abcdefghi' > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.226.1> > @@ -8516,7 +8516,7 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 62 AND 64) AND a!=63) > OR f='abcdefghi' > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.226.2> > @@ -8562,7 +8562,7 @@ test:do_test( > OR a=1 > OR ((a BETWEEN 75 AND 77) AND a!=76) > OR a=75 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > ]]) > end, { > @@ -8581,7 +8581,7 @@ test:do_test( > OR a=1 > OR ((a BETWEEN 75 AND 77) AND a!=76) > OR a=75 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > ]]) > end, { > @@ -8595,9 +8595,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='gfedcba' AND f GLOB 'nopqr*') > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + WHERE (g='gfedcba' AND f LIKE 'nopqr%') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR b=231 > OR a=87 > ]]) > @@ -8612,9 +8612,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='gfedcba' AND f GLOB 'nopqr*') > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + WHERE (g='gfedcba' AND f LIKE 'nopqr%') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR b=231 > OR a=87 > ]]) > @@ -8630,8 +8630,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=77 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR c=24024 > OR c=5005 > ]]) > @@ -8647,8 +8647,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=77 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR c=24024 > OR c=5005 > ]]) > @@ -8663,13 +8663,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') > + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR b=682 > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > ]]) > end, { > @@ -8683,13 +8683,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') > + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR b=682 > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > ]]) > end, { > @@ -8707,7 +8707,7 @@ test:do_test( > OR b=121 > OR c=2002 > OR ((a BETWEEN 84 AND 86) AND a!=85) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.232.1> > @@ -8724,7 +8724,7 @@ test:do_test( > OR b=121 > OR c=2002 > OR ((a BETWEEN 84 AND 86) AND a!=85) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.232.2> > @@ -8740,8 +8740,8 @@ test:do_test( > WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR f='abcdefghi' > OR b=267 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR a=82 > OR a=54 > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > @@ -8761,8 +8761,8 @@ test:do_test( > WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR f='abcdefghi' > OR b=267 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR a=82 > OR a=54 > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > @@ -8815,9 +8815,9 @@ test:do_test( > OR ((a BETWEEN 31 AND 33) AND a!=32) > OR (d>=94.0 AND d<95.0 AND d IS NOT NULL) > OR 1000000<b > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > ]]) > end, { > -- <where7-2.235.1> > @@ -8836,9 +8836,9 @@ test:do_test( > OR ((a BETWEEN 31 AND 33) AND a!=32) > OR (d>=94.0 AND d<95.0 AND d IS NOT NULL) > OR 1000000<b > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > ]]) > end, { > -- <where7-2.235.2> > @@ -8853,7 +8853,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1001 > OR b=168 > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > ]]) > end, { > @@ -8869,7 +8869,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1001 > OR b=168 > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > ]]) > end, { > @@ -8884,8 +8884,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=51 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR b=330 > ]]) > end, { > @@ -8900,8 +8900,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=51 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR b=330 > ]]) > end, { > @@ -8915,13 +8915,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') > + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=704 > OR a=62 > OR f='pqrstuvwx' > OR b=495 > OR c=26026 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b<0 > OR b=597 > ]]) > @@ -8936,13 +8936,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') > + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=704 > OR a=62 > OR f='pqrstuvwx' > OR b=495 > OR c=26026 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b<0 > OR b=597 > ]]) > @@ -8992,7 +8992,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=14014 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=572 > OR c=15015 > ]]) > @@ -9008,7 +9008,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=14014 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=572 > OR c=15015 > ]]) > @@ -9023,9 +9023,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > OR b=850 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR ((a BETWEEN 15 AND 17) AND a!=16) > OR b=88 > OR f='hijklmnop' > @@ -9044,9 +9044,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > OR b=850 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR ((a BETWEEN 15 AND 17) AND a!=16) > OR b=88 > OR f='hijklmnop' > @@ -9073,8 +9073,8 @@ test:do_test( > OR b=374 > OR b=938 > OR b=773 > - OR (g='jihgfed' AND f GLOB 'zabcd*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.242.1> > @@ -9095,8 +9095,8 @@ test:do_test( > OR b=374 > OR b=938 > OR b=773 > - OR (g='jihgfed' AND f GLOB 'zabcd*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.242.2> > @@ -9109,7 +9109,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=146 > ]]) > end, { > @@ -9123,7 +9123,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=146 > ]]) > end, { > @@ -9171,7 +9171,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR b=399 > OR b=1004 > OR c=16016 > @@ -9193,7 +9193,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR b=399 > OR b=1004 > OR c=16016 > @@ -9222,8 +9222,8 @@ test:do_test( > OR b=861 > OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) > OR b=949 > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.246.1> > @@ -9243,8 +9243,8 @@ test:do_test( > OR b=861 > OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) > OR b=949 > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.246.2> > @@ -9257,7 +9257,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') > + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') > OR a=83 > OR c=26026 > OR a=49 > @@ -9276,7 +9276,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') > + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') > OR a=83 > OR c=26026 > OR a=49 > @@ -9328,7 +9328,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=451 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > ]]) > end, { > -- <where7-2.249.1> > @@ -9342,7 +9342,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=451 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > ]]) > end, { > -- <where7-2.249.2> > @@ -9356,7 +9356,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=47 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > ]]) > end, { > -- <where7-2.250.1> > @@ -9370,7 +9370,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=47 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > ]]) > end, { > -- <where7-2.250.2> > @@ -9384,7 +9384,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1037 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR b=344 > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > @@ -9401,7 +9401,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1037 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR b=344 > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > @@ -9419,7 +9419,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=506 > OR ((a BETWEEN 20 AND 22) AND a!=21) > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR b=429 > OR b=275 > ]]) > @@ -9436,7 +9436,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=506 > OR ((a BETWEEN 20 AND 22) AND a!=21) > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR b=429 > OR b=275 > ]]) > @@ -9458,7 +9458,7 @@ test:do_test( > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR a=60 > OR b=80 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > OR b=616 > ]]) > end, { > @@ -9479,7 +9479,7 @@ test:do_test( > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR a=60 > OR b=80 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > OR b=616 > ]]) > end, { > @@ -9521,13 +9521,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') > + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') > OR a=43 > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR b=586 > OR c=17017 > - OR (g='onmlkji' AND f GLOB 'yzabc*') > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR a=87 > OR b=968 > ]]) > @@ -9542,13 +9542,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') > + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') > OR a=43 > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR b=586 > OR c=17017 > - OR (g='onmlkji' AND f GLOB 'yzabc*') > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR a=87 > OR b=968 > ]]) > @@ -9597,8 +9597,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='rqponml' AND f GLOB 'jklmn*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + WHERE (g='rqponml' AND f LIKE 'jklmn%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR c>=34035 > OR b=850 > OR ((a BETWEEN 32 AND 34) AND a!=33) > @@ -9620,8 +9620,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='rqponml' AND f GLOB 'jklmn*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + WHERE (g='rqponml' AND f LIKE 'jklmn%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR c>=34035 > OR b=850 > OR ((a BETWEEN 32 AND 34) AND a!=33) > @@ -9705,7 +9705,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'nopqr*') > + WHERE (g='qponmlk' AND f LIKE 'nopqr%') > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=993 > ]]) > @@ -9720,7 +9720,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'nopqr*') > + WHERE (g='qponmlk' AND f LIKE 'nopqr%') > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=993 > ]]) > @@ -9739,7 +9739,7 @@ test:do_test( > OR a=22 > OR b=289 > OR b=795 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR b=242 > OR a=59 > OR b=1045 > @@ -9760,7 +9760,7 @@ test:do_test( > OR a=22 > OR b=289 > OR b=795 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR b=242 > OR a=59 > OR b=1045 > @@ -9778,9 +9778,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=245 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR c=3003 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) > @@ -9798,9 +9798,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=245 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR c=3003 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) > @@ -9817,15 +9817,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') > + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') > OR b=220 > OR b=443 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR a=62 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR b=1023 > OR a=100 > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > ]]) > end, { > @@ -9839,15 +9839,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') > + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') > OR b=220 > OR b=443 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR a=62 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR b=1023 > OR a=100 > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > ]]) > end, { > @@ -9863,8 +9863,8 @@ test:do_test( > SELECT a FROM t2 > WHERE c=11011 > OR f='tuvwxyzab' > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.264.1> > @@ -9879,8 +9879,8 @@ test:do_test( > SELECT a FROM t3 > WHERE c=11011 > OR f='tuvwxyzab' > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.264.2> > @@ -10005,15 +10005,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=443 > OR b=33 > OR b=762 > OR b=575 > OR c=16016 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 41 AND 43) AND a!=42) > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR b=1092 > ]]) > end, { > @@ -10027,15 +10027,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=443 > OR b=33 > OR b=762 > OR b=575 > OR c=16016 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 41 AND 43) AND a!=42) > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR b=1092 > ]]) > end, { > @@ -10051,14 +10051,14 @@ test:do_test( > SELECT a FROM t2 > WHERE b=806 > OR b=872 > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR f='uvwxyzabc' > OR b=748 > OR b=586 > OR ((a BETWEEN 15 AND 17) AND a!=16) > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR ((a BETWEEN 32 AND 34) AND a!=33) > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR b=891 > ]]) > end, { > @@ -10074,14 +10074,14 @@ test:do_test( > SELECT a FROM t3 > WHERE b=806 > OR b=872 > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR f='uvwxyzabc' > OR b=748 > OR b=586 > OR ((a BETWEEN 15 AND 17) AND a!=16) > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR ((a BETWEEN 32 AND 34) AND a!=33) > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR b=891 > ]]) > end, { > @@ -10097,8 +10097,8 @@ test:do_test( > SELECT a FROM t2 > WHERE b=693 > OR f='fghijklmn' > - OR (g='rqponml' AND f GLOB 'hijkl*') > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR a=96 > ]]) > @@ -10115,8 +10115,8 @@ test:do_test( > SELECT a FROM t3 > WHERE b=693 > OR f='fghijklmn' > - OR (g='rqponml' AND f GLOB 'hijkl*') > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR a=96 > ]]) > @@ -10131,7 +10131,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') > + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') > OR b=451 > OR ((a BETWEEN 96 AND 98) AND a!=97) > OR ((a BETWEEN 97 AND 99) AND a!=98) > @@ -10148,7 +10148,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') > + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') > OR b=451 > OR ((a BETWEEN 96 AND 98) AND a!=97) > OR ((a BETWEEN 97 AND 99) AND a!=98) > @@ -10165,16 +10165,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'bcdef*') > + WHERE (g='nmlkjih' AND f LIKE 'bcdef%') > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR a=75 > OR b=960 > - OR (g='tsrqpon' AND f GLOB 'yzabc*') > + OR (g='tsrqpon' AND f LIKE 'yzabc%') > OR b=616 > OR b=330 > OR ((a BETWEEN 16 AND 18) AND a!=17) > OR a=26 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.272.1> > @@ -10187,16 +10187,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'bcdef*') > + WHERE (g='nmlkjih' AND f LIKE 'bcdef%') > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR a=75 > OR b=960 > - OR (g='tsrqpon' AND f GLOB 'yzabc*') > + OR (g='tsrqpon' AND f LIKE 'yzabc%') > OR b=616 > OR b=330 > OR ((a BETWEEN 16 AND 18) AND a!=17) > OR a=26 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.272.2> > @@ -10210,7 +10210,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=762 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.273.1> > @@ -10224,7 +10224,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=762 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.273.2> > @@ -10310,7 +10310,7 @@ test:do_test( > OR b=176 > OR ((a BETWEEN 34 AND 36) AND a!=35) > OR b=220 > - OR (g='tsrqpon' AND f GLOB 'yzabc*') > + OR (g='tsrqpon' AND f LIKE 'yzabc%') > OR a=4 > ]]) > end, { > @@ -10329,7 +10329,7 @@ test:do_test( > OR b=176 > OR ((a BETWEEN 34 AND 36) AND a!=35) > OR b=220 > - OR (g='tsrqpon' AND f GLOB 'yzabc*') > + OR (g='tsrqpon' AND f LIKE 'yzabc%') > OR a=4 > ]]) > end, { > @@ -10344,7 +10344,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=29 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=979 > OR b=275 > OR ((a BETWEEN 56 AND 58) AND a!=57) > @@ -10364,7 +10364,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=29 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=979 > OR b=275 > OR ((a BETWEEN 56 AND 58) AND a!=57) > @@ -10384,11 +10384,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 43 AND 45) AND a!=44) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR f='fghijklmn' > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR a=74 > OR ((a BETWEEN 7 AND 9) AND a!=8) > @@ -10405,11 +10405,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 43 AND 45) AND a!=44) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR f='fghijklmn' > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR a=74 > OR ((a BETWEEN 7 AND 9) AND a!=8) > @@ -10426,10 +10426,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 80 AND 82) AND a!=81) > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > OR ((a BETWEEN 49 AND 51) AND a!=50) > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.279.1> > @@ -10443,10 +10443,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 80 AND 82) AND a!=81) > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > OR ((a BETWEEN 49 AND 51) AND a!=50) > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.279.2> > @@ -10495,11 +10495,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR c=23023 > OR b=377 > OR b=858 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.281.1> > @@ -10512,11 +10512,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR c=23023 > OR b=377 > OR b=858 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.281.2> > @@ -10532,13 +10532,13 @@ test:do_test( > WHERE (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR b=322 > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'pqrst*') > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='fedcbaz' AND f LIKE 'pqrst%') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR b=432 > OR b=55 > OR a=53 > OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR b=25 > ]]) > end, { > @@ -10555,13 +10555,13 @@ test:do_test( > WHERE (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR b=322 > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'pqrst*') > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='fedcbaz' AND f LIKE 'pqrst%') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR b=432 > OR b=55 > OR a=53 > OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR b=25 > ]]) > end, { > @@ -10576,7 +10576,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=484 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=616 > OR c=5005 > OR ((a BETWEEN 27 AND 29) AND a!=28) > @@ -10593,7 +10593,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=484 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=616 > OR c=5005 > OR ((a BETWEEN 27 AND 29) AND a!=28) > @@ -10610,11 +10610,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=916 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=1048 > OR c=6006 > OR b=762 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > OR b=751 > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > @@ -10631,11 +10631,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=916 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=1048 > OR c=6006 > OR b=762 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > OR b=751 > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > @@ -10656,7 +10656,7 @@ test:do_test( > OR b=275 > OR b=396 > OR c=4004 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR b=319 > OR ((a BETWEEN 83 AND 85) AND a!=84) > OR a=3 > @@ -10678,7 +10678,7 @@ test:do_test( > OR b=275 > OR b=396 > OR c=4004 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR b=319 > OR ((a BETWEEN 83 AND 85) AND a!=84) > OR a=3 > @@ -10695,16 +10695,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'lmnop*') > + WHERE (g='wvutsrq' AND f LIKE 'lmnop%') > OR b=718 > OR f='vwxyzabcd' > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR ((a BETWEEN 66 AND 68) AND a!=67) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > ]]) > end, { > @@ -10718,16 +10718,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'lmnop*') > + WHERE (g='wvutsrq' AND f LIKE 'lmnop%') > OR b=718 > OR f='vwxyzabcd' > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR ((a BETWEEN 66 AND 68) AND a!=67) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > ]]) > end, { > @@ -10920,9 +10920,9 @@ test:do_test( > OR b=231 > OR b=212 > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR c=30030 > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > ]]) > end, { > -- <where7-2.292.1> > @@ -10940,9 +10940,9 @@ test:do_test( > OR b=231 > OR b=212 > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR c=30030 > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > ]]) > end, { > -- <where7-2.292.2> > @@ -10996,8 +10996,8 @@ test:do_test( > OR f='vwxyzabcd' > OR b=762 > OR a=60 > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.294.1> > @@ -11015,8 +11015,8 @@ test:do_test( > OR f='vwxyzabcd' > OR b=762 > OR a=60 > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.294.2> > @@ -11029,14 +11029,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='mlkjihg' AND f GLOB 'ghijk*') > + WHERE (g='mlkjihg' AND f LIKE 'ghijk%') > OR a=3 > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=498 > OR a=100 > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR a=69 > ]]) > end, { > @@ -11050,14 +11050,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='mlkjihg' AND f GLOB 'ghijk*') > + WHERE (g='mlkjihg' AND f LIKE 'ghijk%') > OR a=3 > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=498 > OR a=100 > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR a=69 > ]]) > end, { > @@ -11071,12 +11071,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (g='ihgfedc' AND f LIKE 'efghi%') > OR b=300 > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > OR b=58 > OR ((a BETWEEN 55 AND 57) AND a!=56) > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR b=286 > OR b=234 > OR ((a BETWEEN 43 AND 45) AND a!=44) > @@ -11094,12 +11094,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (g='ihgfedc' AND f LIKE 'efghi%') > OR b=300 > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > OR b=58 > OR ((a BETWEEN 55 AND 57) AND a!=56) > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR b=286 > OR b=234 > OR ((a BETWEEN 43 AND 45) AND a!=44) > @@ -11121,12 +11121,12 @@ test:do_test( > OR ((a BETWEEN 72 AND 74) AND a!=73) > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR b=594 > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR ((a BETWEEN 37 AND 39) AND a!=38) > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR ((a BETWEEN 18 AND 20) AND a!=19) > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > ]]) > end, { > @@ -11144,12 +11144,12 @@ test:do_test( > OR ((a BETWEEN 72 AND 74) AND a!=73) > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR b=594 > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR ((a BETWEEN 37 AND 39) AND a!=38) > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR ((a BETWEEN 18 AND 20) AND a!=19) > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > ]]) > end, { > @@ -11164,8 +11164,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=949 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.298.1> > @@ -11179,8 +11179,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=949 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.298.2> > @@ -11195,13 +11195,13 @@ test:do_test( > SELECT a FROM t2 > WHERE b=960 > OR a=44 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR a=39 > OR b=828 > OR ((a BETWEEN 3 AND 5) AND a!=4) > OR d<0.0 > OR b=770 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR b=594 > OR ((a BETWEEN 89 AND 91) AND a!=90) > ]]) > @@ -11218,13 +11218,13 @@ test:do_test( > SELECT a FROM t3 > WHERE b=960 > OR a=44 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR a=39 > OR b=828 > OR ((a BETWEEN 3 AND 5) AND a!=4) > OR d<0.0 > OR b=770 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR b=594 > OR ((a BETWEEN 89 AND 91) AND a!=90) > ]]) > @@ -11278,7 +11278,7 @@ test:do_test( > WHERE b=1081 > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR b=1004 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR ((a BETWEEN 29 AND 31) AND a!=30) > OR b=660 > OR b=957 > @@ -11298,7 +11298,7 @@ test:do_test( > WHERE b=1081 > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR b=1004 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR ((a BETWEEN 29 AND 31) AND a!=30) > OR b=660 > OR b=957 > @@ -11320,9 +11320,9 @@ test:do_test( > OR f='yzabcdefg' > OR b=880 > OR a=63 > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.302.1> > @@ -11340,9 +11340,9 @@ test:do_test( > OR f='yzabcdefg' > OR b=880 > OR a=63 > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.302.2> > @@ -11357,12 +11357,12 @@ test:do_test( > SELECT a FROM t2 > WHERE a=69 > OR b=1103 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR f='wxyzabcde' > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR f='pqrstuvwx' > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR a=59 > OR b=946 > ]]) > @@ -11379,12 +11379,12 @@ test:do_test( > SELECT a FROM t3 > WHERE a=69 > OR b=1103 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR f='wxyzabcde' > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR f='pqrstuvwx' > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR a=59 > OR b=946 > ]]) > @@ -11400,7 +11400,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR a=68 > OR ((a BETWEEN 14 AND 16) AND a!=15) > ]]) > @@ -11416,7 +11416,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR a=68 > OR ((a BETWEEN 14 AND 16) AND a!=15) > ]]) > @@ -11432,7 +11432,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=10.0 AND d<11.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.305.1> > @@ -11446,7 +11446,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=10.0 AND d<11.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.305.2> > @@ -11526,12 +11526,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR c=14014 > OR b=990 > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > OR c=14014 > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR b=740 > OR c=3003 > ]]) > @@ -11547,12 +11547,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR c=14014 > OR b=990 > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > OR c=14014 > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR b=740 > OR c=3003 > ]]) > @@ -11640,7 +11640,7 @@ test:do_test( > OR a=4 > OR b=311 > OR ((a BETWEEN 97 AND 99) AND a!=98) > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR b=396 > ]]) > end, { > @@ -11663,7 +11663,7 @@ test:do_test( > OR a=4 > OR b=311 > OR ((a BETWEEN 97 AND 99) AND a!=98) > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR b=396 > ]]) > end, { > @@ -11679,7 +11679,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=82 > OR b=333 > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR b=99 > OR a=63 > OR a=35 > @@ -11698,7 +11698,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=82 > OR b=333 > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR b=99 > OR a=63 > OR a=35 > @@ -11803,9 +11803,9 @@ test:do_test( > OR f='hijklmnop' > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR b=817 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > ]]) > @@ -11824,9 +11824,9 @@ test:do_test( > OR f='hijklmnop' > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR b=817 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > ]]) > @@ -11841,12 +11841,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR b=311 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR a=48 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > OR c=32032 > OR f='opqrstuvw' > OR b=300 > @@ -11864,12 +11864,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR b=311 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR a=48 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > OR c=32032 > OR f='opqrstuvw' > OR b=300 > @@ -11889,7 +11889,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=95.0 AND d<96.0 AND d IS NOT NULL) > OR b=1070 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR a=22 > @@ -11912,7 +11912,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=95.0 AND d<96.0 AND d IS NOT NULL) > OR b=1070 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR a=22 > @@ -11934,7 +11934,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=8.0 AND d<9.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR a=21 > OR b=1026 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -11952,7 +11952,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=8.0 AND d<9.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR a=21 > OR b=1026 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -11975,7 +11975,7 @@ test:do_test( > OR a=29 > OR c=15015 > OR a=87 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.319.1> > @@ -11994,7 +11994,7 @@ test:do_test( > OR a=29 > OR c=15015 > OR a=87 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.319.2> > @@ -12042,7 +12042,7 @@ test:do_test( > OR a=91 > OR b=1015 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR ((a BETWEEN 91 AND 93) AND a!=92) > ]]) > end, { > @@ -12061,7 +12061,7 @@ test:do_test( > OR a=91 > OR b=1015 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR ((a BETWEEN 91 AND 93) AND a!=92) > ]]) > end, { > @@ -12076,12 +12076,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=7 > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR b=1015 > OR b=839 > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR b=410 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR a=71 > ]]) > end, { > @@ -12096,12 +12096,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=7 > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR b=1015 > OR b=839 > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR b=410 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR a=71 > ]]) > end, { > @@ -12118,12 +12118,12 @@ test:do_test( > WHERE b=880 > OR b=982 > OR a=52 > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR a=24 > OR ((a BETWEEN 47 AND 49) AND a!=48) > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > ]]) > end, { > -- <where7-2.323.1> > @@ -12139,12 +12139,12 @@ test:do_test( > WHERE b=880 > OR b=982 > OR a=52 > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR a=24 > OR ((a BETWEEN 47 AND 49) AND a!=48) > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > ]]) > end, { > -- <where7-2.323.2> > @@ -12158,9 +12158,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 67 AND 69) AND a!=68) > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > ]]) > end, { > -- <where7-2.324.1> > @@ -12174,9 +12174,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 67 AND 69) AND a!=68) > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > ]]) > end, { > -- <where7-2.324.2> > @@ -12192,7 +12192,7 @@ test:do_test( > WHERE f='abcdefghi' > OR a=5 > OR b=124 > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=432 > OR 1000000<b > OR a=58 > @@ -12214,7 +12214,7 @@ test:do_test( > WHERE f='abcdefghi' > OR a=5 > OR b=124 > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=432 > OR 1000000<b > OR a=58 > @@ -12271,7 +12271,7 @@ test:do_test( > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR ((a BETWEEN 63 AND 65) AND a!=64) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR f='uvwxyzabc' > ]]) > end, { > @@ -12293,7 +12293,7 @@ test:do_test( > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR ((a BETWEEN 63 AND 65) AND a!=64) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR f='uvwxyzabc' > ]]) > end, { > @@ -12308,16 +12308,16 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 57 AND 59) AND a!=58) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=564 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR b=77 > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > OR b=968 > OR b=847 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.328.1> > @@ -12331,16 +12331,16 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 57 AND 59) AND a!=58) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=564 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR b=77 > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > OR b=968 > OR b=847 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.328.2> > @@ -12421,7 +12421,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) > OR b=693 > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR b=968 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR b=132 > @@ -12441,7 +12441,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) > OR b=693 > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR b=968 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR b=132 > @@ -12496,11 +12496,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=190 > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR b=924 > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR b=759 > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.333.1> > @@ -12514,11 +12514,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=190 > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR b=924 > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR b=759 > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.333.2> > @@ -12576,12 +12576,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=26026 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR c=17017 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='srqponm' AND f GLOB 'ghijk*') > - OR (g='jihgfed' AND f GLOB 'zabcd*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='srqponm' AND f LIKE 'ghijk%') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > ]]) > @@ -12597,12 +12597,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=26026 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR c=17017 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='srqponm' AND f GLOB 'ghijk*') > - OR (g='jihgfed' AND f GLOB 'zabcd*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='srqponm' AND f LIKE 'ghijk%') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > ]]) > @@ -12662,9 +12662,9 @@ test:do_test( > OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR b=300 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR a=41 > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR b=135 > OR b=605 > ]]) > @@ -12684,9 +12684,9 @@ test:do_test( > OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR b=300 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR a=41 > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR b=135 > OR b=605 > ]]) > @@ -12701,16 +12701,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR b=762 > OR b=484 > OR b=190 > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=1023 > ]]) > end, { > @@ -12724,16 +12724,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR b=762 > OR b=484 > OR b=190 > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=1023 > ]]) > end, { > @@ -12747,7 +12747,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (g='ihgfedc' AND f LIKE 'efghi%') > OR a=34 > OR f='rstuvwxyz' > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > @@ -12764,7 +12764,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (g='ihgfedc' AND f LIKE 'efghi%') > OR a=34 > OR f='rstuvwxyz' > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > @@ -12783,7 +12783,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=37.0 AND d<38.0 AND d IS NOT NULL) > OR b=1004 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR g IS NULL > ]]) > end, { > @@ -12799,7 +12799,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=37.0 AND d<38.0 AND d IS NOT NULL) > OR b=1004 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR g IS NULL > ]]) > end, { > @@ -12822,8 +12822,8 @@ test:do_test( > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR a=44 > OR a=23 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.341.1> > @@ -12845,8 +12845,8 @@ test:do_test( > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR a=44 > OR a=23 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.341.2> > @@ -12864,8 +12864,8 @@ test:do_test( > OR a=11 > OR ((a BETWEEN 12 AND 14) AND a!=13) > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR a=13 > OR a=15 > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > @@ -12887,8 +12887,8 @@ test:do_test( > OR a=11 > OR ((a BETWEEN 12 AND 14) AND a!=13) > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR a=13 > OR a=15 > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > @@ -13019,16 +13019,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='gfedcba' AND f GLOB 'klmno*') > + WHERE (g='gfedcba' AND f LIKE 'klmno%') > OR ((a BETWEEN 9 AND 11) AND a!=10) > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR a=48 > OR b=113 > OR ((a BETWEEN 20 AND 22) AND a!=21) > OR b=880 > OR ((a BETWEEN 85 AND 87) AND a!=86) > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.346.1> > @@ -13041,16 +13041,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='gfedcba' AND f GLOB 'klmno*') > + WHERE (g='gfedcba' AND f LIKE 'klmno%') > OR ((a BETWEEN 9 AND 11) AND a!=10) > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR a=48 > OR b=113 > OR ((a BETWEEN 20 AND 22) AND a!=21) > OR b=880 > OR ((a BETWEEN 85 AND 87) AND a!=86) > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.346.2> > @@ -13065,10 +13065,10 @@ test:do_test( > SELECT a FROM t2 > WHERE b=517 > OR b=187 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR b=1092 > OR ((a BETWEEN 84 AND 86) AND a!=85) > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.347.1> > @@ -13083,10 +13083,10 @@ test:do_test( > SELECT a FROM t3 > WHERE b=517 > OR b=187 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR b=1092 > OR ((a BETWEEN 84 AND 86) AND a!=85) > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.347.2> > @@ -13259,7 +13259,7 @@ test:do_test( > OR a=30 > OR c=3003 > OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > OR b=564 > OR b=55 > OR a=38 > @@ -13281,7 +13281,7 @@ test:do_test( > OR a=30 > OR c=3003 > OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > OR b=564 > OR b=55 > OR a=38 > @@ -13328,7 +13328,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=792 > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > ]]) > end, { > -- <where7-2.354.1> > @@ -13342,7 +13342,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=792 > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > ]]) > end, { > -- <where7-2.354.2> > @@ -13357,9 +13357,9 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=73.0 AND d<74.0 AND d IS NOT NULL) > OR c=21021 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR f='zabcdefgh' > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR b=781 > OR a=64 > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > @@ -13377,9 +13377,9 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=73.0 AND d<74.0 AND d IS NOT NULL) > OR c=21021 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR f='zabcdefgh' > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR b=781 > OR a=64 > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > @@ -13395,12 +13395,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') > + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') > OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) > OR a=34 > - OR (g='rqponml' AND f GLOB 'ijklm*') > - OR (g='rqponml' AND f GLOB 'klmno*') > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > + OR (g='rqponml' AND f LIKE 'klmno%') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR b=319 > OR b=330 > OR ((a BETWEEN 28 AND 30) AND a!=29) > @@ -13416,12 +13416,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') > + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') > OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) > OR a=34 > - OR (g='rqponml' AND f GLOB 'ijklm*') > - OR (g='rqponml' AND f GLOB 'klmno*') > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > + OR (g='rqponml' AND f LIKE 'klmno%') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR b=319 > OR b=330 > OR ((a BETWEEN 28 AND 30) AND a!=29) > @@ -13437,8 +13437,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR a=45 > OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) > ]]) > @@ -13453,8 +13453,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR a=45 > OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) > ]]) > @@ -13470,7 +13470,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=53.0 AND d<54.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=165 > OR b=836 > ]]) > @@ -13486,7 +13486,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=53.0 AND d<54.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=165 > OR b=836 > ]]) > @@ -13503,7 +13503,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1034 > OR f='vwxyzabcd' > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > ]]) > end, { > @@ -13519,7 +13519,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1034 > OR f='vwxyzabcd' > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > ]]) > end, { > @@ -13575,12 +13575,12 @@ test:do_test( > SELECT a FROM t2 > WHERE a=37 > OR b=88 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR c=23023 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > OR a=56 > OR ((a BETWEEN 13 AND 15) AND a!=14) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR f='ijklmnopq' > OR ((a BETWEEN 85 AND 87) AND a!=86) > ]]) > @@ -13597,12 +13597,12 @@ test:do_test( > SELECT a FROM t3 > WHERE a=37 > OR b=88 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR c=23023 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > OR a=56 > OR ((a BETWEEN 13 AND 15) AND a!=14) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR f='ijklmnopq' > OR ((a BETWEEN 85 AND 87) AND a!=86) > ]]) > @@ -13620,7 +13620,7 @@ test:do_test( > WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR a=74 > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 42 AND 44) AND a!=43) > ]]) > end, { > @@ -13637,7 +13637,7 @@ test:do_test( > WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR a=74 > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 42 AND 44) AND a!=43) > ]]) > end, { > @@ -13747,13 +13747,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') > + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR b=212 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR a=20 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=627 > ]]) > end, { > @@ -13767,13 +13767,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') > + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR b=212 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR a=20 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=627 > ]]) > end, { > @@ -13787,7 +13787,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR b=157 > OR b=1026 > @@ -13803,7 +13803,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR b=157 > OR b=1026 > @@ -13823,10 +13823,10 @@ test:do_test( > OR a=16 > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='wvutsrq' AND f GLOB 'lmnop*') > + OR (g='wvutsrq' AND f LIKE 'lmnop%') > OR f='zabcdefgh' > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.368.1> > @@ -13843,10 +13843,10 @@ test:do_test( > OR a=16 > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='wvutsrq' AND f GLOB 'lmnop*') > + OR (g='wvutsrq' AND f LIKE 'lmnop%') > OR f='zabcdefgh' > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.368.2> > @@ -13895,11 +13895,11 @@ test:do_test( > SELECT a FROM t2 > WHERE f IS NULL > OR a=37 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR ((a BETWEEN 55 AND 57) AND a!=56) > OR b=168 > OR b=22 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=506 > ]]) > end, { > @@ -13915,11 +13915,11 @@ test:do_test( > SELECT a FROM t3 > WHERE f IS NULL > OR a=37 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR ((a BETWEEN 55 AND 57) AND a!=56) > OR b=168 > OR b=22 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=506 > ]]) > end, { > @@ -13935,11 +13935,11 @@ test:do_test( > SELECT a FROM t2 > WHERE a=29 > OR ((a BETWEEN 26 AND 28) AND a!=27) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > - OR (g='qponmlk' AND f GLOB 'qrstu*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR b=209 > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > OR b=146 > ]]) > end, { > @@ -13955,11 +13955,11 @@ test:do_test( > SELECT a FROM t3 > WHERE a=29 > OR ((a BETWEEN 26 AND 28) AND a!=27) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > - OR (g='qponmlk' AND f GLOB 'qrstu*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR b=209 > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > OR b=146 > ]]) > end, { > @@ -14017,7 +14017,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='edcbazy' AND f GLOB 'wxyza*') > + WHERE (g='edcbazy' AND f LIKE 'wxyza%') > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR b=113 > OR ((a BETWEEN 40 AND 42) AND a!=41) > @@ -14035,7 +14035,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='edcbazy' AND f GLOB 'wxyza*') > + WHERE (g='edcbazy' AND f LIKE 'wxyza%') > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR b=113 > OR ((a BETWEEN 40 AND 42) AND a!=41) > @@ -14081,7 +14081,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='rqponml' AND f GLOB 'ijklm*') > + WHERE (g='rqponml' AND f LIKE 'ijklm%') > OR a=99 > OR a=100 > OR b=429 > @@ -14104,7 +14104,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='rqponml' AND f GLOB 'ijklm*') > + WHERE (g='rqponml' AND f LIKE 'ijklm%') > OR a=99 > OR a=100 > OR b=429 > @@ -14164,9 +14164,9 @@ test:do_test( > OR c=6006 > OR a=18 > OR c=24024 > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR c=19019 > OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) > OR ((a BETWEEN 44 AND 46) AND a!=45) > @@ -14187,9 +14187,9 @@ test:do_test( > OR c=6006 > OR a=18 > OR c=24024 > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR c=19019 > OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) > OR ((a BETWEEN 44 AND 46) AND a!=45) > @@ -14243,7 +14243,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=99 > OR ((a BETWEEN 85 AND 87) AND a!=86) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > ]]) > end, { > -- <where7-2.379.1> > @@ -14258,7 +14258,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=99 > OR ((a BETWEEN 85 AND 87) AND a!=86) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > ]]) > end, { > -- <where7-2.379.2> > @@ -14271,7 +14271,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?hijk*' AND f GLOB 'ghij*') > + WHERE (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR ((a BETWEEN 79 AND 81) AND a!=80) > OR b=715 > OR ((a BETWEEN 23 AND 25) AND a!=24) > @@ -14287,7 +14287,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?hijk*' AND f GLOB 'ghij*') > + WHERE (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR ((a BETWEEN 79 AND 81) AND a!=80) > OR b=715 > OR ((a BETWEEN 23 AND 25) AND a!=24) > @@ -14304,7 +14304,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > OR a=46 > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > ]]) > @@ -14320,7 +14320,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > OR a=46 > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > ]]) > @@ -14335,7 +14335,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'defgh*') > + WHERE (g='ihgfedc' AND f LIKE 'defgh%') > OR ((a BETWEEN 97 AND 99) AND a!=98) > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > OR b=1056 > @@ -14352,7 +14352,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'defgh*') > + WHERE (g='ihgfedc' AND f LIKE 'defgh%') > OR ((a BETWEEN 97 AND 99) AND a!=98) > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > OR b=1056 > @@ -14453,7 +14453,7 @@ test:do_test( > OR ((a BETWEEN 39 AND 41) AND a!=40) > OR b=242 > OR ((a BETWEEN 32 AND 34) AND a!=33) > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=300 > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > @@ -14476,7 +14476,7 @@ test:do_test( > OR ((a BETWEEN 39 AND 41) AND a!=40) > OR b=242 > OR ((a BETWEEN 32 AND 34) AND a!=33) > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=300 > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > @@ -14502,7 +14502,7 @@ test:do_test( > OR b=1048 > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR c=19019 > ]]) > end, { > @@ -14525,7 +14525,7 @@ test:do_test( > OR b=1048 > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR c=19019 > ]]) > end, { > @@ -14608,10 +14608,10 @@ test:do_test( > OR a=58 > OR b=333 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR b=572 > OR ((a BETWEEN 50 AND 52) AND a!=51) > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > ]]) > end, { > -- <where7-2.389.1> > @@ -14631,10 +14631,10 @@ test:do_test( > OR a=58 > OR b=333 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR b=572 > OR ((a BETWEEN 50 AND 52) AND a!=51) > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > ]]) > end, { > -- <where7-2.389.2> > @@ -14649,7 +14649,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1034 > OR f='lmnopqrst' > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.390.1> > @@ -14664,7 +14664,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1034 > OR f='lmnopqrst' > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.390.2> > @@ -14679,7 +14679,7 @@ test:do_test( > SELECT a FROM t2 > WHERE c=15015 > OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR b=58 > OR b=674 > OR b=979 > @@ -14697,7 +14697,7 @@ test:do_test( > SELECT a FROM t3 > WHERE c=15015 > OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR b=58 > OR b=674 > OR b=979 > @@ -14747,9 +14747,9 @@ test:do_test( > OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) > OR b=630 > OR a=19 > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR f='wxyzabcde' > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR b=377 > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > OR a=77 > @@ -14770,9 +14770,9 @@ test:do_test( > OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) > OR b=630 > OR a=19 > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR f='wxyzabcde' > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR b=377 > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > OR a=77 > @@ -14818,14 +14818,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=64 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'cdefg*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > OR c=14014 > OR b=586 > OR c=27027 > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.395.1> > @@ -14839,14 +14839,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=64 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'cdefg*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > OR c=14014 > OR b=586 > OR c=27027 > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.395.2> > @@ -14903,11 +14903,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR a=23 > OR b=737 > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > @@ -14926,11 +14926,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR a=23 > OR b=737 > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > @@ -14983,10 +14983,10 @@ test:do_test( > SELECT a FROM t2 > WHERE a=18 > OR b=1059 > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=795 > ]]) > end, { > @@ -15002,10 +15002,10 @@ test:do_test( > SELECT a FROM t3 > WHERE a=18 > OR b=1059 > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=795 > ]]) > end, { > @@ -15019,7 +15019,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?mnop*' AND f GLOB 'lmno*') > + WHERE (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR a=93 > OR a=11 > OR f='nopqrstuv' > @@ -15039,7 +15039,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?mnop*' AND f GLOB 'lmno*') > + WHERE (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR a=93 > OR a=11 > OR f='nopqrstuv' > @@ -15062,8 +15062,8 @@ test:do_test( > WHERE b=685 > OR a=33 > OR ((a BETWEEN 40 AND 42) AND a!=41) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR ((a BETWEEN 39 AND 41) AND a!=40) > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR b=715 > @@ -15085,8 +15085,8 @@ test:do_test( > WHERE b=685 > OR a=33 > OR ((a BETWEEN 40 AND 42) AND a!=41) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR ((a BETWEEN 39 AND 41) AND a!=40) > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR b=715 > @@ -15107,7 +15107,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=89 > OR b=1037 > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.402.1> > @@ -15122,7 +15122,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=89 > OR b=1037 > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.402.2> > @@ -15179,9 +15179,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (g='rqponml' AND f GLOB 'jklmn*') > - OR (g='lkjihgf' AND f GLOB 'mnopq*') > + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (g='rqponml' AND f LIKE 'jklmn%') > + OR (g='lkjihgf' AND f LIKE 'mnopq%') > OR b=726 > OR ((a BETWEEN 73 AND 75) AND a!=74) > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > @@ -15201,9 +15201,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (g='rqponml' AND f GLOB 'jklmn*') > - OR (g='lkjihgf' AND f GLOB 'mnopq*') > + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (g='rqponml' AND f LIKE 'jklmn%') > + OR (g='lkjihgf' AND f LIKE 'mnopq%') > OR b=726 > OR ((a BETWEEN 73 AND 75) AND a!=74) > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > @@ -15223,7 +15223,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=924 > OR f='lmnopqrst' > OR b=1048 > @@ -15239,7 +15239,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=924 > OR f='lmnopqrst' > OR b=1048 > @@ -15256,7 +15256,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=198 > OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) > OR ((a BETWEEN 12 AND 14) AND a!=13) > @@ -15276,7 +15276,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=198 > OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) > OR ((a BETWEEN 12 AND 14) AND a!=13) > @@ -15341,7 +15341,7 @@ test:do_test( > OR b=630 > OR a=55 > OR c=26026 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > ]]) > end, { > @@ -15359,7 +15359,7 @@ test:do_test( > OR b=630 > OR a=55 > OR c=26026 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > ]]) > end, { > @@ -15375,12 +15375,12 @@ test:do_test( > SELECT a FROM t2 > WHERE f='uvwxyzabc' > OR f='xyzabcdef' > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) > OR ((a BETWEEN 51 AND 53) AND a!=52) > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > OR b=69 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > ]]) > end, { > -- <where7-2.409.1> > @@ -15395,12 +15395,12 @@ test:do_test( > SELECT a FROM t3 > WHERE f='uvwxyzabc' > OR f='xyzabcdef' > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) > OR ((a BETWEEN 51 AND 53) AND a!=52) > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > OR b=69 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > ]]) > end, { > -- <where7-2.409.2> > @@ -15417,7 +15417,7 @@ test:do_test( > OR b=454 > OR ((a BETWEEN 92 AND 94) AND a!=93) > OR b=179 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR f='qrstuvwxy' > ]]) > end, { > @@ -15435,7 +15435,7 @@ test:do_test( > OR b=454 > OR ((a BETWEEN 92 AND 94) AND a!=93) > OR b=179 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR f='qrstuvwxy' > ]]) > end, { > @@ -15452,7 +15452,7 @@ test:do_test( > WHERE ((a BETWEEN 6 AND 8) AND a!=7) > OR b=619 > OR a=20 > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR b=946 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR a=64 > @@ -15474,7 +15474,7 @@ test:do_test( > WHERE ((a BETWEEN 6 AND 8) AND a!=7) > OR b=619 > OR a=20 > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR b=946 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > OR a=64 > @@ -15527,8 +15527,8 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR a=32 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR c=32032 > ]]) > end, { > @@ -15544,8 +15544,8 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR a=32 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR c=32032 > ]]) > end, { > @@ -15654,7 +15654,7 @@ test:do_test( > WHERE (d>=32.0 AND d<33.0 AND d IS NOT NULL) > OR a=27 > OR ((a BETWEEN 55 AND 57) AND a!=56) > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.417.1> > @@ -15670,7 +15670,7 @@ test:do_test( > WHERE (d>=32.0 AND d<33.0 AND d IS NOT NULL) > OR a=27 > OR ((a BETWEEN 55 AND 57) AND a!=56) > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.417.2> > @@ -15720,7 +15720,7 @@ test:do_test( > OR b=561 > OR b=352 > OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR a=95 > ]]) > end, { > @@ -15743,7 +15743,7 @@ test:do_test( > OR b=561 > OR b=352 > OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR a=95 > ]]) > end, { > @@ -15761,7 +15761,7 @@ test:do_test( > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR f='ghijklmno' > OR b=619 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR b=476 > OR a=83 > @@ -15782,7 +15782,7 @@ test:do_test( > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR f='ghijklmno' > OR b=619 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR b=476 > OR a=83 > @@ -15868,8 +15868,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1059 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (g='rqponml' AND f GLOB 'jklmn*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=47 > OR b=660 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -15887,8 +15887,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1059 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (g='rqponml' AND f GLOB 'jklmn*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=47 > OR b=660 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -15936,13 +15936,13 @@ test:do_test( > WHERE b=597 > OR f='lmnopqrst' > OR a=24 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR ((a BETWEEN 31 AND 33) AND a!=32) > OR b=1023 > OR a=53 > OR a=78 > OR f='efghijklm' > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > ]]) > end, { > @@ -15959,13 +15959,13 @@ test:do_test( > WHERE b=597 > OR f='lmnopqrst' > OR a=24 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR ((a BETWEEN 31 AND 33) AND a!=32) > OR b=1023 > OR a=53 > OR a=78 > OR f='efghijklm' > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > ]]) > end, { > @@ -16012,11 +16012,11 @@ test:do_test( > WHERE f='tuvwxyzab' > OR b=388 > OR ((a BETWEEN 84 AND 86) AND a!=85) > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR b=957 > OR b=663 > OR b=847 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.427.1> > @@ -16032,11 +16032,11 @@ test:do_test( > WHERE f='tuvwxyzab' > OR b=388 > OR ((a BETWEEN 84 AND 86) AND a!=85) > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR b=957 > OR b=663 > OR b=847 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.427.2> > @@ -16051,7 +16051,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=81.0 AND d<82.0 AND d IS NOT NULL) > OR a=56 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.428.1> > @@ -16066,7 +16066,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=81.0 AND d<82.0 AND d IS NOT NULL) > OR a=56 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > ]]) > end, { > -- <where7-2.428.2> > @@ -16082,7 +16082,7 @@ test:do_test( > WHERE c>=34035 > OR b=168 > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > ]]) > end, { > -- <where7-2.429.1> > @@ -16098,7 +16098,7 @@ test:do_test( > WHERE c>=34035 > OR b=168 > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > ]]) > end, { > -- <where7-2.429.2> > @@ -16144,9 +16144,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=29.0 AND d<30.0 AND d IS NOT NULL) > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR f='rstuvwxyz' > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.431.1> > @@ -16160,9 +16160,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=29.0 AND d<30.0 AND d IS NOT NULL) > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR f='rstuvwxyz' > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.431.2> > @@ -16246,7 +16246,7 @@ test:do_test( > WHERE b=113 > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR b=113 > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR ((a BETWEEN 62 AND 64) AND a!=63) > OR c=6006 > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > @@ -16267,7 +16267,7 @@ test:do_test( > WHERE b=113 > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR b=113 > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR ((a BETWEEN 62 AND 64) AND a!=63) > OR c=6006 > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > @@ -16285,7 +16285,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR c=22022 > OR ((a BETWEEN 79 AND 81) AND a!=80) > @@ -16303,7 +16303,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR c=22022 > OR ((a BETWEEN 79 AND 81) AND a!=80) > @@ -16322,7 +16322,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 74 AND 76) AND a!=75) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=47 > OR ((a BETWEEN 44 AND 46) AND a!=45) > OR a=92 > @@ -16331,7 +16331,7 @@ test:do_test( > OR c=7007 > OR a=93 > OR ((a BETWEEN 93 AND 95) AND a!=94) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.436.1> > @@ -16345,7 +16345,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 74 AND 76) AND a!=75) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=47 > OR ((a BETWEEN 44 AND 46) AND a!=45) > OR a=92 > @@ -16354,7 +16354,7 @@ test:do_test( > OR c=7007 > OR a=93 > OR ((a BETWEEN 93 AND 95) AND a!=94) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.436.2> > @@ -16367,11 +16367,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR a=13 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR c=29029 > OR b=311 > OR b=366 > @@ -16389,11 +16389,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR a=13 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR c=29029 > OR b=311 > OR b=366 > @@ -16453,12 +16453,12 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=82.0 AND d<83.0 AND d IS NOT NULL) > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR a=41 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR b=913 > ]]) > end, { > @@ -16474,12 +16474,12 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=82.0 AND d<83.0 AND d IS NOT NULL) > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR a=41 > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR b=913 > ]]) > end, { > @@ -16593,12 +16593,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > OR b=102 > OR b=212 > OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) > OR b=487 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.443.1> > @@ -16611,12 +16611,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > OR b=102 > OR b=212 > OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) > OR b=487 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.443.2> > @@ -16661,7 +16661,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=872 > OR ((a BETWEEN 58 AND 60) AND a!=59) > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR b=957 > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > OR a=67 > @@ -16680,7 +16680,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=872 > OR ((a BETWEEN 58 AND 60) AND a!=59) > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR b=957 > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > OR a=67 > @@ -16700,12 +16700,12 @@ test:do_test( > WHERE b=66 > OR b=102 > OR b=396 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR ((a BETWEEN 7 AND 9) AND a!=8) > OR b=759 > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR f='ghijklmno' > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR ((a BETWEEN 90 AND 92) AND a!=91) > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > ]]) > @@ -16723,12 +16723,12 @@ test:do_test( > WHERE b=66 > OR b=102 > OR b=396 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR ((a BETWEEN 7 AND 9) AND a!=8) > OR b=759 > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR f='ghijklmno' > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR ((a BETWEEN 90 AND 92) AND a!=91) > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > ]]) > @@ -16744,8 +16744,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 69 AND 71) AND a!=70) > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR a=72 > OR b=1100 > OR b=102 > @@ -16763,8 +16763,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 69 AND 71) AND a!=70) > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR a=72 > OR b=1100 > OR b=102 > @@ -16878,7 +16878,7 @@ test:do_test( > WHERE b=47 > OR a=91 > OR d>1e10 > - OR (g='srqponm' AND f GLOB 'cdefg*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.451.1> > @@ -16894,7 +16894,7 @@ test:do_test( > WHERE b=47 > OR a=91 > OR d>1e10 > - OR (g='srqponm' AND f GLOB 'cdefg*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.451.2> > @@ -16975,13 +16975,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > OR b=619 > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR c=11011 > OR b=550 > OR b=1059 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > @@ -16998,13 +16998,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > OR b=619 > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR c=11011 > OR b=550 > OR b=1059 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > @@ -17021,16 +17021,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='edcbazy' AND f GLOB 'vwxyz*') > + WHERE (g='edcbazy' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR a=78 > OR a=27 > OR b=792 > OR b=946 > OR c=22022 > OR a=23 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=388 > ]]) > end, { > @@ -17044,16 +17044,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='edcbazy' AND f GLOB 'vwxyz*') > + WHERE (g='edcbazy' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 59 AND 61) AND a!=60) > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR a=78 > OR a=27 > OR b=792 > OR b=946 > OR c=22022 > OR a=23 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=388 > ]]) > end, { > @@ -17070,8 +17070,8 @@ test:do_test( > WHERE c=32032 > OR f IS NULL > OR ((a BETWEEN 37 AND 39) AND a!=38) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR b=825 > ]]) > end, { > @@ -17088,8 +17088,8 @@ test:do_test( > WHERE c=32032 > OR f IS NULL > OR ((a BETWEEN 37 AND 39) AND a!=38) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR b=825 > ]]) > end, { > @@ -17104,7 +17104,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=84.0 AND d<85.0 AND d IS NOT NULL) > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR b=1078 > @@ -17126,7 +17126,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=84.0 AND d<85.0 AND d IS NOT NULL) > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR b=1078 > @@ -17147,11 +17147,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') > + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') > OR c=25025 > OR b=550 > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.458.1> > @@ -17164,11 +17164,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') > + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') > OR c=25025 > OR b=550 > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.458.2> > @@ -17183,7 +17183,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=432 > OR f='opqrstuvw' > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.459.1> > @@ -17198,7 +17198,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=432 > OR f='opqrstuvw' > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.459.2> > @@ -17213,7 +17213,7 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 14 AND 16) AND a!=15) > OR b=847 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR b=583 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > @@ -17234,7 +17234,7 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 14 AND 16) AND a!=15) > OR b=847 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR b=583 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > @@ -17299,7 +17299,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=586 > OR d<0.0 > OR c=9009 > @@ -17315,7 +17315,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=586 > OR d<0.0 > OR c=9009 > @@ -17378,7 +17378,7 @@ test:do_test( > WHERE ((a BETWEEN 44 AND 46) AND a!=45) > OR a=53 > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=594 > OR b=80 > OR ((a BETWEEN 18 AND 20) AND a!=19) > @@ -17399,7 +17399,7 @@ test:do_test( > WHERE ((a BETWEEN 44 AND 46) AND a!=45) > OR a=53 > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=594 > OR b=80 > OR ((a BETWEEN 18 AND 20) AND a!=19) > @@ -17482,9 +17482,9 @@ test:do_test( > WHERE a=59 > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR f='wxyzabcde' > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > OR a=70 > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR ((a BETWEEN 14 AND 16) AND a!=15) > @@ -17503,9 +17503,9 @@ test:do_test( > WHERE a=59 > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR f='wxyzabcde' > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > OR a=70 > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR ((a BETWEEN 14 AND 16) AND a!=15) > @@ -17522,7 +17522,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=69 > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.468.1> > @@ -17536,7 +17536,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=69 > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.468.2> > @@ -17552,8 +17552,8 @@ test:do_test( > WHERE a=41 > OR a=43 > OR a=92 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.469.1> > @@ -17569,8 +17569,8 @@ test:do_test( > WHERE a=41 > OR a=43 > OR a=92 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.469.2> > @@ -17617,7 +17617,7 @@ test:do_test( > SELECT a FROM t2 > WHERE f='fghijklmn' > OR f='fghijklmn' > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR b=465 > OR b=586 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > @@ -17639,7 +17639,7 @@ test:do_test( > SELECT a FROM t3 > WHERE f='fghijklmn' > OR f='fghijklmn' > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR b=465 > OR b=586 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > @@ -17660,10 +17660,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=34.0 AND d<35.0 AND d IS NOT NULL) > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR b=814 > OR a=20 > OR 1000000<b > @@ -17681,10 +17681,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=34.0 AND d<35.0 AND d IS NOT NULL) > - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR b=814 > OR a=20 > OR 1000000<b > @@ -17701,14 +17701,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > OR c=1001 > OR b=484 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > OR c<=10 > OR a=92 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR ((a BETWEEN 0 AND 2) AND a!=1) > OR b=1026 > ]]) > @@ -17723,14 +17723,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') > + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > OR c=1001 > OR b=484 > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > OR c<=10 > OR a=92 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR ((a BETWEEN 0 AND 2) AND a!=1) > OR b=1026 > ]]) > @@ -17746,13 +17746,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=54 > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR b=993 > OR c=22022 > OR a=68 > OR ((a BETWEEN 99 AND 101) AND a!=100) > OR a=62 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > OR b=1015 > ]]) > end, { > @@ -17767,13 +17767,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=54 > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR b=993 > OR c=22022 > OR a=68 > OR ((a BETWEEN 99 AND 101) AND a!=100) > OR a=62 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > OR b=1015 > ]]) > end, { > @@ -17789,7 +17789,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=319 > OR a=50 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > @@ -17808,7 +17808,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=319 > OR a=50 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > @@ -17889,14 +17889,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > OR b=407 > OR b=454 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > OR b=627 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > ]]) > end, { > -- <where7-2.478.1> > @@ -17909,14 +17909,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > OR b=407 > OR b=454 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > OR b=627 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > ]]) > end, { > -- <where7-2.478.2> > @@ -17933,7 +17933,7 @@ test:do_test( > OR c=34034 > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR ((a BETWEEN 18 AND 20) AND a!=19) > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR a=67 > ]]) > end, { > @@ -17951,7 +17951,7 @@ test:do_test( > OR c=34034 > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR ((a BETWEEN 18 AND 20) AND a!=19) > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR a=67 > ]]) > end, { > @@ -17970,7 +17970,7 @@ test:do_test( > OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > ]]) > end, { > -- <where7-2.480.1> > @@ -17988,7 +17988,7 @@ test:do_test( > OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > ]]) > end, { > -- <where7-2.480.2> > @@ -18006,12 +18006,12 @@ test:do_test( > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > OR b=201 > OR a=99 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 36 AND 38) AND a!=37) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > OR b=946 > OR b=993 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.481.1> > @@ -18029,12 +18029,12 @@ test:do_test( > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > OR b=201 > OR a=99 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 36 AND 38) AND a!=37) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > OR b=946 > OR b=993 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.481.2> > @@ -18048,7 +18048,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=806 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR b=916 > OR b<0 > @@ -18070,7 +18070,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=806 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR b=916 > OR b<0 > @@ -18093,11 +18093,11 @@ test:do_test( > SELECT a FROM t2 > WHERE b=836 > OR d>1e10 > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR f='pqrstuvwx' > OR ((a BETWEEN 3 AND 5) AND a!=4) > OR f='abcdefghi' > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR a=33 > OR ((a BETWEEN 19 AND 21) AND a!=20) > OR ((a BETWEEN 88 AND 90) AND a!=89) > @@ -18116,11 +18116,11 @@ test:do_test( > SELECT a FROM t3 > WHERE b=836 > OR d>1e10 > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR f='pqrstuvwx' > OR ((a BETWEEN 3 AND 5) AND a!=4) > OR f='abcdefghi' > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR a=33 > OR ((a BETWEEN 19 AND 21) AND a!=20) > OR ((a BETWEEN 88 AND 90) AND a!=89) > @@ -18140,10 +18140,10 @@ test:do_test( > WHERE a=48 > OR a=92 > OR a=1 > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR b=905 > OR ((a BETWEEN 51 AND 53) AND a!=52) > ]]) > @@ -18161,10 +18161,10 @@ test:do_test( > WHERE a=48 > OR a=92 > OR a=1 > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR b=905 > OR ((a BETWEEN 51 AND 53) AND a!=52) > ]]) > @@ -18215,12 +18215,12 @@ test:do_test( > SELECT a FROM t2 > WHERE b=740 > OR b=564 > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR a=11 > OR ((a BETWEEN 44 AND 46) AND a!=45) > OR b=322 > OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR b=902 > OR c>=34035 > ]]) > @@ -18237,12 +18237,12 @@ test:do_test( > SELECT a FROM t3 > WHERE b=740 > OR b=564 > - OR (g='onmlkji' AND f GLOB 'zabcd*') > + OR (g='onmlkji' AND f LIKE 'zabcd%') > OR a=11 > OR ((a BETWEEN 44 AND 46) AND a!=45) > OR b=322 > OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR b=902 > OR c>=34035 > ]]) > @@ -18264,7 +18264,7 @@ test:do_test( > OR a=48 > OR b=927 > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR f='abcdefghi' > OR b=91 > OR b=55 > @@ -18287,7 +18287,7 @@ test:do_test( > OR a=48 > OR b=927 > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > OR f='abcdefghi' > OR b=91 > OR b=55 > @@ -18303,7 +18303,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='srqponm' AND f GLOB 'efghi*') > + WHERE (g='srqponm' AND f LIKE 'efghi%') > OR ((a BETWEEN 88 AND 90) AND a!=89) > OR a=20 > OR b=11 > @@ -18319,7 +18319,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='srqponm' AND f GLOB 'efghi*') > + WHERE (g='srqponm' AND f LIKE 'efghi%') > OR ((a BETWEEN 88 AND 90) AND a!=89) > OR a=20 > OR b=11 > @@ -18338,7 +18338,7 @@ test:do_test( > WHERE (d>=27.0 AND d<28.0 AND d IS NOT NULL) > OR b=55 > OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR a=50 > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > @@ -18358,7 +18358,7 @@ test:do_test( > WHERE (d>=27.0 AND d<28.0 AND d IS NOT NULL) > OR b=55 > OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR a=50 > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > @@ -18375,8 +18375,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='rqponml' AND f GLOB 'ijklm*') > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + WHERE (g='rqponml' AND f LIKE 'ijklm%') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > ]]) > end, { > -- <where7-2.490.1> > @@ -18389,8 +18389,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='rqponml' AND f GLOB 'ijklm*') > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + WHERE (g='rqponml' AND f LIKE 'ijklm%') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > ]]) > end, { > -- <where7-2.490.2> > @@ -18405,7 +18405,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=704 > OR b=924 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR b=113 > ]]) > end, { > @@ -18421,7 +18421,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=704 > OR b=924 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR b=113 > ]]) > end, { > @@ -18503,11 +18503,11 @@ test:do_test( > OR b=726 > OR f='abcdefghi' > OR b=179 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=539 > OR b=66 > OR ((a BETWEEN 86 AND 88) AND a!=87) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.494.1> > @@ -18524,11 +18524,11 @@ test:do_test( > OR b=726 > OR f='abcdefghi' > OR b=179 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=539 > OR b=66 > OR ((a BETWEEN 86 AND 88) AND a!=87) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.494.2> > @@ -18573,11 +18573,11 @@ test:do_test( > OR b=682 > OR b=443 > OR b=836 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > OR ((a BETWEEN 51 AND 53) AND a!=52) > OR b=110 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > ]]) > end, { > -- <where7-2.496.1> > @@ -18594,11 +18594,11 @@ test:do_test( > OR b=682 > OR b=443 > OR b=836 > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > OR ((a BETWEEN 51 AND 53) AND a!=52) > OR b=110 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > ]]) > end, { > -- <where7-2.496.2> > @@ -18611,15 +18611,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?zabc*' AND f GLOB 'yzab*') > + WHERE (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR b=462 > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR a=22 > OR b=594 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > ]]) > end, { > -- <where7-2.497.1> > @@ -18632,15 +18632,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?zabc*' AND f GLOB 'yzab*') > + WHERE (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR b=462 > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR a=22 > OR b=594 > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > ]]) > end, { > -- <where7-2.497.2> > @@ -18653,11 +18653,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') > + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR f='vwxyzabcd' > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR a=37 > OR a=50 > ]]) > @@ -18672,11 +18672,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') > + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR f='vwxyzabcd' > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR a=37 > OR a=50 > ]]) > @@ -18693,10 +18693,10 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 83 AND 85) AND a!=84) > OR b=784 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR b=825 > OR a=80 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR b=531 > OR a=100 > @@ -18714,10 +18714,10 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 83 AND 85) AND a!=84) > OR b=784 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR b=825 > OR a=80 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR b=531 > OR a=100 > @@ -18733,7 +18733,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=220 > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > ]]) > @@ -18748,7 +18748,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') > + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') > OR b=220 > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > ]]) > @@ -18797,9 +18797,9 @@ test:do_test( > OR b=894 > OR c=28028 > OR b=905 > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR b=1037 > ]]) > end, { > @@ -18817,9 +18817,9 @@ test:do_test( > OR b=894 > OR c=28028 > OR b=905 > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR b=1037 > ]]) > end, { > @@ -18863,9 +18863,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') > + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=861 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.504.1> > @@ -18878,9 +18878,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') > + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=861 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.504.2> > @@ -18894,13 +18894,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=704 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR b=25 > - OR (g='jihgfed' AND f GLOB 'zabcd*') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > OR b=487 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR ((a BETWEEN 77 AND 79) AND a!=78) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) > @@ -18917,13 +18917,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=704 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR b=25 > - OR (g='jihgfed' AND f GLOB 'zabcd*') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > OR b=487 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR ((a BETWEEN 77 AND 79) AND a!=78) > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) > @@ -18940,16 +18940,16 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=19 > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR b=674 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR b=355 > OR ((a BETWEEN 72 AND 74) AND a!=73) > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR c=28028 > OR b=649 > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > + OR (g='srqponm' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.506.1> > @@ -18963,16 +18963,16 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=19 > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR b=674 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR b=355 > OR ((a BETWEEN 72 AND 74) AND a!=73) > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR c=28028 > OR b=649 > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > + OR (g='srqponm' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.506.2> > @@ -19020,7 +19020,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=135 > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 39 AND 41) AND a!=40) > ]]) > end, { > @@ -19035,7 +19035,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=135 > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 39 AND 41) AND a!=40) > ]]) > end, { > @@ -19049,8 +19049,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.509.1> > @@ -19063,8 +19063,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.509.2> > @@ -19077,7 +19077,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'wxyza*') > + WHERE (g='jihgfed' AND f LIKE 'wxyza%') > OR f='ghijklmno' > ]]) > end, { > @@ -19091,7 +19091,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'wxyza*') > + WHERE (g='jihgfed' AND f LIKE 'wxyza%') > OR f='ghijklmno' > ]]) > end, { > @@ -19187,7 +19187,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') > + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR b=99 > OR a=54 > @@ -19203,7 +19203,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') > + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR b=99 > OR a=54 > @@ -19220,7 +19220,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=300 > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > OR b=319 > OR f='fghijklmn' > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > @@ -19238,7 +19238,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=300 > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > OR b=319 > OR f='fghijklmn' > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > @@ -19263,7 +19263,7 @@ test:do_test( > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > OR b=748 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.515.1> > @@ -19284,7 +19284,7 @@ test:do_test( > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > OR b=748 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.515.2> > @@ -19333,10 +19333,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'wxyza*') > + WHERE (g='jihgfed' AND f LIKE 'wxyza%') > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > OR b=110 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR c=26026 > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > OR b=850 > @@ -19353,10 +19353,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'wxyza*') > + WHERE (g='jihgfed' AND f LIKE 'wxyza%') > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > OR b=110 > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR c=26026 > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > OR b=850 > @@ -19375,9 +19375,9 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 74 AND 76) AND a!=75) > OR ((a BETWEEN 1 AND 3) AND a!=2) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > OR b=135 > OR a=28 > OR ((a BETWEEN 1 AND 3) AND a!=2) > @@ -19396,9 +19396,9 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 74 AND 76) AND a!=75) > OR ((a BETWEEN 1 AND 3) AND a!=2) > - OR (g='jihgfed' AND f GLOB 'wxyza*') > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > - OR (g='mlkjihg' AND f GLOB 'klmno*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > + OR (g='mlkjihg' AND f LIKE 'klmno%') > OR b=135 > OR a=28 > OR ((a BETWEEN 1 AND 3) AND a!=2) > @@ -19485,9 +19485,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR a=52 > ]]) > end, { > @@ -19501,9 +19501,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR a=52 > ]]) > end, { > @@ -19517,7 +19517,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'abcde*') > + WHERE (g='ihgfedc' AND f LIKE 'abcde%') > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR a=86 > OR c=33033 > @@ -19535,7 +19535,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'abcde*') > + WHERE (g='ihgfedc' AND f LIKE 'abcde%') > OR ((a BETWEEN 2 AND 4) AND a!=3) > OR a=86 > OR c=33033 > @@ -19557,7 +19557,7 @@ test:do_test( > OR b=517 > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR ((a BETWEEN 67 AND 69) AND a!=68) > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR f='defghijkl' > OR b=707 > OR c>=34035 > @@ -19580,7 +19580,7 @@ test:do_test( > OR b=517 > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR ((a BETWEEN 67 AND 69) AND a!=68) > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR f='defghijkl' > OR b=707 > OR c>=34035 > @@ -19602,7 +19602,7 @@ test:do_test( > WHERE (d>=96.0 AND d<97.0 AND d IS NOT NULL) > OR b=209 > OR b=399 > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.524.1> > @@ -19618,7 +19618,7 @@ test:do_test( > WHERE (d>=96.0 AND d<97.0 AND d IS NOT NULL) > OR b=209 > OR b=399 > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.524.2> > @@ -19632,11 +19632,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 18 AND 20) AND a!=19) > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=597 > OR a=95 > - OR (g='nmlkjih' AND f GLOB 'defgh*') > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR b=432 > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > ]]) > @@ -19652,11 +19652,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 18 AND 20) AND a!=19) > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=597 > OR a=95 > - OR (g='nmlkjih' AND f GLOB 'defgh*') > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR b=432 > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > ]]) > @@ -19680,7 +19680,7 @@ test:do_test( > OR c=21021 > OR b=330 > OR b=231 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.526.1> > @@ -19702,7 +19702,7 @@ test:do_test( > OR c=21021 > OR b=330 > OR b=231 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > ]]) > end, { > -- <where7-2.526.2> > @@ -19715,7 +19715,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'fghij*') > + WHERE (g='hgfedcb' AND f LIKE 'fghij%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR f IS NULL > ]]) > @@ -19730,7 +19730,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'fghij*') > + WHERE (g='hgfedcb' AND f LIKE 'fghij%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR f IS NULL > ]]) > @@ -19746,9 +19746,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 99 AND 101) AND a!=100) > - OR (g='fedcbaz' AND f GLOB 'pqrst*') > + OR (g='fedcbaz' AND f LIKE 'pqrst%') > OR 1000000<b > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR b=990 > ]]) > end, { > @@ -19763,9 +19763,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 99 AND 101) AND a!=100) > - OR (g='fedcbaz' AND f GLOB 'pqrst*') > + OR (g='fedcbaz' AND f LIKE 'pqrst%') > OR 1000000<b > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR b=990 > ]]) > end, { > @@ -19781,7 +19781,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=165 > OR a=69 > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.529.1> > @@ -19796,7 +19796,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=165 > OR a=69 > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.529.2> > @@ -19809,13 +19809,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'defgh*') > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='nmlkjih' AND f LIKE 'defgh%') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=784 > OR b=583 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR b=814 > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR b=619 > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > ]]) > @@ -19830,13 +19830,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'defgh*') > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='nmlkjih' AND f LIKE 'defgh%') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=784 > OR b=583 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR b=814 > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR b=619 > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > ]]) > @@ -19853,7 +19853,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=86 > OR b=484 > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR b=418 > OR b=509 > OR a=42 > @@ -19876,7 +19876,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=86 > OR b=484 > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR b=418 > OR b=509 > OR a=42 > @@ -20007,7 +20007,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') > + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR c=5005 > OR ((a BETWEEN 50 AND 52) AND a!=51) > OR a=93 > @@ -20015,7 +20015,7 @@ test:do_test( > OR b=619 > OR b=234 > OR b=55 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > ]]) > end, { > @@ -20029,7 +20029,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') > + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR c=5005 > OR ((a BETWEEN 50 AND 52) AND a!=51) > OR a=93 > @@ -20037,7 +20037,7 @@ test:do_test( > OR b=619 > OR b=234 > OR b=55 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > ]]) > end, { > @@ -20053,11 +20053,11 @@ test:do_test( > SELECT a FROM t2 > WHERE b=355 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=806 > OR b=462 > OR b=531 > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > OR f='mnopqrstu' > ]]) > end, { > @@ -20073,11 +20073,11 @@ test:do_test( > SELECT a FROM t3 > WHERE b=355 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=806 > OR b=462 > OR b=531 > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > OR f='mnopqrstu' > ]]) > end, { > @@ -20093,9 +20093,9 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 60 AND 62) AND a!=61) > OR f='pqrstuvwx' > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > OR b=495 > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > OR a=75 > ]]) > end, { > @@ -20111,9 +20111,9 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 60 AND 62) AND a!=61) > OR f='pqrstuvwx' > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > OR b=495 > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > OR a=75 > ]]) > end, { > @@ -20127,8 +20127,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'efghi*') > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + WHERE (g='xwvutsr' AND f LIKE 'efghi%') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=748 > OR b=913 > OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) > @@ -20145,8 +20145,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'efghi*') > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + WHERE (g='xwvutsr' AND f LIKE 'efghi%') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=748 > OR b=913 > OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) > @@ -20167,7 +20167,7 @@ test:do_test( > OR b=902 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR b=168 > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR a=50 > OR f='uvwxyzabc' > OR b=836 > @@ -20189,7 +20189,7 @@ test:do_test( > OR b=902 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR b=168 > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR a=50 > OR f='uvwxyzabc' > OR b=836 > @@ -20243,13 +20243,13 @@ test:do_test( > SELECT a FROM t2 > WHERE b=814 > OR c=30030 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > OR a=16 > OR b=1048 > OR b=113 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR b=729 > OR a=54 > ]]) > @@ -20266,13 +20266,13 @@ test:do_test( > SELECT a FROM t3 > WHERE b=814 > OR c=30030 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > OR a=16 > OR b=1048 > OR b=113 > OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR b=729 > OR a=54 > ]]) > @@ -20288,15 +20288,15 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=399 > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=814 > OR c=22022 > OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR a=1 > OR b=311 > OR b=121 > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=198 > ]]) > end, { > @@ -20311,15 +20311,15 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=399 > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=814 > OR c=22022 > OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR a=1 > OR b=311 > OR b=121 > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=198 > ]]) > end, { > @@ -20403,7 +20403,7 @@ test:do_test( > OR a=22 > OR b=594 > OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > ]]) > end, { > -- <where7-2.545.1> > @@ -20424,7 +20424,7 @@ test:do_test( > OR a=22 > OR b=594 > OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > ]]) > end, { > -- <where7-2.545.2> > @@ -20443,7 +20443,7 @@ test:do_test( > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > OR ((a BETWEEN 3 AND 5) AND a!=4) > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR f='mnopqrstu' > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > OR b=902 > @@ -20465,7 +20465,7 @@ test:do_test( > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > OR ((a BETWEEN 3 AND 5) AND a!=4) > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR f='mnopqrstu' > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > OR b=902 > @@ -20481,8 +20481,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='onmlkji' AND f GLOB 'zabcd*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + WHERE (g='onmlkji' AND f LIKE 'zabcd%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR a=13 > ]]) > end, { > @@ -20496,8 +20496,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='onmlkji' AND f GLOB 'zabcd*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + WHERE (g='onmlkji' AND f LIKE 'zabcd%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR a=13 > ]]) > end, { > @@ -20511,11 +20511,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='edcbazy' AND f GLOB 'wxyza*') > + WHERE (g='edcbazy' AND f LIKE 'wxyza%') > OR b=410 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=418 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > ]]) > end, { > @@ -20529,11 +20529,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='edcbazy' AND f GLOB 'wxyza*') > + WHERE (g='edcbazy' AND f LIKE 'wxyza%') > OR b=410 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=418 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > ]]) > end, { > @@ -20552,8 +20552,8 @@ test:do_test( > OR a=56 > OR a=46 > OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) > ]]) > end, { > @@ -20572,8 +20572,8 @@ test:do_test( > OR a=56 > OR a=46 > OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) > ]]) > end, { > @@ -20633,7 +20633,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=539 > OR b=418 > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR b=759 > ]]) > end, { > @@ -20649,7 +20649,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=539 > OR b=418 > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR b=759 > ]]) > end, { > @@ -20664,8 +20664,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1001 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR c=34034 > OR a=84 > ]]) > @@ -20681,8 +20681,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1001 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR c=34034 > OR a=84 > ]]) > @@ -20702,7 +20702,7 @@ test:do_test( > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR b=322 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR c=34034 > @@ -20724,7 +20724,7 @@ test:do_test( > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR b=322 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR c=34034 > @@ -20742,12 +20742,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=13013 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=47 > OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=828 > ]]) > end, { > @@ -20762,12 +20762,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=13013 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=47 > OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=828 > ]]) > end, { > @@ -20783,7 +20783,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=451 > OR b=836 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.555.1> > @@ -20798,7 +20798,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=451 > OR b=836 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.555.2> > @@ -20848,7 +20848,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='tuvwxyzab' > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.557.1> > @@ -20862,7 +20862,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='tuvwxyzab' > - OR (g='nmlkjih' AND f GLOB 'efghi*') > + OR (g='nmlkjih' AND f LIKE 'efghi%') > ]]) > end, { > -- <where7-2.557.2> > @@ -20881,7 +20881,7 @@ test:do_test( > OR d<0.0 > OR b=982 > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR ((a BETWEEN 97 AND 99) AND a!=98) > OR e IS NULL > OR c=32032 > @@ -20904,7 +20904,7 @@ test:do_test( > OR d<0.0 > OR b=982 > OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR ((a BETWEEN 97 AND 99) AND a!=98) > OR e IS NULL > OR c=32032 > @@ -20922,9 +20922,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=62 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.559.1> > @@ -20938,9 +20938,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=62 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.559.2> > @@ -20994,8 +20994,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=44 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.561.1> > @@ -21009,8 +21009,8 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=44 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.561.2> > @@ -21026,7 +21026,7 @@ test:do_test( > WHERE b=883 > OR b=311 > OR b=880 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR a=88 > OR b=154 > @@ -21048,7 +21048,7 @@ test:do_test( > WHERE b=883 > OR b=311 > OR b=880 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR a=88 > OR b=154 > @@ -21067,12 +21067,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='onmlkji' AND f GLOB 'xyzab*') > + WHERE (g='onmlkji' AND f LIKE 'xyzab%') > OR a=10 > OR b=190 > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 67 AND 69) AND a!=68) > OR b=385 > OR a=82 > @@ -21090,12 +21090,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='onmlkji' AND f GLOB 'xyzab*') > + WHERE (g='onmlkji' AND f LIKE 'xyzab%') > OR a=10 > OR b=190 > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 67 AND 69) AND a!=68) > OR b=385 > OR a=82 > @@ -21151,7 +21151,7 @@ test:do_test( > OR a=49 > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR c=33033 > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) > OR g IS NULL > OR b=220 > @@ -21174,7 +21174,7 @@ test:do_test( > OR a=49 > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR c=33033 > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) > OR g IS NULL > OR b=220 > @@ -21191,7 +21191,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') > + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=212 > OR b=418 > OR ((a BETWEEN 31 AND 33) AND a!=32) > @@ -21207,7 +21207,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') > + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=212 > OR b=418 > OR ((a BETWEEN 31 AND 33) AND a!=32) > @@ -21283,8 +21283,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > ]]) > end, { > -- <where7-2.569.1> > @@ -21297,8 +21297,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > ]]) > end, { > -- <where7-2.569.2> > @@ -21356,7 +21356,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=18018 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR b=410 > OR b=858 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > @@ -21373,7 +21373,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=18018 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR b=410 > OR b=858 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > @@ -21389,7 +21389,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') > + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') > OR b=781 > ]]) > end, { > @@ -21403,7 +21403,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') > + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') > OR b=781 > ]]) > end, { > @@ -21420,10 +21420,10 @@ test:do_test( > WHERE b=1070 > OR ((a BETWEEN 50 AND 52) AND a!=51) > OR a=54 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR a=9 > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > ]]) > end, { > @@ -21440,10 +21440,10 @@ test:do_test( > WHERE b=1070 > OR ((a BETWEEN 50 AND 52) AND a!=51) > OR a=54 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR a=9 > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > ]]) > end, { > @@ -21460,8 +21460,8 @@ test:do_test( > WHERE a=55 > OR a=62 > OR a=63 > - OR (g='onmlkji' AND f GLOB 'yzabc*') > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > + OR (g='rqponml' AND f LIKE 'ijklm%') > OR ((a BETWEEN 99 AND 101) AND a!=100) > ]]) > end, { > @@ -21478,8 +21478,8 @@ test:do_test( > WHERE a=55 > OR a=62 > OR a=63 > - OR (g='onmlkji' AND f GLOB 'yzabc*') > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > + OR (g='rqponml' AND f LIKE 'ijklm%') > OR ((a BETWEEN 99 AND 101) AND a!=100) > ]]) > end, { > @@ -21527,9 +21527,9 @@ test:do_test( > SELECT a FROM t2 > WHERE b=553 > OR ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=583 > OR a=56 > ]]) > @@ -21546,9 +21546,9 @@ test:do_test( > SELECT a FROM t3 > WHERE b=553 > OR ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=583 > OR a=56 > ]]) > @@ -21565,7 +21565,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=83 > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR a=1 > OR ((a BETWEEN 17 AND 19) AND a!=18) > OR ((a BETWEEN 49 AND 51) AND a!=50) > @@ -21584,7 +21584,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=83 > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR a=1 > OR ((a BETWEEN 17 AND 19) AND a!=18) > OR ((a BETWEEN 49 AND 51) AND a!=50) > @@ -21635,7 +21635,7 @@ test:do_test( > OR a=92 > OR a=63 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.579.1> > @@ -21652,7 +21652,7 @@ test:do_test( > OR a=92 > OR a=63 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.579.2> > @@ -21668,7 +21668,7 @@ test:do_test( > WHERE b=440 > OR f='vwxyzabcd' > OR b=190 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > OR b=88 > OR b=58 > @@ -21687,7 +21687,7 @@ test:do_test( > WHERE b=440 > OR f='vwxyzabcd' > OR b=190 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) > OR b=88 > OR b=58 > @@ -21707,7 +21707,7 @@ test:do_test( > OR c=24024 > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > OR b=1001 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR d>1e10 > OR b=531 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > @@ -21728,7 +21728,7 @@ test:do_test( > OR c=24024 > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > OR b=1001 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR d>1e10 > OR b=531 > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > @@ -21774,7 +21774,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 71 AND 73) AND a!=72) > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR ((a BETWEEN 91 AND 93) AND a!=92) > @@ -21795,7 +21795,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 71 AND 73) AND a!=72) > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR ((a BETWEEN 91 AND 93) AND a!=92) > @@ -21820,8 +21820,8 @@ test:do_test( > OR b=806 > OR b=605 > OR ((a BETWEEN 23 AND 25) AND a!=24) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > ]]) > end, { > -- <where7-2.584.1> > @@ -21839,8 +21839,8 @@ test:do_test( > OR b=806 > OR b=605 > OR ((a BETWEEN 23 AND 25) AND a!=24) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > ]]) > end, { > -- <where7-2.584.2> > @@ -21856,9 +21856,9 @@ test:do_test( > WHERE ((a BETWEEN 84 AND 86) AND a!=85) > OR b=572 > OR c=10010 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=29 > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > ]]) > end, { > -- <where7-2.585.1> > @@ -21874,9 +21874,9 @@ test:do_test( > WHERE ((a BETWEEN 84 AND 86) AND a!=85) > OR b=572 > OR c=10010 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=29 > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > ]]) > end, { > -- <where7-2.585.2> > @@ -21962,9 +21962,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=5005 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR b=143 > OR a=68 > OR a=77 > @@ -21982,9 +21982,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=5005 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR b=143 > OR a=68 > OR a=77 > @@ -22002,10 +22002,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=5.0 AND d<6.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > OR ((a BETWEEN 76 AND 78) AND a!=77) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=99 > OR ((a BETWEEN 12 AND 14) AND a!=13) > ]]) > @@ -22021,10 +22021,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=5.0 AND d<6.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'ghijk*') > + OR (g='xwvutsr' AND f LIKE 'ghijk%') > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > OR ((a BETWEEN 76 AND 78) AND a!=77) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=99 > OR ((a BETWEEN 12 AND 14) AND a!=13) > ]]) > @@ -22039,12 +22039,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'opqrs*') > + WHERE (g='qponmlk' AND f LIKE 'opqrs%') > OR ((a BETWEEN 88 AND 90) AND a!=89) > OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR b=971 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.590.1> > @@ -22057,12 +22057,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'opqrs*') > + WHERE (g='qponmlk' AND f LIKE 'opqrs%') > OR ((a BETWEEN 88 AND 90) AND a!=89) > OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR b=971 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.590.2> > @@ -22075,12 +22075,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') > + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') > OR b=806 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR b=1015 > OR ((a BETWEEN 68 AND 70) AND a!=69) > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > ]]) > end, { > -- <where7-2.591.1> > @@ -22093,12 +22093,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') > + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') > OR b=806 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR b=1015 > OR ((a BETWEEN 68 AND 70) AND a!=69) > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > ]]) > end, { > -- <where7-2.591.2> > @@ -22119,7 +22119,7 @@ test:do_test( > OR a=26 > OR b=1048 > OR b=561 > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR ((a BETWEEN 55 AND 57) AND a!=56) > OR a=56 > ]]) > @@ -22142,7 +22142,7 @@ test:do_test( > OR a=26 > OR b=1048 > OR b=561 > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR ((a BETWEEN 55 AND 57) AND a!=56) > OR a=56 > ]]) > @@ -22165,7 +22165,7 @@ test:do_test( > OR b=113 > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > OR b=385 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.593.1> > @@ -22186,7 +22186,7 @@ test:do_test( > OR b=113 > OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) > OR b=385 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.593.2> > @@ -22204,7 +22204,7 @@ test:do_test( > OR b=674 > OR b=825 > OR b=704 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR a=76 > @@ -22227,7 +22227,7 @@ test:do_test( > OR b=674 > OR b=825 > OR b=704 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR a=76 > @@ -22246,7 +22246,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=869 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.595.1> > @@ -22260,7 +22260,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=869 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.595.2> > @@ -22303,12 +22303,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='rqponml' AND f GLOB 'hijkl*') > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + WHERE (g='rqponml' AND f LIKE 'hijkl%') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR a=8 > OR a=72 > OR ((a BETWEEN 95 AND 97) AND a!=96) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.597.1> > @@ -22321,12 +22321,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='rqponml' AND f GLOB 'hijkl*') > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + WHERE (g='rqponml' AND f LIKE 'hijkl%') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR a=8 > OR a=72 > OR ((a BETWEEN 95 AND 97) AND a!=96) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.597.2> > @@ -22342,7 +22342,7 @@ test:do_test( > WHERE a=20 > OR ((a BETWEEN 74 AND 76) AND a!=75) > OR b=341 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=814 > OR b=1026 > OR a=14 > @@ -22364,7 +22364,7 @@ test:do_test( > WHERE a=20 > OR ((a BETWEEN 74 AND 76) AND a!=75) > OR b=341 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=814 > OR b=1026 > OR a=14 > @@ -22387,8 +22387,8 @@ test:do_test( > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR b=839 > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > - OR (g='onmlkji' AND f GLOB 'xyzab*') > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR c=7007 > ]]) > end, { > @@ -22406,8 +22406,8 @@ test:do_test( > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR b=839 > OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) > - OR (g='onmlkji' AND f GLOB 'xyzab*') > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR c=7007 > ]]) > end, { > @@ -22421,7 +22421,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') > + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR a=21 > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) > @@ -22443,7 +22443,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') > + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR a=21 > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) > @@ -22469,11 +22469,11 @@ test:do_test( > OR f='bcdefghij' > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=762 > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.601.1> > @@ -22490,11 +22490,11 @@ test:do_test( > OR f='bcdefghij' > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=762 > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.601.2> > @@ -22574,7 +22574,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR b=1067 > OR b=231 > @@ -22595,7 +22595,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR b=1067 > OR b=231 > @@ -22620,7 +22620,7 @@ test:do_test( > OR b=396 > OR b=1059 > OR a=69 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR b=440 > OR b=825 > ]]) > @@ -22640,7 +22640,7 @@ test:do_test( > OR b=396 > OR b=1059 > OR a=69 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR b=440 > OR b=825 > ]]) > @@ -22658,7 +22658,7 @@ test:do_test( > WHERE (d>=26.0 AND d<27.0 AND d IS NOT NULL) > OR b=308 > OR c<=10 > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > OR f='ghijklmno' > OR b=289 > OR a=5 > @@ -22680,7 +22680,7 @@ test:do_test( > WHERE (d>=26.0 AND d<27.0 AND d IS NOT NULL) > OR b=308 > OR c<=10 > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > OR f='ghijklmno' > OR b=289 > OR a=5 > @@ -22703,9 +22703,9 @@ test:do_test( > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > OR b=993 > OR ((a BETWEEN 43 AND 45) AND a!=44) > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR b=663 > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR b=869 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > OR b=121 > @@ -22725,9 +22725,9 @@ test:do_test( > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > OR b=993 > OR ((a BETWEEN 43 AND 45) AND a!=44) > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR b=663 > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR b=869 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > OR b=121 > @@ -22743,9 +22743,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'efghi*') > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + WHERE (g='xwvutsr' AND f LIKE 'efghi%') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR b=770 > ]]) > end, { > @@ -22759,9 +22759,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'efghi*') > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + WHERE (g='xwvutsr' AND f LIKE 'efghi%') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR b=770 > ]]) > end, { > @@ -22776,10 +22776,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 80 AND 82) AND a!=81) > - OR (g='nmlkjih' AND f GLOB 'fghij*') > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.609.1> > @@ -22793,10 +22793,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 80 AND 82) AND a!=81) > - OR (g='nmlkjih' AND f GLOB 'fghij*') > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.609.2> > @@ -22855,16 +22855,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='onmlkji' AND f GLOB 'zabcd*') > + WHERE (g='onmlkji' AND f LIKE 'zabcd%') > OR b=1092 > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR a=77 > OR a=63 > OR b=762 > OR b=894 > OR b=685 > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.611.1> > @@ -22877,16 +22877,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='onmlkji' AND f GLOB 'zabcd*') > + WHERE (g='onmlkji' AND f LIKE 'zabcd%') > OR b=1092 > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR a=77 > OR a=63 > OR b=762 > OR b=894 > OR b=685 > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.611.2> > @@ -22899,7 +22899,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'klmno*') > + WHERE (g='wvutsrq' AND f LIKE 'klmno%') > OR ((a BETWEEN 93 AND 95) AND a!=94) > OR b=231 > ]]) > @@ -22914,7 +22914,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'klmno*') > + WHERE (g='wvutsrq' AND f LIKE 'klmno%') > OR ((a BETWEEN 93 AND 95) AND a!=94) > OR b=231 > ]]) > @@ -22930,7 +22930,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=828 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > ]]) > end, { > @@ -22945,7 +22945,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=828 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > ]]) > end, { > @@ -22959,13 +22959,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') > + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR b=520 > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR a=21 > ]]) > end, { > @@ -22979,13 +22979,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') > + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR b=520 > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR a=21 > ]]) > end, { > @@ -23000,7 +23000,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=553 > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > OR b=1034 > OR b=418 > OR a=57 > @@ -23019,7 +23019,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=553 > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > OR b=1034 > OR b=418 > OR a=57 > @@ -23038,9 +23038,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=43 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > OR b=418 > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > OR b=594 > OR a=21 > @@ -23060,9 +23060,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=43 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > OR b=418 > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > OR b=594 > OR a=21 > @@ -23082,7 +23082,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=671 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR ((a BETWEEN 95 AND 97) AND a!=96) > ]]) > end, { > @@ -23097,7 +23097,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=671 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR ((a BETWEEN 95 AND 97) AND a!=96) > ]]) > end, { > @@ -23148,7 +23148,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=806 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR b=275 > @@ -23166,7 +23166,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=806 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR b=275 > @@ -23184,12 +23184,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=24024 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR b=429 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR b=110 > OR a=39 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.620.1> > @@ -23203,12 +23203,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=24024 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR b=429 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR b=110 > OR a=39 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.620.2> > @@ -23287,7 +23287,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=509 > OR ((a BETWEEN 22 AND 24) AND a!=23) > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR b=718 > OR a=4 > OR ((a BETWEEN 56 AND 58) AND a!=57) > @@ -23307,7 +23307,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=509 > OR ((a BETWEEN 22 AND 24) AND a!=23) > - OR (g='vutsrqp' AND f GLOB 'nopqr*') > + OR (g='vutsrqp' AND f LIKE 'nopqr%') > OR b=718 > OR a=4 > OR ((a BETWEEN 56 AND 58) AND a!=57) > @@ -23325,7 +23325,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > OR b=1026 > OR a=93 > OR c=18018 > @@ -23341,7 +23341,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > OR b=1026 > OR a=93 > OR c=18018 > @@ -23422,11 +23422,11 @@ test:do_test( > WHERE b=990 > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR ((a BETWEEN 41 AND 43) AND a!=42) > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > OR b=531 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR f='qrstuvwxy' > ]]) > end, { > @@ -23443,11 +23443,11 @@ test:do_test( > WHERE b=990 > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR ((a BETWEEN 41 AND 43) AND a!=42) > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > OR b=531 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR f='qrstuvwxy' > ]]) > end, { > @@ -23462,9 +23462,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=60 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR b=627 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) > OR b=883 > @@ -23484,9 +23484,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=60 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR b=627 > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) > OR b=883 > @@ -23572,13 +23572,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=28 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR b=69 > OR ((a BETWEEN 85 AND 87) AND a!=86) > OR b=781 > OR a=64 > OR b=91 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR a=16 > OR b=278 > OR a=26 > @@ -23595,13 +23595,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=28 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR b=69 > OR ((a BETWEEN 85 AND 87) AND a!=86) > OR b=781 > OR a=64 > OR b=91 > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR a=16 > OR b=278 > OR a=26 > @@ -23710,7 +23710,7 @@ test:do_test( > WHERE f='yzabcdefg' > OR ((a BETWEEN 48 AND 50) AND a!=49) > OR a=100 > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > OR a=62 > OR a=67 > OR b=605 > @@ -23733,7 +23733,7 @@ test:do_test( > WHERE f='yzabcdefg' > OR ((a BETWEEN 48 AND 50) AND a!=49) > OR a=100 > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > OR a=62 > OR a=67 > OR b=605 > @@ -23787,9 +23787,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') > + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR b=751 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR a=67 > OR b=102 > @@ -23805,9 +23805,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') > + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR b=751 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR a=67 > OR b=102 > @@ -23862,14 +23862,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=2002 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR ((a BETWEEN 41 AND 43) AND a!=42) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR b=33 > OR b=817 > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > ]]) > end, { > @@ -23884,14 +23884,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=2002 > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR ((a BETWEEN 41 AND 43) AND a!=42) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR b=33 > OR b=817 > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'efghi*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > ]]) > end, { > @@ -23905,8 +23905,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='srqponm' AND f GLOB 'cdefg*') > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + WHERE (g='srqponm' AND f LIKE 'cdefg%') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR a=80 > OR a=53 > OR a=62 > @@ -23926,8 +23926,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='srqponm' AND f GLOB 'cdefg*') > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + WHERE (g='srqponm' AND f LIKE 'cdefg%') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR a=80 > OR a=53 > OR a=62 > @@ -23951,7 +23951,7 @@ test:do_test( > OR b=652 > OR a=72 > OR b=209 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR a=38 > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR d>1e10 > @@ -23971,7 +23971,7 @@ test:do_test( > OR b=652 > OR a=72 > OR b=209 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR a=38 > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR d>1e10 > @@ -24016,11 +24016,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=179 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR b=509 > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR f='bcdefghij' > ]]) > end, { > @@ -24035,11 +24035,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=179 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR b=509 > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR f='bcdefghij' > ]]) > end, { > @@ -24149,13 +24149,13 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR b=421 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR b=704 > OR a=90 > OR a=78 > OR 1000000<b > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > ]]) > end, { > @@ -24171,13 +24171,13 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR b=421 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR b=704 > OR a=90 > OR a=78 > OR 1000000<b > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > ]]) > end, { > @@ -24191,7 +24191,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'pqrst*') > + WHERE (g='fedcbaz' AND f LIKE 'pqrst%') > OR ((a BETWEEN 93 AND 95) AND a!=94) > ]]) > end, { > @@ -24205,7 +24205,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'pqrst*') > + WHERE (g='fedcbaz' AND f LIKE 'pqrst%') > OR ((a BETWEEN 93 AND 95) AND a!=94) > ]]) > end, { > @@ -24226,7 +24226,7 @@ test:do_test( > OR ((a BETWEEN 25 AND 27) AND a!=26) > OR e IS NULL > OR a=48 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.649.1> > @@ -24246,7 +24246,7 @@ test:do_test( > OR ((a BETWEEN 25 AND 27) AND a!=26) > OR e IS NULL > OR a=48 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.649.2> > @@ -24292,7 +24292,7 @@ test:do_test( > WHERE b=275 > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > OR f='ijklmnopq' > ]]) > @@ -24310,7 +24310,7 @@ test:do_test( > WHERE b=275 > OR ((a BETWEEN 57 AND 59) AND a!=58) > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > OR f='ijklmnopq' > ]]) > @@ -24360,7 +24360,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='zabcdefgh' > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR a=54 > OR b=770 > OR ((a BETWEEN 96 AND 98) AND a!=97) > @@ -24380,7 +24380,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='zabcdefgh' > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR a=54 > OR b=770 > OR ((a BETWEEN 96 AND 98) AND a!=97) > @@ -24446,7 +24446,7 @@ test:do_test( > WHERE b=223 > OR a=14 > OR ((a BETWEEN 74 AND 76) AND a!=75) > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR b=539 > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > @@ -24467,7 +24467,7 @@ test:do_test( > WHERE b=223 > OR a=14 > OR ((a BETWEEN 74 AND 76) AND a!=75) > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR b=539 > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > @@ -24486,7 +24486,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=99 > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR a=73 > OR a=56 > OR b=253 > @@ -24504,7 +24504,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=99 > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR a=73 > OR a=56 > OR b=253 > @@ -24524,8 +24524,8 @@ test:do_test( > WHERE b=927 > OR b=300 > OR b=223 > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=154 > OR b=759 > ]]) > @@ -24543,8 +24543,8 @@ test:do_test( > WHERE b=927 > OR b=300 > OR b=223 > - OR (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=154 > OR b=759 > ]]) > @@ -24562,7 +24562,7 @@ test:do_test( > WHERE b=242 > OR b=905 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) > OR a=24 > OR ((a BETWEEN 67 AND 69) AND a!=68) > @@ -24584,7 +24584,7 @@ test:do_test( > WHERE b=242 > OR b=905 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'ijklm*') > + OR (g='hgfedcb' AND f LIKE 'ijklm%') > OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) > OR a=24 > OR ((a BETWEEN 67 AND 69) AND a!=68) > @@ -24606,10 +24606,10 @@ test:do_test( > WHERE b=190 > OR a=72 > OR b=377 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) > OR b=476 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.659.1> > @@ -24625,10 +24625,10 @@ test:do_test( > WHERE b=190 > OR a=72 > OR b=377 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) > OR b=476 > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.659.2> > @@ -24644,12 +24644,12 @@ test:do_test( > WHERE b=245 > OR b=638 > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR f='opqrstuvw' > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > OR b=817 > OR a=85 > - OR (g='lkjihgf' AND f GLOB 'mnopq*') > + OR (g='lkjihgf' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.660.1> > @@ -24665,12 +24665,12 @@ test:do_test( > WHERE b=245 > OR b=638 > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR f='opqrstuvw' > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > OR b=817 > OR a=85 > - OR (g='lkjihgf' AND f GLOB 'mnopq*') > + OR (g='lkjihgf' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.660.2> > @@ -24749,9 +24749,9 @@ test:do_test( > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > OR c<=10 > OR ((a BETWEEN 75 AND 77) AND a!=76) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=553 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR b=1045 > ]]) > end, { > @@ -24769,9 +24769,9 @@ test:do_test( > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > OR c<=10 > OR ((a BETWEEN 75 AND 77) AND a!=76) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=553 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR b=1045 > ]]) > end, { > @@ -24788,12 +24788,12 @@ test:do_test( > WHERE b=440 > OR ((a BETWEEN 3 AND 5) AND a!=4) > OR ((a BETWEEN 44 AND 46) AND a!=45) > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR a=89 > OR c=18018 > OR b=154 > OR b=506 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR a=78 > OR b=751 > ]]) > @@ -24811,12 +24811,12 @@ test:do_test( > WHERE b=440 > OR ((a BETWEEN 3 AND 5) AND a!=4) > OR ((a BETWEEN 44 AND 46) AND a!=45) > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR a=89 > OR c=18018 > OR b=154 > OR b=506 > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR a=78 > OR b=751 > ]]) > @@ -24832,13 +24832,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=407 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR b=209 > OR b=814 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR a=44 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) > OR b=1092 > ]]) > @@ -24854,13 +24854,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=407 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR b=209 > OR b=814 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR a=44 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) > OR b=1092 > ]]) > @@ -25002,10 +25002,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=27 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR b=121 > OR ((a BETWEEN 7 AND 9) AND a!=8) > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=67 > OR ((a BETWEEN 30 AND 32) AND a!=31) > OR c=1001 > @@ -25024,10 +25024,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=27 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR b=121 > OR ((a BETWEEN 7 AND 9) AND a!=8) > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=67 > OR ((a BETWEEN 30 AND 32) AND a!=31) > OR c=1001 > @@ -25046,7 +25046,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=99 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > @@ -25063,7 +25063,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=99 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > @@ -25083,9 +25083,9 @@ test:do_test( > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > OR b=355 > OR b=814 > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR a=81 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR b=542 > OR b=795 > ]]) > @@ -25104,9 +25104,9 @@ test:do_test( > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > OR b=355 > OR b=814 > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR a=81 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR b=542 > OR b=795 > ]]) > @@ -25124,10 +25124,10 @@ test:do_test( > WHERE (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR b=363 > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR b=619 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR a=73 > ]]) > end, { > @@ -25144,10 +25144,10 @@ test:do_test( > WHERE (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR b=363 > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR ((a BETWEEN 64 AND 66) AND a!=65) > OR b=619 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > OR a=73 > ]]) > end, { > @@ -25163,9 +25163,9 @@ test:do_test( > SELECT a FROM t2 > WHERE b=935 > OR a=42 > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR b=330 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.673.1> > @@ -25180,9 +25180,9 @@ test:do_test( > SELECT a FROM t3 > WHERE b=935 > OR a=42 > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR b=330 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.673.2> > @@ -25201,7 +25201,7 @@ test:do_test( > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > OR a=64 > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR a=89 > ]]) > end, { > @@ -25221,7 +25221,7 @@ test:do_test( > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > OR a=64 > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR a=89 > ]]) > end, { > @@ -25240,9 +25240,9 @@ test:do_test( > OR b=663 > OR c=17017 > OR b=561 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=495 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR b=352 > OR ((a BETWEEN 39 AND 41) AND a!=40) > ]]) > @@ -25262,9 +25262,9 @@ test:do_test( > OR b=663 > OR c=17017 > OR b=561 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR b=495 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR b=352 > OR ((a BETWEEN 39 AND 41) AND a!=40) > ]]) > @@ -25280,7 +25280,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=100.0 AND d<101.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR f='klmnopqrs' > OR f='lmnopqrst' > ]]) > @@ -25296,7 +25296,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=100.0 AND d<101.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > OR f='klmnopqrs' > OR f='lmnopqrst' > ]]) > @@ -25342,16 +25342,16 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=36 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR ((a BETWEEN 18 AND 20) AND a!=19) > OR b=682 > OR ((a BETWEEN 53 AND 55) AND a!=54) > OR b=91 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR c=12012 > OR b=267 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.678.1> > @@ -25365,16 +25365,16 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=36 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR ((a BETWEEN 18 AND 20) AND a!=19) > OR b=682 > OR ((a BETWEEN 53 AND 55) AND a!=54) > OR b=91 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR c=12012 > OR b=267 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.678.2> > @@ -25390,12 +25390,12 @@ test:do_test( > WHERE b=594 > OR f='hijklmnop' > OR ((a BETWEEN 65 AND 67) AND a!=66) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR b=707 > OR b=363 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=157 > - OR (g='tsrqpon' AND f GLOB 'yzabc*') > + OR (g='tsrqpon' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.679.1> > @@ -25411,12 +25411,12 @@ test:do_test( > WHERE b=594 > OR f='hijklmnop' > OR ((a BETWEEN 65 AND 67) AND a!=66) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR b=707 > OR b=363 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=157 > - OR (g='tsrqpon' AND f GLOB 'yzabc*') > + OR (g='tsrqpon' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.679.2> > @@ -25473,7 +25473,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'defgh*') > + WHERE (g='nmlkjih' AND f LIKE 'defgh%') > OR b=674 > OR ((a BETWEEN 38 AND 40) AND a!=39) > OR c=3003 > @@ -25492,7 +25492,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'defgh*') > + WHERE (g='nmlkjih' AND f LIKE 'defgh%') > OR b=674 > OR ((a BETWEEN 38 AND 40) AND a!=39) > OR c=3003 > @@ -25554,7 +25554,7 @@ test:do_test( > OR b=707 > OR f='vwxyzabcd' > OR b=286 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=693 > OR ((a BETWEEN 6 AND 8) AND a!=7) > ]]) > @@ -25576,7 +25576,7 @@ test:do_test( > OR b=707 > OR f='vwxyzabcd' > OR b=286 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=693 > OR ((a BETWEEN 6 AND 8) AND a!=7) > ]]) > @@ -25596,8 +25596,8 @@ test:do_test( > OR a=52 > OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) > OR d<0.0 > - OR (g='rqponml' AND f GLOB 'jklmn*') > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (g='rqponml' AND f LIKE 'jklmn%') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR b=168 > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR f='uvwxyzabc' > @@ -25619,8 +25619,8 @@ test:do_test( > OR a=52 > OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) > OR d<0.0 > - OR (g='rqponml' AND f GLOB 'jklmn*') > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + OR (g='rqponml' AND f LIKE 'jklmn%') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR b=168 > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR f='uvwxyzabc' > @@ -25638,12 +25638,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 4 AND 6) AND a!=5) > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR f='rstuvwxyz' > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=14 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > ]]) > @@ -25659,12 +25659,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 4 AND 6) AND a!=5) > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR f='rstuvwxyz' > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR a=14 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > ]]) > @@ -25681,9 +25681,9 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 13 AND 15) AND a!=14) > OR ((a BETWEEN 93 AND 95) AND a!=94) > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR f='mnopqrstu' > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR a=38 > OR c=26026 > @@ -25701,9 +25701,9 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 13 AND 15) AND a!=14) > OR ((a BETWEEN 93 AND 95) AND a!=94) > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR f='mnopqrstu' > - OR (g='fedcbaz' AND f GLOB 'tuvwx*') > + OR (g='fedcbaz' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR a=38 > OR c=26026 > @@ -25719,11 +25719,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ponmlkj' AND f GLOB 'stuvw*') > + WHERE (g='ponmlkj' AND f LIKE 'stuvw%') > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR a=7 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > ]]) > end, { > @@ -25737,11 +25737,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ponmlkj' AND f GLOB 'stuvw*') > + WHERE (g='ponmlkj' AND f LIKE 'stuvw%') > OR ((a BETWEEN 71 AND 73) AND a!=72) > OR a=7 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > ]]) > end, { > @@ -25759,8 +25759,8 @@ test:do_test( > OR b=938 > OR b=484 > OR b=652 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR f='opqrstuvw' > ]]) > end, { > @@ -25778,8 +25778,8 @@ test:do_test( > OR b=938 > OR b=484 > OR b=652 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR f='opqrstuvw' > ]]) > end, { > @@ -25835,12 +25835,12 @@ test:do_test( > SELECT a FROM t2 > WHERE a=25 > OR ((a BETWEEN 43 AND 45) AND a!=44) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR b=443 > OR b=564 > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=531 > OR b=1081 > OR a=96 > @@ -25858,12 +25858,12 @@ test:do_test( > SELECT a FROM t3 > WHERE a=25 > OR ((a BETWEEN 43 AND 45) AND a!=44) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > OR b=443 > OR b=564 > - OR (g='kjihgfe' AND f GLOB 'rstuv*') > + OR (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=531 > OR b=1081 > OR a=96 > @@ -25880,7 +25880,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=36 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.691.1> > @@ -25894,7 +25894,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=36 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.691.2> > @@ -25907,7 +25907,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') > + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') > OR b=531 > OR ((a BETWEEN 93 AND 95) AND a!=94) > OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) > @@ -25923,7 +25923,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') > + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') > OR b=531 > OR ((a BETWEEN 93 AND 95) AND a!=94) > OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) > @@ -25975,8 +25975,8 @@ test:do_test( > OR b=718 > OR a=18 > OR a=3 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR c=28028 > ]]) > end, { > @@ -25998,8 +25998,8 @@ test:do_test( > OR b=718 > OR a=18 > OR a=3 > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR c=28028 > ]]) > end, { > @@ -26062,7 +26062,7 @@ test:do_test( > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > OR ((a BETWEEN 30 AND 32) AND a!=31) > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > ]]) > end, { > @@ -26081,7 +26081,7 @@ test:do_test( > OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) > OR ((a BETWEEN 30 AND 32) AND a!=31) > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > ]]) > end, { > @@ -26095,7 +26095,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') > + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') > OR b=883 > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR b=938 > @@ -26115,7 +26115,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') > + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') > OR b=883 > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR b=938 > @@ -26167,7 +26167,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'abcde*') > + WHERE (g='tsrqpon' AND f LIKE 'abcde%') > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR ((a BETWEEN 74 AND 76) AND a!=75) > @@ -26185,7 +26185,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'abcde*') > + WHERE (g='tsrqpon' AND f LIKE 'abcde%') > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR ((a BETWEEN 74 AND 76) AND a!=75) > @@ -26271,12 +26271,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?abcd*' AND f GLOB 'zabc*') > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > - OR (g='srqponm' AND f GLOB 'cdefg*') > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + WHERE (f LIKE '_abcd%' AND f LIKE 'zabc%') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > + OR (g='srqponm' AND f LIKE 'cdefg%') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR f='lmnopqrst' > OR ((a BETWEEN 11 AND 13) AND a!=12) > OR b=872 > @@ -26294,12 +26294,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?abcd*' AND f GLOB 'zabc*') > - OR (g='srqponm' AND f GLOB 'efghi*') > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > - OR (g='srqponm' AND f GLOB 'cdefg*') > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + WHERE (f LIKE '_abcd%' AND f LIKE 'zabc%') > + OR (g='srqponm' AND f LIKE 'efghi%') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > + OR (g='srqponm' AND f LIKE 'cdefg%') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR f='lmnopqrst' > OR ((a BETWEEN 11 AND 13) AND a!=12) > OR b=872 > @@ -26319,14 +26319,14 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 71 AND 73) AND a!=72) > OR a=20 > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR b=1004 > OR b=77 > OR b=927 > OR a=99 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > ]]) > end, { > -- <where7-2.703.1> > @@ -26341,14 +26341,14 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 71 AND 73) AND a!=72) > OR a=20 > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR b=1004 > OR b=77 > OR b=927 > OR a=99 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > ]]) > end, { > -- <where7-2.703.2> > @@ -26394,7 +26394,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=572 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.705.1> > @@ -26408,7 +26408,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=572 > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.705.2> > @@ -26424,8 +26424,8 @@ test:do_test( > WHERE (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR ((a BETWEEN 54 AND 56) AND a!=55) > OR f='lmnopqrst' > - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR a=23 > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > ]]) > @@ -26443,8 +26443,8 @@ test:do_test( > WHERE (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR ((a BETWEEN 54 AND 56) AND a!=55) > OR f='lmnopqrst' > - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR a=23 > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > ]]) > @@ -26463,13 +26463,13 @@ test:do_test( > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR b=605 > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > OR b=759 > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR ((a BETWEEN 38 AND 40) AND a!=39) > OR a=40 > OR f='ghijklmno' > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.707.1> > @@ -26486,13 +26486,13 @@ test:do_test( > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR b=605 > OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > OR b=759 > - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') > + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') > OR ((a BETWEEN 38 AND 40) AND a!=39) > OR a=40 > OR f='ghijklmno' > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.707.2> > @@ -26601,7 +26601,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'efghi*') > + WHERE (g='nmlkjih' AND f LIKE 'efghi%') > OR a=34 > OR ((a BETWEEN 6 AND 8) AND a!=7) > OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) > @@ -26619,7 +26619,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'efghi*') > + WHERE (g='nmlkjih' AND f LIKE 'efghi%') > OR a=34 > OR ((a BETWEEN 6 AND 8) AND a!=7) > OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) > @@ -26637,16 +26637,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > OR a=52 > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR f='ghijklmno' > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=319 > OR a=34 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR f='hijklmnop' > ]]) > end, { > @@ -26660,16 +26660,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > OR a=52 > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) > OR f='ghijklmno' > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=319 > OR a=34 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR f='hijklmnop' > ]]) > end, { > @@ -26683,7 +26683,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > OR a=47 > @@ -26699,7 +26699,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'pqrst*') > + WHERE (g='qponmlk' AND f LIKE 'pqrst%') > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > OR a=47 > @@ -26781,11 +26781,11 @@ test:do_test( > SELECT a FROM t2 > WHERE c=31031 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR b=256 > OR ((a BETWEEN 77 AND 79) AND a!=78) > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=715 > OR b=212 > OR b=99 > @@ -26804,11 +26804,11 @@ test:do_test( > SELECT a FROM t3 > WHERE c=31031 > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 66 AND 68) AND a!=67) > OR b=256 > OR ((a BETWEEN 77 AND 79) AND a!=78) > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=715 > OR b=212 > OR b=99 > @@ -26899,7 +26899,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR ((a BETWEEN 62 AND 64) AND a!=63) > ]]) > end, { > @@ -26913,7 +26913,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR ((a BETWEEN 62 AND 64) AND a!=63) > ]]) > end, { > @@ -26929,11 +26929,11 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 43 AND 45) AND a!=44) > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR a=43 > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > OR b=729 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.720.1> > @@ -26948,11 +26948,11 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 43 AND 45) AND a!=44) > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR a=43 > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > OR b=729 > - OR (g='vutsrqp' AND f GLOB 'opqrs*') > + OR (g='vutsrqp' AND f LIKE 'opqrs%') > ]]) > end, { > -- <where7-2.720.2> > @@ -26972,7 +26972,7 @@ test:do_test( > OR c=8008 > OR f='opqrstuvw' > OR ((a BETWEEN 23 AND 25) AND a!=24) > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.721.1> > @@ -26992,7 +26992,7 @@ test:do_test( > OR c=8008 > OR f='opqrstuvw' > OR ((a BETWEEN 23 AND 25) AND a!=24) > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.721.2> > @@ -27008,9 +27008,9 @@ test:do_test( > WHERE ((a BETWEEN 40 AND 42) AND a!=41) > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > OR c<=10 > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR a=35 > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=1089 > OR a=73 > OR b=737 > @@ -27031,9 +27031,9 @@ test:do_test( > WHERE ((a BETWEEN 40 AND 42) AND a!=41) > OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) > OR c<=10 > - OR (g='srqponm' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR a=35 > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=1089 > OR a=73 > OR b=737 > @@ -27053,7 +27053,7 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 0 AND 2) AND a!=1) > OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=762 > OR ((a BETWEEN 39 AND 41) AND a!=40) > OR a=80 > @@ -27071,7 +27071,7 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 0 AND 2) AND a!=1) > OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=762 > OR ((a BETWEEN 39 AND 41) AND a!=40) > OR a=80 > @@ -27092,10 +27092,10 @@ test:do_test( > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR b=979 > OR a=36 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR a=55 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.724.1> > @@ -27113,10 +27113,10 @@ test:do_test( > OR ((a BETWEEN 80 AND 82) AND a!=81) > OR b=979 > OR a=36 > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > OR a=55 > - OR (g='fedcbaz' AND f GLOB 'rstuv*') > + OR (g='fedcbaz' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.724.2> > @@ -27131,8 +27131,8 @@ test:do_test( > SELECT a FROM t2 > WHERE a=75 > OR a=61 > - OR (g='onmlkji' AND f GLOB 'abcde*') > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.725.1> > @@ -27147,8 +27147,8 @@ test:do_test( > SELECT a FROM t3 > WHERE a=75 > OR a=61 > - OR (g='onmlkji' AND f GLOB 'abcde*') > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.725.2> > @@ -27162,7 +27162,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1004 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > OR a=56 > ]]) > @@ -27178,7 +27178,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1004 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > OR a=56 > ]]) > @@ -27194,13 +27194,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=93 > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR a=83 > OR b=828 > OR b=454 > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR b=924 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > OR a=50 > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > ]]) > @@ -27216,13 +27216,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=93 > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR a=83 > OR b=828 > OR b=454 > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR b=924 > - OR (g='lkjihgf' AND f GLOB 'opqrs*') > + OR (g='lkjihgf' AND f LIKE 'opqrs%') > OR a=50 > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > ]]) > @@ -27269,7 +27269,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=55 > OR a=65 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > ]]) > end, { > -- <where7-2.729.1> > @@ -27284,7 +27284,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=55 > OR a=65 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > ]]) > end, { > -- <where7-2.729.2> > @@ -27300,7 +27300,7 @@ test:do_test( > WHERE ((a BETWEEN 72 AND 74) AND a!=73) > OR b=605 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 72 AND 74) AND a!=73) > OR f='ijklmnopq' > OR ((a BETWEEN 86 AND 88) AND a!=87) > @@ -27322,7 +27322,7 @@ test:do_test( > WHERE ((a BETWEEN 72 AND 74) AND a!=73) > OR b=605 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 72 AND 74) AND a!=73) > OR f='ijklmnopq' > OR ((a BETWEEN 86 AND 88) AND a!=87) > @@ -27342,7 +27342,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=476 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR b=982 > OR a=43 > OR b=355 > @@ -27359,7 +27359,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=476 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR b=982 > OR a=43 > OR b=355 > @@ -27377,8 +27377,8 @@ test:do_test( > SELECT a FROM t2 > WHERE a=85 > OR b=718 > - OR (g='fedcbaz' AND f GLOB 'pqrst*') > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (g='fedcbaz' AND f LIKE 'pqrst%') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > ]]) > end, { > @@ -27394,8 +27394,8 @@ test:do_test( > SELECT a FROM t3 > WHERE a=85 > OR b=718 > - OR (g='fedcbaz' AND f GLOB 'pqrst*') > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (g='fedcbaz' AND f LIKE 'pqrst%') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > ]]) > end, { > @@ -27515,12 +27515,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') > + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR b=465 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR a=37 > OR b=1056 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) > OR b=1023 > ]]) > @@ -27535,12 +27535,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') > + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR b=465 > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR a=37 > OR b=1056 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) > OR b=1023 > ]]) > @@ -27557,7 +27557,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=76 > OR a=8 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR b=495 > OR b=663 > OR a=98 > @@ -27576,7 +27576,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=76 > OR a=8 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > OR b=495 > OR b=663 > OR a=98 > @@ -27595,7 +27595,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1081 > OR b=542 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR b=828 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > @@ -27615,7 +27615,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1081 > OR b=542 > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR b=828 > OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) > @@ -27745,9 +27745,9 @@ test:do_test( > SELECT a FROM t2 > WHERE b=880 > OR b=696 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR b=308 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR ((a BETWEEN 96 AND 98) AND a!=97) > ]]) > end, { > @@ -27763,9 +27763,9 @@ test:do_test( > SELECT a FROM t3 > WHERE b=880 > OR b=696 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR b=308 > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR ((a BETWEEN 96 AND 98) AND a!=97) > ]]) > end, { > @@ -27779,7 +27779,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR a=24 > OR f IS NULL > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > @@ -27798,7 +27798,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR a=24 > OR f IS NULL > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > @@ -27819,7 +27819,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=94 > OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR b=792 > OR a=77 > OR a=26 > @@ -27839,7 +27839,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=94 > OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR b=792 > OR a=77 > OR a=26 > @@ -27935,11 +27935,11 @@ test:do_test( > OR c=19019 > OR a=42 > OR b=938 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR ((a BETWEEN 22 AND 24) AND a!=23) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.747.1> > @@ -27958,11 +27958,11 @@ test:do_test( > OR c=19019 > OR a=42 > OR b=938 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > OR ((a BETWEEN 22 AND 24) AND a!=23) > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > ]]) > end, { > -- <where7-2.747.2> > @@ -27977,7 +27977,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=179 > OR a=50 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.748.1> > @@ -27992,7 +27992,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=179 > OR a=50 > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > ]]) > end, { > -- <where7-2.748.2> > @@ -28005,12 +28005,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') > + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') > OR f='xyzabcdef' > OR ((a BETWEEN 49 AND 51) AND a!=50) > OR b=575 > OR b=385 > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR a=46 > OR b=220 > @@ -28027,12 +28027,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') > + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') > OR f='xyzabcdef' > OR ((a BETWEEN 49 AND 51) AND a!=50) > OR b=575 > OR b=385 > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR ((a BETWEEN 63 AND 65) AND a!=64) > OR a=46 > OR b=220 > @@ -28055,7 +28055,7 @@ test:do_test( > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > OR c=31031 > OR b=869 > - OR (g='jihgfed' AND f GLOB 'zabcd*') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > OR b=245 > OR a=92 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > @@ -28078,7 +28078,7 @@ test:do_test( > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > OR c=31031 > OR b=869 > - OR (g='jihgfed' AND f GLOB 'zabcd*') > + OR (g='jihgfed' AND f LIKE 'zabcd%') > OR b=245 > OR a=92 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > @@ -28099,8 +28099,8 @@ test:do_test( > OR c=28028 > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR ((a BETWEEN 17 AND 19) AND a!=18) > OR c=9009 > OR a=17 > @@ -28121,8 +28121,8 @@ test:do_test( > OR c=28028 > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > - OR (g='mlkjihg' AND f GLOB 'jklmn*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > + OR (g='mlkjihg' AND f LIKE 'jklmn%') > OR ((a BETWEEN 17 AND 19) AND a!=18) > OR c=9009 > OR a=17 > @@ -28141,7 +28141,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=57.0 AND d<58.0 AND d IS NOT NULL) > OR b=762 > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR f='tuvwxyzab' > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR ((a BETWEEN 31 AND 33) AND a!=32) > @@ -28161,7 +28161,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=57.0 AND d<58.0 AND d IS NOT NULL) > OR b=762 > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR f='tuvwxyzab' > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > OR ((a BETWEEN 31 AND 33) AND a!=32) > @@ -28219,7 +28219,7 @@ test:do_test( > OR a=14 > OR c=16016 > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR f='jklmnopqr' > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) > @@ -28240,7 +28240,7 @@ test:do_test( > OR a=14 > OR c=16016 > OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR f='jklmnopqr' > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) > @@ -28258,12 +28258,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=949 > - OR (g='srqponm' AND f GLOB 'cdefg*') > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR c<=10 > OR a=14 > OR b=608 > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > OR b=121 > OR b=333 > @@ -28281,12 +28281,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=949 > - OR (g='srqponm' AND f GLOB 'cdefg*') > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > OR c<=10 > OR a=14 > OR b=608 > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > OR b=121 > OR b=333 > @@ -28303,7 +28303,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=355 > OR b=627 > OR b=1001 > @@ -28321,7 +28321,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') > + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') > OR b=355 > OR b=627 > OR b=1001 > @@ -28339,7 +28339,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'efghi*') > + WHERE (g='xwvutsr' AND f LIKE 'efghi%') > OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) > ]]) > end, { > @@ -28353,7 +28353,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'efghi*') > + WHERE (g='xwvutsr' AND f LIKE 'efghi%') > OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) > ]]) > end, { > @@ -28370,11 +28370,11 @@ test:do_test( > WHERE b=685 > OR a=14 > OR b=990 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR f='efghijklm' > OR c=1001 > OR b=784 > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > ]]) > end, { > @@ -28391,11 +28391,11 @@ test:do_test( > WHERE b=685 > OR a=14 > OR b=990 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR f='efghijklm' > OR c=1001 > OR b=784 > - OR (g='srqponm' AND f GLOB 'ghijk*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > ]]) > end, { > @@ -28410,7 +28410,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=54 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR c=26026 > OR ((a BETWEEN 97 AND 99) AND a!=98) > ]]) > @@ -28426,7 +28426,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=54 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR c=26026 > OR ((a BETWEEN 97 AND 99) AND a!=98) > ]]) > @@ -28441,13 +28441,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'ghijk*') > + WHERE (g='hgfedcb' AND f LIKE 'ghijk%') > OR c=24024 > OR a=98 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR a=5 > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR f='pqrstuvwx' > OR f='bcdefghij' > OR b=1001 > @@ -28464,13 +28464,13 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'ghijk*') > + WHERE (g='hgfedcb' AND f LIKE 'ghijk%') > OR c=24024 > OR a=98 > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > OR a=5 > OR ((a BETWEEN 31 AND 33) AND a!=32) > - OR (g='rqponml' AND f GLOB 'klmno*') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR f='pqrstuvwx' > OR f='bcdefghij' > OR b=1001 > @@ -28488,11 +28488,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=781 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR f='lmnopqrst' > OR a=39 > OR a=100 > @@ -28510,11 +28510,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=781 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR f='lmnopqrst' > OR a=39 > OR a=100 > @@ -28533,11 +28533,11 @@ test:do_test( > SELECT a FROM t2 > WHERE c=4004 > OR b=718 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR a=50 > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > OR b=363 > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > OR b=1023 > ]]) > end, { > @@ -28553,11 +28553,11 @@ test:do_test( > SELECT a FROM t3 > WHERE c=4004 > OR b=718 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR a=50 > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > OR b=363 > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > OR b=1023 > ]]) > end, { > @@ -28576,8 +28576,8 @@ test:do_test( > OR b=473 > OR ((a BETWEEN 43 AND 45) AND a!=44) > OR b=586 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > ]]) > end, { > -- <where7-2.763.1> > @@ -28595,8 +28595,8 @@ test:do_test( > OR b=473 > OR ((a BETWEEN 43 AND 45) AND a!=44) > OR b=586 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') > ]]) > end, { > -- <where7-2.763.2> > @@ -28609,7 +28609,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + WHERE (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) > OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) > ]]) > @@ -28624,7 +28624,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + WHERE (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) > OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) > ]]) > @@ -28639,11 +28639,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR ((a BETWEEN 76 AND 78) AND a!=77) > OR a=47 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) > OR f='lmnopqrst' > ]]) > @@ -28658,11 +28658,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR ((a BETWEEN 76 AND 78) AND a!=77) > OR a=47 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > - OR (g='lkjihgf' AND f GLOB 'lmnop*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > + OR (g='lkjihgf' AND f LIKE 'lmnop%') > OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) > OR f='lmnopqrst' > ]]) > @@ -28680,7 +28680,7 @@ test:do_test( > WHERE c>=34035 > OR a=29 > OR ((a BETWEEN 19 AND 21) AND a!=20) > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR f='abcdefghi' > OR b=993 > OR ((a BETWEEN 52 AND 54) AND a!=53) > @@ -28700,7 +28700,7 @@ test:do_test( > WHERE c>=34035 > OR a=29 > OR ((a BETWEEN 19 AND 21) AND a!=20) > - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') > + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') > OR f='abcdefghi' > OR b=993 > OR ((a BETWEEN 52 AND 54) AND a!=53) > @@ -28878,7 +28878,7 @@ test:do_test( > WHERE ((a BETWEEN 32 AND 34) AND a!=33) > OR b=1045 > OR c=27027 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > ]]) > end, { > -- <where7-2.771.1> > @@ -28894,7 +28894,7 @@ test:do_test( > WHERE ((a BETWEEN 32 AND 34) AND a!=33) > OR b=1045 > OR c=27027 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > ]]) > end, { > -- <where7-2.771.2> > @@ -28910,7 +28910,7 @@ test:do_test( > WHERE a=87 > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR b=487 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.772.1> > @@ -28926,7 +28926,7 @@ test:do_test( > WHERE a=87 > OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) > OR b=487 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > ]]) > end, { > -- <where7-2.772.2> > @@ -29018,10 +29018,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=220 > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=363 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR ((a BETWEEN 10 AND 12) AND a!=11) > ]]) > @@ -29037,10 +29037,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=220 > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=363 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'defgh*') > + OR (g='nmlkjih' AND f LIKE 'defgh%') > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR ((a BETWEEN 10 AND 12) AND a!=11) > ]]) > @@ -29096,8 +29096,8 @@ test:do_test( > WHERE b=1059 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR b=960 > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=894 > OR c=2002 > ]]) > @@ -29115,8 +29115,8 @@ test:do_test( > WHERE b=1059 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR b=960 > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR b=894 > OR c=2002 > ]]) > @@ -29132,7 +29132,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=14 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.778.1> > @@ -29146,7 +29146,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=14 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.778.2> > @@ -29160,7 +29160,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=806 > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR b=795 > OR ((a BETWEEN 99 AND 101) AND a!=100) > OR ((a BETWEEN 21 AND 23) AND a!=22) > @@ -29180,7 +29180,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=806 > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > OR b=795 > OR ((a BETWEEN 99 AND 101) AND a!=100) > OR ((a BETWEEN 21 AND 23) AND a!=22) > @@ -29200,7 +29200,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=726 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR f='abcdefghi' > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > @@ -29218,7 +29218,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=726 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR f='abcdefghi' > OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) > @@ -29238,7 +29238,7 @@ test:do_test( > WHERE a=59 > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR b=1081 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.781.1> > @@ -29254,7 +29254,7 @@ test:do_test( > WHERE a=59 > OR ((a BETWEEN 5 AND 7) AND a!=6) > OR b=1081 > - OR (g='fedcbaz' AND f GLOB 'stuvw*') > + OR (g='fedcbaz' AND f LIKE 'stuvw%') > ]]) > end, { > -- <where7-2.781.2> > @@ -29267,15 +29267,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'nopqr*') > + WHERE (g='qponmlk' AND f LIKE 'nopqr%') > OR b=1037 > OR b=132 > OR c=1001 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=32 > ]]) > end, { > @@ -29289,15 +29289,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'nopqr*') > + WHERE (g='qponmlk' AND f LIKE 'nopqr%') > OR b=1037 > OR b=132 > OR c=1001 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=32 > ]]) > end, { > @@ -29355,7 +29355,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') > + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=1001 > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR a=83 > @@ -29371,7 +29371,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') > + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=1001 > OR ((a BETWEEN 23 AND 25) AND a!=24) > OR a=83 > @@ -29389,13 +29389,13 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR b=36 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR ((a BETWEEN 46 AND 48) AND a!=47) > OR ((a BETWEEN 31 AND 33) AND a!=32) > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'efghi*') > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR ((a BETWEEN 26 AND 28) AND a!=27) > ]]) > @@ -29412,13 +29412,13 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR b=36 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR ((a BETWEEN 46 AND 48) AND a!=47) > OR ((a BETWEEN 31 AND 33) AND a!=32) > OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) > - OR (g='ihgfedc' AND f GLOB 'efghi*') > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR ((a BETWEEN 26 AND 28) AND a!=27) > ]]) > @@ -29434,7 +29434,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=69 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR a=98 > OR b=300 > @@ -29456,7 +29456,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=69 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR ((a BETWEEN 58 AND 60) AND a!=59) > OR a=98 > OR b=300 > @@ -29480,8 +29480,8 @@ test:do_test( > WHERE ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > OR ((a BETWEEN 94 AND 96) AND a!=95) > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR b=619 > OR c=6006 > @@ -29503,8 +29503,8 @@ test:do_test( > WHERE ((a BETWEEN 68 AND 70) AND a!=69) > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > OR ((a BETWEEN 94 AND 96) AND a!=95) > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 22 AND 24) AND a!=23) > OR b=619 > OR c=6006 > @@ -29525,7 +29525,7 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 9 AND 11) AND a!=10) > OR a=55 > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.788.1> > @@ -29540,7 +29540,7 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 9 AND 11) AND a!=10) > OR a=55 > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.788.2> > @@ -29558,7 +29558,7 @@ test:do_test( > OR b=201 > OR a=7 > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR b=957 > ]]) > end, { > @@ -29577,7 +29577,7 @@ test:do_test( > OR b=201 > OR a=7 > OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) > - OR (g='yxwvuts' AND f GLOB 'cdefg*') > + OR (g='yxwvuts' AND f LIKE 'cdefg%') > OR b=957 > ]]) > end, { > @@ -29593,10 +29593,10 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 90 AND 92) AND a!=91) > OR a=74 > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR ((a BETWEEN 95 AND 97) AND a!=96) > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR a=89 > ]]) > end, { > @@ -29612,10 +29612,10 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 90 AND 92) AND a!=91) > OR a=74 > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > OR ((a BETWEEN 95 AND 97) AND a!=96) > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') > OR a=89 > ]]) > end, { > @@ -29636,7 +29636,7 @@ test:do_test( > OR b=495 > OR b=564 > OR b=289 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.791.1> > @@ -29656,7 +29656,7 @@ test:do_test( > OR b=495 > OR b=564 > OR b=289 > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > ]]) > end, { > -- <where7-2.791.2> > @@ -29669,7 +29669,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') > + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') > OR a=69 > OR a=12 > OR b=718 > @@ -29686,7 +29686,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') > + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') > OR a=69 > OR a=12 > OR b=718 > @@ -29703,7 +29703,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR f='klmnopqrs' > OR b=674 > OR a=96 > @@ -29712,7 +29712,7 @@ test:do_test( > OR b=707 > OR f='cdefghijk' > OR a=91 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.793.1> > @@ -29725,7 +29725,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') > + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') > OR f='klmnopqrs' > OR b=674 > OR a=96 > @@ -29734,7 +29734,7 @@ test:do_test( > OR b=707 > OR f='cdefghijk' > OR a=91 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.793.2> > @@ -29747,12 +29747,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') > + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR b=564 > OR b=784 > OR b=418 > OR b=275 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR a=58 > OR c=11011 > OR b=660 > @@ -29768,12 +29768,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') > + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR b=564 > OR b=784 > OR b=418 > OR b=275 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > OR a=58 > OR c=11011 > OR b=660 > @@ -29794,7 +29794,7 @@ test:do_test( > OR b=1004 > OR ((a BETWEEN 28 AND 30) AND a!=29) > OR ((a BETWEEN 57 AND 59) AND a!=58) > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR f='pqrstuvwx' > ]]) > end, { > @@ -29813,7 +29813,7 @@ test:do_test( > OR b=1004 > OR ((a BETWEEN 28 AND 30) AND a!=29) > OR ((a BETWEEN 57 AND 59) AND a!=58) > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR f='pqrstuvwx' > ]]) > end, { > @@ -29886,7 +29886,7 @@ test:do_test( > WHERE a=19 > OR a=29 > OR b=476 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR b=91 > ]]) > end, { > @@ -29903,7 +29903,7 @@ test:do_test( > WHERE a=19 > OR a=29 > OR b=476 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR b=91 > ]]) > end, { > @@ -29954,8 +29954,8 @@ test:do_test( > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR ((a BETWEEN 32 AND 34) AND a!=33) > OR b=44 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR b=707 > OR b=322 > ]]) > @@ -29975,8 +29975,8 @@ test:do_test( > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR ((a BETWEEN 32 AND 34) AND a!=33) > OR b=44 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR b=707 > OR b=322 > ]]) > @@ -29991,8 +29991,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR f='jklmnopqr' > ]]) > @@ -30007,8 +30007,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) > OR f='jklmnopqr' > ]]) > @@ -30024,14 +30024,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=946 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR a=47 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR b=80 > OR ((a BETWEEN 60 AND 62) AND a!=61) > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.802.1> > @@ -30045,14 +30045,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=946 > - OR (g='ihgfedc' AND f GLOB 'abcde*') > + OR (g='ihgfedc' AND f LIKE 'abcde%') > OR a=47 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > OR b=80 > OR ((a BETWEEN 60 AND 62) AND a!=61) > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > ]]) > end, { > -- <where7-2.802.2> > @@ -30069,10 +30069,10 @@ test:do_test( > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR b=1015 > OR a=57 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR ((a BETWEEN 47 AND 49) AND a!=48) > OR ((a BETWEEN 98 AND 100) AND a!=99) > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) > OR b=165 > ]]) > @@ -30091,10 +30091,10 @@ test:do_test( > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > OR b=1015 > OR a=57 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR ((a BETWEEN 47 AND 49) AND a!=48) > OR ((a BETWEEN 98 AND 100) AND a!=99) > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) > OR b=165 > ]]) > @@ -30113,7 +30113,7 @@ test:do_test( > OR a=73 > OR b=1048 > OR c>=34035 > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR a=72 > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR b=638 > @@ -30133,7 +30133,7 @@ test:do_test( > OR a=73 > OR b=1048 > OR c>=34035 > - OR (g='ihgfedc' AND f GLOB 'cdefg*') > + OR (g='ihgfedc' AND f LIKE 'cdefg%') > OR a=72 > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR b=638 > @@ -30181,10 +30181,10 @@ test:do_test( > SELECT a FROM t2 > WHERE a=50 > OR ((a BETWEEN 61 AND 63) AND a!=62) > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR a=32 > OR ((a BETWEEN 93 AND 95) AND a!=94) > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR a=14 > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR b=946 > @@ -30204,10 +30204,10 @@ test:do_test( > SELECT a FROM t3 > WHERE a=50 > OR ((a BETWEEN 61 AND 63) AND a!=62) > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR a=32 > OR ((a BETWEEN 93 AND 95) AND a!=94) > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR a=14 > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR b=946 > @@ -30228,7 +30228,7 @@ test:do_test( > WHERE ((a BETWEEN 88 AND 90) AND a!=89) > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.807.1> > @@ -30244,7 +30244,7 @@ test:do_test( > WHERE ((a BETWEEN 88 AND 90) AND a!=89) > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.807.2> > @@ -30259,7 +30259,7 @@ test:do_test( > SELECT a FROM t2 > WHERE a=6 > OR f='tuvwxyzab' > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR b=286 > OR b=781 > ]]) > @@ -30276,7 +30276,7 @@ test:do_test( > SELECT a FROM t3 > WHERE a=6 > OR f='tuvwxyzab' > - OR (g='mlkjihg' AND f GLOB 'hijkl*') > + OR (g='mlkjihg' AND f LIKE 'hijkl%') > OR b=286 > OR b=781 > ]]) > @@ -30291,12 +30291,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > OR ((a BETWEEN 79 AND 81) AND a!=80) > - OR (g='edcbazy' AND f GLOB 'wxyza*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR f='vwxyzabcd' > OR b=275 > ]]) > @@ -30311,12 +30311,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > OR ((a BETWEEN 79 AND 81) AND a!=80) > - OR (g='edcbazy' AND f GLOB 'wxyza*') > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR f='vwxyzabcd' > OR b=275 > ]]) > @@ -30332,10 +30332,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'efghi*') > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR a=59 > ]]) > end, { > @@ -30350,10 +30350,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) > - OR (g='xwvutsr' AND f GLOB 'efghi*') > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='xwvutsr' AND f LIKE 'efghi%') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'nopqr*') > + OR (g='gfedcba' AND f LIKE 'nopqr%') > OR a=59 > ]]) > end, { > @@ -30367,10 +30367,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + WHERE (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR b=663 > OR f='ghijklmno' > OR ((a BETWEEN 14 AND 16) AND a!=15) > @@ -30390,10 +30390,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + WHERE (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR ((a BETWEEN 8 AND 10) AND a!=9) > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR b=663 > OR f='ghijklmno' > OR ((a BETWEEN 14 AND 16) AND a!=15) > @@ -30420,9 +30420,9 @@ test:do_test( > OR b=597 > OR ((a BETWEEN 92 AND 94) AND a!=93) > OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) > - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') > + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') > OR b=168 > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.812.1> > @@ -30442,9 +30442,9 @@ test:do_test( > OR b=597 > OR ((a BETWEEN 92 AND 94) AND a!=93) > OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) > - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') > + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') > OR b=168 > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.812.2> > @@ -30498,7 +30498,7 @@ test:do_test( > OR a=75 > OR b=179 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > OR b=850 > OR a=62 > @@ -30519,7 +30519,7 @@ test:do_test( > OR a=75 > OR b=179 > OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'stuvw*') > + OR (g='utsrqpo' AND f LIKE 'stuvw%') > OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) > OR b=850 > OR a=62 > @@ -30583,7 +30583,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=176 > OR b=297 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR f='ijklmnopq' > ]]) > end, { > @@ -30599,7 +30599,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=176 > OR b=297 > - OR (g='tsrqpon' AND f GLOB 'zabcd*') > + OR (g='tsrqpon' AND f LIKE 'zabcd%') > OR f='ijklmnopq' > ]]) > end, { > @@ -30653,9 +30653,9 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR b=396 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=1012 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR b=784 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR b=979 > @@ -30676,9 +30676,9 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR b=396 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR b=1012 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR b=784 > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > OR b=979 > @@ -30726,9 +30726,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 79 AND 81) AND a!=80) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR ((a BETWEEN 23 AND 25) AND a!=24) > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > ]]) > end, { > -- <where7-2.820.1> > @@ -30742,9 +30742,9 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 79 AND 81) AND a!=80) > - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') > + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') > OR ((a BETWEEN 23 AND 25) AND a!=24) > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > ]]) > end, { > -- <where7-2.820.2> > @@ -30830,7 +30830,7 @@ test:do_test( > OR c=19019 > OR b=245 > OR ((a BETWEEN 97 AND 99) AND a!=98) > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR b=572 > OR ((a BETWEEN 22 AND 24) AND a!=23) > @@ -30853,7 +30853,7 @@ test:do_test( > OR c=19019 > OR b=245 > OR ((a BETWEEN 97 AND 99) AND a!=98) > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR b=572 > OR ((a BETWEEN 22 AND 24) AND a!=23) > @@ -30915,7 +30915,7 @@ test:do_test( > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR b=828 > OR b=363 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.825.1> > @@ -30934,7 +30934,7 @@ test:do_test( > OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) > OR b=828 > OR b=363 > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > ]]) > end, { > -- <where7-2.825.2> > @@ -30947,7 +30947,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='gfedcba' AND f GLOB 'lmnop*') > + WHERE (g='gfedcba' AND f LIKE 'lmnop%') > OR a=41 > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > OR b=825 > @@ -30963,7 +30963,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='gfedcba' AND f GLOB 'lmnop*') > + WHERE (g='gfedcba' AND f LIKE 'lmnop%') > OR a=41 > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > OR b=825 > @@ -30986,7 +30986,7 @@ test:do_test( > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR b=561 > OR c=8008 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR b=935 > OR c=1001 > ]]) > @@ -31008,7 +31008,7 @@ test:do_test( > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR b=561 > OR c=8008 > - OR (g='hgfedcb' AND f GLOB 'ghijk*') > + OR (g='hgfedcb' AND f LIKE 'ghijk%') > OR b=935 > OR c=1001 > ]]) > @@ -31024,7 +31024,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 75 AND 77) AND a!=76) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.828.1> > @@ -31038,7 +31038,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 75 AND 77) AND a!=76) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.828.2> > @@ -31114,9 +31114,9 @@ test:do_test( > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR f='zabcdefgh' > OR b=861 > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR a=28 > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=311 > ]]) > end, { > @@ -31137,9 +31137,9 @@ test:do_test( > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR f='zabcdefgh' > OR b=861 > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > OR a=28 > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=311 > ]]) > end, { > @@ -31154,10 +31154,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=575 > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > OR b=418 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR b=792 > OR b=861 > OR b=220 > @@ -31175,10 +31175,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=575 > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > OR b=418 > - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') > + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') > OR b=792 > OR b=861 > OR b=220 > @@ -31233,7 +31233,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'qrstu*') > + WHERE (g='qponmlk' AND f LIKE 'qrstu%') > OR b=693 > OR a=73 > OR b=627 > @@ -31243,7 +31243,7 @@ test:do_test( > OR b=267 > OR b=872 > OR a=27 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.834.1> > @@ -31256,7 +31256,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'qrstu*') > + WHERE (g='qponmlk' AND f LIKE 'qrstu%') > OR b=693 > OR a=73 > OR b=627 > @@ -31266,7 +31266,7 @@ test:do_test( > OR b=267 > OR b=872 > OR a=27 > - OR (g='gfedcba' AND f GLOB 'klmno*') > + OR (g='gfedcba' AND f LIKE 'klmno%') > ]]) > end, { > -- <where7-2.834.2> > @@ -31351,15 +31351,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=66 > OR b=322 > OR b=465 > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > OR ((a BETWEEN 77 AND 79) AND a!=78) > - OR (g='lkjihgf' AND f GLOB 'mnopq*') > + OR (g='lkjihgf' AND f LIKE 'mnopq%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR b=454 > ]]) > @@ -31374,15 +31374,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') > + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') > OR b=66 > OR b=322 > OR b=465 > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) > OR ((a BETWEEN 77 AND 79) AND a!=78) > - OR (g='lkjihgf' AND f GLOB 'mnopq*') > + OR (g='lkjihgf' AND f LIKE 'mnopq%') > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR b=454 > ]]) > @@ -31402,7 +31402,7 @@ test:do_test( > OR c=15015 > OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) > OR ((a BETWEEN 3 AND 5) AND a!=4) > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR b=803 > ]]) > end, { > @@ -31421,7 +31421,7 @@ test:do_test( > OR c=15015 > OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) > OR ((a BETWEEN 3 AND 5) AND a!=4) > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR b=803 > ]]) > end, { > @@ -31436,12 +31436,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1100 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 72 AND 74) AND a!=73) > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR a=75 > OR a=45 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR a=27 > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR b=850 > @@ -31459,12 +31459,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1100 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR ((a BETWEEN 72 AND 74) AND a!=73) > OR ((a BETWEEN 68 AND 70) AND a!=69) > OR a=75 > OR a=45 > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR a=27 > OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) > OR b=850 > @@ -31484,7 +31484,7 @@ test:do_test( > WHERE b=751 > OR ((a BETWEEN 96 AND 98) AND a!=97) > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR a=89 > OR ((a BETWEEN 36 AND 38) AND a!=37) > @@ -31503,7 +31503,7 @@ test:do_test( > WHERE b=751 > OR ((a BETWEEN 96 AND 98) AND a!=97) > OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR a=89 > OR ((a BETWEEN 36 AND 38) AND a!=37) > @@ -31519,10 +31519,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + WHERE (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR a=1 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.841.1> > @@ -31535,10 +31535,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='wvutsrq' AND f GLOB 'jklmn*') > - OR (g='yxwvuts' AND f GLOB 'bcdef*') > + WHERE (g='wvutsrq' AND f LIKE 'jklmn%') > + OR (g='yxwvuts' AND f LIKE 'bcdef%') > OR a=1 > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > ]]) > end, { > -- <where7-2.841.2> > @@ -31557,9 +31557,9 @@ test:do_test( > OR c=8008 > OR ((a BETWEEN 41 AND 43) AND a!=42) > OR b=960 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > OR b=443 > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.842.1> > @@ -31578,9 +31578,9 @@ test:do_test( > OR c=8008 > OR ((a BETWEEN 41 AND 43) AND a!=42) > OR b=960 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > OR b=443 > - OR (g='rqponml' AND f GLOB 'ijklm*') > + OR (g='rqponml' AND f LIKE 'ijklm%') > ]]) > end, { > -- <where7-2.842.2> > @@ -31624,14 +31624,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=685 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR b=520 > OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) > OR a=53 > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR b=938 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR c=25025 > ]]) > end, { > @@ -31646,14 +31646,14 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=685 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) > OR b=520 > OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) > OR a=53 > OR ((a BETWEEN 91 AND 93) AND a!=92) > OR b=938 > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR c=25025 > ]]) > end, { > @@ -31700,7 +31700,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='abcdefghi' > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.846.1> > @@ -31714,7 +31714,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='abcdefghi' > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.846.2> > @@ -31802,7 +31802,7 @@ test:do_test( > WHERE b=209 > OR b=806 > OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.849.1> > @@ -31818,7 +31818,7 @@ test:do_test( > WHERE b=209 > OR b=806 > OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'rstuv*') > + OR (g='vutsrqp' AND f LIKE 'rstuv%') > ]]) > end, { > -- <where7-2.849.2> > @@ -31863,10 +31863,10 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=4.0 AND d<5.0 AND d IS NOT NULL) > OR a=45 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR a=69 > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.851.1> > @@ -31881,10 +31881,10 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=4.0 AND d<5.0 AND d IS NOT NULL) > OR a=45 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR a=69 > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.851.2> > @@ -31899,9 +31899,9 @@ test:do_test( > SELECT a FROM t2 > WHERE c=9009 > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.852.1> > @@ -31916,9 +31916,9 @@ test:do_test( > SELECT a FROM t3 > WHERE c=9009 > OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'pqrst*') > + OR (g='lkjihgf' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.852.2> > @@ -31937,7 +31937,7 @@ test:do_test( > OR a=47 > OR c=24024 > OR a=27 > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > ]]) > end, { > @@ -31957,7 +31957,7 @@ test:do_test( > OR a=47 > OR c=24024 > OR a=27 > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > ]]) > end, { > @@ -31971,9 +31971,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR a=19 > ]]) > end, { > @@ -31987,9 +31987,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR a=19 > ]]) > end, { > @@ -32006,7 +32006,7 @@ test:do_test( > WHERE c=12012 > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > OR ((a BETWEEN 16 AND 18) AND a!=17) > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.855.1> > @@ -32022,7 +32022,7 @@ test:do_test( > WHERE c=12012 > OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) > OR ((a BETWEEN 16 AND 18) AND a!=17) > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.855.2> > @@ -32036,7 +32036,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 38 AND 40) AND a!=39) > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR b=429 > OR f='jklmnopqr' > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > @@ -32054,7 +32054,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 38 AND 40) AND a!=39) > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR b=429 > OR f='jklmnopqr' > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > @@ -32071,7 +32071,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') > + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') > OR b=190 > ]]) > end, { > @@ -32085,7 +32085,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') > + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') > OR b=190 > ]]) > end, { > @@ -32099,7 +32099,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'yzabc*') > + WHERE (g='jihgfed' AND f LIKE 'yzabc%') > OR b=674 > OR b=289 > ]]) > @@ -32114,7 +32114,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'yzabc*') > + WHERE (g='jihgfed' AND f LIKE 'yzabc%') > OR b=674 > OR b=289 > ]]) > @@ -32131,8 +32131,8 @@ test:do_test( > SELECT a FROM t2 > WHERE a=17 > OR b=539 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.859.1> > @@ -32147,8 +32147,8 @@ test:do_test( > SELECT a FROM t3 > WHERE a=17 > OR b=539 > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > - OR (g='utsrqpo' AND f GLOB 'vwxyz*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > + OR (g='utsrqpo' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.859.2> > @@ -32259,12 +32259,12 @@ test:do_test( > SELECT a FROM t2 > WHERE f='ghijklmno' > OR a=26 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=81 > OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) > OR ((a BETWEEN 28 AND 30) AND a!=29) > OR b=275 > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR b=311 > OR b=894 > OR b=872 > @@ -32282,12 +32282,12 @@ test:do_test( > SELECT a FROM t3 > WHERE f='ghijklmno' > OR a=26 > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR a=81 > OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) > OR ((a BETWEEN 28 AND 30) AND a!=29) > OR b=275 > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR b=311 > OR b=894 > OR b=872 > @@ -32376,12 +32376,12 @@ test:do_test( > WHERE a=44 > OR b=55 > OR a=30 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR 1000000<b > OR a=24 > OR b=1089 > OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.866.1> > @@ -32397,12 +32397,12 @@ test:do_test( > WHERE a=44 > OR b=55 > OR a=30 > - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR 1000000<b > OR a=24 > OR b=1089 > OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.866.2> > @@ -32487,14 +32487,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='edcbazy' AND f GLOB 'uvwxy*') > + WHERE (g='edcbazy' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 25 AND 27) AND a!=26) > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR f='xyzabcdef' > OR b=517 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.869.1> > @@ -32507,14 +32507,14 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='edcbazy' AND f GLOB 'uvwxy*') > + WHERE (g='edcbazy' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 25 AND 27) AND a!=26) > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR ((a BETWEEN 89 AND 91) AND a!=90) > OR f='xyzabcdef' > OR b=517 > - OR (g='jihgfed' AND f GLOB 'yzabc*') > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.869.2> > @@ -32555,9 +32555,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') > + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') > OR b=762 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR a=25 > OR ((a BETWEEN 65 AND 67) AND a!=66) > ]]) > @@ -32572,9 +32572,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') > + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') > OR b=762 > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR a=25 > OR ((a BETWEEN 65 AND 67) AND a!=66) > ]]) > @@ -32594,9 +32594,9 @@ test:do_test( > OR b=839 > OR f='defghijkl' > OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR b=498 > ]]) > end, { > @@ -32615,9 +32615,9 @@ test:do_test( > OR b=839 > OR f='defghijkl' > OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR b=498 > ]]) > end, { > @@ -32667,7 +32667,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') > + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=256 > OR b=586 > OR a=74 > @@ -32686,7 +32686,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') > + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') > OR b=256 > OR b=586 > OR a=74 > @@ -32739,14 +32739,14 @@ test:do_test( > SELECT a FROM t2 > WHERE b=308 > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR a=83 > OR c=23023 > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR a=58 > OR ((a BETWEEN 17 AND 19) AND a!=18) > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR c=4004 > ]]) > end, { > @@ -32762,14 +32762,14 @@ test:do_test( > SELECT a FROM t3 > WHERE b=308 > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > OR a=83 > OR c=23023 > OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) > - OR (g='lkjihgf' AND f GLOB 'nopqr*') > + OR (g='lkjihgf' AND f LIKE 'nopqr%') > OR a=58 > OR ((a BETWEEN 17 AND 19) AND a!=18) > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR c=4004 > ]]) > end, { > @@ -32789,7 +32789,7 @@ test:do_test( > OR b=762 > OR b=157 > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.877.1> > @@ -32808,7 +32808,7 @@ test:do_test( > OR b=762 > OR b=157 > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > ]]) > end, { > -- <where7-2.877.2> > @@ -32825,12 +32825,12 @@ test:do_test( > OR a=1 > OR ((a BETWEEN 93 AND 95) AND a!=94) > OR b=278 > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR f='qrstuvwxy' > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR ((a BETWEEN 82 AND 84) AND a!=83) > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > ]]) > end, { > @@ -32848,12 +32848,12 @@ test:do_test( > OR a=1 > OR ((a BETWEEN 93 AND 95) AND a!=94) > OR b=278 > - OR (g='xwvutsr' AND f GLOB 'defgh*') > + OR (g='xwvutsr' AND f LIKE 'defgh%') > OR f='qrstuvwxy' > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR ((a BETWEEN 82 AND 84) AND a!=83) > - OR (g='edcbazy' AND f GLOB 'uvwxy*') > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'uvwxy%') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > ]]) > end, { > @@ -32872,9 +32872,9 @@ test:do_test( > OR ((a BETWEEN 41 AND 43) AND a!=42) > OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) > OR b=759 > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR ((a BETWEEN 45 AND 47) AND a!=46) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.879.1> > @@ -32892,9 +32892,9 @@ test:do_test( > OR ((a BETWEEN 41 AND 43) AND a!=42) > OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) > OR b=759 > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR ((a BETWEEN 45 AND 47) AND a!=46) > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > ]]) > end, { > -- <where7-2.879.2> > @@ -32916,7 +32916,7 @@ test:do_test( > OR b=44 > OR f='zabcdefgh' > OR b=979 > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.880.1> > @@ -32938,7 +32938,7 @@ test:do_test( > OR b=44 > OR f='zabcdefgh' > OR b=979 > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.880.2> > @@ -32988,7 +32988,7 @@ test:do_test( > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR a=90 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR f='nopqrstuv' > ]]) > end, { > @@ -33011,7 +33011,7 @@ test:do_test( > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR a=90 > OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > OR f='nopqrstuv' > ]]) > end, { > @@ -33061,7 +33061,7 @@ test:do_test( > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR d<0.0 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR c=9009 > ]]) > end, { > @@ -33083,7 +33083,7 @@ test:do_test( > OR ((a BETWEEN 4 AND 6) AND a!=5) > OR ((a BETWEEN 69 AND 71) AND a!=70) > OR d<0.0 > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR c=9009 > ]]) > end, { > @@ -33097,7 +33097,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR b=814 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > ]]) > @@ -33112,7 +33112,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') > + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') > OR b=814 > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > ]]) > @@ -33127,7 +33127,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') > + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') > OR b=333 > OR b=275 > ]]) > @@ -33142,7 +33142,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') > + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') > OR b=333 > OR b=275 > ]]) > @@ -33157,7 +33157,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (g='ihgfedc' AND f LIKE 'efghi%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > ]]) > end, { > @@ -33171,7 +33171,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='ihgfedc' AND f GLOB 'efghi*') > + WHERE (g='ihgfedc' AND f LIKE 'efghi%') > OR ((a BETWEEN 33 AND 35) AND a!=34) > ]]) > end, { > @@ -33187,7 +33187,7 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 11 AND 13) AND a!=12) > OR b=253 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=286 > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > ]]) > @@ -33204,7 +33204,7 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 11 AND 13) AND a!=12) > OR b=253 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=286 > OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) > ]]) > @@ -33220,10 +33220,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=15.0 AND d<16.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 26 AND 28) AND a!=27) > OR b=421 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR f='ijklmnopq' > OR b=891 > OR b=1056 > @@ -33240,10 +33240,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=15.0 AND d<16.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR ((a BETWEEN 26 AND 28) AND a!=27) > OR b=421 > - OR (g='xwvutsr' AND f GLOB 'fghij*') > + OR (g='xwvutsr' AND f LIKE 'fghij%') > OR f='ijklmnopq' > OR b=891 > OR b=1056 > @@ -33260,10 +33260,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='fghijklmn' > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR b=671 > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.890.1> > @@ -33277,10 +33277,10 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='fghijklmn' > - OR (g='qponmlk' AND f GLOB 'nopqr*') > - OR (g='edcbazy' AND f GLOB 'vwxyz*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > + OR (g='edcbazy' AND f LIKE 'vwxyz%') > OR b=671 > - OR (g='xwvutsr' AND f GLOB 'hijkl*') > + OR (g='xwvutsr' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.890.2> > @@ -33293,10 +33293,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='lkjihgf' AND f GLOB 'lmnop*') > - OR (g='srqponm' AND f GLOB 'fghij*') > + WHERE (g='lkjihgf' AND f LIKE 'lmnop%') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR ((a BETWEEN 4 AND 6) AND a!=5) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > ]]) > end, { > @@ -33310,10 +33310,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='lkjihgf' AND f GLOB 'lmnop*') > - OR (g='srqponm' AND f GLOB 'fghij*') > + WHERE (g='lkjihgf' AND f LIKE 'lmnop%') > + OR (g='srqponm' AND f LIKE 'fghij%') > OR ((a BETWEEN 4 AND 6) AND a!=5) > - OR (g='kjihgfe' AND f GLOB 'qrstu*') > + OR (g='kjihgfe' AND f LIKE 'qrstu%') > OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) > ]]) > end, { > @@ -33439,11 +33439,11 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 67 AND 69) AND a!=68) > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR a=46 > OR b=187 > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.895.1> > @@ -33458,11 +33458,11 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 67 AND 69) AND a!=68) > OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR a=46 > OR b=187 > OR ((a BETWEEN 69 AND 71) AND a!=70) > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > ]]) > end, { > -- <where7-2.895.2> > @@ -33522,7 +33522,7 @@ test:do_test( > OR b=729 > OR ((a BETWEEN 81 AND 83) AND a!=82) > OR a=58 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=608 > ]]) > end, { > @@ -33543,7 +33543,7 @@ test:do_test( > OR b=729 > OR ((a BETWEEN 81 AND 83) AND a!=82) > OR a=58 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR b=608 > ]]) > end, { > @@ -33561,7 +33561,7 @@ test:do_test( > OR f='efghijklm' > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > OR a=26 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > ]]) > end, { > -- <where7-2.898.1> > @@ -33578,7 +33578,7 @@ test:do_test( > OR f='efghijklm' > OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) > OR a=26 > - OR (f GLOB '?efgh*' AND f GLOB 'defg*') > + OR (f LIKE '_efgh%' AND f LIKE 'defg%') > ]]) > end, { > -- <where7-2.898.2> > @@ -33592,11 +33592,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE a=59 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR a=7 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=762 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > ]]) > end, { > -- <where7-2.899.1> > @@ -33610,11 +33610,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE a=59 > - OR (g='wvutsrq' AND f GLOB 'mnopq*') > + OR (g='wvutsrq' AND f LIKE 'mnopq%') > OR a=7 > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=762 > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > ]]) > end, { > -- <where7-2.899.2> > @@ -33627,7 +33627,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='gfedcba' AND f GLOB 'nopqr*') > + WHERE (g='gfedcba' AND f LIKE 'nopqr%') > OR b=539 > OR b=399 > ]]) > @@ -33642,7 +33642,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='gfedcba' AND f GLOB 'nopqr*') > + WHERE (g='gfedcba' AND f LIKE 'nopqr%') > OR b=539 > OR b=399 > ]]) > @@ -33687,10 +33687,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (g='rqponml' AND f GLOB 'klmno*') > + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR f='lmnopqrst' > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.902.1> > @@ -33703,10 +33703,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') > - OR (g='rqponml' AND f GLOB 'klmno*') > + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') > + OR (g='rqponml' AND f LIKE 'klmno%') > OR f='lmnopqrst' > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.902.2> > @@ -33751,14 +33751,14 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1067 > OR ((a BETWEEN 53 AND 55) AND a!=54) > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR b=520 > OR b=399 > OR b=209 > OR a=68 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.904.1> > @@ -33773,14 +33773,14 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1067 > OR ((a BETWEEN 53 AND 55) AND a!=54) > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR b=520 > OR b=399 > OR b=209 > OR a=68 > - OR (g='fedcbaz' AND f GLOB 'qrstu*') > + OR (g='fedcbaz' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.904.2> > @@ -33798,7 +33798,7 @@ test:do_test( > OR b=55 > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > OR ((a BETWEEN 20 AND 22) AND a!=21) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR ((a BETWEEN 0 AND 2) AND a!=1) > OR ((a BETWEEN 21 AND 23) AND a!=22) > ]]) > @@ -33818,7 +33818,7 @@ test:do_test( > OR b=55 > OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) > OR ((a BETWEEN 20 AND 22) AND a!=21) > - OR (g='rqponml' AND f GLOB 'lmnop*') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR ((a BETWEEN 0 AND 2) AND a!=1) > OR ((a BETWEEN 21 AND 23) AND a!=22) > ]]) > @@ -33837,7 +33837,7 @@ test:do_test( > OR a=2 > OR b=784 > OR ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR b=850 > ]]) > end, { > @@ -33855,7 +33855,7 @@ test:do_test( > OR a=2 > OR b=784 > OR ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='ihgfedc' AND f GLOB 'defgh*') > + OR (g='ihgfedc' AND f LIKE 'defgh%') > OR b=850 > ]]) > end, { > @@ -33903,17 +33903,17 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > OR a=18 > OR a=30 > OR ((a BETWEEN 9 AND 11) AND a!=10) > OR ((a BETWEEN 84 AND 86) AND a!=85) > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR b=792 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR ((a BETWEEN 19 AND 21) AND a!=20) > OR c=26026 > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.908.1> > @@ -33926,17 +33926,17 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'zabcd*') > + WHERE (g='jihgfed' AND f LIKE 'zabcd%') > OR a=18 > OR a=30 > OR ((a BETWEEN 9 AND 11) AND a!=10) > OR ((a BETWEEN 84 AND 86) AND a!=85) > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR b=792 > - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') > + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') > OR ((a BETWEEN 19 AND 21) AND a!=20) > OR c=26026 > - OR (g='rqponml' AND f GLOB 'hijkl*') > + OR (g='rqponml' AND f LIKE 'hijkl%') > ]]) > end, { > -- <where7-2.908.2> > @@ -33949,11 +33949,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='vutsrqp' AND f GLOB 'qrstu*') > + WHERE (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=968 > OR ((a BETWEEN 63 AND 65) AND a!=64) > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > OR a=78 > OR ((a BETWEEN 90 AND 92) AND a!=91) > @@ -33969,11 +33969,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='vutsrqp' AND f GLOB 'qrstu*') > + WHERE (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=968 > OR ((a BETWEEN 63 AND 65) AND a!=64) > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) > OR a=78 > OR ((a BETWEEN 90 AND 92) AND a!=91) > @@ -34096,7 +34096,7 @@ test:do_test( > OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR a=81 > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR f='mnopqrstu' > ]]) > end, { > @@ -34117,7 +34117,7 @@ test:do_test( > OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR a=81 > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR f='mnopqrstu' > ]]) > end, { > @@ -34177,7 +34177,7 @@ test:do_test( > OR ((a BETWEEN 20 AND 22) AND a!=21) > OR ((a BETWEEN 27 AND 29) AND a!=28) > OR b=319 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR ((a BETWEEN 14 AND 16) AND a!=15) > ]]) > end, { > @@ -34197,7 +34197,7 @@ test:do_test( > OR ((a BETWEEN 20 AND 22) AND a!=21) > OR ((a BETWEEN 27 AND 29) AND a!=28) > OR b=319 > - OR (g='qponmlk' AND f GLOB 'opqrs*') > + OR (g='qponmlk' AND f LIKE 'opqrs%') > OR ((a BETWEEN 14 AND 16) AND a!=15) > ]]) > end, { > @@ -34214,7 +34214,7 @@ test:do_test( > WHERE b=179 > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR a=46 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > OR a=25 > OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) > @@ -34237,7 +34237,7 @@ test:do_test( > WHERE b=179 > OR ((a BETWEEN 95 AND 97) AND a!=96) > OR a=46 > - OR (g='kjihgfe' AND f GLOB 'uvwxy*') > + OR (g='kjihgfe' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 53 AND 55) AND a!=54) > OR a=25 > OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) > @@ -34257,7 +34257,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'fghij*') > + WHERE (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) > ]]) > end, { > @@ -34271,7 +34271,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'fghij*') > + WHERE (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) > ]]) > end, { > @@ -34286,7 +34286,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=748 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR a=32 > OR b=110 > OR b=297 > @@ -34308,7 +34308,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=748 > - OR (g='utsrqpo' AND f GLOB 'wxyza*') > + OR (g='utsrqpo' AND f LIKE 'wxyza%') > OR a=32 > OR b=110 > OR b=297 > @@ -34332,13 +34332,13 @@ test:do_test( > WHERE (d>=33.0 AND d<34.0 AND d IS NOT NULL) > OR b=905 > OR a=97 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR c=27027 > OR f='bcdefghij' > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > OR ((a BETWEEN 38 AND 40) AND a!=39) > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > ]]) > end, { > -- <where7-2.919.1> > @@ -34354,13 +34354,13 @@ test:do_test( > WHERE (d>=33.0 AND d<34.0 AND d IS NOT NULL) > OR b=905 > OR a=97 > - OR (g='hgfedcb' AND f GLOB 'hijkl*') > + OR (g='hgfedcb' AND f LIKE 'hijkl%') > OR c=27027 > OR f='bcdefghij' > OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) > OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) > OR ((a BETWEEN 38 AND 40) AND a!=39) > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > ]]) > end, { > -- <where7-2.919.2> > @@ -34403,13 +34403,13 @@ test:do_test( > SELECT a FROM t2 > WHERE b=594 > OR b=80 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=421 > OR b=418 > OR b=828 > OR a=88 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > ]]) > end, { > @@ -34425,13 +34425,13 @@ test:do_test( > SELECT a FROM t3 > WHERE b=594 > OR b=80 > - OR (g='tsrqpon' AND f GLOB 'bcdef*') > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='tsrqpon' AND f LIKE 'bcdef%') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=421 > OR b=418 > OR b=828 > OR a=88 > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) > ]]) > end, { > @@ -34446,11 +34446,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=17.0 AND d<18.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR b=366 > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR c=16016 > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR c=9009 > ]]) > end, { > @@ -34465,11 +34465,11 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=17.0 AND d<18.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'xyzab*') > + OR (g='jihgfed' AND f LIKE 'xyzab%') > OR b=366 > OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) > OR c=16016 > - OR (g='edcbazy' AND f GLOB 'wxyza*') > + OR (g='edcbazy' AND f LIKE 'wxyza%') > OR c=9009 > ]]) > end, { > @@ -34485,7 +34485,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=33 > OR f='qrstuvwxy' > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR b=858 > ]]) > end, { > @@ -34501,7 +34501,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=33 > OR f='qrstuvwxy' > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR b=858 > ]]) > end, { > @@ -34516,7 +34516,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=861 > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > OR b=682 > OR ((a BETWEEN 93 AND 95) AND a!=94) > @@ -34534,7 +34534,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=861 > - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') > + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') > OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) > OR b=682 > OR ((a BETWEEN 93 AND 95) AND a!=94) > @@ -34584,7 +34584,7 @@ test:do_test( > WHERE f='abcdefghi' > OR c=9009 > OR b=663 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR b=91 > ]]) > end, { > @@ -34601,7 +34601,7 @@ test:do_test( > WHERE f='abcdefghi' > OR c=9009 > OR b=663 > - OR (g='wvutsrq' AND f GLOB 'klmno*') > + OR (g='wvutsrq' AND f LIKE 'klmno%') > OR b=91 > ]]) > end, { > @@ -34615,15 +34615,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='kjihgfe' AND f GLOB 'qrstu*') > + WHERE (g='kjihgfe' AND f LIKE 'qrstu%') > OR ((a BETWEEN 29 AND 31) AND a!=30) > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=1015 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR b=916 > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > OR b=69 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.927.1> > @@ -34636,15 +34636,15 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='kjihgfe' AND f GLOB 'qrstu*') > + WHERE (g='kjihgfe' AND f LIKE 'qrstu%') > OR ((a BETWEEN 29 AND 31) AND a!=30) > - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') > + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') > OR b=1015 > - OR (g='qponmlk' AND f GLOB 'qrstu*') > + OR (g='qponmlk' AND f LIKE 'qrstu%') > OR b=916 > OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) > OR b=69 > - OR (g='hgfedcb' AND f GLOB 'fghij*') > + OR (g='hgfedcb' AND f LIKE 'fghij%') > ]]) > end, { > -- <where7-2.927.2> > @@ -34664,7 +34664,7 @@ test:do_test( > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR a=63 > OR f='mnopqrstu' > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR b=495 > OR a=35 > OR a=22 > @@ -34687,7 +34687,7 @@ test:do_test( > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR a=63 > OR f='mnopqrstu' > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR b=495 > OR a=35 > OR a=22 > @@ -34704,7 +34704,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=869 > - OR (g='rqponml' AND f GLOB 'jklmn*') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=289 > OR a=62 > OR ((a BETWEEN 9 AND 11) AND a!=10) > @@ -34721,7 +34721,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=869 > - OR (g='rqponml' AND f GLOB 'jklmn*') > + OR (g='rqponml' AND f LIKE 'jklmn%') > OR b=289 > OR a=62 > OR ((a BETWEEN 9 AND 11) AND a!=10) > @@ -34774,7 +34774,7 @@ test:do_test( > WHERE ((a BETWEEN 57 AND 59) AND a!=58) > OR b=1078 > OR ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR b=429 > ]]) > @@ -34792,7 +34792,7 @@ test:do_test( > WHERE ((a BETWEEN 57 AND 59) AND a!=58) > OR b=1078 > OR ((a BETWEEN 21 AND 23) AND a!=22) > - OR (g='mlkjihg' AND f GLOB 'ijklm*') > + OR (g='mlkjihg' AND f LIKE 'ijklm%') > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > OR b=429 > ]]) > @@ -34876,7 +34876,7 @@ test:do_test( > WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR b=858 > OR a=58 > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR c=21021 > OR ((a BETWEEN 45 AND 47) AND a!=46) > OR b=616 > @@ -34897,7 +34897,7 @@ test:do_test( > WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) > OR b=858 > OR a=58 > - OR (g='onmlkji' AND f GLOB 'xyzab*') > + OR (g='onmlkji' AND f LIKE 'xyzab%') > OR c=21021 > OR ((a BETWEEN 45 AND 47) AND a!=46) > OR b=616 > @@ -34917,7 +34917,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=682 > OR b=99 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR b=531 > ]]) > end, { > @@ -34933,7 +34933,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=682 > OR b=99 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR b=531 > ]]) > end, { > @@ -34948,13 +34948,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 56 AND 58) AND a!=57) > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR b=726 > OR a=79 > OR a=47 > OR b=212 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR c=8008 > ]]) > end, { > @@ -34969,13 +34969,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 56 AND 58) AND a!=57) > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') > OR b=726 > OR a=79 > OR a=47 > OR b=212 > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > OR c=8008 > ]]) > end, { > @@ -34993,7 +34993,7 @@ test:do_test( > OR ((a BETWEEN 60 AND 62) AND a!=61) > OR a=5 > OR b=33 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > OR a=59 > OR b=44 > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > @@ -35014,7 +35014,7 @@ test:do_test( > OR ((a BETWEEN 60 AND 62) AND a!=61) > OR a=5 > OR b=33 > - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') > + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') > OR a=59 > OR b=44 > OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) > @@ -35213,8 +35213,8 @@ test:do_test( > SELECT a FROM t2 > WHERE a=96 > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR ((a BETWEEN 37 AND 39) AND a!=38) > OR a=85 > OR ((a BETWEEN 10 AND 12) AND a!=11) > @@ -35236,8 +35236,8 @@ test:do_test( > SELECT a FROM t3 > WHERE a=96 > OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'vwxyz*') > - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') > + OR (g='ponmlkj' AND f LIKE 'vwxyz%') > + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') > OR ((a BETWEEN 37 AND 39) AND a!=38) > OR a=85 > OR ((a BETWEEN 10 AND 12) AND a!=11) > @@ -35299,17 +35299,17 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') > + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') > OR a=60 > OR a=4 > OR b=520 > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR a=44 > OR a=36 > OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=715 > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.945.1> > @@ -35322,17 +35322,17 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') > + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') > OR a=60 > OR a=4 > OR b=520 > - OR (g='ihgfedc' AND f GLOB 'bcdef*') > + OR (g='ihgfedc' AND f LIKE 'bcdef%') > OR a=44 > OR a=36 > OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=715 > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > ]]) > end, { > -- <where7-2.945.2> > @@ -35349,10 +35349,10 @@ test:do_test( > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > OR a=24 > OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > ]]) > end, { > -- <where7-2.946.1> > @@ -35369,10 +35369,10 @@ test:do_test( > OR ((a BETWEEN 56 AND 58) AND a!=57) > OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) > OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'yzabc*') > + OR (g='jihgfed' AND f LIKE 'yzabc%') > OR a=24 > OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) > - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') > + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') > ]]) > end, { > -- <where7-2.946.2> > @@ -35385,12 +35385,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') > + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=132 > OR f='ghijklmno' > OR b=740 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=1059 > ]]) > end, { > @@ -35404,12 +35404,12 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') > + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') > OR b=132 > OR f='ghijklmno' > OR b=740 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=1059 > ]]) > end, { > @@ -35459,10 +35459,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='nmlkjih' AND f GLOB 'cdefg*') > + WHERE (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=1026 > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'lmnop*') > + OR (g='wvutsrq' AND f LIKE 'lmnop%') > OR b=355 > OR b=641 > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > @@ -35478,10 +35478,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='nmlkjih' AND f GLOB 'cdefg*') > + WHERE (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=1026 > OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) > - OR (g='wvutsrq' AND f GLOB 'lmnop*') > + OR (g='wvutsrq' AND f LIKE 'lmnop%') > OR b=355 > OR b=641 > OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) > @@ -35506,7 +35506,7 @@ test:do_test( > OR f='opqrstuvw' > OR a=41 > OR a=83 > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=751 > ]]) > end, { > @@ -35529,7 +35529,7 @@ test:do_test( > OR f='opqrstuvw' > OR a=41 > OR a=83 > - OR (g='nmlkjih' AND f GLOB 'cdefg*') > + OR (g='nmlkjih' AND f LIKE 'cdefg%') > OR b=751 > ]]) > end, { > @@ -35579,7 +35579,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'qrstu*') > + WHERE (g='qponmlk' AND f LIKE 'qrstu%') > OR f='bcdefghij' > OR f='hijklmnop' > OR a=65 > @@ -35602,7 +35602,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'qrstu*') > + WHERE (g='qponmlk' AND f LIKE 'qrstu%') > OR f='bcdefghij' > OR f='hijklmnop' > OR a=65 > @@ -35625,11 +35625,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') > + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR ((a BETWEEN 79 AND 81) AND a!=80) > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR b=1100 > OR c=6006 > OR c=4004 > @@ -35647,11 +35647,11 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') > + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR ((a BETWEEN 79 AND 81) AND a!=80) > - OR (g='kjihgfe' AND f GLOB 'stuvw*') > - OR (g='qponmlk' AND f GLOB 'pqrst*') > + OR (g='kjihgfe' AND f LIKE 'stuvw%') > + OR (g='qponmlk' AND f LIKE 'pqrst%') > OR b=1100 > OR c=6006 > OR c=4004 > @@ -35728,7 +35728,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE (d>=42.0 AND d<43.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR ((a BETWEEN 21 AND 23) AND a!=22) > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=737 > @@ -35745,7 +35745,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE (d>=42.0 AND d<43.0 AND d IS NOT NULL) > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR ((a BETWEEN 21 AND 23) AND a!=22) > OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) > OR b=737 > @@ -35761,7 +35761,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='rqponml' AND f GLOB 'klmno*') > + WHERE (g='rqponml' AND f LIKE 'klmno%') > OR ((a BETWEEN 5 AND 7) AND a!=6) > ]]) > end, { > @@ -35775,7 +35775,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='rqponml' AND f GLOB 'klmno*') > + WHERE (g='rqponml' AND f LIKE 'klmno%') > OR ((a BETWEEN 5 AND 7) AND a!=6) > ]]) > end, { > @@ -35789,7 +35789,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR c=32032 > OR f='opqrstuvw' > OR ((a BETWEEN 66 AND 68) AND a!=67) > @@ -35807,7 +35807,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') > + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') > OR c=32032 > OR f='opqrstuvw' > OR ((a BETWEEN 66 AND 68) AND a!=67) > @@ -35875,11 +35875,11 @@ test:do_test( > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR ((a BETWEEN 86 AND 88) AND a!=87) > OR b=146 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR ((a BETWEEN 73 AND 75) AND a!=74) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 60 AND 62) AND a!=61) > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=704 > ]]) > end, { > @@ -35897,11 +35897,11 @@ test:do_test( > OR ((a BETWEEN 8 AND 10) AND a!=9) > OR ((a BETWEEN 86 AND 88) AND a!=87) > OR b=146 > - OR (g='ponmlkj' AND f GLOB 'rstuv*') > + OR (g='ponmlkj' AND f LIKE 'rstuv%') > OR ((a BETWEEN 73 AND 75) AND a!=74) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > OR ((a BETWEEN 60 AND 62) AND a!=61) > - OR (g='ihgfedc' AND f GLOB 'efghi*') > + OR (g='ihgfedc' AND f LIKE 'efghi%') > OR b=704 > ]]) > end, { > @@ -35950,7 +35950,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE c=17017 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=971 > OR a=37 > OR a=7 > @@ -35970,7 +35970,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE c=17017 > - OR (g='qponmlk' AND f GLOB 'mnopq*') > + OR (g='qponmlk' AND f LIKE 'mnopq%') > OR b=971 > OR a=37 > OR a=7 > @@ -35990,7 +35990,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE f='tuvwxyzab' > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > ]]) > end, { > -- <where7-2.963.1> > @@ -36004,7 +36004,7 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE f='tuvwxyzab' > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > ]]) > end, { > -- <where7-2.963.2> > @@ -36019,7 +36019,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=638 > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR b=165 > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR f='stuvwxyza' > @@ -36041,7 +36041,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=638 > OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) > - OR (g='gfedcba' AND f GLOB 'lmnop*') > + OR (g='gfedcba' AND f LIKE 'lmnop%') > OR b=165 > OR ((a BETWEEN 10 AND 12) AND a!=11) > OR f='stuvwxyza' > @@ -36067,7 +36067,7 @@ test:do_test( > OR a=93 > OR b=858 > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.965.1> > @@ -36086,7 +36086,7 @@ test:do_test( > OR a=93 > OR b=858 > OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) > - OR (g='jihgfed' AND f GLOB 'vwxyz*') > + OR (g='jihgfed' AND f LIKE 'vwxyz%') > ]]) > end, { > -- <where7-2.965.2> > @@ -36157,7 +36157,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='qponmlk' AND f GLOB 'mnopq*') > + WHERE (g='qponmlk' AND f LIKE 'mnopq%') > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR a=5 > OR b=396 > @@ -36174,7 +36174,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='qponmlk' AND f GLOB 'mnopq*') > + WHERE (g='qponmlk' AND f LIKE 'mnopq%') > OR ((a BETWEEN 24 AND 26) AND a!=25) > OR a=5 > OR b=396 > @@ -36191,7 +36191,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=748 > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR ((a BETWEEN 69 AND 71) AND a!=70) > @@ -36210,7 +36210,7 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > OR b=748 > OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) > OR ((a BETWEEN 69 AND 71) AND a!=70) > @@ -36231,7 +36231,7 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) > OR ((a BETWEEN 8 AND 10) AND a!=9) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR a=50 > OR a=46 > OR ((a BETWEEN 38 AND 40) AND a!=39) > @@ -36249,7 +36249,7 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) > OR ((a BETWEEN 8 AND 10) AND a!=9) > - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') > + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') > OR a=50 > OR a=46 > OR ((a BETWEEN 38 AND 40) AND a!=39) > @@ -36312,7 +36312,7 @@ test:do_test( > OR c=16016 > OR b=1078 > OR b=960 > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > ]]) > end, { > -- <where7-2.972.1> > @@ -36330,7 +36330,7 @@ test:do_test( > OR c=16016 > OR b=1078 > OR b=960 > - OR (g='hgfedcb' AND f GLOB 'jklmn*') > + OR (g='hgfedcb' AND f LIKE 'jklmn%') > ]]) > end, { > -- <where7-2.972.2> > @@ -36345,7 +36345,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1081 > OR ((a BETWEEN 19 AND 21) AND a!=20) > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 73 AND 75) AND a!=74) > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR a=6 > @@ -36363,7 +36363,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1081 > OR ((a BETWEEN 19 AND 21) AND a!=20) > - OR (g='ponmlkj' AND f GLOB 'tuvwx*') > + OR (g='ponmlkj' AND f LIKE 'tuvwx%') > OR ((a BETWEEN 73 AND 75) AND a!=74) > OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) > OR a=6 > @@ -36379,10 +36379,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR a=92 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR f='fghijklmn' > OR a=100 > OR b=209 > @@ -36402,10 +36402,10 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') > - OR (g='rqponml' AND f GLOB 'lmnop*') > + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') > + OR (g='rqponml' AND f LIKE 'lmnop%') > OR a=92 > - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') > + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') > OR f='fghijklmn' > OR a=100 > OR b=209 > @@ -36458,13 +36458,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE ((a BETWEEN 51 AND 53) AND a!=52) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=91 > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR b=77 > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.976.1> > @@ -36478,13 +36478,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE ((a BETWEEN 51 AND 53) AND a!=52) > - OR (g='utsrqpo' AND f GLOB 'uvwxy*') > - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') > + OR (g='utsrqpo' AND f LIKE 'uvwxy%') > + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR b=91 > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR b=77 > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > - OR (g='vutsrqp' AND f GLOB 'pqrst*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > + OR (g='vutsrqp' AND f LIKE 'pqrst%') > ]]) > end, { > -- <where7-2.976.2> > @@ -36582,13 +36582,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=737 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR a=40 > OR f='uvwxyzabc' > OR b=311 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=927 > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > ]]) > @@ -36604,13 +36604,13 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=737 > - OR (g='wvutsrq' AND f GLOB 'ijklm*') > - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') > + OR (g='wvutsrq' AND f LIKE 'ijklm%') > + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') > OR a=40 > OR f='uvwxyzabc' > OR b=311 > - OR (g='nmlkjih' AND f GLOB 'bcdef*') > - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') > + OR (g='nmlkjih' AND f LIKE 'bcdef%') > + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') > OR b=927 > OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) > ]]) > @@ -36657,16 +36657,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR b=487 > OR f='tuvwxyzab' > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR b=971 > OR c=19019 > OR a=39 > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR b=550 > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=660 > ]]) > end, { > @@ -36680,16 +36680,16 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') > + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') > OR b=487 > OR f='tuvwxyzab' > - OR (g='onmlkji' AND f GLOB 'wxyza*') > + OR (g='onmlkji' AND f LIKE 'wxyza%') > OR b=971 > OR c=19019 > OR a=39 > - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') > + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') > OR b=550 > - OR (g='kjihgfe' AND f GLOB 'tuvwx*') > + OR (g='kjihgfe' AND f LIKE 'tuvwx%') > OR b=660 > ]]) > end, { > @@ -36735,7 +36735,7 @@ test:do_test( > OR b=630 > OR b=935 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR f='yzabcdefg' > OR ((a BETWEEN 37 AND 39) AND a!=38) > ]]) > @@ -36754,7 +36754,7 @@ test:do_test( > OR b=630 > OR b=935 > OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) > - OR (g='srqponm' AND f GLOB 'defgh*') > + OR (g='srqponm' AND f LIKE 'defgh%') > OR f='yzabcdefg' > OR ((a BETWEEN 37 AND 39) AND a!=38) > ]]) > @@ -36774,7 +36774,7 @@ test:do_test( > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > OR f='abcdefghi' > OR b=696 > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=682 > OR a=32 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -36797,7 +36797,7 @@ test:do_test( > OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) > OR f='abcdefghi' > OR b=696 > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=682 > OR a=32 > OR ((a BETWEEN 34 AND 36) AND a!=35) > @@ -36815,8 +36815,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (g='gfedcba' AND f GLOB 'lmnop*') > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + WHERE (g='gfedcba' AND f LIKE 'lmnop%') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR b=311 > ]]) > end, { > @@ -36830,8 +36830,8 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (g='gfedcba' AND f GLOB 'lmnop*') > - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') > + WHERE (g='gfedcba' AND f LIKE 'lmnop%') > + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') > OR b=311 > ]]) > end, { > @@ -36884,7 +36884,7 @@ test:do_test( > WHERE ((a BETWEEN 98 AND 100) AND a!=99) > OR b=110 > OR ((a BETWEEN 38 AND 40) AND a!=39) > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR b=484 > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > ]]) > @@ -36902,7 +36902,7 @@ test:do_test( > WHERE ((a BETWEEN 98 AND 100) AND a!=99) > OR b=110 > OR ((a BETWEEN 38 AND 40) AND a!=39) > - OR (g='tsrqpon' AND f GLOB 'xyzab*') > + OR (g='tsrqpon' AND f LIKE 'xyzab%') > OR b=484 > OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) > ]]) > @@ -36925,7 +36925,7 @@ test:do_test( > OR c=27027 > OR b=1026 > OR c=6006 > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > ]]) > end, { > @@ -36947,7 +36947,7 @@ test:do_test( > OR c=27027 > OR b=1026 > OR c=6006 > - OR (g='ponmlkj' AND f GLOB 'uvwxy*') > + OR (g='ponmlkj' AND f LIKE 'uvwxy%') > OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) > ]]) > end, { > @@ -36963,11 +36963,11 @@ test:do_test( > SELECT a FROM t2 > WHERE (d>=79.0 AND d<80.0 AND d IS NOT NULL) > OR ((a BETWEEN 18 AND 20) AND a!=19) > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR a=97 > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR ((a BETWEEN 22 AND 24) AND a!=23) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR b=674 > OR c=14014 > OR b=69 > @@ -36985,11 +36985,11 @@ test:do_test( > SELECT a FROM t3 > WHERE (d>=79.0 AND d<80.0 AND d IS NOT NULL) > OR ((a BETWEEN 18 AND 20) AND a!=19) > - OR (g='qponmlk' AND f GLOB 'nopqr*') > + OR (g='qponmlk' AND f LIKE 'nopqr%') > OR a=97 > OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) > OR ((a BETWEEN 22 AND 24) AND a!=23) > - OR (g='mlkjihg' AND f GLOB 'ghijk*') > + OR (g='mlkjihg' AND f LIKE 'ghijk%') > OR b=674 > OR c=14014 > OR b=69 > @@ -37039,12 +37039,12 @@ test:do_test( > SELECT a FROM t2 > WHERE b=451 > OR ((a BETWEEN 11 AND 13) AND a!=12) > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=539 > OR a=26 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR b=465 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.991.1> > @@ -37059,12 +37059,12 @@ test:do_test( > SELECT a FROM t3 > WHERE b=451 > OR ((a BETWEEN 11 AND 13) AND a!=12) > - OR (g='tsrqpon' AND f GLOB 'abcde*') > + OR (g='tsrqpon' AND f LIKE 'abcde%') > OR b=539 > OR a=26 > - OR (g='srqponm' AND f GLOB 'efghi*') > + OR (g='srqponm' AND f LIKE 'efghi%') > OR b=465 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > ]]) > end, { > -- <where7-2.991.2> > @@ -37135,9 +37135,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t2 > - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') > + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR a=13 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR b=322 > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR b=377 > @@ -37156,9 +37156,9 @@ test:do_test( > function() > return count_steps_sort([[ > SELECT a FROM t3 > - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') > + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') > OR a=13 > - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') > + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') > OR b=322 > OR ((a BETWEEN 33 AND 35) AND a!=34) > OR b=377 > @@ -37181,9 +37181,9 @@ test:do_test( > OR b=990 > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > OR b=605 > - OR (g='srqponm' AND f GLOB 'cdefg*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=968 > OR a=66 > ]]) > @@ -37202,9 +37202,9 @@ test:do_test( > OR b=990 > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > OR b=605 > - OR (g='srqponm' AND f GLOB 'cdefg*') > + OR (g='srqponm' AND f LIKE 'cdefg%') > OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) > - OR (g='vutsrqp' AND f GLOB 'qrstu*') > + OR (g='vutsrqp' AND f LIKE 'qrstu%') > OR b=968 > OR a=66 > ]]) > @@ -37220,12 +37220,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t2 > WHERE b=1059 > - OR (g='srqponm' AND f GLOB 'ghijk*') > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR ((a BETWEEN 39 AND 41) AND a!=40) > ]]) > end, { > @@ -37240,12 +37240,12 @@ test:do_test( > return count_steps_sort([[ > SELECT a FROM t3 > WHERE b=1059 > - OR (g='srqponm' AND f GLOB 'ghijk*') > - OR (g='utsrqpo' AND f GLOB 'tuvwx*') > - OR (g='nmlkjih' AND f GLOB 'fghij*') > + OR (g='srqponm' AND f LIKE 'ghijk%') > + OR (g='utsrqpo' AND f LIKE 'tuvwx%') > + OR (g='nmlkjih' AND f LIKE 'fghij%') > OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) > OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) > - OR (g='onmlkji' AND f GLOB 'abcde*') > + OR (g='onmlkji' AND f LIKE 'abcde%') > OR ((a BETWEEN 39 AND 41) AND a!=40) > ]]) > end, { > @@ -37261,7 +37261,7 @@ test:do_test( > SELECT a FROM t2 > WHERE ((a BETWEEN 41 AND 43) AND a!=42) > OR f='nopqrstuv' > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR a=42 > OR b=729 > OR b=297 > @@ -37282,7 +37282,7 @@ test:do_test( > SELECT a FROM t3 > WHERE ((a BETWEEN 41 AND 43) AND a!=42) > OR f='nopqrstuv' > - OR (g='ponmlkj' AND f GLOB 'stuvw*') > + OR (g='ponmlkj' AND f LIKE 'stuvw%') > OR a=42 > OR b=729 > OR b=297 > @@ -37337,9 +37337,9 @@ test:do_test( > SELECT a FROM t2 > WHERE b=451 > OR b=660 > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > OR b=781 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=198 > OR b=1023 > OR a=98 > @@ -37359,9 +37359,9 @@ test:do_test( > SELECT a FROM t3 > WHERE b=451 > OR b=660 > - OR (g='onmlkji' AND f GLOB 'yzabc*') > + OR (g='onmlkji' AND f LIKE 'yzabc%') > OR b=781 > - OR (g='jihgfed' AND f GLOB 'wxyza*') > + OR (g='jihgfed' AND f LIKE 'wxyza%') > OR b=198 > OR b=1023 > OR a=98 > @@ -37383,7 +37383,7 @@ test:do_test( > OR a=86 > OR c=17017 > OR ((a BETWEEN 85 AND 87) AND a!=86) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR a=80 > OR b=773 > ]]) > @@ -37402,7 +37402,7 @@ test:do_test( > OR a=86 > OR c=17017 > OR ((a BETWEEN 85 AND 87) AND a!=86) > - OR (g='gfedcba' AND f GLOB 'mnopq*') > + OR (g='gfedcba' AND f LIKE 'mnopq%') > OR a=80 > OR b=773 > ]]) > @@ -37419,7 +37419,7 @@ test:do_test( > SELECT a FROM t2 > WHERE b=1092 > OR a=23 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR d<0.0 > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR a=91 > @@ -37437,7 +37437,7 @@ test:do_test( > SELECT a FROM t3 > WHERE b=1092 > OR a=23 > - OR (f GLOB '?defg*' AND f GLOB 'cdef*') > + OR (f LIKE '_defg%' AND f LIKE 'cdef%') > OR d<0.0 > OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) > OR a=91 ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 8:25 ` [tarantool-patches] " Alex Khatskevich @ 2018-08-17 8:49 ` n.pettik 2018-08-17 9:01 ` Alex Khatskevich [not found] ` <04D02794-07A5-4146-9144-84EE720C8656@corp.mail.ru> ` (3 subsequent siblings) 4 siblings, 1 reply; 46+ messages in thread From: n.pettik @ 2018-08-17 8:49 UTC (permalink / raw) To: tarantool-patches; +Cc: AKhatskevich, N. Tatunov, Alexander Turenko > On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > Do not split error messages at the middle of a sentence. It makes errors ungreppable. > Make it <80 somehow different. I guess this is extremely specific nitpicking: look at src/box/alter.cc: through the code there are a lot of breaks of error messages like: alter.c : 405 tnt_raise(ClientError, errcode, tt_cstr(space_name, name_len), tt_sprintf("field %d has conflicting nullability and " "nullable action properties", fieldno + TUPLE_INDEX_BASE)); alter.cc : 524 if (exact_field_count != 0 && exact_field_count < field_count) { tnt_raise(ClientError, errcode, tt_cstr(name, name_len), "exact_field_count must be either 0 or >= "\ "formatted field count”); etc ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 8:49 ` n.pettik @ 2018-08-17 9:01 ` Alex Khatskevich 2018-08-17 9:20 ` n.pettik 0 siblings, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-08-17 9:01 UTC (permalink / raw) To: n.pettik, tarantool-patches; +Cc: N. Tatunov, Alexander Turenko On 17.08.2018 11:49, n.pettik wrote: >> On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: >> >> Do not split error messages at the middle of a sentence. It makes errors ungreppable. >> Make it <80 somehow different. > I guess this is extremely specific nitpicking: look at src/box/alter.cc: > through the code there are a lot of breaks of error messages like: > > alter.c : 405 > > tnt_raise(ClientError, errcode, tt_cstr(space_name, name_len), > tt_sprintf("field %d has conflicting nullability and " > "nullable action properties", fieldno + > TUPLE_INDEX_BASE)); > > alter.cc : 524 > > if (exact_field_count != 0 && > exact_field_count < field_count) { > tnt_raise(ClientError, errcode, tt_cstr(name, name_len), > "exact_field_count must be either 0 or >= "\ > "formatted field count”); > > etc That is not a good example of code. If possible, error message should not be broken at the middle. In my opinion, even if it is not possible, it should better be > 80. Linus is for this https://www.kernel.org/doc/html/v4.10/process/coding-style.html ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 9:01 ` Alex Khatskevich @ 2018-08-17 9:20 ` n.pettik 2018-08-17 9:28 ` Alex Khatskevich 0 siblings, 1 reply; 46+ messages in thread From: n.pettik @ 2018-08-17 9:20 UTC (permalink / raw) To: tarantool-patches; +Cc: Alexander Turenko, Alex Khatskevich, N. Tatunov > On 17 Aug 2018, at 12:01, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > On 17.08.2018 11:49, n.pettik wrote: >>> On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: >>> >>> Do not split error messages at the middle of a sentence. It makes errors ungreppable. >>> Make it <80 somehow different. >> I guess this is extremely specific nitpicking: look at src/box/alter.cc: >> through the code there are a lot of breaks of error messages like: >> >> alter.c : 405 >> >> tnt_raise(ClientError, errcode, tt_cstr(space_name, name_len), >> tt_sprintf("field %d has conflicting nullability and " >> "nullable action properties", fieldno + >> TUPLE_INDEX_BASE)); >> >> alter.cc : 524 >> >> if (exact_field_count != 0 && >> exact_field_count < field_count) { >> tnt_raise(ClientError, errcode, tt_cstr(name, name_len), >> "exact_field_count must be either 0 or >= "\ >> "formatted field count”); >> >> etc > That is not a good example of code. Okay, then look at key_def.c and other source files. I can’t find example of breaking 80 chars border with error string message. Thus, I guess this rule is unlikely to be supported within our codestyle. > If possible, error message should not be broken at the middle. > In my opinion, even if it is not possible, it should better be > 80. > > Linus is for this https://www.kernel.org/doc/html/v4.10/process/coding-style.html ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 9:20 ` n.pettik @ 2018-08-17 9:28 ` Alex Khatskevich 0 siblings, 0 replies; 46+ messages in thread From: Alex Khatskevich @ 2018-08-17 9:28 UTC (permalink / raw) To: n.pettik, tarantool-patches; +Cc: Alexander Turenko, N. Tatunov On 17.08.2018 12:20, n.pettik wrote: >> On 17 Aug 2018, at 12:01, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: >> >> On 17.08.2018 11:49, n.pettik wrote: >>>> On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: >>>> >>>> Do not split error messages at the middle of a sentence. It makes errors ungreppable. >>>> Make it <80 somehow different. >>> I guess this is extremely specific nitpicking: look at src/box/alter.cc: >>> through the code there are a lot of breaks of error messages like: >>> >>> alter.c : 405 >>> >>> tnt_raise(ClientError, errcode, tt_cstr(space_name, name_len), >>> tt_sprintf("field %d has conflicting nullability and " >>> "nullable action properties", fieldno + >>> TUPLE_INDEX_BASE)); >>> >>> alter.cc : 524 >>> >>> if (exact_field_count != 0 && >>> exact_field_count < field_count) { >>> tnt_raise(ClientError, errcode, tt_cstr(name, name_len), >>> "exact_field_count must be either 0 or >= "\ >>> "formatted field count”); >>> >>> etc >> That is not a good example of code. > Okay, then look at key_def.c and other source files. I can’t find example of breaking > 80 chars border with error string message. Thus, I guess this rule is unlikely to be > supported within our codestyle. > >> If possible, error message should not be broken at the middle. >> In my opinion, even if it is not possible, it should better be > 80. >> >> Linus is for this https://www.kernel.org/doc/html/v4.10/process/coding-style.html > > As I said, I do not ask anyone to break the 80 rule. I ask to do not split the error message. it can be done that way for example: ``` const char * const err_msg = "ESCAPE expression must be a single character"; if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { sqlite3_result_error(context, err_msg, -1); return; ``` ^ permalink raw reply [flat|nested] 46+ messages in thread
[parent not found: <04D02794-07A5-4146-9144-84EE720C8656@corp.mail.ru>]
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool [not found] ` <04D02794-07A5-4146-9144-84EE720C8656@corp.mail.ru> @ 2018-08-17 8:53 ` Alex Khatskevich 0 siblings, 0 replies; 46+ messages in thread From: Alex Khatskevich @ 2018-08-17 8:53 UTC (permalink / raw) To: n.pettik, tarantool-patches; +Cc: N. Tatunov, Alexander Turenko [-- Attachment #1: Type: text/plain, Size: 1149 bytes --] Accepted. On 17.08.2018 11:37, n.pettik@corp.mail.ru wrote: > >> On 17 Aug 2018, at 11:25, Alex Khatskevich >> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >> >>> GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to >>> be close to ANSI SQL & LIKE to depend on collations, we do not want to >>> support it. This patch totally removes it from Tarantool along with any >>> mentions of it. >> 1.We delete it because it is not working properly, and instead of >> fixing it we >> want to replace it with more general regexp. Delete other unnecessary >> thoughts >> from this message. >> 2. Do not use "we", "our" in commit messages. > > Why? Ofс it would sound more like documentation, but AFAIK we don’t > force this restriction. You can check out commit messages from other > contributors who use ‘we’ and ‘I': > > https://github.com/tarantool/tarantool/commit/f4625e64eb99c17910d3f0bcd323e5d82b6d5b31 > https://github.com/tarantool/tarantool/commit/46f50aadedfa87a16e2618da55924b185376b58a > https://github.com/tarantool/tarantool/commit/1331d232476f17b9ec5be45175233d1b5454d1fd > > etc > [-- Attachment #2: Type: text/html, Size: 6624 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 8:25 ` [tarantool-patches] " Alex Khatskevich 2018-08-17 8:49 ` n.pettik [not found] ` <04D02794-07A5-4146-9144-84EE720C8656@corp.mail.ru> @ 2018-08-17 11:26 ` Alexander Turenko 2018-08-17 11:34 ` Alexander Turenko 2018-08-17 13:46 ` Nikita Tatunov 2018-09-09 14:57 ` Nikita Tatunov 4 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-08-17 11:26 UTC (permalink / raw) To: Alex Khatskevich; +Cc: N.Tatunov, tarantool-patches Hi! I have one note. WBR, Alexander Turenko. On Fri, Aug 17, 2018 at 11:25:14AM +0300, Alex Khatskevich wrote: > > > > if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { > > sqlite3_result_error(context, > > - "ESCAPE expression must be a single character", > > + "ESCAPE expression must be a" > > + " single character", > Do not split error messages at the middle of a sentence. It makes errors > ungreppable. > Make it <80 somehow different. > It was my thought that such rule should be enforced. But I asks Vladimir D. and he says that kernel developers don't care about that and show me examples. Anyway, how you would propose to avoid the string splitting here? > > - sqlite3_result_error(context, "LIKE or GLOB pattern can only" > > - " contain UTF-8 characters", -1); > > + sqlite3_result_error(context, "LIKE pattern can only contain" > > + " UTF-8 characters", -1); > Do not split error messages at the middle of a sentence. Make it <80 somehow > different. Same here. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 11:26 ` Alexander Turenko @ 2018-08-17 11:34 ` Alexander Turenko 0 siblings, 0 replies; 46+ messages in thread From: Alexander Turenko @ 2018-08-17 11:34 UTC (permalink / raw) To: Alex Khatskevich; +Cc: N.Tatunov, tarantool-patches On Fri, Aug 17, 2018 at 02:26:19PM +0300, Alexander Turenko wrote: > Hi! > > I have one note. > > WBR, Alexander Turenko. > > On Fri, Aug 17, 2018 at 11:25:14AM +0300, Alex Khatskevich wrote: > > > > > > > if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { > > > sqlite3_result_error(context, > > > - "ESCAPE expression must be a single character", > > > + "ESCAPE expression must be a" > > > + " single character", > > Do not split error messages at the middle of a sentence. It makes errors > > ungreppable. > > Make it <80 somehow different. > > > > It was my thought that such rule should be enforced. But I asks Vladimir > D. and he says that kernel developers don't care about that and show me > examples. > > Anyway, how you would propose to avoid the string splitting here? > > > > - sqlite3_result_error(context, "LIKE or GLOB pattern can only" > > > - " contain UTF-8 characters", -1); > > > + sqlite3_result_error(context, "LIKE pattern can only contain" > > > + " UTF-8 characters", -1); > > Do not split error messages at the middle of a sentence. Make it <80 somehow > > different. > > Same here. > Sorry, missed the following discussion. If you think we should change our code style, please review it with mantainers first. But as I said above we already have this point discussed. WBR, Alexander Turenko. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 8:25 ` [tarantool-patches] " Alex Khatskevich ` (2 preceding siblings ...) 2018-08-17 11:26 ` Alexander Turenko @ 2018-08-17 13:46 ` Nikita Tatunov 2018-09-09 14:57 ` Nikita Tatunov 4 siblings, 0 replies; 46+ messages in thread From: Nikita Tatunov @ 2018-08-17 13:46 UTC (permalink / raw) To: tarantool-patches; +Cc: Alexander Turenko, avkhatskevich, korablev Hello! Please, consider my note. > On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > > > On 16.08.2018 20:00, N.Tatunov wrote: >> GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to >> be close to ANSI SQL & LIKE to depend on collations, we do not want to >> support it. This patch totally removes it from Tarantool along with any >> mentions of it. > 1.We delete it because it is not working properly, and instead of fixing it we > want to replace it with more general regexp. Delete other unnecessary thoughts > from this message. > 2. Do not use "we", "our" in commit messages. I can’t agree with the first note. I’m not sure if we can call it a “replacement”. Firstly we have long been having a ticket for REGEXP implementation and this fact is not concerned with GLOB removal somehow. Secondly the idea of removing GLOB appeared in light of collations in LIKE & in light of absence of GLOB in most of other DBMSs. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-08-17 8:25 ` [tarantool-patches] " Alex Khatskevich ` (3 preceding siblings ...) 2018-08-17 13:46 ` Nikita Tatunov @ 2018-09-09 14:57 ` Nikita Tatunov 2018-09-10 22:06 ` Alex Khatskevich 4 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-09-09 14:57 UTC (permalink / raw) To: tarantool-patches; +Cc: avkhatskevich, Alexander Turenko, korablev [-- Attachment #1: Type: text/plain, Size: 26491 bytes --] Hello, please consider corrected version of the patch. Diff with the previous version at the end. > On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > > > On 16.08.2018 20:00, N.Tatunov wrote: >> GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to >> be close to ANSI SQL & LIKE to depend on collations, we do not want to >> support it. This patch totally removes it from Tarantool along with any >> mentions of it. > 1.We delete it because it is not working properly, and instead of fixing it we > want to replace it with more general regexp. Delete other unnecessary thoughts > from this message. > 2. Do not use "we", "our" in commit messages. As discussed above it’s not going to be changed. >> static int >> sql_utf8_pattern_compare(const char *pattern, >> const char *string, >> - const struct compareInfo *pInfo, >> - UChar32 matchOther) >> + const int *is_like_ci, > Pass this parameter by value. Fixed. >> + UChar32 match_other) >> { >> /* Next pattern and input string chars */ >> UChar32 c, c2; >> - /* "?" or "_" */ >> - UChar32 matchOne = pInfo->matchOne; >> - /* "*" or "%" */ >> - UChar32 matchAll = pInfo->matchAll; >> - /* True if uppercase==lowercase */ >> - UChar32 noCase = pInfo->noCase; >> + /* "_" */ >> + UChar32 match_one = '_'; >> + /* "%" */ >> + UChar32 match_all = '%'; > This variables consumes stack. Can they be moved to defines? > If it will break smth, make them const. moved them to defines. >> >> int >> -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) >> +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) >> { >> - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); >> + return sql_utf8_pattern_compare(zPattern, zStr, &case_insensitive_like, esc); > Hardcode `case_insensitive_like` value here. Done. >> + /** >> + * Limit the length of the LIKE pattern to avoid problems >> + * of deep recursion and N*N behavior in > I thought that only globe could require N*N time. Check delete the comment. The reason is the recursion in sql_utf8_pattern_compare() which is still there. >> >> - "ESCAPE expression must be a single character", >> + "ESCAPE expression must be a" >> + " single character", > Do not split error messages at the middle of a sentence. It makes errors ungreppable. > Make it <80 somehow different. > Have already been discussed in this thread. >> - sqlite3_result_error(context, "LIKE or GLOB pattern can only" >> - " contain UTF-8 characters", -1); >> + sqlite3_result_error(context, "LIKE pattern can only contain" >> + " UTF-8 characters", -1); > Do not split error messages at the middle of a sentence. Make it <80 somehow different. Have already been discussed in this thread. >> + int *is_like_ci; >> + if (is_case_sensitive) >> + is_like_ci = (int *)&case_sensitive_like; > pass this var by value. We need (void *) in sqlite3CreateFunc(), i don’t think it’s relevant to pass variable by value. >> diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua >> index cfe2801..773bdeb 100755 >> --- a/test/sql-tap/alter.test.lua >> +++ b/test/sql-tap/alter.test.lua >> @@ -230,9 +230,10 @@ test:do_execsql_test( >> test:do_execsql_test( >> "alter-5.1", >> [[ >> + PRAGMA case_sensitive_like = true; >> CREATE TABLE xyz(x PRIMARY KEY); >> ALTER TABLE xyz RENAME TO "xyz1234abc"; >> - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; >> + SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; > This test become unreasonably complex. > Do just "select where name = 'xyz1234abc' > Or at least delete case_sensitive… Done. >> ]], { >> -- <alter-5.1> >> "xyz1234abc" >> @@ -243,7 +244,8 @@ test:do_execsql_test( >> "alter-5.2", >> [[ >> ALTER TABLE "xyz1234abc" RENAME TO xyzabc; >> - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; >> + SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; >> + PRAGMA case_sensitive_like = false; > This test become unreasonably complex. > Do just "select where name = ‘xyz1234abc' Done. >> --- NOTE: This test needs refactoring after deletion of GLOB & >> --- type restrictions for LIKE. (See #3572) >> --- {"LIKE", "like"}, >> --- {"GLOB", "glob"}, >> + {"LIKE", "like"}, >> {"AND", "and"}, >> {"OR", "or"}, >> {"MATCH", "match"}, >> @@ -98,12 +95,9 @@ operations = { >> {"+", "-"}, >> {"<<", ">>", "&", "|"}, >> {"<", "<=", ">", ">="}, >> --- NOTE: This test needs refactoring after deletion of GLOB & >> --- type restrictions for LIKE. (See #3572) >> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >> --- are waiting for their hour, don't confuse them >> --- being commented with ticket above. >> - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, >> +-- are waiting for their hour. >> + {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, >> {"AND"}, >> {"OR"}, >> } >> @@ -128,7 +122,7 @@ end >> -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary >> -- operators, in order from highest to lowest precedence: || * / % + - >> -- << >> & | < <= > >= = == != <> IS IS >> --- NOT IN LIKE GLOB MATCH REGEXP AND OR >> +-- NOT IN LIKE MATCH REGEXP AND OR >> -- >> -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same >> -- precedence as =. >> @@ -467,18 +461,63 @@ literals = { >> for _, op in ipairs(oplist) do >> for n1, rhs in ipairs(literals) do >> for n2, lhs in ipairs(literals) do >> - local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] >> - test:do_test( >> - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), >> - function() >> - --print("\n op "..op.." t "..t) >> - return (((op == "||") and ((t == "text") or >> - (t == "null"))) or >> - ((op ~= "||") and (((t == "integer") or >> - (t == "real")) or >> - (t == "null")))) and 1 or 0 >> - end, 1) >> + if op ~= "LIKE" then > 1. Why do not just delete like from `oplist`? > 2. We were discussing this place with you and Georgy, and decided that you do > not touch this for loop at all. Ok. Commented LIKE in `oplist` (it’s still a binary operator who knows, maybe we will revive it). >> -local function glob(args) >> - return 1 >> -end >> -box.internal.sql_create_function("GLOB", glob) >> -box.internal.sql_create_function("MATCH", glob) >> -box.internal.sql_create_function("REGEXP", glob) >> +-- NOTE: GLOB is removed from Tarantool, thus it'll be needed to >> +-- refactor these calls. They don't work right now since >> +-- we don't support MATHC & REGEXP. >> +-- local function glob(args) >> +-- return 1 >> +-- end > This test do not test the glob function. Delete this comment. Done. >> + >> +-- box.internal.sql_create_function("MATCH", glob) >> +-- box.internal.sql_create_function("REGEXP", glob) > You was lucky that commenting those lines do not break the tests. (because there is a similar > code above) > Return it back. Done. >> @@ -2274,15 +2312,23 @@ test:do_execsql_test( >> -- </e_expr-16.1.7> >> }) >> --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but >> --- uses the Unix file globbing syntax for its wildcards. >> --- >> --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. >> +-- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing >> +-- syntax for its wildcards. > Those test was designed especially for the glob function. > There are similar tests for like above. > You should delete it instead of renaming. Ok, Deleted. >> --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the >> +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the >> -- NOT keyword to invert the sense of the test. >> -- >> test:do_execsql_test( >> + "e_expr-17.2.0", >> + [[ >> + SELECT 'abcxyz' NOT LIKE 'ABC%' >> + ]], { >> + -- <e_expr-17.2.0> >> + 1 >> + -- </e_expr-17.2.0> >> + }) >> + >> +test:do_execsql_test( >> "e_expr-17.2.1", >> [[ >> - SELECT 'abcxyz' NOT GLOB 'ABC*' >> + SELECT 'abcxyz' NOT LIKE 'abc%' >> ]], { >> -- <e_expr-17.2.1> >> - 1 >> + 0 >> -- </e_expr-17.2.1> >> }) >> test:do_execsql_test( >> "e_expr-17.2.2", >> [[ >> - SELECT 'abcxyz' NOT GLOB 'abc*' >> + PRAGMA case_sensitive_like = 0 >> ]], { >> -- <e_expr-17.2.2> >> - 0 >> - -- </e_expr-17.2.2> >> + >> + -- <e_expr-17.2.2> >> }) >> test:do_execsql_test( >> @@ -2405,10 +2461,11 @@ test:do_execsql_test( >> -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions >> if 0>0 then >> db("nullvalue", "null") > do not change tests which are not working. > There is a chance chat you do it wrong and you do not know about it. Made it back. >> diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua >> index 505d2fa..0bc71a0 100755 >> --- a/test/sql-tap/like3.test.lua >> +++ b/test/sql-tap/like3.test.lua >> @@ -12,13 +12,13 @@ test:plan(7) >> -- May you find forgiveness for yourself and forgive others. >> -- May you share freely, never taking more than you give. >> -- >> -------------------------------------------------------------------------- >> +----------------------------------------------------------------- >> -- >> --- This file implements regression tests for SQLite library. The >> --- focus of this file is testing the LIKE and GLOB operators and >> --- in particular the optimizations that occur to help those operators >> --- run faster and that those optimizations work correctly when there >> --- are both strings and blobs being tested. >> +-- This file implements regression tests for SQLite library. The >> +-- focus of this file is testing the LIKE operator and >> +-- in particular the optimizations that occur to help this >> +-- operator run faster and that those optimizations work >> +-- correctly when there are both strings and blobs being tested. >> -- >> -- Ticket 05f43be8fdda9fbd948d374319b99b054140bc36 shows that the following >> -- SQL was not working correctly: >> @@ -70,10 +70,11 @@ test:do_execsql_test( >> test:do_execsql_test( >> "like3-2.0", >> [[ >> + PRAGMA case_sensitive_like = 1; >> CREATE TABLE t2(a PRIMARY KEY, b TEXT); >> INSERT INTO t2 SELECT a, b FROM t1; >> CREATE INDEX t2ba ON t2(b,a); >> - SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; >> + SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; > Those tests were especially created for glob. Delete it instead of renaming. Done. Diff with the prev version of the patch: diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 177193e94..28b435ae3 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -631,6 +631,12 @@ static const int case_insensitive_like = 1; */ static const int case_sensitive_like = 0; +/** + * Wildcards. + */ +#define match_one '_' +#define match_all '%' + /** * Possible error returns from sql_utf8_pattern_compare(). */ @@ -672,15 +678,11 @@ static const int case_sensitive_like = 0; static int sql_utf8_pattern_compare(const char *pattern, const char *string, - const int *is_like_ci, + const int is_like_ci, UChar32 match_other) { /* Next pattern and input string chars */ UChar32 c, c2; - /* "_" */ - UChar32 match_one = '_'; - /* "%" */ - UChar32 match_all = '%'; /* One past the last escaped input char */ const char *zEscaped = 0; const char *pattern_end = pattern + strlen(pattern); @@ -741,7 +743,7 @@ sql_utf8_pattern_compare(const char *pattern, */ int bMatch; - if (*is_like_ci) + if (is_like_ci) c = u_tolower(c); while (string < string_end){ /** @@ -757,7 +759,7 @@ sql_utf8_pattern_compare(const char *pattern, c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; - if (!(*is_like_ci)) { + if (!is_like_ci) { if (c2 != c) continue; } else { @@ -786,7 +788,7 @@ sql_utf8_pattern_compare(const char *pattern, return SQL_NOMATCH; if (c == c2) continue; - if (*is_like_ci) { + if (is_like_ci) { /** * Small optimisation. Reduce number of * calls to u_tolower function. SQL @@ -814,7 +816,7 @@ sql_utf8_pattern_compare(const char *pattern, int sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zPattern, zStr, &case_sensitive_like, esc); + return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, esc); } /** @@ -824,7 +826,7 @@ sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) int sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zPattern, zStr, &case_insensitive_like, esc); + return sql_utf8_pattern_compare(zPattern, zStr, case_insensitive_like, esc); } /** @@ -907,7 +909,7 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) sqlite3_like_count++; #endif int res; - res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); + res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); if (res == SQL_INVALID_PATTERN) { sqlite3_result_error(context, "LIKE pattern can only contain" " UTF-8 characters", -1); diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index 947bd5d94..2d9fb6453 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -218,6 +218,12 @@ operatorMask(int op) return c; } +/** + * Wildcard characters. + */ +#define match_one '_' +#define match_all '%' + #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION /** * Check to see if the given expression is a LIKE operator that @@ -258,9 +264,6 @@ is_like(Parse *pParse, int c; /* Number of non-wildcard prefix characters */ int cnt; - /* Wildcard characters */ - char match_all = '%'; - char match_one = '_'; /* Database connection */ sqlite3 *db = pParse->db; sqlite3_value *pVal = 0; diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua index 773bdebdb..98338c493 100755 --- a/test/sql-tap/alter.test.lua +++ b/test/sql-tap/alter.test.lua @@ -230,10 +230,9 @@ test:do_execsql_test( test:do_execsql_test( "alter-5.1", [[ - PRAGMA case_sensitive_like = true; CREATE TABLE xyz(x PRIMARY KEY); ALTER TABLE xyz RENAME TO "xyz1234abc"; - SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; + SELECT "name" FROM "_space" WHERE "name" = 'xyz1234abc'; ]], { -- <alter-5.1> "xyz1234abc" @@ -244,8 +243,7 @@ test:do_execsql_test( "alter-5.2", [[ ALTER TABLE "xyz1234abc" RENAME TO xyzabc; - SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; - PRAGMA case_sensitive_like = false; + SELECT "name" FROM "_space" WHERE "name" = 'XYZABC'; ]], { -- <alter-5.2> "XYZABC" diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index 162026845..0d69e8535 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -1,6 +1,6 @@ #!/usr/bin/env tarantool test = require("sqltester") -test:plan(11521) +test:plan(10647) --!./tcltestrunner.lua -- 2010 July 16 @@ -77,7 +77,7 @@ local operations = { {"<>", "ne1"}, {"!=", "ne2"}, {"IS", "is"}, - {"LIKE", "like"}, +-- {"LIKE", "like"}, {"AND", "and"}, {"OR", "or"}, {"MATCH", "match"}, @@ -96,8 +96,9 @@ operations = { {"<<", ">>", "&", "|"}, {"<", "<=", ">", ">="}, -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & --- are waiting for their hour. - {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, +-- are waiting for their hour, don't confuse them +-- being commented with commenting of "LIKE". + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, {"AND"}, {"OR"}, } @@ -461,67 +462,21 @@ literals = { for _, op in ipairs(oplist) do for n1, rhs in ipairs(literals) do for n2, lhs in ipairs(literals) do - if op ~= "LIKE" then - local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] - test:do_test( - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), - function() - return (((op == "||") and ((t == "text") or - (t == "null"))) or - ((op ~= "||") and (((t == "integer") or - (t == "real")) or - (t == "null")))) and 1 or 0 - end, 1) - end - end - end -end - -local valid_patterns = - {"'abc'", "'hexadecimal'", "''", 123, -123, 0, - 123.4, 0.0, -123.4, "X''", "X'0000'", "NULL"} - -local invalid_patterns = {"X'ABCDEF'"} - -for n1, rhs in ipairs(valid_patterns) do - for n2, lhs in ipairs(literals) do - local t = test:execsql(string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs))[1] - test:do_test( - string.format("e_expr-7.%s.LIKE.%s", n1, n2), - function() - return (t == "integer" or - t == "real" or - t == "null") and 1 or 0 - end, 1) - end -end + local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] + test:do_test( + string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), + function() + --print("\n op "..op.." t "..t) + return (((op == "||") and ((t == "text") or + (t == "null"))) or + ((op ~= "||") and (((t == "integer") or + (t == "real")) or + (t == "null")))) and 1 or 0 + end, 1) -for n1, rhs in ipairs(invalid_patterns) do - for n2, lhs in ipairs(literals) do - local t = string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs) - local test_name = string.format("e_expr-7.%s.LIKE.%s", n1 + 12, n2) - if n2 ~= 13 then - test:do_catchsql_test( - test_name, - t, - { - -- <test_name> - 1, "LIKE pattern can only contain UTF-8 characters" - -- <test_name> - }) - else - test:do_catchsql_test( - test_name, - t, - { - -- <test_name> - 0, {"null"} - -- <test_name> - }) end end end - --------------------------------------------------------------------------- -- Test the IS and IS NOT operators. -- @@ -1343,15 +1298,12 @@ test:execsql [[ CREATE TABLE tblname(cname PRIMARY KEY); ]] --- NOTE: GLOB is removed from Tarantool, thus it'll be needed to --- refactor these calls. They don't work right now since --- we don't support MATHC & REGEXP. --- local function glob(args) --- return 1 --- end +local function glob(args) + return 1 +end --- box.internal.sql_create_function("MATCH", glob) --- box.internal.sql_create_function("REGEXP", glob) +box.internal.sql_create_function("MATCH", glob) +box.internal.sql_create_function("REGEXP", glob) local test_cases12 ={ {1, 123}, {2, 123.4e05}, @@ -2312,96 +2264,14 @@ test:do_execsql_test( -- </e_expr-16.1.7> }) --- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing --- syntax for its wildcards. --- -test:do_execsql_test( - "e_expr-17.1.0", - [[ - PRAGMA case_sensitive_like = 1 - ]], { - -- <e_expr-17.1.0> - - -- <e_expr-17.1.0> - }) - -test:do_execsql_test( - "e_expr-17.1.1", - [[ - SELECT 'abcxyz' LIKE 'abc*' - ]], { - -- <e_expr-17.1.1> - 0 - -- </e_expr-17.1.1> - }) - -test:do_execsql_test( - "e_expr-17.1.2", - [[ - SELECT 'abcxyz' LIKE 'abc%' - ]], { - -- <e_expr-17.1.2> - 1 - -- </e_expr-17.1.2> - }) - -test:do_execsql_test( - "e_expr-17.1.3", - [[ - SELECT 'abcxyz' LIKE 'abc???' - ]], { - -- <e_expr-17.1.3> - 0 - -- </e_expr-17.1.3> - }) - -test:do_execsql_test( - "e_expr-17.1.4", - [[ - SELECT 'abcxyz' LIKE 'abc___' - ]], { - -- <e_expr-17.1.4> - 1 - -- </e_expr-17.1.4> - }) - -test:do_execsql_test( - "e_expr-17.1.5", - [[ - SELECT 'abcxyz' LIKE 'abc%' - ]], { - -- <e_expr-17.1.5> - 1 - -- </e_expr-17.1.5> - }) - -test:do_execsql_test( - "e_expr-17.1.6", - [[ - SELECT 'ABCxyz' LIKE 'abc%' - ]], { - -- <e_expr-17.1.6> - 0 - -- </e_expr-17.1.6> - }) - -test:do_execsql_test( - "e_expr-17.1.7", - [[ - SELECT 'abcxyz' LIKE 'ABC%' - ]], { - -- <e_expr-17.1.7> - 0 - -- </e_expr-17.1.7> - }) - -- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the -- NOT keyword to invert the sense of the test. -- test:do_execsql_test( "e_expr-17.2.0", [[ - SELECT 'abcxyz' NOT LIKE 'ABC%' + PRAGMA case_sensitive_like = 1; + SELECT 'abcxyz' NOT LIKE 'ABC%'; ]], { -- <e_expr-17.2.0> 1 @@ -2461,11 +2331,10 @@ test:do_execsql_test( -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions if 0>0 then db("nullvalue", "null") - test:do_execsql_test( "e_expr-17.2.6", [[ - SELECT 'abcxyz' NOT LIKE NULL + SELECT 'abcxyz' NOT GLOB NULL ]], { -- <e_expr-17.2.6> "null" @@ -2475,13 +2344,33 @@ if 0>0 then test:do_execsql_test( "e_expr-17.2.7", [[ - SELECT NULL NOT LIKE 'ABC%' + SELECT 'abcxyz' NOT LIKE NULL ]], { -- <e_expr-17.2.7> "null" -- </e_expr-17.2.7> }) + test:do_execsql_test( + "e_expr-17.2.8", + [[ + SELECT NULL NOT GLOB 'abc*' + ]], { + -- <e_expr-17.2.8> + "null" + -- </e_expr-17.2.8> + }) + + test:do_execsql_test( + "e_expr-17.2.9", + [[ + SELECT NULL NOT LIKE 'ABC%' + ]], { + -- <e_expr-17.2.9> + "null" + -- </e_expr-17.2.9> + }) + db("nullvalue", "") end 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 55943345f..a6d822ccd 100755 --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua @@ -185,7 +185,7 @@ local valid_testcases = { -- Valid testcases. for i, tested_string in ipairs(valid_testcases) do - test_name = prefix .. "8." .. tostring(i) + local test_name = prefix .. "8." .. tostring(i) local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" test:do_execsql_test(test_name, test_itself, {0}) diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua index 0bc71a09c..8f4f79422 100755 --- a/test/sql-tap/like3.test.lua +++ b/test/sql-tap/like3.test.lua @@ -67,70 +67,6 @@ test:do_execsql_test( -- </like3-1.2> }) -test:do_execsql_test( - "like3-2.0", - [[ - PRAGMA case_sensitive_like = 1; - CREATE TABLE t2(a PRIMARY KEY, b TEXT); - INSERT INTO t2 SELECT a, b FROM t1; - CREATE INDEX t2ba ON t2(b,a); - SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; - ]], { - -- <like3-2.0> - 1, "abc", 4, "abc" - -- </like3-2.0> - }) - -test:do_execsql_test( - "like3-2.1", - [[ - SELECT a, b FROM t2 WHERE +b LIKE 'ab%' ORDER BY +a; - ]], { - -- <like3-2.1> - 1, "abc", 4, "abc" - -- </like3-2.1> - }) - -test:do_execsql_test( - "like3-2.2", - [[ - SELECT a, b FROM t2 WHERE b>=x'6162' AND b LIKE 'ab%' - ]], { - -- <like3-2.2> - 4, "abc" - -- </like3-2.2> - }) - -test:do_execsql_test( - "like3-2.3", - [[ - SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b LIKE 'ab%' - ]], { - -- <like3-2.3> - 4, "abc" - -- </like3-2.3> - }) - -test:do_execsql_test( - "like3-2.4", - [[ - SELECT a, b FROM t2 WHERE b LIKE 'ab%' AND b>=x'6162' - ]], { - -- <like3-2.4> - 4, "abc" - -- </like3-2.4> - }) - -test:do_execsql_test( - "like3-2.5", - [[ - SELECT a, b FROM t2 WHERE +b LIKE 'ab%' AND +b>=x'6162'; - PRAGMA case_sensitive_like = 0; - ]], { - -- <like3-2.5> - 4, "abc" - -- </like3-2.5> - }) test:execsql([[ CREATE TABLE t3(x TEXT PRIMARY KEY COLLATE "unicode_ci"); INSERT INTO t3(x) VALUES('aaa'),('abc'),('abd'),('abe'),('acz'); -- WBR, Nikita Tatunov. n.tatunov@tarantool.org [-- Attachment #2: Type: text/html, Size: 141643 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-09-09 14:57 ` Nikita Tatunov @ 2018-09-10 22:06 ` Alex Khatskevich 2018-09-11 7:38 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-09-10 22:06 UTC (permalink / raw) To: Nikita Tatunov, tarantool-patches; +Cc: Alexander Turenko, korablev [-- Attachment #1: Type: text/plain, Size: 29225 bytes --] 1. See some comments below. 2. Please, send the full patch diff when done (not just an incremental diff as you did). Patch seems ok in overall. On 09.09.2018 17:57, Nikita Tatunov wrote: > Hello, please consider corrected version of the patch. > Diff with the previous version at the end. > >> On 17 Aug 2018, at 11:25, Alex Khatskevich >> <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >> >> >> >> On 16.08.2018 20:00, N.Tatunov wrote: >>> GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to >>> be close to ANSI SQL & LIKE to depend on collations, we do not want to >>> support it. This patch totally removes it from Tarantool along with any >>> mentions of it. >> 1.We delete it because it is not working properly, and instead of >> fixing it we >> want to replace it with more general regexp. Delete other unnecessary >> thoughts >> from this message. >> 2. Do not use "we", "our" in commit messages. > > As discussed above it’s not going to be changed. Ok. > >>> static int >>> sql_utf8_pattern_compare(const char *pattern, >>> const char *string, >>> -const struct compareInfo *pInfo, >>> -UChar32 matchOther) >>> +const int *is_like_ci, >> Pass this parameter by value. > > Fixed. > >>> +UChar32 match_other) >>> { >>> /* Next pattern and input string chars */ >>> UChar32 c, c2; >>> -/* "?" or "_" */ >>> -UChar32 matchOne = pInfo->matchOne; >>> -/* "*" or "%" */ >>> -UChar32 matchAll = pInfo->matchAll; >>> -/* True if uppercase==lowercase */ >>> -UChar32 noCase = pInfo->noCase; >>> +/* "_" */ >>> +UChar32 match_one = '_'; >>> +/* "%" */ >>> +UChar32 match_all = '%'; >> This variables consumes stack. Can they be moved to defines? >> If it will break smth, make them const. > > moved them to defines. > >>> >>> int >>> -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned >>> int esc) >>> +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int >>> esc) >>> { >>> -return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); >>> +return sql_utf8_pattern_compare(zPattern, zStr, >>> &case_insensitive_like, esc); >> Hardcode `case_insensitive_like` value here. > > Done. > >>> +/** >>> +* Limit the length of the LIKE pattern to avoid problems >>> +* of deep recursion and N*N behavior in >> I thought that only globe could require N*N time. Check delete the >> comment. > > The reason is the recursion in sql_utf8_pattern_compare() which is still > there. > >>> >>> - "ESCAPE expression must be a single character", >>> + "ESCAPE expression must be a" >>> + " single character", >> Do not split error messages at the middle of a sentence. It makes >> errors ungreppable. >> Make it <80 somehow different. >> > > Have already been discussed in this thread. I suppose that we concluded to try to fit into 80 and split the string only in case it is impossible. >>> -sqlite3_result_error(context, "LIKE or GLOB pattern can only" >>> - " contain UTF-8 characters", -1); >>> +sqlite3_result_error(context, "LIKE pattern can only contain" >>> + " UTF-8 characters", -1); >> Do not split error messages at the middle of a sentence. Make it <80 >> somehow different. > > Have already been discussed in this thread. same > >>> +int *is_like_ci; >>> +if (is_case_sensitive) >>> +is_like_ci = (int *)&case_sensitive_like; >> pass this var by value. > > We need (void *) in sqlite3CreateFunc(), i don’t think it’s relevant > to pass > variable by value. Yes, sorry. > >>> diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua >>> index cfe2801..773bdeb 100755 >>> --- a/test/sql-tap/alter.test.lua >>> +++ b/test/sql-tap/alter.test.lua >>> @@ -230,9 +230,10 @@ test:do_execsql_test( >>> test:do_execsql_test( >>> "alter-5.1", >>> [[ >>> + PRAGMA case_sensitive_like = true; >>> CREATE TABLE xyz(x PRIMARY KEY); >>> ALTER TABLE xyz RENAME TO "xyz1234abc"; >>> - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; >>> + SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; >> This test become unreasonably complex. >> Do just "select where name = 'xyz1234abc' >> Or at least delete case_sensitive… > > Done. > >>> ]], { >>> -- <alter-5.1> >>> "xyz1234abc" >>> @@ -243,7 +244,8 @@ test:do_execsql_test( >>> "alter-5.2", >>> [[ >>> ALTER TABLE "xyz1234abc" RENAME TO xyzabc; >>> - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; >>> + SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; >>> + PRAGMA case_sensitive_like = false; >> This test become unreasonably complex. >> Do just "select where name = ‘xyz1234abc' > > Done. > >>> --- NOTE: This test needs refactoring after deletion of GLOB & >>> ---type restrictions for LIKE. (See #3572) >>> --- {"LIKE", "like"}, >>> --- {"GLOB", "glob"}, >>> + {"LIKE", "like"}, >>> {"AND", "and"}, >>> {"OR", "or"}, >>> {"MATCH", "match"}, >>> @@ -98,12 +95,9 @@ operations = { >>> {"+", "-"}, >>> {"<<", ">>", "&", "|"}, >>> {"<", "<=", ">", ">="}, >>> --- NOTE: This test needs refactoring after deletion of GLOB & >>> ---type restrictions for LIKE. (See #3572) >>> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >>> ---are waiting for their hour, don't confuse them >>> ---being commented with ticket above. >>> - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, >>> +--are waiting for their hour. >>> + {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, >>> {"AND"}, >>> {"OR"}, >>> } >>> @@ -128,7 +122,7 @@ end >>> -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary >>> -- operators, in order from highest to lowest precedence: || * / % + - >>> -- << >> & | < <= > >= = == != <> IS IS >>> --- NOT IN LIKE GLOB MATCH REGEXP AND OR >>> +-- NOT IN LIKE MATCH REGEXP AND OR >>> -- >>> -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same >>> -- precedence as =. >>> @@ -467,18 +461,63 @@ literals = { >>> for _, op in ipairs(oplist) do >>> for n1, rhs in ipairs(literals) do >>> for n2, lhs in ipairs(literals) do >>> - local t = test:execsql(string.format(" SELECT typeof(%s >>> %s %s) ", lhs, op, rhs))[1] >>> - test:do_test( >>> - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), >>> - function() >>> - --print("\n op "..op.." t "..t) >>> - return (((op == "||") and ((t == "text") or >>> - (t == "null"))) or >>> - ((op ~= "||") and (((t == "integer") or >>> - (t == "real")) or >>> - (t == "null")))) and 1 or 0 >>> - end, 1) >>> + if op ~= "LIKE" then >> 1. Why do not just delete like from `oplist`? >> 2. We were discussing this place with you and Georgy, and decided >> that you do >> not touch this for loop at all. > > Ok. Commented LIKE in `oplist` (it’s still a binary operator who > knows, maybe we will revive it). > >>> -local function glob(args) >>> - return 1 >>> -end >>> -box.internal.sql_create_function("GLOB", glob) >>> -box.internal.sql_create_function("MATCH", glob) >>> -box.internal.sql_create_function("REGEXP", glob) >>> +-- NOTE: GLOB is removed from Tarantool, thus it'll be needed to >>> +-- refactor these calls. They don't work right now since >>> +-- we don't support MATHC & REGEXP. >>> +-- local function glob(args) >>> +-- return 1 >>> +-- end >> This test do not test the glob function. Delete this comment. > > Done. > >>> + >>> +-- box.internal.sql_create_function("MATCH", glob) >>> +-- box.internal.sql_create_function("REGEXP", glob) >> You was lucky that commenting those lines do not break the tests. >> (because there is a similar >> code above) >> Return it back. > > Done. > >>> @@ -2274,15 +2312,23 @@ test:do_execsql_test( >>> -- </e_expr-16.1.7> >>> }) >>> --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but >>> --- uses the Unix file globbing syntax for its wildcards. >>> --- >>> --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike >>> LIKE. >>> +-- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing >>> +-- syntax for its wildcards. >> Those test was designed especially for the glob function. >> There are similar tests for like above. >> You should delete it instead of renaming. > > Ok, Deleted. > >>> --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded >>> by the >>> +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the >>> -- NOT keyword to invert the sense of the test. >>> -- >>> test:do_execsql_test( >>> + "e_expr-17.2.0", >>> + [[ >>> + SELECT 'abcxyz' NOT LIKE 'ABC%' >>> + ]], { >>> + -- <e_expr-17.2.0> >>> + 1 >>> + -- </e_expr-17.2.0> >>> + }) >>> + >>> +test:do_execsql_test( >>> "e_expr-17.2.1", >>> [[ >>> - SELECT 'abcxyz' NOT GLOB 'ABC*' >>> + SELECT 'abcxyz' NOT LIKE 'abc%' >>> ]], { >>> -- <e_expr-17.2.1> >>> - 1 >>> + 0 >>> -- </e_expr-17.2.1> >>> }) >>> test:do_execsql_test( >>> "e_expr-17.2.2", >>> [[ >>> - SELECT 'abcxyz' NOT GLOB 'abc*' >>> + PRAGMA case_sensitive_like = 0 >>> ]], { >>> -- <e_expr-17.2.2> >>> - 0 >>> - -- </e_expr-17.2.2> >>> + >>> + -- <e_expr-17.2.2> >>> }) >>> test:do_execsql_test( >>> @@ -2405,10 +2461,11 @@ test:do_execsql_test( >>> -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and >>> built in functions >>> if 0>0 then >>> db("nullvalue", "null") >> do not change tests which are not working. >> There is a chance chat you do it wrong and you do not know about it. > Made it back. > >>> diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua >>> index 505d2fa..0bc71a0 100755 >>> --- a/test/sql-tap/like3.test.lua >>> +++ b/test/sql-tap/like3.test.lua >>> @@ -12,13 +12,13 @@ test:plan(7) >>> -- May you find forgiveness for yourself and forgive others. >>> -- May you share freely, never taking more than you give. >>> -- >>> -------------------------------------------------------------------------- >>> +----------------------------------------------------------------- >>> -- >>> --- This file implements regression tests for SQLite library. The >>> --- focus of this file is testing the LIKE and GLOB operators and >>> --- in particular the optimizations that occur to help those operators >>> --- run faster and that those optimizations work correctly when there >>> --- are both strings and blobs being tested. >>> +-- This file implements regression tests for SQLite library. The >>> +-- focus of this file is testing the LIKE operator and >>> +-- in particular the optimizations that occur to help this >>> +-- operator run faster and that those optimizations work >>> +-- correctly when there are both strings and blobs being tested. >>> -- >>> -- Ticket 05f43be8fdda9fbd948d374319b99b054140bc36 shows that the >>> following >>> -- SQL was not working correctly: >>> @@ -70,10 +70,11 @@ test:do_execsql_test( >>> test:do_execsql_test( >>> "like3-2.0", >>> [[ >>> + PRAGMA case_sensitive_like = 1; >>> CREATE TABLE t2(a PRIMARY KEY, b TEXT); >>> INSERT INTO t2 SELECT a, b FROM t1; >>> CREATE INDEX t2ba ON t2(b,a); >>> - SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; >>> + SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; >> Those tests were especially created for glob. Delete it instead of >> renaming. > > Done. > > Diff with the prev version of the patch: > > diff --git a/src/box/sql/func.c b/src/box/sql/func.c > index 177193e94..28b435ae3 100644 > --- a/src/box/sql/func.c > +++ b/src/box/sql/func.c > @@ -631,6 +631,12 @@ static const int case_insensitive_like = 1; > */ > static const int case_sensitive_like = 0; > +/** > + * Wildcards. > + */ > +#define match_one '_' > +#define match_all '%' > + > /** > * Possible error returns from sql_utf8_pattern_compare(). > */ > @@ -672,15 +678,11 @@ static const int case_sensitive_like = 0; > static int > sql_utf8_pattern_compare(const char *pattern, > const char *string, > -const int *is_like_ci, > +const int is_like_ci, > UChar32 match_other) > { > /* Next pattern and input string chars */ > UChar32 c, c2; > -/* "_" */ > -UChar32 match_one = '_'; > -/* "%" */ > -UChar32 match_all = '%'; > /* One past the last escaped input char */ > const char *zEscaped = 0; > const char *pattern_end = pattern + strlen(pattern); > @@ -741,7 +743,7 @@ sql_utf8_pattern_compare(const char *pattern, > */ > int bMatch; > -if (*is_like_ci) > +if (is_like_ci) > c = u_tolower(c); > while (string < string_end){ > /** > @@ -757,7 +759,7 @@ sql_utf8_pattern_compare(const char *pattern, > c2 = Utf8Read(string, string_end); > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > -if (!(*is_like_ci)) { > +if (!is_like_ci) { > if (c2 != c) > continue; > } else { > @@ -786,7 +788,7 @@ sql_utf8_pattern_compare(const char *pattern, > return SQL_NOMATCH; > if (c == c2) > continue; > -if (*is_like_ci) { > +if (is_like_ci) { > /** > * Small optimisation. Reduce number of > * calls to u_tolower function. SQL > @@ -814,7 +816,7 @@ sql_utf8_pattern_compare(const char *pattern, > int > sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) > { > -return sql_utf8_pattern_compare(zPattern, zStr, &case_sensitive_like, > esc); > +return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, > esc); > } > /** > @@ -824,7 +826,7 @@ sql_strlike_cs(const char *zPattern, const char > *zStr, unsigned int esc) > int > sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) > { > -return sql_utf8_pattern_compare(zPattern, zStr, > &case_insensitive_like, esc); > +return sql_utf8_pattern_compare(zPattern, zStr, > case_insensitive_like, esc); > } > /** > @@ -907,7 +909,7 @@ likeFunc(sqlite3_context *context, int argc, > sqlite3_value **argv) > sqlite3_like_count++; > #endif > int res; > -res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); > +res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); > if (res == SQL_INVALID_PATTERN) { > sqlite3_result_error(context, "LIKE pattern can only contain" > " UTF-8 characters", -1); > diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c > index 947bd5d94..2d9fb6453 100644 > --- a/src/box/sql/whereexpr.c > +++ b/src/box/sql/whereexpr.c > @@ -218,6 +218,12 @@ operatorMask(int op) > return c; > } > +/** > + * Wildcard characters. > + */ > +#define match_one '_' > +#define match_all '%' > + > #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION > /** > * Check to see if the given expression is a LIKE operator that > @@ -258,9 +264,6 @@ is_like(Parse *pParse, > int c; > /* Number of non-wildcard prefix characters */ > int cnt; > -/* Wildcard characters */ > -char match_all = '%'; > -char match_one = '_'; > /* Database connection */ > sqlite3 *db = pParse->db; > sqlite3_value *pVal = 0; > diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua > index 773bdebdb..98338c493 100755 > --- a/test/sql-tap/alter.test.lua > +++ b/test/sql-tap/alter.test.lua > @@ -230,10 +230,9 @@ test:do_execsql_test( > test:do_execsql_test( > "alter-5.1", > [[ > - PRAGMA case_sensitive_like = true; > CREATE TABLE xyz(x PRIMARY KEY); > ALTER TABLE xyz RENAME TO "xyz1234abc"; > - SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; > + SELECT "name" FROM "_space" WHERE "name" = 'xyz1234abc'; > ]], { > -- <alter-5.1> > "xyz1234abc" > @@ -244,8 +243,7 @@ test:do_execsql_test( > "alter-5.2", > [[ > ALTER TABLE "xyz1234abc" RENAME TO xyzabc; > - SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; > - PRAGMA case_sensitive_like = false; > + SELECT "name" FROM "_space" WHERE "name" = 'XYZABC'; > ]], { > -- <alter-5.2> > "XYZABC" > diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua > index 162026845..0d69e8535 100755 > --- a/test/sql-tap/e_expr.test.lua > +++ b/test/sql-tap/e_expr.test.lua > @@ -1,6 +1,6 @@ > #!/usr/bin/env tarantool > test = require("sqltester") > -test:plan(11521) > +test:plan(10647) > --!./tcltestrunner.lua > -- 2010 July 16 > @@ -77,7 +77,7 @@ local operations = { > {"<>", "ne1"}, > {"!=", "ne2"}, > {"IS", "is"}, > - {"LIKE", "like"}, > +-- {"LIKE", "like"}, > {"AND", "and"}, > {"OR", "or"}, > {"MATCH", "match"}, > @@ -96,8 +96,9 @@ operations = { > {"<<", ">>", "&", "|"}, > {"<", "<=", ">", ">="}, > -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & > --- are waiting for their hour. > - {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, > +-- are waiting for their hour, don't confuse them > +-- being commented with commenting of "LIKE". > + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, Delete Like. No one returns here. > {"AND"}, > {"OR"}, > } > @@ -461,67 +462,21 @@ literals = { > for _, op in ipairs(oplist) do > for n1, rhs in ipairs(literals) do > for n2, lhs in ipairs(literals) do > - if op ~= "LIKE" then > - local t = test:execsql(string.format(" SELECT > typeof(%s %s %s) ", lhs, op, rhs))[1] > - test:do_test( > - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), > - function() > - return (((op == "||") and ((t == "text") or > - (t == "null"))) or > - ((op ~= "||") and (((t == "integer") or > - (t == "real")) or > - (t == "null")))) and 1 or 0 > - end, 1) > - end > - end > - end > -end > - > -local valid_patterns = > - {"'abc'", "'hexadecimal'", "''", 123, -123, 0, > - 123.4, 0.0, -123.4, "X''", "X'0000'", "NULL"} > - > -local invalid_patterns = {"X'ABCDEF'"} > - > -for n1, rhs in ipairs(valid_patterns) do > - for n2, lhs in ipairs(literals) do > - local t = test:execsql(string.format(" SELECT typeof(%s LIKE > %s) ", lhs, rhs))[1] > - test:do_test( > - string.format("e_expr-7.%s.LIKE.%s", n1, n2), > - function() > - return (t == "integer" or > - t == "real" or > - t == "null") and 1 or 0 > - end, 1) > - end > -end > + local t = test:execsql(string.format(" SELECT typeof(%s > %s %s) ", lhs, op, rhs))[1] > + test:do_test( > + string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), > + function() > + --print("\n op "..op.." t "..t) > + return (((op == "||") and ((t == "text") or > + (t == "null"))) or > + ((op ~= "||") and (((t == "integer") or > + (t == "real")) or > + (t == "null")))) and 1 or 0 > + end, 1) > -for n1, rhs in ipairs(invalid_patterns) do > - for n2, lhs in ipairs(literals) do > - local t = string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs) > - local test_name = string.format("e_expr-7.%s.LIKE.%s", n1 + > 12, n2) > - if n2 ~= 13 then > - test:do_catchsql_test( > - test_name, > - t, > - { > - -- <test_name> > - 1, "LIKE pattern can only contain UTF-8 characters" > - -- <test_name> > - }) > - else > - test:do_catchsql_test( > - test_name, > - t, > - { > - -- <test_name> > - 0, {"null"} > - -- <test_name> > - }) > end > end > end > - > --------------------------------------------------------------------------- > -- Test the IS and IS NOT operators. > -- > @@ -1343,15 +1298,12 @@ test:execsql [[ > CREATE TABLE tblname(cname PRIMARY KEY); > ]] > --- NOTE: GLOB is removed from Tarantool, thus it'll be needed to > --- refactor these calls. They don't work right now since > --- we don't support MATHC & REGEXP. > --- local function glob(args) > --- return 1 > --- end > +local function glob(args) > + return 1 > +end > --- box.internal.sql_create_function("MATCH", glob) > --- box.internal.sql_create_function("REGEXP", glob) > +box.internal.sql_create_function("MATCH", glob) > +box.internal.sql_create_function("REGEXP", glob) > local test_cases12 ={ > {1, 123}, > {2, 123.4e05}, > @@ -2312,96 +2264,14 @@ test:do_execsql_test( > -- </e_expr-16.1.7> > }) > --- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing > --- syntax for its wildcards. > --- > -test:do_execsql_test( > - "e_expr-17.1.0", > - [[ > - PRAGMA case_sensitive_like = 1 > - ]], { > - -- <e_expr-17.1.0> > - > - -- <e_expr-17.1.0> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.1", > - [[ > - SELECT 'abcxyz' LIKE 'abc*' > - ]], { > - -- <e_expr-17.1.1> > - 0 > - -- </e_expr-17.1.1> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.2", > - [[ > - SELECT 'abcxyz' LIKE 'abc%' > - ]], { > - -- <e_expr-17.1.2> > - 1 > - -- </e_expr-17.1.2> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.3", > - [[ > - SELECT 'abcxyz' LIKE 'abc???' > - ]], { > - -- <e_expr-17.1.3> > - 0 > - -- </e_expr-17.1.3> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.4", > - [[ > - SELECT 'abcxyz' LIKE 'abc___' > - ]], { > - -- <e_expr-17.1.4> > - 1 > - -- </e_expr-17.1.4> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.5", > - [[ > - SELECT 'abcxyz' LIKE 'abc%' > - ]], { > - -- <e_expr-17.1.5> > - 1 > - -- </e_expr-17.1.5> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.6", > - [[ > - SELECT 'ABCxyz' LIKE 'abc%' > - ]], { > - -- <e_expr-17.1.6> > - 0 > - -- </e_expr-17.1.6> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.7", > - [[ > - SELECT 'abcxyz' LIKE 'ABC%' > - ]], { > - -- <e_expr-17.1.7> > - 0 > - -- </e_expr-17.1.7> > - }) > - > -- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the > -- NOT keyword to invert the sense of the test. > -- > test:do_execsql_test( > "e_expr-17.2.0", > [[ > - SELECT 'abcxyz' NOT LIKE 'ABC%' > + PRAGMA case_sensitive_like = 1; > + SELECT 'abcxyz' NOT LIKE 'ABC%'; > ]], { > -- <e_expr-17.2.0> > 1 > @@ -2461,11 +2331,10 @@ test:do_execsql_test( > -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and > built in functions > if 0>0 then > db("nullvalue", "null") > - > test:do_execsql_test( > "e_expr-17.2.6", > [[ > - SELECT 'abcxyz' NOT LIKE NULL > + SELECT 'abcxyz' NOT GLOB NULL > ]], { > -- <e_expr-17.2.6> > "null" > @@ -2475,13 +2344,33 @@ if 0>0 then > test:do_execsql_test( > "e_expr-17.2.7", > [[ > - SELECT NULL NOT LIKE 'ABC%' > + SELECT 'abcxyz' NOT LIKE NULL > ]], { > -- <e_expr-17.2.7> > "null" > -- </e_expr-17.2.7> > }) > + test:do_execsql_test( > + "e_expr-17.2.8", > + [[ > + SELECT NULL NOT GLOB 'abc*' > + ]], { > + -- <e_expr-17.2.8> > + "null" > + -- </e_expr-17.2.8> > + }) > + > + test:do_execsql_test( > + "e_expr-17.2.9", > + [[ > + SELECT NULL NOT LIKE 'ABC%' > + ]], { > + -- <e_expr-17.2.9> > + "null" > + -- </e_expr-17.2.9> > + }) > + > db("nullvalue", "") > end > 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 55943345f..a6d822ccd 100755 > --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua > +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua > @@ -185,7 +185,7 @@ local valid_testcases = { > -- Valid testcases. > for i, tested_string in ipairs(valid_testcases) do > - test_name = prefix .. "8." .. tostring(i) > + local test_name = prefix .. "8." .. tostring(i) > local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" > test:do_execsql_test(test_name, test_itself, {0}) > diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua > index 0bc71a09c..8f4f79422 100755 > --- a/test/sql-tap/like3.test.lua > +++ b/test/sql-tap/like3.test.lua > @@ -67,70 +67,6 @@ test:do_execsql_test( > -- </like3-1.2> > }) > -test:do_execsql_test( > - "like3-2.0", > - [[ > - PRAGMA case_sensitive_like = 1; > - CREATE TABLE t2(a PRIMARY KEY, b TEXT); > - INSERT INTO t2 SELECT a, b FROM t1; > - CREATE INDEX t2ba ON t2(b,a); > - SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; > - ]], { > - -- <like3-2.0> > - 1, "abc", 4, "abc" > - -- </like3-2.0> > - }) > - > -test:do_execsql_test( > - "like3-2.1", > - [[ > - SELECT a, b FROM t2 WHERE +b LIKE 'ab%' ORDER BY +a; > - ]], { > - -- <like3-2.1> > - 1, "abc", 4, "abc" > - -- </like3-2.1> > - }) > - > -test:do_execsql_test( > - "like3-2.2", > - [[ > - SELECT a, b FROM t2 WHERE b>=x'6162' AND b LIKE 'ab%' > - ]], { > - -- <like3-2.2> > - 4, "abc" > - -- </like3-2.2> > - }) > - > -test:do_execsql_test( > - "like3-2.3", > - [[ > - SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b LIKE 'ab%' > - ]], { > - -- <like3-2.3> > - 4, "abc" > - -- </like3-2.3> > - }) > - > -test:do_execsql_test( > - "like3-2.4", > - [[ > - SELECT a, b FROM t2 WHERE b LIKE 'ab%' AND b>=x'6162' > - ]], { > - -- <like3-2.4> > - 4, "abc" > - -- </like3-2.4> > - }) > - > -test:do_execsql_test( > - "like3-2.5", > - [[ > - SELECT a, b FROM t2 WHERE +b LIKE 'ab%' AND +b>=x'6162'; > - PRAGMA case_sensitive_like = 0; > - ]], { > - -- <like3-2.5> > - 4, "abc" > - -- </like3-2.5> > - }) > test:execsql([[ > CREATE TABLE t3(x TEXT PRIMARY KEY COLLATE "unicode_ci"); > INSERT INTO t3(x) VALUES('aaa'),('abc'),('abd'),('abe'),('acz'); > > > -- > WBR, Nikita Tatunov. > n.tatunov@tarantool.org <mailto:n.tatunov@tarantool.org> > [-- Attachment #2: Type: text/html, Size: 179721 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-09-10 22:06 ` Alex Khatskevich @ 2018-09-11 7:38 ` Nikita Tatunov 2018-09-11 10:11 ` Alexander Turenko 2018-09-11 12:03 ` Alex Khatskevich 0 siblings, 2 replies; 46+ messages in thread From: Nikita Tatunov @ 2018-09-11 7:38 UTC (permalink / raw) To: Alex Khatskevich; +Cc: tarantool-patches, Alexander Turenko [-- Attachment #1: Type: text/plain, Size: 626444 bytes --] Hello, thank you for comments. See full diff is at the end of the letter. > On 11 Sep 2018, at 01:06, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > 1. See some comments below. > 2. Please, send the full patch diff when done (not just an incremental diff as you did). > Patch seems ok in overall. > > On 09.09.2018 17:57, Nikita Tatunov wrote: >> Hello, please consider corrected version of the patch. >> Diff with the previous version at the end. >> >>> On 17 Aug 2018, at 11:25, Alex Khatskevich <avkhatskevich@tarantool.org <mailto:avkhatskevich@tarantool.org>> wrote: >>> >>> >>> >>> On 16.08.2018 20:00, N.Tatunov wrote: >>>> GLOB is a legacy extension for LIKE from SQLite. As we want our SQL to >>>> be close to ANSI SQL & LIKE to depend on collations, we do not want to >>>> support it. This patch totally removes it from Tarantool along with any >>>> mentions of it. >>> 1.We delete it because it is not working properly, and instead of fixing it we >>> want to replace it with more general regexp. Delete other unnecessary thoughts >>> from this message. >>> 2. Do not use "we", "our" in commit messages. >> >> As discussed above it’s not going to be changed. > Ok. >> >>>> static int >>>> sql_utf8_pattern_compare(const char *pattern, >>>> const char *string, >>>> - const struct compareInfo *pInfo, >>>> - UChar32 matchOther) >>>> + const int *is_like_ci, >>> Pass this parameter by value. >> >> Fixed. >> >>>> + UChar32 match_other) >>>> { >>>> /* Next pattern and input string chars */ >>>> UChar32 c, c2; >>>> - /* "?" or "_" */ >>>> - UChar32 matchOne = pInfo->matchOne; >>>> - /* "*" or "%" */ >>>> - UChar32 matchAll = pInfo->matchAll; >>>> - /* True if uppercase==lowercase */ >>>> - UChar32 noCase = pInfo->noCase; >>>> + /* "_" */ >>>> + UChar32 match_one = '_'; >>>> + /* "%" */ >>>> + UChar32 match_all = '%'; >>> This variables consumes stack. Can they be moved to defines? >>> If it will break smth, make them const. >> >> moved them to defines. >> >>>> >>>> int >>>> -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) >>>> +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) >>>> { >>>> - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); >>>> + return sql_utf8_pattern_compare(zPattern, zStr, &case_insensitive_like, esc); >>> Hardcode `case_insensitive_like` value here. >> >> Done. >> >>>> + /** >>>> + * Limit the length of the LIKE pattern to avoid problems >>>> + * of deep recursion and N*N behavior in >>> I thought that only globe could require N*N time. Check delete the comment. >> >> The reason is the recursion in sql_utf8_pattern_compare() which is still >> there. >> >>>> >>>> - "ESCAPE expression must be a single character", >>>> + "ESCAPE expression must be a" >>>> + " single character", >>> Do not split error messages at the middle of a sentence. It makes errors ungreppable. >>> Make it <80 somehow different. >>> >> >> Have already been discussed in this thread. > I suppose that we concluded to try to fit into 80 and split the string only > in case it is impossible. I don’t think so. Anyways, Alexander could you please give your thoughts? >>>> - sqlite3_result_error(context, "LIKE or GLOB pattern can only" >>>> - " contain UTF-8 characters", -1); >>>> + sqlite3_result_error(context, "LIKE pattern can only contain" >>>> + " UTF-8 characters", -1); >>> Do not split error messages at the middle of a sentence. Make it <80 somehow different. >> >> Have already been discussed in this thread. > same >> >>>> + int *is_like_ci; >>>> + if (is_case_sensitive) >>>> + is_like_ci = (int *)&case_sensitive_like; >>> pass this var by value. >> >> We need (void *) in sqlite3CreateFunc(), i don’t think it’s relevant to pass >> variable by value. > Yes, sorry. >> >>>> diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua >>>> index cfe2801..773bdeb 100755 >>>> --- a/test/sql-tap/alter.test.lua >>>> +++ b/test/sql-tap/alter.test.lua >>>> @@ -230,9 +230,10 @@ test:do_execsql_test( >>>> test:do_execsql_test( >>>> "alter-5.1", >>>> [[ >>>> + PRAGMA case_sensitive_like = true; >>>> CREATE TABLE xyz(x PRIMARY KEY); >>>> ALTER TABLE xyz RENAME TO "xyz1234abc"; >>>> - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; >>>> + SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; >>> This test become unreasonably complex. >>> Do just "select where name = 'xyz1234abc' >>> Or at least delete case_sensitive… >> >> Done. >> >>>> ]], { >>>> -- <alter-5.1> >>>> "xyz1234abc" >>>> @@ -243,7 +244,8 @@ test:do_execsql_test( >>>> "alter-5.2", >>>> [[ >>>> ALTER TABLE "xyz1234abc" RENAME TO xyzabc; >>>> - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; >>>> + SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; >>>> + PRAGMA case_sensitive_like = false; >>> This test become unreasonably complex. >>> Do just "select where name = ‘xyz1234abc' >> >> Done. >> >>>> --- NOTE: This test needs refactoring after deletion of GLOB & >>>> --- type restrictions for LIKE. (See #3572) >>>> --- {"LIKE", "like"}, >>>> --- {"GLOB", "glob"}, >>>> + {"LIKE", "like"}, >>>> {"AND", "and"}, >>>> {"OR", "or"}, >>>> {"MATCH", "match"}, >>>> @@ -98,12 +95,9 @@ operations = { >>>> {"+", "-"}, >>>> {"<<", ">>", "&", "|"}, >>>> {"<", "<=", ">", ">="}, >>>> --- NOTE: This test needs refactoring after deletion of GLOB & >>>> --- type restrictions for LIKE. (See #3572) >>>> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >>>> --- are waiting for their hour, don't confuse them >>>> --- being commented with ticket above. >>>> - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, >>>> +-- are waiting for their hour. >>>> + {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, >>>> {"AND"}, >>>> {"OR"}, >>>> } >>>> @@ -128,7 +122,7 @@ end >>>> -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary >>>> -- operators, in order from highest to lowest precedence: || * / % + - >>>> -- << >> & | < <= > >= = == != <> IS IS >>>> --- NOT IN LIKE GLOB MATCH REGEXP AND OR >>>> +-- NOT IN LIKE MATCH REGEXP AND OR >>>> -- >>>> -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same >>>> -- precedence as =. >>>> @@ -467,18 +461,63 @@ literals = { >>>> for _, op in ipairs(oplist) do >>>> for n1, rhs in ipairs(literals) do >>>> for n2, lhs in ipairs(literals) do >>>> - local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] >>>> - test:do_test( >>>> - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), >>>> - function() >>>> - --print("\n op "..op.." t "..t) >>>> - return (((op == "||") and ((t == "text") or >>>> - (t == "null"))) or >>>> - ((op ~= "||") and (((t == "integer") or >>>> - (t == "real")) or >>>> - (t == "null")))) and 1 or 0 >>>> - end, 1) >>>> + if op ~= "LIKE" then >>> 1. Why do not just delete like from `oplist`? >>> 2. We were discussing this place with you and Georgy, and decided that you do >>> not touch this for loop at all. >> >> Ok. Commented LIKE in `oplist` (it’s still a binary operator who knows, maybe we will revive it). >> >>>> -local function glob(args) >>>> - return 1 >>>> -end >>>> -box.internal.sql_create_function("GLOB", glob) >>>> -box.internal.sql_create_function("MATCH", glob) >>>> -box.internal.sql_create_function("REGEXP", glob) >>>> +-- NOTE: GLOB is removed from Tarantool, thus it'll be needed to >>>> +-- refactor these calls. They don't work right now since >>>> +-- we don't support MATHC & REGEXP. >>>> +-- local function glob(args) >>>> +-- return 1 >>>> +-- end >>> This test do not test the glob function. Delete this comment. >> >> Done. >> >>>> + >>>> +-- box.internal.sql_create_function("MATCH", glob) >>>> +-- box.internal.sql_create_function("REGEXP", glob) >>> You was lucky that commenting those lines do not break the tests. (because there is a similar >>> code above) >>> Return it back. >> >> Done. >> >>>> @@ -2274,15 +2312,23 @@ test:do_execsql_test( >>>> -- </e_expr-16.1.7> >>>> }) >>>> --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but >>>> --- uses the Unix file globbing syntax for its wildcards. >>>> --- >>>> --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. >>>> +-- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing >>>> +-- syntax for its wildcards. >>> Those test was designed especially for the glob function. >>> There are similar tests for like above. >>> You should delete it instead of renaming. >> >> Ok, Deleted. >> >>>> --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the >>>> +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the >>>> -- NOT keyword to invert the sense of the test. >>>> -- >>>> test:do_execsql_test( >>>> + "e_expr-17.2.0", >>>> + [[ >>>> + SELECT 'abcxyz' NOT LIKE 'ABC%' >>>> + ]], { >>>> + -- <e_expr-17.2.0> >>>> + 1 >>>> + -- </e_expr-17.2.0> >>>> + }) >>>> + >>>> +test:do_execsql_test( >>>> "e_expr-17.2.1", >>>> [[ >>>> - SELECT 'abcxyz' NOT GLOB 'ABC*' >>>> + SELECT 'abcxyz' NOT LIKE 'abc%' >>>> ]], { >>>> -- <e_expr-17.2.1> >>>> - 1 >>>> + 0 >>>> -- </e_expr-17.2.1> >>>> }) >>>> test:do_execsql_test( >>>> "e_expr-17.2.2", >>>> [[ >>>> - SELECT 'abcxyz' NOT GLOB 'abc*' >>>> + PRAGMA case_sensitive_like = 0 >>>> ]], { >>>> -- <e_expr-17.2.2> >>>> - 0 >>>> - -- </e_expr-17.2.2> >>>> + >>>> + -- <e_expr-17.2.2> >>>> }) >>>> test:do_execsql_test( >>>> @@ -2405,10 +2461,11 @@ test:do_execsql_test( >>>> -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions >>>> if 0>0 then >>>> db("nullvalue", "null") >>> do not change tests which are not working. >>> There is a chance chat you do it wrong and you do not know about it. >> >> Made it back. >> >>>> diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua >>>> index 505d2fa..0bc71a0 100755 >>>> --- a/test/sql-tap/like3.test.lua >>>> +++ b/test/sql-tap/like3.test.lua >>>> @@ -12,13 +12,13 @@ test:plan(7) >>>> -- May you find forgiveness for yourself and forgive others. >>>> -- May you share freely, never taking more than you give. >>>> -- >>>> -------------------------------------------------------------------------- >>>> +----------------------------------------------------------------- >>>> -- >>>> --- This file implements regression tests for SQLite library. The >>>> --- focus of this file is testing the LIKE and GLOB operators and >>>> --- in particular the optimizations that occur to help those operators >>>> --- run faster and that those optimizations work correctly when there >>>> --- are both strings and blobs being tested. >>>> +-- This file implements regression tests for SQLite library. The >>>> +-- focus of this file is testing the LIKE operator and >>>> +-- in particular the optimizations that occur to help this >>>> +-- operator run faster and that those optimizations work >>>> +-- correctly when there are both strings and blobs being tested. >>>> -- >>>> -- Ticket 05f43be8fdda9fbd948d374319b99b054140bc36 shows that the following >>>> -- SQL was not working correctly: >>>> @@ -70,10 +70,11 @@ test:do_execsql_test( >>>> test:do_execsql_test( >>>> "like3-2.0", >>>> [[ >>>> + PRAGMA case_sensitive_like = 1; >>>> CREATE TABLE t2(a PRIMARY KEY, b TEXT); >>>> INSERT INTO t2 SELECT a, b FROM t1; >>>> CREATE INDEX t2ba ON t2(b,a); >>>> - SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; >>>> + SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; >>> Those tests were especially created for glob. Delete it instead of renaming. >> >> Done. >> >> Diff with the prev version of the patch: >> >> diff --git a/src/box/sql/func.c b/src/box/sql/func.c >> index 177193e94..28b435ae3 100644 >> --- a/src/box/sql/func.c >> +++ b/src/box/sql/func.c >> @@ -631,6 +631,12 @@ static const int case_insensitive_like = 1; >> */ >> static const int case_sensitive_like = 0; >> >> +/** >> + * Wildcards. >> + */ >> +#define match_one '_' >> +#define match_all '%' >> + >> /** >> * Possible error returns from sql_utf8_pattern_compare(). >> */ >> @@ -672,15 +678,11 @@ static const int case_sensitive_like = 0; >> static int >> sql_utf8_pattern_compare(const char *pattern, >> const char *string, >> - const int *is_like_ci, >> + const int is_like_ci, >> UChar32 match_other) >> { >> /* Next pattern and input string chars */ >> UChar32 c, c2; >> - /* "_" */ >> - UChar32 match_one = '_'; >> - /* "%" */ >> - UChar32 match_all = '%'; >> /* One past the last escaped input char */ >> const char *zEscaped = 0; >> const char *pattern_end = pattern + strlen(pattern); >> @@ -741,7 +743,7 @@ sql_utf8_pattern_compare(const char *pattern, >> */ >> >> int bMatch; >> - if (*is_like_ci) >> + if (is_like_ci) >> c = u_tolower(c); >> while (string < string_end){ >> /** >> @@ -757,7 +759,7 @@ sql_utf8_pattern_compare(const char *pattern, >> c2 = Utf8Read(string, string_end); >> if (c2 == SQL_INVALID_UTF8_SYMBOL) >> return SQL_NOMATCH; >> - if (!(*is_like_ci)) { >> + if (!is_like_ci) { >> if (c2 != c) >> continue; >> } else { >> @@ -786,7 +788,7 @@ sql_utf8_pattern_compare(const char *pattern, >> return SQL_NOMATCH; >> if (c == c2) >> continue; >> - if (*is_like_ci) { >> + if (is_like_ci) { >> /** >> * Small optimisation. Reduce number of >> * calls to u_tolower function. SQL >> @@ -814,7 +816,7 @@ sql_utf8_pattern_compare(const char *pattern, >> int >> sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) >> { >> - return sql_utf8_pattern_compare(zPattern, zStr, &case_sensitive_like, esc); >> + return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, esc); >> } >> >> /** >> @@ -824,7 +826,7 @@ sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) >> int >> sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) >> { >> - return sql_utf8_pattern_compare(zPattern, zStr, &case_insensitive_like, esc); >> + return sql_utf8_pattern_compare(zPattern, zStr, case_insensitive_like, esc); >> } >> >> /** >> @@ -907,7 +909,7 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) >> sqlite3_like_count++; >> #endif >> int res; >> - res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); >> + res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); >> if (res == SQL_INVALID_PATTERN) { >> sqlite3_result_error(context, "LIKE pattern can only contain" >> " UTF-8 characters", -1); >> diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c >> index 947bd5d94..2d9fb6453 100644 >> --- a/src/box/sql/whereexpr.c >> +++ b/src/box/sql/whereexpr.c >> @@ -218,6 +218,12 @@ operatorMask(int op) >> return c; >> } >> >> +/** >> + * Wildcard characters. >> + */ >> +#define match_one '_' >> +#define match_all '%' >> + >> #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION >> /** >> * Check to see if the given expression is a LIKE operator that >> @@ -258,9 +264,6 @@ is_like(Parse *pParse, >> int c; >> /* Number of non-wildcard prefix characters */ >> int cnt; >> - /* Wildcard characters */ >> - char match_all = '%'; >> - char match_one = '_'; >> /* Database connection */ >> sqlite3 *db = pParse->db; >> sqlite3_value *pVal = 0; >> diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua >> index 773bdebdb..98338c493 100755 >> --- a/test/sql-tap/alter.test.lua >> +++ b/test/sql-tap/alter.test.lua >> @@ -230,10 +230,9 @@ test:do_execsql_test( >> test:do_execsql_test( >> "alter-5.1", >> [[ >> - PRAGMA case_sensitive_like = true; >> CREATE TABLE xyz(x PRIMARY KEY); >> ALTER TABLE xyz RENAME TO "xyz1234abc"; >> - SELECT "name" FROM "_space" WHERE "name" LIKE 'xyz%'; >> + SELECT "name" FROM "_space" WHERE "name" = 'xyz1234abc'; >> ]], { >> -- <alter-5.1> >> "xyz1234abc" >> @@ -244,8 +243,7 @@ test:do_execsql_test( >> "alter-5.2", >> [[ >> ALTER TABLE "xyz1234abc" RENAME TO xyzabc; >> - SELECT "name" FROM "_space" WHERE "name" LIKE 'XYZ%'; >> - PRAGMA case_sensitive_like = false; >> + SELECT "name" FROM "_space" WHERE "name" = 'XYZABC'; >> ]], { >> -- <alter-5.2> >> "XYZABC" >> diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua >> index 162026845..0d69e8535 100755 >> --- a/test/sql-tap/e_expr.test.lua >> +++ b/test/sql-tap/e_expr.test.lua >> @@ -1,6 +1,6 @@ >> #!/usr/bin/env tarantool >> test = require("sqltester") >> -test:plan(11521) >> +test:plan(10647) >> >> --!./tcltestrunner.lua >> -- 2010 July 16 >> @@ -77,7 +77,7 @@ local operations = { >> {"<>", "ne1"}, >> {"!=", "ne2"}, >> {"IS", "is"}, >> - {"LIKE", "like"}, >> +-- {"LIKE", "like"}, >> {"AND", "and"}, >> {"OR", "or"}, >> {"MATCH", "match"}, >> @@ -96,8 +96,9 @@ operations = { >> {"<<", ">>", "&", "|"}, >> {"<", "<=", ">", ">="}, >> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >> --- are waiting for their hour. >> - {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, >> +-- are waiting for their hour, don't confuse them >> +-- being commented with commenting of "LIKE". >> + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, > Delete Like. No one returns here. It’s a table of all of the operators thus I think it still worth leaving it there. Who knows, it may be that someone will revive tests for LIKE. >> {"AND"}, >> {"OR"}, >> } >> @@ -461,67 +462,21 @@ literals = { >> for _, op in ipairs(oplist) do >> for n1, rhs in ipairs(literals) do >> for n2, lhs in ipairs(literals) do >> - if op ~= "LIKE" then >> - local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] >> - test:do_test( >> - string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), >> - function() >> - return (((op == "||") and ((t == "text") or >> - (t == "null"))) or >> - ((op ~= "||") and (((t == "integer") or >> - (t == "real")) or >> - (t == "null")))) and 1 or 0 >> - end, 1) >> - end >> - end >> - end >> -end >> - >> -local valid_patterns = >> - {"'abc'", "'hexadecimal'", "''", 123, -123, 0, >> - 123.4, 0.0, -123.4, "X''", "X'0000'", "NULL"} >> - >> -local invalid_patterns = {"X'ABCDEF'"} >> - >> -for n1, rhs in ipairs(valid_patterns) do >> - for n2, lhs in ipairs(literals) do >> - local t = test:execsql(string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs))[1] >> - test:do_test( >> - string.format("e_expr-7.%s.LIKE.%s", n1, n2), >> - function() >> - return (t == "integer" or >> - t == "real" or >> - t == "null") and 1 or 0 >> - end, 1) >> - end >> -end >> + local t = test:execsql(string.format(" SELECT typeof(%s %s %s) ", lhs, op, rhs))[1] >> + test:do_test( >> + string.format("e_expr-7.%s.%s.%s", opname[op], n1, n2), >> + function() >> + --print("\n op "..op.." t "..t) >> + return (((op == "||") and ((t == "text") or >> + (t == "null"))) or >> + ((op ~= "||") and (((t == "integer") or >> + (t == "real")) or >> + (t == "null")))) and 1 or 0 >> + end, 1) >> >> -for n1, rhs in ipairs(invalid_patterns) do >> - for n2, lhs in ipairs(literals) do >> - local t = string.format(" SELECT typeof(%s LIKE %s) ", lhs, rhs) >> - local test_name = string.format("e_expr-7.%s.LIKE.%s", n1 + 12, n2) >> - if n2 ~= 13 then >> - test:do_catchsql_test( >> - test_name, >> - t, >> - { >> - -- <test_name> >> - 1, "LIKE pattern can only contain UTF-8 characters" >> - -- <test_name> >> - }) >> - else >> - test:do_catchsql_test( >> - test_name, >> - t, >> - { >> - -- <test_name> >> - 0, {"null"} >> - -- <test_name> >> - }) >> end >> end >> end >> - >> --------------------------------------------------------------------------- >> -- Test the IS and IS NOT operators. >> -- >> @@ -1343,15 +1298,12 @@ test:execsql [[ >> CREATE TABLE tblname(cname PRIMARY KEY); >> ]] >> >> --- NOTE: GLOB is removed from Tarantool, thus it'll be needed to >> --- refactor these calls. They don't work right now since >> --- we don't support MATHC & REGEXP. >> --- local function glob(args) >> --- return 1 >> --- end >> +local function glob(args) >> + return 1 >> +end >> >> --- box.internal.sql_create_function("MATCH", glob) >> --- box.internal.sql_create_function("REGEXP", glob) >> +box.internal.sql_create_function("MATCH", glob) >> +box.internal.sql_create_function("REGEXP", glob) >> local test_cases12 ={ >> {1, 123}, >> {2, 123.4e05}, >> @@ -2312,96 +2264,14 @@ test:do_execsql_test( >> -- </e_expr-16.1.7> >> }) >> >> --- EVIDENCE-OF: R-52087-12043 LIKE doesn't use Unix file globbing >> --- syntax for its wildcards. >> --- >> -test:do_execsql_test( >> - "e_expr-17.1.0", >> - [[ >> - PRAGMA case_sensitive_like = 1 >> - ]], { >> - -- <e_expr-17.1.0> >> - >> - -- <e_expr-17.1.0> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.1", >> - [[ >> - SELECT 'abcxyz' LIKE 'abc*' >> - ]], { >> - -- <e_expr-17.1.1> >> - 0 >> - -- </e_expr-17.1.1> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.2", >> - [[ >> - SELECT 'abcxyz' LIKE 'abc%' >> - ]], { >> - -- <e_expr-17.1.2> >> - 1 >> - -- </e_expr-17.1.2> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.3", >> - [[ >> - SELECT 'abcxyz' LIKE 'abc???' >> - ]], { >> - -- <e_expr-17.1.3> >> - 0 >> - -- </e_expr-17.1.3> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.4", >> - [[ >> - SELECT 'abcxyz' LIKE 'abc___' >> - ]], { >> - -- <e_expr-17.1.4> >> - 1 >> - -- </e_expr-17.1.4> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.5", >> - [[ >> - SELECT 'abcxyz' LIKE 'abc%' >> - ]], { >> - -- <e_expr-17.1.5> >> - 1 >> - -- </e_expr-17.1.5> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.6", >> - [[ >> - SELECT 'ABCxyz' LIKE 'abc%' >> - ]], { >> - -- <e_expr-17.1.6> >> - 0 >> - -- </e_expr-17.1.6> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.7", >> - [[ >> - SELECT 'abcxyz' LIKE 'ABC%' >> - ]], { >> - -- <e_expr-17.1.7> >> - 0 >> - -- </e_expr-17.1.7> >> - }) >> - >> -- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the >> -- NOT keyword to invert the sense of the test. >> -- >> test:do_execsql_test( >> "e_expr-17.2.0", >> [[ >> - SELECT 'abcxyz' NOT LIKE 'ABC%' >> + PRAGMA case_sensitive_like = 1; >> + SELECT 'abcxyz' NOT LIKE 'ABC%'; >> ]], { >> -- <e_expr-17.2.0> >> 1 >> @@ -2461,11 +2331,10 @@ test:do_execsql_test( >> -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions >> if 0>0 then >> db("nullvalue", "null") >> - >> test:do_execsql_test( >> "e_expr-17.2.6", >> [[ >> - SELECT 'abcxyz' NOT LIKE NULL >> + SELECT 'abcxyz' NOT GLOB NULL >> ]], { >> -- <e_expr-17.2.6> >> "null" >> @@ -2475,13 +2344,33 @@ if 0>0 then >> test:do_execsql_test( >> "e_expr-17.2.7", >> [[ >> - SELECT NULL NOT LIKE 'ABC%' >> + SELECT 'abcxyz' NOT LIKE NULL >> ]], { >> -- <e_expr-17.2.7> >> "null" >> -- </e_expr-17.2.7> >> }) >> >> + test:do_execsql_test( >> + "e_expr-17.2.8", >> + [[ >> + SELECT NULL NOT GLOB 'abc*' >> + ]], { >> + -- <e_expr-17.2.8> >> + "null" >> + -- </e_expr-17.2.8> >> + }) >> + >> + test:do_execsql_test( >> + "e_expr-17.2.9", >> + [[ >> + SELECT NULL NOT LIKE 'ABC%' >> + ]], { >> + -- <e_expr-17.2.9> >> + "null" >> + -- </e_expr-17.2.9> >> + }) >> + >> db("nullvalue", "") >> end >> >> 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 55943345f..a6d822ccd 100755 >> --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua >> +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua >> @@ -185,7 +185,7 @@ local valid_testcases = { >> >> -- Valid testcases. >> for i, tested_string in ipairs(valid_testcases) do >> - test_name = prefix .. "8." .. tostring(i) >> + local test_name = prefix .. "8." .. tostring(i) >> local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" >> test:do_execsql_test(test_name, test_itself, {0}) >> >> diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua >> index 0bc71a09c..8f4f79422 100755 >> --- a/test/sql-tap/like3.test.lua >> +++ b/test/sql-tap/like3.test.lua >> @@ -67,70 +67,6 @@ test:do_execsql_test( >> -- </like3-1.2> >> }) >> >> -test:do_execsql_test( >> - "like3-2.0", >> - [[ >> - PRAGMA case_sensitive_like = 1; >> - CREATE TABLE t2(a PRIMARY KEY, b TEXT); >> - INSERT INTO t2 SELECT a, b FROM t1; >> - CREATE INDEX t2ba ON t2(b,a); >> - SELECT a, b FROM t2 WHERE b LIKE 'ab%' ORDER BY +a; >> - ]], { >> - -- <like3-2.0> >> - 1, "abc", 4, "abc" >> - -- </like3-2.0> >> - }) >> - >> -test:do_execsql_test( >> - "like3-2.1", >> - [[ >> - SELECT a, b FROM t2 WHERE +b LIKE 'ab%' ORDER BY +a; >> - ]], { >> - -- <like3-2.1> >> - 1, "abc", 4, "abc" >> - -- </like3-2.1> >> - }) >> - >> -test:do_execsql_test( >> - "like3-2.2", >> - [[ >> - SELECT a, b FROM t2 WHERE b>=x'6162' AND b LIKE 'ab%' >> - ]], { >> - -- <like3-2.2> >> - 4, "abc" >> - -- </like3-2.2> >> - }) >> - >> -test:do_execsql_test( >> - "like3-2.3", >> - [[ >> - SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b LIKE 'ab%' >> - ]], { >> - -- <like3-2.3> >> - 4, "abc" >> - -- </like3-2.3> >> - }) >> - >> -test:do_execsql_test( >> - "like3-2.4", >> - [[ >> - SELECT a, b FROM t2 WHERE b LIKE 'ab%' AND b>=x'6162' >> - ]], { >> - -- <like3-2.4> >> - 4, "abc" >> - -- </like3-2.4> >> - }) >> - >> -test:do_execsql_test( >> - "like3-2.5", >> - [[ >> - SELECT a, b FROM t2 WHERE +b LIKE 'ab%' AND +b>=x'6162'; >> - PRAGMA case_sensitive_like = 0; >> - ]], { >> - -- <like3-2.5> >> - 4, "abc" >> - -- </like3-2.5> >> - }) >> test:execsql([[ >> CREATE TABLE t3(x TEXT PRIMARY KEY COLLATE "unicode_ci"); >> INSERT INTO t3(x) VALUES('aaa'),('abc'),('abd'),('abe'),('acz'); >> >> >> -- >> WBR, Nikita Tatunov. >> n.tatunov@tarantool.org <mailto:n.tatunov@tarantool.org> > diff --git a/extra/mkkeywordhash.c b/extra/mkkeywordhash.c index 990c4199f..1fee3a7f2 100644 --- a/extra/mkkeywordhash.c +++ b/extra/mkkeywordhash.c @@ -159,7 +159,6 @@ static Keyword aKeywordTable[] = { { "FOR", "TK_FOR", TRIGGER, true }, { "FOREIGN", "TK_FOREIGN", FKEY, true }, { "FROM", "TK_FROM", ALWAYS, true }, - { "GLOB", "TK_LIKE_KW", ALWAYS, false }, { "GROUP", "TK_GROUP", ALWAYS, true }, { "HAVING", "TK_HAVING", ALWAYS, true }, { "IF", "TK_IF", ALWAYS, true }, diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c index 5f73f026e..fc7588c3f 100644 --- a/src/box/sql/analyze.c +++ b/src/box/sql/analyze.c @@ -829,7 +829,7 @@ analyzeOneTable(Parse * pParse, /* Parser context */ return; } assert(pTab->tnum != 0); - if (sqlite3_strlike("\\_%", pTab->def->name, '\\') == 0) { + if (sql_strlike_ci("\\_%", pTab->def->name, '\\') == 0) { /* Do not gather statistics on system tables */ return; } @@ -1333,11 +1333,10 @@ analysis_loader(void *data, int argc, char **argv, char **unused) /* Position ptr at the end of stat string. */ for (; *z == ' ' || (*z >= '0' && *z <= '9'); ++z); while (z[0]) { - if (sqlite3_strglob("unordered*", z) == 0) { + if (sql_strlike_cs("unordered%", z, '[') == 0) index->def->opts.stat->is_unordered = true; - } else if (sqlite3_strglob("noskipscan*", z) == 0) { + else if (sql_strlike_cs("noskipscan%", z, '[') == 0) index->def->opts.stat->skip_scan_enabled = false; - } while (z[0] != 0 && z[0] != ' ') z++; while (z[0] == ' ') diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 66cae17b5..28b435ae3 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -607,41 +607,38 @@ total_changes(sqlite3_context * context, int NotUsed, sqlite3_value ** NotUsed2) sqlite3_result_int(context, sqlite3_total_changes(db)); } -/* - * A structure defining how to do GLOB-style comparisons. - */ -struct compareInfo { - u8 matchAll; /* "*" or "%" */ - u8 matchOne; /* "?" or "_" */ - u8 matchSet; /* "[" or 0 */ - u8 noCase; /* true to ignore case differences */ -}; - /** - * Providing there are symbols in string s this - * macro returns UTF-8 code of character and - * promotes pointer to the next symbol in the string. - * Otherwise return code is SQL_END_OF_STRING. + * Providing there are symbols in string s this macro returns + * UTF-8 code of character and promotes pointer to the next + * symbol in the string. If s points to an invalid UTF-8 symbol + * return code is SQL_INVALID_UTF8_SYMBOL. If there're no symbols + * left in string s return code is SQL_END_OF_STRING. */ #define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) #define SQL_END_OF_STRING 0xffff #define SQL_INVALID_UTF8_SYMBOL 0xfffd -static const struct compareInfo globInfo = { '*', '?', '[', 0 }; +/** + * If SQLITE_CASE_SENSITIVE_LIKE is not defined, then the LIKE + * operator is not case sensitive. + */ +static const int case_insensitive_like = 1; -/* The correct SQL-92 behavior is for the LIKE operator to ignore - * case. Thus 'a' LIKE 'A' would be true. +/** + * If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE + * operator is case sensitive causing 'a' LIKE 'A' to be false. */ -static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; +static const int case_sensitive_like = 0; -/* If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE operator - * is case sensitive causing 'a' LIKE 'A' to be false +/** + * Wildcards. */ -static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; +#define match_one '_' +#define match_all '%' -/* - * Possible error returns from sql_utf8_pattern_compare() +/** + * Possible error returns from sql_utf8_pattern_compare(). */ #define SQL_MATCH 0 #define SQL_NOMATCH 1 @@ -650,138 +647,91 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; /** * Compare two UTF-8 strings for equality where the first string - * is a GLOB or LIKE expression. - * - * Globbing rules: - * - * '*' Matches any sequence of zero or more characters. - * - * '?' Matches exactly one character. - * - * [...] Matches one character from the enclosed list of - * characters. - * - * [^...] Matches one character not in the enclosed list. - * - * With the [...] and [^...] matching, a ']' character can be - * included in the list by making it the first character after - * '[' or '^'. A range of characters can be specified using '-'. - * Example: "[a-z]" matches any single lower-case letter. - * To match a '-', make it the last character in the list. + * is a LIKE expression. * * Like matching rules: * - * '%' Matches any sequence of zero or more characters. + * '%' Matches any sequence of zero or more + * characters. * * '_' Matches any one character. * - * Ec Where E is the "esc" character and c is any other - * character, including '%', '_', and esc, match - * exactly c. - * - * The comments within this routine usually assume glob matching. + * Ec Where E is the "esc" character and c is any + * other character, including '%', '_', and esc, + * match exactly c. * * This routine is usually quick, but can be N**2 in the worst * case. * * @param pattern String containing comparison pattern. * @param string String being compared. - * @param compareInfo Information about how to compare. - * @param matchOther The escape char (LIKE) or '[' (GLOB). + * @param is_like_ci true if LIKE is case insensitive. + * @param match_other The escape char for LIKE. * * @retval SQL_MATCH: Match. * SQL_NOMATCH: No match. - * SQL_NOWILDCARDMATCH: No match in spite of having * - * or % wildcards. + * SQL_NOWILDCARDMATCH: No match in spite of having % + * wildcard. * SQL_INVALID_PATTERN: Pattern contains invalid * symbol. */ static int sql_utf8_pattern_compare(const char *pattern, const char *string, - const struct compareInfo *pInfo, - UChar32 matchOther) + const int is_like_ci, + UChar32 match_other) { /* Next pattern and input string chars */ UChar32 c, c2; - /* "?" or "_" */ - UChar32 matchOne = pInfo->matchOne; - /* "*" or "%" */ - UChar32 matchAll = pInfo->matchAll; - /* True if uppercase==lowercase */ - UChar32 noCase = pInfo->noCase; /* One past the last escaped input char */ const char *zEscaped = 0; - const char * pattern_end = pattern + strlen(pattern); - const char * string_end = string + strlen(string); + const char *pattern_end = pattern + strlen(pattern); + const char *string_end = string + strlen(string); UErrorCode status = U_ZERO_ERROR; while (pattern < pattern_end) { c = Utf8Read(pattern, pattern_end); if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; - if (c == matchAll) { /* Match "*" */ - /* Skip over multiple "*" characters in - * the pattern. If there are also "?" + if (c == match_all) { + /** + * Skip over multiple "%" characters in + * the pattern. If there are also "_" * characters, skip those as well, but * consume a single character of the - * input string for each "?" skipped. + * input string for each "_" skipped. */ while ((c = Utf8Read(pattern, pattern_end)) != SQL_END_OF_STRING) { if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; - if (c != matchAll && c != matchOne) + if (c != match_all && c != match_one) break; - if (c == matchOne && + if (c == match_one && (c2 = Utf8Read(string, string_end)) == SQL_END_OF_STRING) return SQL_NOWILDCARDMATCH; if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; } - /* - * "*" at the end of the pattern matches. + /** + * "%" at the end of the pattern matches. */ if (c == SQL_END_OF_STRING) { return SQL_MATCH; } - if (c == matchOther) { - if (pInfo->matchSet == 0) { - c = Utf8Read(pattern, pattern_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c == SQL_END_OF_STRING) - return SQL_NOWILDCARDMATCH; - } else { - /* "[...]" immediately - * follows the "*". We - * have to do a slow - * recursive search in - * this case, but it is - * an unusual case. - */ - assert(matchOther < 0x80); - while (string < string_end) { - int bMatch = - sql_utf8_pattern_compare( - &pattern[-1], - string, - pInfo, - matchOther); - if (bMatch != SQL_NOMATCH) - return bMatch; - c = Utf8Read(string, string_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; - } + if (c == match_other) { + c = Utf8Read(pattern, pattern_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; + if (c == SQL_END_OF_STRING) return SQL_NOWILDCARDMATCH; - } } - /* At this point variable c contains the + /** + * At this point variable c contains the * first character of the pattern string - * past the "*". Search in the input + * past the "%". Search in the input * string for the first matching * character and recursively continue the * match from that point. @@ -793,7 +743,7 @@ sql_utf8_pattern_compare(const char *pattern, */ int bMatch; - if (noCase) + if (is_like_ci) c = u_tolower(c); while (string < string_end){ /** @@ -809,7 +759,7 @@ sql_utf8_pattern_compare(const char *pattern, c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; - if (!noCase) { + if (!is_like_ci) { if (c2 != c) continue; } else { @@ -818,79 +768,27 @@ sql_utf8_pattern_compare(const char *pattern, } bMatch = sql_utf8_pattern_compare(pattern, string, - pInfo, - matchOther); + is_like_ci, + match_other); if (bMatch != SQL_NOMATCH) return bMatch; } return SQL_NOWILDCARDMATCH; } - if (c == matchOther) { - if (pInfo->matchSet == 0) { - c = Utf8Read(pattern, pattern_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c == SQL_END_OF_STRING) - return SQL_NOMATCH; - zEscaped = pattern; - } else { - UChar32 prior_c = 0; - int seen = 0; - int invert = 0; - c = Utf8Read(string, string_end); - if (c == SQL_INVALID_UTF8_SYMBOL) - return SQL_NOMATCH; - if (string == string_end) - return SQL_NOMATCH; - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c2 == '^') { - invert = 1; - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - } - if (c2 == ']') { - if (c == ']') - seen = 1; - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - } - while (c2 != SQL_END_OF_STRING && c2 != ']') { - if (c2 == '-' && pattern[0] != ']' - && pattern < pattern_end - && prior_c > 0) { - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - if (c >= prior_c && c <= c2) - seen = 1; - prior_c = 0; - } else { - if (c == c2) { - seen = 1; - } - prior_c = c2; - } - c2 = Utf8Read(pattern, pattern_end); - if (c2 == SQL_INVALID_UTF8_SYMBOL) - return SQL_INVALID_PATTERN; - } - if (pattern == pattern_end || - (seen ^ invert) == 0) { - return SQL_NOMATCH; - } - continue; - } + if (c == match_other) { + c = Utf8Read(pattern, pattern_end); + if (c == SQL_INVALID_UTF8_SYMBOL) + return SQL_INVALID_PATTERN; + if (c == SQL_END_OF_STRING) + return SQL_NOMATCH; + zEscaped = pattern; } c2 = Utf8Read(string, string_end); if (c2 == SQL_INVALID_UTF8_SYMBOL) return SQL_NOMATCH; if (c == c2) continue; - if (noCase){ + if (is_like_ci) { /** * Small optimisation. Reduce number of * calls to u_tolower function. SQL @@ -903,7 +801,7 @@ sql_utf8_pattern_compare(const char *pattern, c == u_tolower(c2)) continue; } - if (c == matchOne && pattern != zEscaped && + if (c == match_one && pattern != zEscaped && c2 != SQL_END_OF_STRING) continue; return SQL_NOMATCH; @@ -911,55 +809,52 @@ sql_utf8_pattern_compare(const char *pattern, return string == string_end ? SQL_MATCH : SQL_NOMATCH; } -/* - * The sqlite3_strglob() interface. Return 0 on a match (like strcmp()) and - * non-zero if there is no match. +/** + * Compare two UTF-8 strings for equality using case sensitive + * sql_utf8_pattern_compare. */ int -sqlite3_strglob(const char *zGlobPattern, const char *zString) +sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); + return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, esc); } -/* - * The sqlite3_strlike() interface. Return 0 on a match and non-zero for - * a miss - like strcmp(). +/** + * Compare two UTF-8 strings for equality using case insensitive + * sql_utf8_pattern_compare. */ int -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); + return sql_utf8_pattern_compare(zPattern, zStr, case_insensitive_like, esc); } -/* - * Count the number of times that the LIKE operator (or GLOB which is - * just a variation of LIKE) gets called. This is used for testing - * only. +/** + * Count the number of times that the LIKE operator gets called. + * This is used for testing only. */ #ifdef SQLITE_TEST int sqlite3_like_count = 0; #endif -/* - * Implementation of the like() SQL function. This function implements - * the build-in LIKE operator. The first argument to the function is the - * pattern and the second argument is the string. So, the SQL statements: +/** + * Implementation of the like() SQL function. This function + * implements the built-in LIKE operator. The first argument to + * the function is the pattern and the second argument is the + * string. So, the SQL statements of the following type: * * A LIKE B * - * is implemented as like(B,A). - * - * This same function (with a different compareInfo structure) computes - * the GLOB operator. + * are implemented as like(B,A). */ static void -likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) +likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) { const char *zA, *zB; u32 escape; int nPat; sqlite3 *db = sqlite3_context_db_handle(context); - struct compareInfo *pInfo = sqlite3_user_data(context); + int *is_like_ci = sqlite3_user_data(context); #ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS if (sqlite3_value_type(argv[0]) == SQLITE_BLOB @@ -974,8 +869,9 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) zB = (const char *) sqlite3_value_text(argv[0]); zA = (const char *) sqlite3_value_text(argv[1]); - /* Limit the length of the LIKE or GLOB pattern to avoid - * problems of deep recursion and N*N behavior in + /** + * Limit the length of the LIKE pattern to avoid problems + * of deep recursion and N*N behavior in * sql_utf8_pattern_compare(). */ nPat = sqlite3_value_bytes(argv[0]); @@ -983,28 +879,29 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) testcase(nPat == db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH] + 1); if (nPat > db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]) { sqlite3_result_error(context, - "LIKE or GLOB pattern too complex", -1); + "LIKE pattern is too complex", -1); return; } /* Encoding did not change */ assert(zB == (const char *) sqlite3_value_text(argv[0])); if (argc == 3) { - /* The escape character string must consist of a single UTF-8 character. - * Otherwise, return an error. + /** + * The escape character string must consist of a + * single UTF-8 character. Otherwise, return an + * error. */ const unsigned char *zEsc = sqlite3_value_text(argv[2]); if (zEsc == 0) return; if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { sqlite3_result_error(context, - "ESCAPE expression must be a single character", + "ESCAPE expression must be a" + " single character", -1); return; } escape = sqlite3Utf8Read(&zEsc); - } else { - escape = pInfo->matchSet; } if (!zA || !zB) return; @@ -1012,10 +909,10 @@ likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) sqlite3_like_count++; #endif int res; - res = sql_utf8_pattern_compare(zB, zA, pInfo, escape); + res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); if (res == SQL_INVALID_PATTERN) { - sqlite3_result_error(context, "LIKE or GLOB pattern can only" - " contain UTF-8 characters", -1); + sqlite3_result_error(context, "LIKE pattern can only contain" + " UTF-8 characters", -1); return; } sqlite3_result_int(context, res == SQL_MATCH); @@ -1811,64 +1708,54 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) } } -/* - * Register the built-in LIKE and GLOB functions. The caseSensitive - * parameter determines whether or not the LIKE operator is case - * sensitive. GLOB is always case sensitive. +/** + * Register the built-in LIKE function. + * + * @param db database structure. + * @param is_case_sensitive whether like should be case sensitive + * or not. + * + * @retval none. */ void -sqlite3RegisterLikeFunctions(sqlite3 * db, int caseSensitive) +sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) { - struct compareInfo *pInfo; - if (caseSensitive) { - pInfo = (struct compareInfo *)&likeInfoAlt; - } else { - pInfo = (struct compareInfo *)&likeInfoNorm; - } - sqlite3CreateFunc(db, "LIKE", 2, 0, pInfo, likeFunc, 0, 0, 0); - sqlite3CreateFunc(db, "LIKE", 3, 0, pInfo, likeFunc, 0, 0, 0); - sqlite3CreateFunc(db, "GLOB", 2, 0, (struct compareInfo *)&globInfo, likeFunc, 0, 0, 0); - setLikeOptFlag(db, "GLOB", SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE); + int *is_like_ci; + if (is_case_sensitive) + is_like_ci = (int *)&case_sensitive_like; + else + is_like_ci = (int *)&case_insensitive_like; + sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); + sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); setLikeOptFlag(db, "LIKE", - caseSensitive ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : - SQLITE_FUNC_LIKE); + is_case_sensitive ? (SQLITE_FUNC_LIKE | + SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); } -/* - * pExpr points to an expression which implements a function. If - * it is appropriate to apply the LIKE optimization to that function - * then set aWc[0] through aWc[2] to the wildcard characters and - * return TRUE. If the function is not a LIKE-style function then - * return FALSE. +/** + * Check if the function implements LIKE-style comparison & if it + * is appropriate to apply a LIKE query optimization. + * + * @param db database structure. + * @param pExpr pointer to a function-implementing expression. + * @param is_like_ci true if LIKE is case insensitive. * - * *pIsNocase is set to true if uppercase and lowercase are equivalent for - * the function (default for LIKE). If the function makes the distinction - * between uppercase and lowercase (as does GLOB) then *pIsNocase is set to - * false. + * @retval 0 if it's appropriate to apply optimization. + * 1 if it's not. */ int -sqlite3IsLikeFunction(sqlite3 * db, Expr * pExpr, int *pIsNocase, char *aWc) +sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_like_ci) { FuncDef *pDef; - if (pExpr->op != TK_FUNCTION - || !pExpr->x.pList || pExpr->x.pList->nExpr != 2) { + if (pExpr->op != TK_FUNCTION || !pExpr->x.pList || + pExpr->x.pList->nExpr != 2) return 0; - } assert(!ExprHasProperty(pExpr, EP_xIsSelect)); pDef = sqlite3FindFunction(db, pExpr->u.zToken, 2, 0); if (NEVER(pDef == 0) || (pDef->funcFlags & SQLITE_FUNC_LIKE) == 0) { return 0; } - - /* The memcpy() statement assumes that the wildcard characters are - * the first three statements in the compareInfo structure. The - * asserts() that follow verify that assumption - */ - memcpy(aWc, pDef->pUserData, 3); - assert((char *)&likeInfoAlt == (char *)&likeInfoAlt.matchAll); - assert(&((char *)&likeInfoAlt)[1] == (char *)&likeInfoAlt.matchOne); - assert(&((char *)&likeInfoAlt)[2] == (char *)&likeInfoAlt.matchSet); - *pIsNocase = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; + *is_like_ci = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; return 1; } @@ -1962,16 +1849,14 @@ sqlite3RegisterBuiltinFunctions(void) AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, groupConcatFinalize), - LIKEFUNC(glob, 2, &globInfo, - SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), #ifdef SQLITE_CASE_SENSITIVE_LIKE - LIKEFUNC(like, 2, &likeInfoAlt, + LIKEFUNC(like, 2, &case_sensitive_like, SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), - LIKEFUNC(like, 3, &likeInfoAlt, + LIKEFUNC(like, 3, &case_sensitive_like, SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), #else - LIKEFUNC(like, 2, &likeInfoNorm, SQLITE_FUNC_LIKE), - LIKEFUNC(like, 3, &likeInfoNorm, SQLITE_FUNC_LIKE), + LIKEFUNC(like, 2, &case_insensitive_like, SQLITE_FUNC_LIKE), + LIKEFUNC(like, 3, &case_insensitive_like, SQLITE_FUNC_LIKE), #endif #ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION FUNCTION(unknown, -1, 0, 0, unknownFunc), diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c index 5fb29c75c..26a602b23 100644 --- a/src/box/sql/pragma.c +++ b/src/box/sql/pragma.c @@ -771,8 +771,10 @@ sqlite3Pragma(Parse * pParse, Token * pId, /* First part of [schema.]id field */ } #endif - /* Reinstall the LIKE and GLOB functions. The variant of LIKE * - * used will be case sensitive or not depending on the RHS. + /** + * Reinstall the LIKE and functions. The variant + * of LIKE * used will be case sensitive or not + * depending on the RHS. */ case PragTyp_CASE_SENSITIVE_LIKE:{ if (zRight) { diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h index e7a02dc1d..a805adf22 100644 --- a/src/box/sql/sqliteInt.h +++ b/src/box/sql/sqliteInt.h @@ -565,16 +565,15 @@ char * sqlite3_vsnprintf(int, char *, const char *, va_list); int -sqlite3_strlike(const char *zGlob, const char *zStr, - unsigned int cEsc); +sql_strlike_cs(const char *zLike, const char *zStr, unsigned int cEsc); + +int +sql_strlike_ci(const char *zLike, const char *zStr, unsigned int cEsc); typedef void (*sqlite3_destructor_type) (void *); #define SQLITE_STATIC ((sqlite3_destructor_type)0) #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) -int -sqlite3_strglob(const char *zGlob, const char *zStr); - int sqlite3_prepare(sqlite3 * db, /* Database handle */ const char *zSql, /* SQL statement, UTF-8 encoded */ @@ -701,9 +700,6 @@ struct on_conflict { enum on_conflict_action optimized_action; }; -void * -sqlite3_user_data(sqlite3_context *); - void sqlite3_randomness(int N, void *P); @@ -2355,7 +2351,7 @@ struct Expr { #define EP_Distinct 0x000010 /* Aggregate function with DISTINCT keyword */ #define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */ #define EP_DblQuoted 0x000040 /* token.z was originally in "..." */ -#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */ +#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, etc */ #define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */ #define EP_Generic 0x000200 /* Ignore COLLATE or affinity on this tree */ #define EP_IntValue 0x000400 /* Integer value contained in u.iValue */ @@ -4378,7 +4374,7 @@ index_column_count(const Index *); bool index_is_unique_not_null(const Index *); void sqlite3RegisterLikeFunctions(sqlite3 *, int); -int sqlite3IsLikeFunction(sqlite3 *, Expr *, int *, char *); +int sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_case_insensitive); void sqlite3SchemaClear(sqlite3 *); Schema *sqlite3SchemaCreate(sqlite3 *); int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, diff --git a/src/box/sql/sqliteLimit.h b/src/box/sql/sqliteLimit.h index b88c9c6d3..e76353aff 100644 --- a/src/box/sql/sqliteLimit.h +++ b/src/box/sql/sqliteLimit.h @@ -164,8 +164,7 @@ enum { #endif /* - * Maximum length (in bytes) of the pattern in a LIKE or GLOB - * operator. + * Maximum length (in bytes) of the pattern in a LIKE operator. */ #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH #define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c index 0c978142d..3f10f4d68 100644 --- a/src/box/sql/vdbe.c +++ b/src/box/sql/vdbe.c @@ -5521,7 +5521,7 @@ vdbe_return: testcase( nVmStep>0); p->aCounter[SQLITE_STMTSTATUS_VM_STEP] += (int)nVmStep; assert(rc!=SQLITE_OK || nExtraDelete==0 - || sqlite3_strlike("DELETE%",p->zSql,0)!=0 + || sql_strlike_ci("DELETE%", p->zSql, 0) != 0 ); return rc; diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c index c35c25ac4..f864ea7fa 100644 --- a/src/box/sql/wherecode.c +++ b/src/box/sql/wherecode.c @@ -339,7 +339,7 @@ sqlite3WhereAddScanStatus(Vdbe * v, /* Vdbe to add scanstatus entry to */ * automatically disabled. In this way, terms get disabled if derived * virtual terms are tested first. For example: * - * x GLOB 'abc*' AND x>='abc' AND x<'acd' + * x LIKE 'abc%' AND x>='abc' AND x<'acd' * \___________/ \______/ \_____/ * parent child1 child2 * diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index 612868695..2d9fb6453 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -218,38 +218,61 @@ operatorMask(int op) return c; } +/** + * Wildcard characters. + */ +#define match_one '_' +#define match_all '%' + #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION -/* - * Check to see if the given expression is a LIKE or GLOB operator that - * can be optimized using inequality constraints. Return TRUE if it is - * so and false if not. +/** + * Check to see if the given expression is a LIKE operator that + * can be optimized using inequality constraints. * - * In order for the operator to be optimizible, the RHS must be a string - * literal that does not begin with a wildcard. The LHS must be a column - * that may only be NULL, a string, or a BLOB, never a number. The - * collating sequence for the column on the LHS must be appropriate for - * the operator. + * In order for the operator to be optimizible, the RHS must be a + * string literal that does not begin with a wildcard. The LHS + * must be a column that may only be NULL, a string, or a BLOB, + * never a number. The collating sequence for the column on the + * LHS must be appropriate for the operator. + * + * @param pParse Parsing and code generating context. + * @param pExpr Test this expression. + * @param ppPrefix Pointer to TK_STRING expression with + * pattern prefix. + * @param pisComplete True if the only wildcard is '%' in the + * last character. + * @param pnoCase True if case insensitive. + * + * @retval True if the given expr is a LIKE operator & is + * optimizable using inequality constraints. + * False if not. */ static int -isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ - Expr * pExpr, /* Test this expression */ - Expr ** ppPrefix, /* Pointer to TK_STRING expression with pattern prefix */ - int *pisComplete, /* True if the only wildcard is % in the last character */ - int *pnoCase /* True if uppercase is equivalent to lowercase */ - ) +is_like(Parse *pParse, + Expr *pExpr, + Expr **ppPrefix, + int *pisComplete, + int *pnoCase) { - const char *z = 0; /* String on RHS of LIKE operator */ - Expr *pRight, *pLeft; /* Right and left size of LIKE operator */ - ExprList *pList; /* List of operands to the LIKE operator */ - int c; /* One character in z[] */ - int cnt; /* Number of non-wildcard prefix characters */ - char wc[3]; /* Wildcard characters */ - sqlite3 *db = pParse->db; /* Database connection */ + /* String on RHS of LIKE operator */ + const char *z = 0; + /* Right and left size of LIKE operator */ + Expr *pRight, *pLeft; + /* List of operands to the LIKE operator */ + ExprList *pList; + /* One character in z[] */ + int c; + /* Number of non-wildcard prefix characters */ + int cnt; + /* Database connection */ + sqlite3 *db = pParse->db; sqlite3_value *pVal = 0; - int op; /* Opcode of pRight */ - int rc; /* Result code to return */ + /* Opcode of pRight */ + int op; + /* Result code to return */ + int rc; - if (!sqlite3IsLikeFunction(db, pExpr, pnoCase, wc)) { + if (!sql_is_like_func(db, pExpr, pnoCase)) { return 0; } pList = pExpr->x.pList; @@ -257,8 +280,9 @@ isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ /* Value might be numeric */ if (pLeft->op != TK_COLUMN || sqlite3ExprAffinity(pLeft) != AFFINITY_TEXT) { - /* IMP: R-02065-49465 The left-hand side of the LIKE or GLOB operator must - * be the name of an indexed column with TEXT affinity. + /* IMP: R-02065-49465 The left-hand side of the + * LIKE operator must be the name of an indexed + * column with TEXT affinity. */ return 0; } @@ -281,13 +305,11 @@ isLikeOrGlob(Parse * pParse, /* Parsing and code generating context */ } if (z) { cnt = 0; - while ((c = z[cnt]) != 0 && c != wc[0] && c != wc[1] - && c != wc[2]) { + while ((c = z[cnt]) != 0 && c != match_one && c != match_all) cnt++; - } if (cnt != 0 && 255 != (u8) z[cnt - 1]) { Expr *pPrefix; - *pisComplete = c == wc[0] && z[cnt + 1] == 0; + *pisComplete = c == match_all && z[cnt + 1] == 0; pPrefix = sqlite3Expr(db, TK_STRING, z); if (pPrefix) pPrefix->u.zToken[cnt] = 0; @@ -943,19 +965,32 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ int idxTerm /* Index of the term to be analyzed */ ) { - WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ - WhereTerm *pTerm; /* The term to be analyzed */ - WhereMaskSet *pMaskSet; /* Set of table index masks */ - Expr *pExpr; /* The expression to be analyzed */ - Bitmask prereqLeft; /* Prerequesites of the pExpr->pLeft */ - Bitmask prereqAll; /* Prerequesites of pExpr */ - Bitmask extraRight = 0; /* Extra dependencies on LEFT JOIN */ - Expr *pStr1 = 0; /* RHS of LIKE/GLOB operator */ - int isComplete = 0; /* RHS of LIKE/GLOB ends with wildcard */ - int noCase = 0; /* uppercase equivalent to lowercase */ - int op; /* Top-level operator. pExpr->op */ - Parse *pParse = pWInfo->pParse; /* Parsing context */ - sqlite3 *db = pParse->db; /* Database connection */ + /* WHERE clause processing context */ + WhereInfo *pWInfo = pWC->pWInfo; + /* The term to be analyzed */ + WhereTerm *pTerm; + /* Set of table index masks */ + WhereMaskSet *pMaskSet; + /* The expression to be analyzed */ + Expr *pExpr; + /* Prerequesites of the pExpr->pLeft */ + Bitmask prereqLeft; + /* Prerequesites of pExpr */ + Bitmask prereqAll; + /* Extra dependencies on LEFT JOIN */ + Bitmask extraRight = 0; + /* RHS of LIKE operator */ + Expr *pStr1 = 0; + /* RHS of LIKE ends with wildcard */ + int isComplete = 0; + /* uppercase equivalent to lowercase */ + int noCase = 0; + /* Top-level operator. pExpr->op */ + int op; + /* Parsing context */ + Parse *pParse = pWInfo->pParse; + /* Database connection */ + sqlite3 *db = pParse->db; if (db->mallocFailed) { return; @@ -1111,37 +1146,44 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ #endif /* SQLITE_OMIT_OR_OPTIMIZATION */ #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION - /* Add constraints to reduce the search space on a LIKE or GLOB + /** + * Add constraints to reduce the search space on a LIKE * operator. * - * A like pattern of the form "x LIKE 'aBc%'" is changed into constraints + * A like pattern of the form "x LIKE 'aBc%'" is changed + * into constraints: * * x>='ABC' AND x<'abd' AND x LIKE 'aBc%' * - * The last character of the prefix "abc" is incremented to form the - * termination condition "abd". If case is not significant (the default - * for LIKE) then the lower-bound is made all uppercase and the upper- - * bound is made all lowercase so that the bounds also work when comparing - * BLOBs. + * The last character of the prefix "abc" is incremented + * to form the termination condition "abd". If case is + * not significant (the default for LIKE) then the + * lower-bound is made all uppercase and the upper-bound + * is made all lowercase so that the bounds also work + * when comparing BLOBs. */ if (pWC->op == TK_AND - && isLikeOrGlob(pParse, pExpr, &pStr1, &isComplete, &noCase) - ) { - Expr *pLeft; /* LHS of LIKE/GLOB operator */ - Expr *pStr2; /* Copy of pStr1 - RHS of LIKE/GLOB operator */ + && is_like(pParse, pExpr, &pStr1, &isComplete, &noCase)) { + /* LHS of LIKE operator */ + Expr *pLeft; + /* Copy of pStr1 - RHS of LIKE operator */ + Expr *pStr2; Expr *pNewExpr1; Expr *pNewExpr2; int idxNew1; int idxNew2; - const char *zCollSeqName; /* Name of collating sequence */ + /* Name of collating sequence */ + const char *zCollSeqName; const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC; pLeft = pExpr->x.pList->a[1].pExpr; pStr2 = sqlite3ExprDup(db, pStr1, 0); - /* Convert the lower bound to upper-case and the upper bound to - * lower-case (upper-case is less than lower-case in ASCII) so that - * the range constraints also work for BLOBs + /** + * Convert the lower bound to upper-case and the + * upper bound to lower-case (upper-case is less + * than lower-case in ASCII) so that the range + * constraints also work for BLOBs */ if (noCase && !pParse->db->mallocFailed) { int i; diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua index cfe280121..98338c493 100755 --- a/test/sql-tap/alter.test.lua +++ b/test/sql-tap/alter.test.lua @@ -232,7 +232,7 @@ test:do_execsql_test( [[ CREATE TABLE xyz(x PRIMARY KEY); ALTER TABLE xyz RENAME TO "xyz1234abc"; - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; + SELECT "name" FROM "_space" WHERE "name" = 'xyz1234abc'; ]], { -- <alter-5.1> "xyz1234abc" @@ -243,7 +243,7 @@ test:do_execsql_test( "alter-5.2", [[ ALTER TABLE "xyz1234abc" RENAME TO xyzabc; - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; + SELECT "name" FROM "_space" WHERE "name" = 'XYZABC'; ]], { -- <alter-5.2> "XYZABC" diff --git a/test/sql-tap/analyze9.test.lua b/test/sql-tap/analyze9.test.lua index 3b3d52f67..ec3e545d8 100755 --- a/test/sql-tap/analyze9.test.lua +++ b/test/sql-tap/analyze9.test.lua @@ -206,10 +206,10 @@ test:do_execsql_test( INSERT INTO t1 VALUES(81, 1, 'one-i'); INSERT INTO t1 VALUES(91, 1, 'one-j'); INSERT INTO t1 SELECT a+1,2,'two' || substr(c,4) FROM t1; - INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; - INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; - INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; - INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c GLOB 'one-*'; + INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; + INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; + INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; + INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; CREATE INDEX t1b ON t1(b); ANALYZE; SELECT c FROM t1 WHERE b=3 AND a BETWEEN 30 AND 60; diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index 9780d2cf9..0d69e8535 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -1,6 +1,6 @@ #!/usr/bin/env tarantool test = require("sqltester") -test:plan(10665) +test:plan(10647) --!./tcltestrunner.lua -- 2010 July 16 @@ -77,10 +77,7 @@ local operations = { {"<>", "ne1"}, {"!=", "ne2"}, {"IS", "is"}, --- NOTE: This test needs refactoring after deletion of GLOB & --- type restrictions for LIKE. (See #3572) -- {"LIKE", "like"}, --- {"GLOB", "glob"}, {"AND", "and"}, {"OR", "or"}, {"MATCH", "match"}, @@ -98,12 +95,10 @@ operations = { {"+", "-"}, {"<<", ">>", "&", "|"}, {"<", "<=", ">", ">="}, --- NOTE: This test needs refactoring after deletion of GLOB & --- type restrictions for LIKE. (See #3572) -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & --- are waiting for their hour, don't confuse them --- being commented with ticket above. - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, +-- are waiting for their hour, don't confuse them +-- being commented with commenting of "LIKE". + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, {"AND"}, {"OR"}, } @@ -128,7 +123,7 @@ end -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary -- operators, in order from highest to lowest precedence: || * / % + - -- << >> & | < <= > >= = == != <> IS IS --- NOT IN LIKE GLOB MATCH REGEXP AND OR +-- NOT IN LIKE MATCH REGEXP AND OR -- -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same -- precedence as =. @@ -482,7 +477,6 @@ for _, op in ipairs(oplist) do end end end - --------------------------------------------------------------------------- -- Test the IS and IS NOT operators. -- @@ -1303,11 +1297,11 @@ end test:execsql [[ CREATE TABLE tblname(cname PRIMARY KEY); ]] + local function glob(args) return 1 end -box.internal.sql_create_function("GLOB", glob) box.internal.sql_create_function("MATCH", glob) box.internal.sql_create_function("REGEXP", glob) local test_cases12 ={ @@ -1369,47 +1363,43 @@ local test_cases12 ={ {47, "EXPR1 LIKE EXPR2"}, {48, "EXPR1 LIKE EXPR2 ESCAPE EXPR"}, - {49, "EXPR1 GLOB EXPR2"}, - {50, "EXPR1 GLOB EXPR2 ESCAPE EXPR"}, - {51, "EXPR1 REGEXP EXPR2"}, - {52, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, - {53, "EXPR1 MATCH EXPR2"}, - {54, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, - {55, "EXPR1 NOT LIKE EXPR2"}, - {56, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, - {57, "EXPR1 NOT GLOB EXPR2"}, - {58, "EXPR1 NOT GLOB EXPR2 ESCAPE EXPR"}, - {59, "EXPR1 NOT REGEXP EXPR2"}, - {60, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, - {61, "EXPR1 NOT MATCH EXPR2"}, - {62, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, - - {63, "EXPR IS NULL"}, - {64, "EXPR IS NOT NULL"}, - - {65, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, - {66, "EXPR BETWEEN EXPR1 AND EXPR2"}, - - {67, "EXPR NOT IN (SELECT cname FROM tblname)"}, - {68, "EXPR NOT IN (1)"}, - {69, "EXPR NOT IN (1, 2, 3)"}, - {70, "EXPR NOT IN tblname"}, - {71, "EXPR IN (SELECT cname FROM tblname)"}, - {72, "EXPR IN (1)"}, - {73, "EXPR IN (1, 2, 3)"}, - {74, "EXPR IN tblname"}, - - {75, "EXISTS (SELECT cname FROM tblname)"}, - {76, "NOT EXISTS (SELECT cname FROM tblname)"}, - - {77, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, - {78, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, - {79, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, - {80, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, - {81, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, - {82, "CASE WHEN EXPR1 THEN EXPR2 END"}, - {83, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, - {84, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, + {49, "EXPR1 REGEXP EXPR2"}, + {50, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, + {51, "EXPR1 MATCH EXPR2"}, + {52, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, + {53, "EXPR1 NOT LIKE EXPR2"}, + {54, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, + {55, "EXPR1 NOT REGEXP EXPR2"}, + {56, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, + {57, "EXPR1 NOT MATCH EXPR2"}, + {58, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, + + {59, "EXPR IS NULL"}, + {60, "EXPR IS NOT NULL"}, + + {61, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, + {62, "EXPR BETWEEN EXPR1 AND EXPR2"}, + + {63, "EXPR NOT IN (SELECT cname FROM tblname)"}, + {64, "EXPR NOT IN (1)"}, + {65, "EXPR NOT IN (1, 2, 3)"}, + {66, "EXPR NOT IN tblname"}, + {67, "EXPR IN (SELECT cname FROM tblname)"}, + {68, "EXPR IN (1)"}, + {69, "EXPR IN (1, 2, 3)"}, + {70, "EXPR IN tblname"}, + + {71, "EXISTS (SELECT cname FROM tblname)"}, + {72, "NOT EXISTS (SELECT cname FROM tblname)"}, + + {73, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, + {74, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, + {75, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, + {76, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, + {77, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, + {78, "CASE WHEN EXPR1 THEN EXPR2 END"}, + {79, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 END"}, + {80, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, } for _, val in ipairs(test_cases12) do @@ -1802,7 +1792,7 @@ test:do_execsql_test( }) --------------------------------------------------------------------------- --- Test the statements related to the LIKE and GLOB operators. +-- Test the statements related to the LIKE operator. -- -- EVIDENCE-OF: R-16584-60189 The LIKE operator does a pattern matching -- comparison. @@ -2274,102 +2264,38 @@ test:do_execsql_test( -- </e_expr-16.1.7> }) --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but --- uses the Unix file globbing syntax for its wildcards. --- --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the +-- NOT keyword to invert the sense of the test. -- test:do_execsql_test( - "e_expr-17.1.1", - [[ - SELECT 'abcxyz' GLOB 'abc%' - ]], { - -- <e_expr-17.1.1> - 0 - -- </e_expr-17.1.1> - }) - -test:do_execsql_test( - "e_expr-17.1.2", - [[ - SELECT 'abcxyz' GLOB 'abc*' - ]], { - -- <e_expr-17.1.2> - 1 - -- </e_expr-17.1.2> - }) - -test:do_execsql_test( - "e_expr-17.1.3", - [[ - SELECT 'abcxyz' GLOB 'abc___' - ]], { - -- <e_expr-17.1.3> - 0 - -- </e_expr-17.1.3> - }) - -test:do_execsql_test( - "e_expr-17.1.4", - [[ - SELECT 'abcxyz' GLOB 'abc???' - ]], { - -- <e_expr-17.1.4> - 1 - -- </e_expr-17.1.4> - }) - -test:do_execsql_test( - "e_expr-17.1.5", + "e_expr-17.2.0", [[ - SELECT 'abcxyz' GLOB 'abc*' + PRAGMA case_sensitive_like = 1; + SELECT 'abcxyz' NOT LIKE 'ABC%'; ]], { - -- <e_expr-17.1.5> + -- <e_expr-17.2.0> 1 - -- </e_expr-17.1.5> - }) - -test:do_execsql_test( - "e_expr-17.1.6", - [[ - SELECT 'ABCxyz' GLOB 'abc*' - ]], { - -- <e_expr-17.1.6> - 0 - -- </e_expr-17.1.6> - }) - -test:do_execsql_test( - "e_expr-17.1.7", - [[ - SELECT 'abcxyz' GLOB 'ABC*' - ]], { - -- <e_expr-17.1.7> - 0 - -- </e_expr-17.1.7> + -- </e_expr-17.2.0> }) --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the --- NOT keyword to invert the sense of the test. --- test:do_execsql_test( "e_expr-17.2.1", [[ - SELECT 'abcxyz' NOT GLOB 'ABC*' + SELECT 'abcxyz' NOT LIKE 'abc%' ]], { -- <e_expr-17.2.1> - 1 + 0 -- </e_expr-17.2.1> }) test:do_execsql_test( "e_expr-17.2.2", [[ - SELECT 'abcxyz' NOT GLOB 'abc*' + PRAGMA case_sensitive_like = 0 ]], { -- <e_expr-17.2.2> - 0 - -- </e_expr-17.2.2> + + -- <e_expr-17.2.2> }) test:do_execsql_test( @@ -2448,62 +2374,6 @@ if 0>0 then db("nullvalue", "") end --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by --- calling the function glob(Y,X) and can be modified by overriding that --- function. - -local globargs = {} -local function globfunc(...) - local args = {...} - for i, v in ipairs(args) do - table.insert(globargs, v) - end - return 1 -end -box.internal.sql_create_function("GLOB", globfunc, 2) ---db("func", "glob", "-argcount", 2, "globfunc") - -test:do_execsql_test( - "e_expr-17.3.1", - [[ - SELECT 'abc' GLOB 'def' - ]], { - -- <e_expr-17.3.1> - 1 - -- </e_expr-17.3.1> - }) - -test:do_test( - "e_expr-17.3.2", - function() - return globargs - end, { - -- <e_expr-17.3.2> - "def", "abc" - -- </e_expr-17.3.2> - }) - -globargs = { } -test:do_execsql_test( - "e_expr-17.3.3", - [[ - SELECT 'X' NOT GLOB 'Y' - ]], { - -- <e_expr-17.3.3> - 0 - -- </e_expr-17.3.3> - }) - -test:do_test( - "e_expr-17.3.4", - function() - return globargs - end, { - -- <e_expr-17.3.4> - "Y", "X" - -- </e_expr-17.3.4> - }) - --sqlite3("db", "test.db") -- EVIDENCE-OF: R-41650-20872 No regexp() user function is defined by -- default and so use of the REGEXP operator will normally result in an 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 addf0e36d..a6d822ccd 100755 --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua @@ -142,17 +142,17 @@ for i, tested_string in ipairs(invalid_testcases) do local test_name = prefix .. "2." .. tostring(i) local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" test:do_catchsql_test(test_name, test_itself, - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + {1, "LIKE pattern can only contain UTF-8 characters"}) test_name = prefix .. "3." .. tostring(i) test_itself = "SELECT 'abc' LIKE 'abc" .. tested_string .. "';" test:do_catchsql_test(test_name, test_itself, - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + {1, "LIKE pattern can only contain UTF-8 characters"}) test_name = prefix .. "4." .. tostring(i) test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "c';" test:do_catchsql_test(test_name, test_itself, - {1, "LIKE or GLOB pattern can only contain UTF-8 characters"}) + {1, "LIKE pattern can only contain UTF-8 characters"}) -- Just skipping if row value predicand contains invalid character. @@ -185,7 +185,7 @@ local valid_testcases = { -- Valid testcases. for i, tested_string in ipairs(valid_testcases) do - test_name = prefix .. "8." .. tostring(i) + local test_name = prefix .. "8." .. tostring(i) local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" test:do_execsql_test(test_name, test_itself, {0}) diff --git a/test/sql-tap/like2.test.lua b/test/sql-tap/like2.test.lua index abcac39fb..c6c81cb4d 100755 --- a/test/sql-tap/like2.test.lua +++ b/test/sql-tap/like2.test.lua @@ -12,11 +12,11 @@ test:plan(282) -- May you find forgiveness for yourself and forgive others. -- May you share freely, never taking more than you give. -- -------------------------------------------------------------------------- --- This file implements regression tests for SQLite library. The --- focus of this file is testing the LIKE and GLOB operators and --- in particular the optimizations that occur to help those operators --- run faster. +----------------------------------------------------------------- +-- This file implements regression tests for SQLite library. The +-- focus of this file is testing the LIKE operator and +-- in particular the optimizations that occur to help this +-- operator run faster. -- -- $Id: like2.test,v 1.1 2008/05/26 18:33:41 drh Exp $ -- ["set","testdir",[["file","dirname",["argv0"]]]] diff --git a/test/sql-tap/like3.test.lua b/test/sql-tap/like3.test.lua index 505d2fabb..f5e517121 100755 --- a/test/sql-tap/like3.test.lua +++ b/test/sql-tap/like3.test.lua @@ -1,6 +1,6 @@ #!/usr/bin/env tarantool test = require("sqltester") -test:plan(7) +test:plan(1) --!./tcltestrunner.lua -- 2015-03-06 @@ -12,13 +12,13 @@ test:plan(7) -- May you find forgiveness for yourself and forgive others. -- May you share freely, never taking more than you give. -- -------------------------------------------------------------------------- +----------------------------------------------------------------- -- --- This file implements regression tests for SQLite library. The --- focus of this file is testing the LIKE and GLOB operators and --- in particular the optimizations that occur to help those operators --- run faster and that those optimizations work correctly when there --- are both strings and blobs being tested. +-- This file implements regression tests for SQLite library. The +-- focus of this file is testing the LIKE operator and +-- in particular the optimizations that occur to help this +-- operator run faster and that those optimizations work +-- correctly when there are both strings and blobs being tested. -- -- Ticket 05f43be8fdda9fbd948d374319b99b054140bc36 shows that the following -- SQL was not working correctly: @@ -67,68 +67,6 @@ test:do_execsql_test( -- </like3-1.2> }) -test:do_execsql_test( - "like3-2.0", - [[ - CREATE TABLE t2(a PRIMARY KEY, b TEXT); - INSERT INTO t2 SELECT a, b FROM t1; - CREATE INDEX t2ba ON t2(b,a); - SELECT a, b FROM t2 WHERE b GLOB 'ab*' ORDER BY +a; - ]], { - -- <like3-2.0> - 1, "abc", 4, "abc" - -- </like3-2.0> - }) - -test:do_execsql_test( - "like3-2.1", - [[ - SELECT a, b FROM t2 WHERE +b GLOB 'ab*' ORDER BY +a; - ]], { - -- <like3-2.1> - 1, "abc", 4, "abc" - -- </like3-2.1> - }) - -test:do_execsql_test( - "like3-2.2", - [[ - SELECT a, b FROM t2 WHERE b>=x'6162' AND b GLOB 'ab*' - ]], { - -- <like3-2.2> - 4, "abc" - -- </like3-2.2> - }) - -test:do_execsql_test( - "like3-2.3", - [[ - SELECT a, b FROM t2 WHERE +b>=x'6162' AND +b GLOB 'ab*' - ]], { - -- <like3-2.3> - 4, "abc" - -- </like3-2.3> - }) - -test:do_execsql_test( - "like3-2.4", - [[ - SELECT a, b FROM t2 WHERE b GLOB 'ab*' AND b>=x'6162' - ]], { - -- <like3-2.4> - 4, "abc" - -- </like3-2.4> - }) - -test:do_execsql_test( - "like3-2.5", - [[ - SELECT a, b FROM t2 WHERE +b GLOB 'ab*' AND +b>=x'6162' - ]], { - -- <like3-2.5> - 4, "abc" - -- </like3-2.5> - }) test:execsql([[ CREATE TABLE t3(x TEXT PRIMARY KEY COLLATE "unicode_ci"); INSERT INTO t3(x) VALUES('aaa'),('abc'),('abd'),('abe'),('acz'); diff --git a/test/sql-tap/tkt1537.test.lua b/test/sql-tap/tkt1537.test.lua index caa428409..4b2d78c18 100755 --- a/test/sql-tap/tkt1537.test.lua +++ b/test/sql-tap/tkt1537.test.lua @@ -185,7 +185,7 @@ test:do_execsql_test( test:do_execsql_test( "tkt1537-3.1", [[ - SELECT * FROM t1 LEFT JOIN t2 ON b GLOB 'abc*' WHERE t1.id=1; + SELECT * FROM t1 LEFT JOIN t2 ON b LIKE 'abc%' WHERE t1.id=1; ]], { -- <tkt1537-3.1> 1, "", "", "", "" @@ -195,7 +195,7 @@ test:do_execsql_test( test:do_execsql_test( "tkt1537-3.2", [[ - SELECT * FROM t2 LEFT JOIN t1 ON a1 GLOB 'abc*' WHERE t2.id=3; + SELECT * FROM t2 LEFT JOIN t1 ON a1 LIKE 'abc%' WHERE t2.id=3; ]], { -- <tkt1537-3.2> 3, 1, "", "", "" diff --git a/test/sql-tap/triggerA.test.lua b/test/sql-tap/triggerA.test.lua index da1add8e2..530e48830 100755 --- a/test/sql-tap/triggerA.test.lua +++ b/test/sql-tap/triggerA.test.lua @@ -76,7 +76,7 @@ test:do_test( "triggerA-1.3", function() return test:execsql [[ - CREATE VIEW v2 AS SELECT x, y FROM t1 WHERE y GLOB '*e*'; + CREATE VIEW v2 AS SELECT x, y FROM t1 WHERE y LIKE '%e%'; SELECT * FROM v2 ORDER BY 1; ]] end, { diff --git a/test/sql-tap/where3.test.lua b/test/sql-tap/where3.test.lua index 45827373f..96761310c 100755 --- a/test/sql-tap/where3.test.lua +++ b/test/sql-tap/where3.test.lua @@ -404,7 +404,7 @@ if 0 CREATE TABLE t401(p INTEGER PRIMARY KEY, q, r); CREATE TABLE t402(x INTEGER PRIMARY KEY, y, z); EXPLAIN QUERY PLAN - SELECT * FROM t400, t401, t402 WHERE t402.z GLOB 'abc*'; + SELECT * FROM t400, t401, t402 WHERE t402.z LIKE 'abc%'; ]], { -- <where3-4.0> 0, 0, 2, "SCAN TABLE T402", 0, 1, 0, "SCAN TABLE T400", 0, 2, 1, "SCAN TABLE T401" @@ -415,7 +415,7 @@ if 0 "where3-4.1", [[ EXPLAIN QUERY PLAN - SELECT * FROM t400, t401, t402 WHERE t401.r GLOB 'abc*'; + SELECT * FROM t400, t401, t402 WHERE t401.r LIKE 'abc%'; ]], { -- <where3-4.1> 0, 0, 1, "SCAN TABLE T401", 0, 1, 0, "SCAN TABLE T400", 0, 2, 2, "SCAN TABLE T402" @@ -426,7 +426,7 @@ if 0 "where3-4.2", [[ EXPLAIN QUERY PLAN - SELECT * FROM t400, t401, t402 WHERE t400.c GLOB 'abc*'; + SELECT * FROM t400, t401, t402 WHERE t400.c LIKE 'abc%'; ]], { -- <where3-4.2> 0, 0, 0, "SCAN TABLE T400", 0, 1, 1, "SCAN TABLE T401", 0, 2, 2, "SCAN TABLE T402" diff --git a/test/sql-tap/where7.test.lua b/test/sql-tap/where7.test.lua index 6691dd03b..27d25e671 100755 --- a/test/sql-tap/where7.test.lua +++ b/test/sql-tap/where7.test.lua @@ -448,12 +448,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1070 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.2.1> @@ -467,12 +467,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1070 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.2.2> @@ -487,11 +487,11 @@ test:do_test( SELECT a FROM t2 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR ((a BETWEEN 33 AND 35) AND a!=34) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=220 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.3.1> @@ -506,11 +506,11 @@ test:do_test( SELECT a FROM t3 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR ((a BETWEEN 33 AND 35) AND a!=34) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=220 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.3.2> @@ -525,7 +525,7 @@ test:do_test( SELECT a FROM t2 WHERE b=190 OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=407 ]]) end, { @@ -541,7 +541,7 @@ test:do_test( SELECT a FROM t3 WHERE b=190 OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=407 ]]) end, { @@ -555,7 +555,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=795 OR b=1103 OR b=583 @@ -571,7 +571,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=795 OR b=1103 OR b=583 @@ -589,7 +589,7 @@ test:do_test( SELECT a FROM t2 WHERE a=74 OR a=50 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 16 AND 18) AND a!=17) OR c=21021 OR ((a BETWEEN 82 AND 84) AND a!=83) @@ -607,7 +607,7 @@ test:do_test( SELECT a FROM t3 WHERE a=74 OR a=50 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 16 AND 18) AND a!=17) OR c=21021 OR ((a BETWEEN 82 AND 84) AND a!=83) @@ -746,7 +746,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR c=11011 OR c=20020 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) @@ -763,7 +763,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR c=11011 OR c=20020 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) @@ -781,7 +781,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=792 OR a=97 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) @@ -804,7 +804,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=792 OR a=97 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) @@ -827,11 +827,11 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 50 AND 52) AND a!=51) OR c=9009 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=539 OR b=297 - OR (g='wvutsrq' AND f GLOB 'klmno*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='wvutsrq' AND f LIKE 'klmno%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=957 OR f='xyzabcdef' OR b=619 @@ -849,11 +849,11 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 50 AND 52) AND a!=51) OR c=9009 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=539 OR b=297 - OR (g='wvutsrq' AND f GLOB 'klmno*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='wvutsrq' AND f LIKE 'klmno%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=957 OR f='xyzabcdef' OR b=619 @@ -931,7 +931,7 @@ test:do_test( SELECT a FROM t2 WHERE b=938 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.16.1> @@ -946,7 +946,7 @@ test:do_test( SELECT a FROM t3 WHERE b=938 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.16.2> @@ -963,12 +963,12 @@ test:do_test( OR f='zabcdefgh' OR b=308 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=443 OR ((a BETWEEN 12 AND 14) AND a!=13) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.17.1> @@ -985,12 +985,12 @@ test:do_test( OR f='zabcdefgh' OR b=308 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=443 OR ((a BETWEEN 12 AND 14) AND a!=13) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.17.2> @@ -1037,13 +1037,13 @@ test:do_test( SELECT a FROM t2 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=46 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=73 OR c=20020 OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=267 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.19.1> @@ -1058,13 +1058,13 @@ test:do_test( SELECT a FROM t3 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=46 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=73 OR c=20020 OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=267 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.19.2> @@ -1078,7 +1078,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 27 AND 29) AND a!=28) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.20.1> @@ -1092,7 +1092,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 27 AND 29) AND a!=28) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.20.2> @@ -1111,9 +1111,9 @@ test:do_test( OR ((a BETWEEN 87 AND 89) AND a!=88) OR f='bcdefghij' OR b=586 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) OR a=9 ]]) @@ -1134,9 +1134,9 @@ test:do_test( OR ((a BETWEEN 87 AND 89) AND a!=88) OR f='bcdefghij' OR b=586 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) OR a=9 ]]) @@ -1154,7 +1154,7 @@ test:do_test( WHERE b=399 OR c=28028 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) end, { @@ -1171,7 +1171,7 @@ test:do_test( WHERE b=399 OR c=28028 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) end, { @@ -1185,15 +1185,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR ((a BETWEEN 96 AND 98) AND a!=97) OR c=14014 OR c=33033 OR a=89 OR b=770 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR a=35 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR b=253 OR c=14014 ]]) @@ -1208,15 +1208,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR ((a BETWEEN 96 AND 98) AND a!=97) OR c=14014 OR c=33033 OR a=89 OR b=770 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR a=35 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR b=253 OR c=14014 ]]) @@ -1231,10 +1231,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=330 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=16 ]]) end, { @@ -1248,10 +1248,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=330 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=16 ]]) end, { @@ -1268,7 +1268,7 @@ test:do_test( WHERE c=5005 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR ((a BETWEEN 36 AND 38) AND a!=37) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.25.1> @@ -1284,7 +1284,7 @@ test:do_test( WHERE c=5005 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR ((a BETWEEN 36 AND 38) AND a!=37) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.25.2> @@ -1298,9 +1298,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR ((a BETWEEN 64 AND 66) AND a!=65) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=33 ]]) end, { @@ -1315,9 +1315,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR ((a BETWEEN 64 AND 66) AND a!=65) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=33 ]]) end, { @@ -1361,8 +1361,8 @@ test:do_test( SELECT a FROM t2 WHERE c=18018 OR a=94 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1012 OR a=3 OR d>1e10 @@ -1382,8 +1382,8 @@ test:do_test( SELECT a FROM t3 WHERE c=18018 OR a=94 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1012 OR a=3 OR d>1e10 @@ -1405,11 +1405,11 @@ test:do_test( OR c=11011 OR b=297 OR a=63 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR a=76 OR b=1026 OR a=26 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR c=30030 ]]) end, { @@ -1427,11 +1427,11 @@ test:do_test( OR c=11011 OR b=297 OR a=63 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR a=76 OR b=1026 OR a=26 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR c=30030 ]]) end, { @@ -1449,7 +1449,7 @@ test:do_test( OR b=1070 OR a=59 OR b=715 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.30.1> @@ -1466,7 +1466,7 @@ test:do_test( OR b=1070 OR a=59 OR b=715 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.30.2> @@ -1479,13 +1479,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=1056 OR b=1012 OR ((a BETWEEN 57 AND 59) AND a!=58) OR ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.31.1> @@ -1498,13 +1498,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=1056 OR b=1012 OR ((a BETWEEN 57 AND 59) AND a!=58) OR ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.31.2> @@ -1518,7 +1518,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='rstuvwxyz' - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) @@ -1534,7 +1534,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='rstuvwxyz' - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) ]]) @@ -1549,13 +1549,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR c=12012 OR a=18 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.33.1> @@ -1568,13 +1568,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR c=12012 OR a=18 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.33.2> @@ -1622,7 +1622,7 @@ test:do_test( OR ((a BETWEEN 67 AND 69) AND a!=68) OR c=33033 OR b=11 - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR ((a BETWEEN 7 AND 9) AND a!=8) ]]) end, { @@ -1643,7 +1643,7 @@ test:do_test( OR ((a BETWEEN 67 AND 69) AND a!=68) OR c=33033 OR b=11 - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR ((a BETWEEN 7 AND 9) AND a!=8) ]]) end, { @@ -1719,7 +1719,7 @@ test:do_test( SELECT a FROM t2 WHERE b=165 OR b=201 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR a=32 ]]) end, { @@ -1735,7 +1735,7 @@ test:do_test( SELECT a FROM t3 WHERE b=165 OR b=201 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR a=32 ]]) end, { @@ -1749,8 +1749,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.39.1> @@ -1763,8 +1763,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.39.2> @@ -1785,8 +1785,8 @@ test:do_test( OR a=18 OR a=34 OR b=132 - OR (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR c=18018 ]]) end, { @@ -1808,8 +1808,8 @@ test:do_test( OR a=18 OR a=34 OR b=132 - OR (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR c=18018 ]]) end, { @@ -1851,13 +1851,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR b=297 OR b=113 OR b=176 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) OR a=67 OR c=26026 @@ -1873,13 +1873,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR b=297 OR b=113 OR b=176 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) OR a=67 OR c=26026 @@ -1940,8 +1940,8 @@ test:do_test( OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=487 OR b=619 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.44.1> @@ -1959,8 +1959,8 @@ test:do_test( OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=487 OR b=619 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.44.2> @@ -1980,7 +1980,7 @@ test:do_test( OR c=17017 OR a=82 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=39.0 AND d<40.0 AND d IS NOT NULL) ]]) @@ -2002,7 +2002,7 @@ test:do_test( OR c=17017 OR a=82 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=39.0 AND d<40.0 AND d IS NOT NULL) ]]) @@ -2017,7 +2017,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR c=22022 ]]) end, { @@ -2031,7 +2031,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR c=22022 ]]) end, { @@ -2048,7 +2048,7 @@ test:do_test( WHERE c=7007 OR b=91 OR b=212 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR c=28028 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) ]]) @@ -2066,7 +2066,7 @@ test:do_test( WHERE c=7007 OR b=91 OR b=212 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR c=28028 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) ]]) @@ -2111,9 +2111,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR c=4004 OR b=322 @@ -2131,9 +2131,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR c=4004 OR b=322 @@ -2156,8 +2156,8 @@ test:do_test( OR a=46 OR b=660 OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=355 OR a=93 OR b=297 @@ -2178,8 +2178,8 @@ test:do_test( OR a=46 OR b=660 OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR b=355 OR a=93 OR b=297 @@ -2197,7 +2197,7 @@ test:do_test( SELECT a FROM t2 WHERE b=190 OR a=62 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.51.1> @@ -2212,7 +2212,7 @@ test:do_test( SELECT a FROM t3 WHERE b=190 OR a=62 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.51.2> @@ -2306,7 +2306,7 @@ test:do_test( OR b=256 OR a=72 OR c>=34035 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=674 OR a=22 ]]) @@ -2328,7 +2328,7 @@ test:do_test( OR b=256 OR a=72 OR c>=34035 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=674 OR a=22 ]]) @@ -2381,9 +2381,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.56.1> @@ -2396,9 +2396,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.56.2> @@ -2413,7 +2413,7 @@ test:do_test( SELECT a FROM t2 WHERE b=748 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR b=630 ]]) @@ -2430,7 +2430,7 @@ test:do_test( SELECT a FROM t3 WHERE b=748 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR b=630 ]]) @@ -2521,7 +2521,7 @@ test:do_test( SELECT a FROM t2 WHERE b=979 OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.60.1> @@ -2536,7 +2536,7 @@ test:do_test( SELECT a FROM t3 WHERE b=979 OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.60.2> @@ -2555,7 +2555,7 @@ test:do_test( OR b=726 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -2575,7 +2575,7 @@ test:do_test( OR b=726 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -2593,10 +2593,10 @@ test:do_test( OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=924 OR c=11011 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=231 OR b=872 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.62.1> @@ -2613,10 +2613,10 @@ test:do_test( OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=924 OR c=11011 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=231 OR b=872 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.62.2> @@ -2631,8 +2631,8 @@ test:do_test( SELECT a FROM t2 WHERE a=24 OR b=473 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=509 OR b=924 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -2650,8 +2650,8 @@ test:do_test( SELECT a FROM t3 WHERE a=24 OR b=473 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=509 OR b=924 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -2668,11 +2668,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=363 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 56 AND 58) AND a!=57) ]]) @@ -2688,11 +2688,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=363 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 56 AND 58) AND a!=57) ]]) @@ -2711,9 +2711,9 @@ test:do_test( OR e IS NULL OR b=495 OR 1000000<b - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR a=45 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=85 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -2732,9 +2732,9 @@ test:do_test( OR e IS NULL OR b=495 OR 1000000<b - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR a=45 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=85 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -2781,9 +2781,9 @@ test:do_test( SELECT a FROM t2 WHERE c>=34035 OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR a=91 ]]) @@ -2800,9 +2800,9 @@ test:do_test( SELECT a FROM t3 WHERE c>=34035 OR ((a BETWEEN 96 AND 98) AND a!=97) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR a=91 ]]) @@ -2817,9 +2817,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=649 OR b=231 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -2837,9 +2837,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=649 OR b=231 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -2918,11 +2918,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=65 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR c=22022 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR b=671 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=91 OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR ((a BETWEEN 47 AND 49) AND a!=48) @@ -2941,11 +2941,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=65 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR c=22022 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR b=671 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=91 OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR ((a BETWEEN 47 AND 49) AND a!=48) @@ -2995,7 +2995,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR a=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=212 @@ -3014,7 +3014,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR a=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=212 @@ -3031,11 +3031,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR b=168 OR b=25 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.74.1> @@ -3048,11 +3048,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (g='ihgfedc' AND f LIKE 'bcdef%') OR b=168 OR b=25 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.74.2> @@ -3098,10 +3098,10 @@ test:do_test( WHERE c=31031 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR ((a BETWEEN 87 AND 89) AND a!=88) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=49 OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.76.1> @@ -3117,10 +3117,10 @@ test:do_test( WHERE c=31031 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR ((a BETWEEN 87 AND 89) AND a!=88) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=49 OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.76.2> @@ -3170,7 +3170,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR ((a BETWEEN 30 AND 32) AND a!=31) OR b=1089 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) @@ -3187,7 +3187,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR ((a BETWEEN 30 AND 32) AND a!=31) OR b=1089 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) @@ -3205,8 +3205,8 @@ test:do_test( SELECT a FROM t2 WHERE b=399 OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=10 OR b=1026 ]]) @@ -3223,8 +3223,8 @@ test:do_test( SELECT a FROM t3 WHERE b=399 OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=10 OR b=1026 ]]) @@ -3239,11 +3239,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=465 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.80.1> @@ -3256,11 +3256,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=465 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.80.2> @@ -3275,7 +3275,7 @@ test:do_test( SELECT a FROM t2 WHERE a=25 OR b=792 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.81.1> @@ -3290,7 +3290,7 @@ test:do_test( SELECT a FROM t3 WHERE a=25 OR b=792 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.81.2> @@ -3308,10 +3308,10 @@ test:do_test( OR a=13 OR a=15 OR ((a BETWEEN 6 AND 8) AND a!=7) - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=27 OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=32 OR a=39 ]]) @@ -3331,10 +3331,10 @@ test:do_test( OR a=13 OR a=15 OR ((a BETWEEN 6 AND 8) AND a!=7) - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=27 OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=32 OR a=39 ]]) @@ -3350,14 +3350,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='hijklmnop' - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) OR b=528 OR c=30030 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.83.1> @@ -3371,14 +3371,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='hijklmnop' - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) OR b=528 OR c=30030 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.83.2> @@ -3425,11 +3425,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR b=748 OR b=696 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.85.1> @@ -3442,11 +3442,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR b=748 OR b=696 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.85.2> @@ -3460,10 +3460,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=87 OR a=80 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=784 OR a=49 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -3480,10 +3480,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=87 OR a=80 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=784 OR a=49 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -3500,13 +3500,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 14 AND 16) AND a!=15) - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR c=1001 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR c=33033 ]]) end, { @@ -3521,13 +3521,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 14 AND 16) AND a!=15) - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR c=1001 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR c=33033 ]]) end, { @@ -3611,13 +3611,13 @@ test:do_test( OR b=553 OR a=64 OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR a=62 OR b=1081 OR b=770 OR b=762 OR b=803 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.90.1> @@ -3634,13 +3634,13 @@ test:do_test( OR b=553 OR a=64 OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR a=62 OR b=1081 OR b=770 OR b=762 OR b=803 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.90.2> @@ -3653,8 +3653,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR c=17017 OR b=168 OR ((a BETWEEN 77 AND 79) AND a!=78) @@ -3670,8 +3670,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR c=17017 OR b=168 OR ((a BETWEEN 77 AND 79) AND a!=78) @@ -3690,12 +3690,12 @@ test:do_test( WHERE c=34034 OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) OR a=44 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR c=31031 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=619 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR ((a BETWEEN 29 AND 31) AND a!=30) ]]) end, { @@ -3712,12 +3712,12 @@ test:do_test( WHERE c=34034 OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) OR a=44 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR c=31031 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=619 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR ((a BETWEEN 29 AND 31) AND a!=30) ]]) end, { @@ -3738,10 +3738,10 @@ test:do_test( OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=110 OR f='klmnopqrs' - OR (g='fedcbaz' AND f GLOB 'qrstu*') - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=674 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.93.1> @@ -3761,10 +3761,10 @@ test:do_test( OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=110 OR f='klmnopqrs' - OR (g='fedcbaz' AND f GLOB 'qrstu*') - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=674 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.93.2> @@ -3882,7 +3882,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=231 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.97.1> @@ -3896,7 +3896,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=231 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.97.2> @@ -4057,7 +4057,7 @@ test:do_test( OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=630 OR c=19019 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR a=24 OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) @@ -4077,7 +4077,7 @@ test:do_test( OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=630 OR c=19019 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR a=24 OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) @@ -4128,11 +4128,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='stuvwxyza' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 1 AND 3) AND a!=2) OR b=1037 OR f='zabcdefgh' - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.104.1> @@ -4146,11 +4146,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='stuvwxyza' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 1 AND 3) AND a!=2) OR b=1037 OR f='zabcdefgh' - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.104.2> @@ -4163,7 +4163,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 30 AND 32) AND a!=31) ]]) @@ -4178,7 +4178,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 30 AND 32) AND a!=31) ]]) @@ -4197,8 +4197,8 @@ test:do_test( OR b=190 OR ((a BETWEEN 38 AND 40) AND a!=39) OR ((a BETWEEN 70 AND 72) AND a!=71) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=704 ]]) end, { @@ -4216,8 +4216,8 @@ test:do_test( OR b=190 OR ((a BETWEEN 38 AND 40) AND a!=39) OR ((a BETWEEN 70 AND 72) AND a!=71) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=704 ]]) end, { @@ -4234,7 +4234,7 @@ test:do_test( WHERE b=88 OR f='vwxyzabcd' OR f='fghijklmn' - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.107.1> @@ -4250,7 +4250,7 @@ test:do_test( WHERE b=88 OR f='vwxyzabcd' OR f='fghijklmn' - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.107.2> @@ -4296,7 +4296,7 @@ test:do_test( WHERE ((a BETWEEN 47 AND 49) AND a!=48) OR a=5 OR b=179 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=69 ]]) end, { @@ -4313,7 +4313,7 @@ test:do_test( WHERE ((a BETWEEN 47 AND 49) AND a!=48) OR a=5 OR b=179 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=69 ]]) end, { @@ -4328,8 +4328,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=971 - OR (g='xwvutsr' AND f GLOB 'hijkl*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=828 OR a=81 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -4350,8 +4350,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=971 - OR (g='xwvutsr' AND f GLOB 'hijkl*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=828 OR a=81 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -4399,8 +4399,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'opqrs*') - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (g='lkjihgf' AND f LIKE 'opqrs%') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.112.1> @@ -4413,8 +4413,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'opqrs*') - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (g='lkjihgf' AND f LIKE 'opqrs%') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.112.2> @@ -4463,8 +4463,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=396 ]]) end, { @@ -4478,8 +4478,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=396 ]]) end, { @@ -4531,7 +4531,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=396 OR b=630 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR c=3003 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) ]]) @@ -4552,7 +4552,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=396 OR b=630 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR c=3003 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) ]]) @@ -4573,8 +4573,8 @@ test:do_test( OR b=957 OR b=311 OR b=143 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) end, { @@ -4594,8 +4594,8 @@ test:do_test( OR b=957 OR b=311 OR b=143 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) end, { @@ -4612,7 +4612,7 @@ test:do_test( WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 94 AND 96) AND a!=95) OR b=451 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.118.1> @@ -4628,7 +4628,7 @@ test:do_test( WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 94 AND 96) AND a!=95) OR b=451 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.118.2> @@ -4645,11 +4645,11 @@ test:do_test( OR b=451 OR b=363 OR b=330 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 52 AND 54) AND a!=53) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 81 AND 83) AND a!=82) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.119.1> @@ -4666,11 +4666,11 @@ test:do_test( OR b=451 OR b=363 OR b=330 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 52 AND 54) AND a!=53) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 81 AND 83) AND a!=82) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.119.2> @@ -4683,9 +4683,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR e IS NULL OR b=759 ]]) @@ -4700,9 +4700,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR (d>=68.0 AND d<69.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR e IS NULL OR b=759 ]]) @@ -4717,9 +4717,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.121.1> @@ -4732,9 +4732,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.121.2> @@ -4815,14 +4815,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'tuvwx*') + WHERE (g='fedcbaz' AND f LIKE 'tuvwx%') OR b=421 OR b=429 OR b=498 OR b=33 OR b=198 OR c=14014 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.124.1> @@ -4835,14 +4835,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'tuvwx*') + WHERE (g='fedcbaz' AND f LIKE 'tuvwx%') OR b=421 OR b=429 OR b=498 OR b=33 OR b=198 OR c=14014 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') ]]) end, { -- <where7-2.124.2> @@ -4858,13 +4858,13 @@ test:do_test( WHERE b=47 OR c=31031 OR a=38 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=242 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR b=352 OR a=49 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.125.1> @@ -4880,13 +4880,13 @@ test:do_test( WHERE b=47 OR c=31031 OR a=38 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=242 OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR b=352 OR a=49 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.125.2> @@ -4969,9 +4969,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=528 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.128.1> @@ -4984,9 +4984,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=528 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.128.2> @@ -5031,7 +5031,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR 1000000<b - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=24 ]]) @@ -5048,7 +5048,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR 1000000<b - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=24 ]]) @@ -5071,8 +5071,8 @@ test:do_test( OR a=14 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=440 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') ]]) end, { -- <where7-2.131.1> @@ -5093,8 +5093,8 @@ test:do_test( OR a=14 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=440 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') ]]) end, { -- <where7-2.131.2> @@ -5226,9 +5226,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=27 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=1045 OR a=84 OR f='qrstuvwxy' @@ -5245,9 +5245,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=27 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=1045 OR a=84 OR f='qrstuvwxy' @@ -5266,7 +5266,7 @@ test:do_test( WHERE b=704 OR b=949 OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=24024 OR b=553 OR a=18 @@ -5286,7 +5286,7 @@ test:do_test( WHERE b=704 OR b=949 OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=24024 OR b=553 OR a=18 @@ -5303,8 +5303,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=902 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=25 @@ -5323,8 +5323,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=902 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR b=25 @@ -5405,8 +5405,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=641 OR ((a BETWEEN 36 AND 38) AND a!=37) ]]) @@ -5421,8 +5421,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=641 OR ((a BETWEEN 36 AND 38) AND a!=37) ]]) @@ -5442,9 +5442,9 @@ test:do_test( OR ((a BETWEEN 44 AND 46) AND a!=45) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=11 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=52 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=13 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -5464,9 +5464,9 @@ test:do_test( OR ((a BETWEEN 44 AND 46) AND a!=45) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=11 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=52 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=13 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) @@ -5487,7 +5487,7 @@ test:do_test( OR b=1045 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.143.1> @@ -5506,7 +5506,7 @@ test:do_test( OR b=1045 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.143.2> @@ -5562,9 +5562,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=91 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR b=102 @@ -5584,9 +5584,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=91 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR b=102 @@ -5605,8 +5605,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'opqrs*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='vutsrqp' AND f LIKE 'opqrs%') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=990 OR a=52 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) @@ -5622,8 +5622,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'opqrs*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='vutsrqp' AND f LIKE 'opqrs%') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=990 OR a=52 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) @@ -5683,13 +5683,13 @@ test:do_test( OR b=421 OR ((a BETWEEN 22 AND 24) AND a!=23) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR c=22022 OR b=825 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.148.1> @@ -5706,13 +5706,13 @@ test:do_test( OR b=421 OR ((a BETWEEN 22 AND 24) AND a!=23) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR c=22022 OR b=825 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') ]]) end, { -- <where7-2.148.2> @@ -5729,7 +5729,7 @@ test:do_test( OR b=484 OR b=1026 OR a=90 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=608 OR a=32 ]]) @@ -5748,7 +5748,7 @@ test:do_test( OR b=484 OR b=1026 OR a=90 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=608 OR a=32 ]]) @@ -5771,7 +5771,7 @@ test:do_test( OR a=55 OR b=773 OR b=319 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.150.1> @@ -5792,7 +5792,7 @@ test:do_test( OR a=55 OR b=773 OR b=319 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.150.2> @@ -5805,7 +5805,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR f='mnopqrstu' OR a=62 ]]) @@ -5820,7 +5820,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR f='mnopqrstu' OR a=62 ]]) @@ -5839,9 +5839,9 @@ test:do_test( OR b=1045 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR c=13013 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=124 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.152.1> @@ -5858,9 +5858,9 @@ test:do_test( OR b=1045 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR c=13013 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=124 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.152.2> @@ -5880,7 +5880,7 @@ test:do_test( OR b=421 OR b=803 OR c=4004 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.153.1> @@ -5900,7 +5900,7 @@ test:do_test( OR b=421 OR b=803 OR c=4004 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.153.2> @@ -5913,9 +5913,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=99 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.154.1> @@ -5928,9 +5928,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=99 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.154.2> @@ -5972,9 +5972,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=795 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='jklmnopqr' - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=1056 ]]) @@ -5990,9 +5990,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=795 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='jklmnopqr' - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=1056 ]]) @@ -6146,7 +6146,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=23 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=641 OR b=352 OR b=179 @@ -6166,7 +6166,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=23 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=641 OR b=352 OR b=179 @@ -6189,7 +6189,7 @@ test:do_test( OR b=1078 OR ((a BETWEEN 11 AND 13) AND a!=12) OR c=12012 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=319 OR c=5005 OR 1000000<b @@ -6211,7 +6211,7 @@ test:do_test( OR b=1078 OR ((a BETWEEN 11 AND 13) AND a!=12) OR c=12012 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=319 OR c=5005 OR 1000000<b @@ -6230,8 +6230,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='cdefghijk' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) ]]) end, { @@ -6246,8 +6246,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='cdefghijk' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) ]]) end, { @@ -6297,13 +6297,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=891 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR b=484 OR a=62 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.165.1> @@ -6316,13 +6316,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=891 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR b=484 OR a=62 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.165.2> @@ -6336,11 +6336,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=363 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=39 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -6356,11 +6356,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=363 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=39 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -6378,7 +6378,7 @@ test:do_test( WHERE c=30030 OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=850 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.167.1> @@ -6394,7 +6394,7 @@ test:do_test( WHERE c=30030 OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=850 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.167.2> @@ -6540,7 +6540,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=333 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=407 OR a=5 @@ -6559,7 +6559,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=333 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=407 OR a=5 @@ -6580,7 +6580,7 @@ test:do_test( WHERE b<0 OR b=352 OR b=517 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 12 AND 14) AND a!=13) OR b=1012 OR ((a BETWEEN 11 AND 13) AND a!=12) @@ -6599,7 +6599,7 @@ test:do_test( WHERE b<0 OR b=352 OR b=517 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 12 AND 14) AND a!=13) OR b=1012 OR ((a BETWEEN 11 AND 13) AND a!=12) @@ -6615,11 +6615,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR c<=10 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=32 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR d<0.0 ]]) end, { @@ -6633,11 +6633,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR c<=10 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=32 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR d<0.0 ]]) end, { @@ -6653,9 +6653,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 20 AND 22) AND a!=21) OR b=1045 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=26 - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.175.1> @@ -6670,9 +6670,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 20 AND 22) AND a!=21) OR b=1045 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=26 - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.175.2> @@ -6714,7 +6714,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR c=32032 OR b=289 OR ((a BETWEEN 17 AND 19) AND a!=18) @@ -6732,7 +6732,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR c=32032 OR b=289 OR ((a BETWEEN 17 AND 19) AND a!=18) @@ -6752,7 +6752,7 @@ test:do_test( WHERE ((a BETWEEN 15 AND 17) AND a!=16) OR ((a BETWEEN 57 AND 59) AND a!=58) OR b=33 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.178.1> @@ -6768,7 +6768,7 @@ test:do_test( WHERE ((a BETWEEN 15 AND 17) AND a!=16) OR ((a BETWEEN 57 AND 59) AND a!=58) OR b=33 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.178.2> @@ -6783,15 +6783,15 @@ test:do_test( SELECT a FROM t2 WHERE b=828 OR b=341 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=902 OR ((a BETWEEN 64 AND 66) AND a!=65) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=242 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.179.1> @@ -6806,15 +6806,15 @@ test:do_test( SELECT a FROM t3 WHERE b=828 OR b=341 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=902 OR ((a BETWEEN 64 AND 66) AND a!=65) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=242 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.179.2> @@ -6827,7 +6827,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR b=982 OR b=781 OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -6845,7 +6845,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR b=982 OR b=781 OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -6863,13 +6863,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR a=31 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=76 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=176 ]]) end, { @@ -6883,13 +6883,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR a=31 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=76 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=176 ]]) end, { @@ -6903,11 +6903,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=14 OR ((a BETWEEN 88 AND 90) AND a!=89) OR f='zabcdefgh' @@ -6923,11 +6923,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=14 OR ((a BETWEEN 88 AND 90) AND a!=89) OR f='zabcdefgh' @@ -6943,7 +6943,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR b=286 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=91 @@ -6960,7 +6960,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR b=286 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=91 @@ -6977,9 +6977,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'nopqr*') + WHERE (g='lkjihgf' AND f LIKE 'nopqr%') OR c=19019 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=374 ]]) end, { @@ -6993,9 +6993,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'nopqr*') + WHERE (g='lkjihgf' AND f LIKE 'nopqr%') OR c=19019 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=374 ]]) end, { @@ -7010,7 +7010,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE g IS NULL - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.185.1> @@ -7024,7 +7024,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE g IS NULL - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.185.2> @@ -7067,10 +7067,10 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 66 AND 68) AND a!=67) OR b=564 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=234 OR b=641 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) OR a=98 @@ -7088,10 +7088,10 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 66 AND 68) AND a!=67) OR b=564 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=234 OR b=641 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) OR a=98 @@ -7111,12 +7111,12 @@ test:do_test( OR b=44 OR b=539 OR c=11011 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=69 OR b=1001 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 32 AND 34) AND a!=33) ]]) end, { @@ -7134,12 +7134,12 @@ test:do_test( OR b=44 OR b=539 OR c=11011 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=69 OR b=1001 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 32 AND 34) AND a!=33) ]]) end, { @@ -7224,7 +7224,7 @@ test:do_test( WHERE c=23023 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) OR a=66 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=51 OR a=23 OR c=4004 @@ -7243,7 +7243,7 @@ test:do_test( WHERE c=23023 OR (d>=83.0 AND d<84.0 AND d IS NOT NULL) OR a=66 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=51 OR a=23 OR c=4004 @@ -7260,7 +7260,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=36 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=80 ]]) end, { @@ -7275,7 +7275,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=36 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=80 ]]) end, { @@ -7289,7 +7289,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=55 OR f='efghijklm' @@ -7310,7 +7310,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=55 OR f='efghijklm' @@ -7333,11 +7333,11 @@ test:do_test( SELECT a FROM t2 WHERE (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR b=836 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=91 OR b=594 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.194.1> @@ -7352,11 +7352,11 @@ test:do_test( SELECT a FROM t3 WHERE (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR b=836 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=91 OR b=594 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.194.2> @@ -7369,8 +7369,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR ((a BETWEEN 50 AND 52) AND a!=51) @@ -7389,8 +7389,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR ((a BETWEEN 50 AND 52) AND a!=51) @@ -7415,10 +7415,10 @@ test:do_test( OR b=121 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR b=660 OR b=792 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.196.1> @@ -7437,10 +7437,10 @@ test:do_test( OR b=121 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR b=660 OR b=792 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.196.2> @@ -7456,10 +7456,10 @@ test:do_test( WHERE b=1089 OR b=495 OR b=157 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR f='wxyzabcde' ]]) @@ -7477,10 +7477,10 @@ test:do_test( WHERE b=1089 OR b=495 OR b=157 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR f='wxyzabcde' ]]) @@ -7497,7 +7497,7 @@ test:do_test( SELECT a FROM t2 WHERE f='bcdefghij' OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR b=157 OR b=267 OR c=34034 @@ -7515,7 +7515,7 @@ test:do_test( SELECT a FROM t3 WHERE f='bcdefghij' OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR b=157 OR b=267 OR c=34034 @@ -7534,7 +7534,7 @@ test:do_test( WHERE a=19 OR a=23 OR c<=10 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.199.1> @@ -7550,7 +7550,7 @@ test:do_test( WHERE a=19 OR a=23 OR c<=10 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.199.2> @@ -7567,7 +7567,7 @@ test:do_test( OR b=792 OR b=803 OR b=36 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.200.1> @@ -7584,7 +7584,7 @@ test:do_test( OR b=792 OR b=803 OR b=36 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.200.2> @@ -7597,11 +7597,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'uvwxy*') + WHERE (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR ((a BETWEEN 76 AND 78) AND a!=77) OR f='jklmnopqr' - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=891 OR a=40 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -7617,11 +7617,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'uvwxy*') + WHERE (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR ((a BETWEEN 76 AND 78) AND a!=77) OR f='jklmnopqr' - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=891 OR a=40 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -7644,7 +7644,7 @@ test:do_test( OR d>1e10 OR b=429 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR c=10010 OR ((a BETWEEN 83 AND 85) AND a!=84) ]]) @@ -7666,7 +7666,7 @@ test:do_test( OR d>1e10 OR b=429 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR c=10010 OR ((a BETWEEN 83 AND 85) AND a!=84) ]]) @@ -7681,14 +7681,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'defgh*') + WHERE (g='xwvutsr' AND f LIKE 'defgh%') OR a=22 OR a=26 OR a=81 OR a=53 OR ((a BETWEEN 92 AND 94) AND a!=93) OR c=30030 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=82 OR b=594 ]]) @@ -7703,14 +7703,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'defgh*') + WHERE (g='xwvutsr' AND f LIKE 'defgh%') OR a=22 OR a=26 OR a=81 OR a=53 OR ((a BETWEEN 92 AND 94) AND a!=93) OR c=30030 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=82 OR b=594 ]]) @@ -7727,14 +7727,14 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 34 AND 36) AND a!=35) OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR a=83 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 99 AND 101) AND a!=100) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=1092 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=25 ]]) end, { @@ -7750,14 +7750,14 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 34 AND 36) AND a!=35) OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR a=83 - OR (g='hgfedcb' AND f GLOB 'ijklm*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 99 AND 101) AND a!=100) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=1092 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=25 ]]) end, { @@ -7773,9 +7773,9 @@ test:do_test( SELECT a FROM t2 WHERE a=20 OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR a=50 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) end, { @@ -7791,9 +7791,9 @@ test:do_test( SELECT a FROM t3 WHERE a=20 OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR a=50 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) end, { @@ -7808,7 +7808,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=960 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.206.1> @@ -7822,7 +7822,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=960 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.206.2> @@ -7899,7 +7899,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=957 OR ((a BETWEEN 48 AND 50) AND a!=49) ]]) @@ -7914,7 +7914,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=957 OR ((a BETWEEN 48 AND 50) AND a!=49) ]]) @@ -7961,7 +7961,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=11 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 14 AND 16) AND a!=15) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=99 @@ -7979,7 +7979,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=11 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 14 AND 16) AND a!=15) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=99 @@ -7997,12 +7997,12 @@ test:do_test( SELECT a FROM t2 WHERE f='fghijklmn' OR a=16 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 60 AND 62) AND a!=61) OR ((a BETWEEN 90 AND 92) AND a!=91) OR ((a BETWEEN 9 AND 11) AND a!=10) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=80 ]]) end, { @@ -8018,12 +8018,12 @@ test:do_test( SELECT a FROM t3 WHERE f='fghijklmn' OR a=16 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR ((a BETWEEN 60 AND 62) AND a!=61) OR ((a BETWEEN 90 AND 92) AND a!=91) OR ((a BETWEEN 9 AND 11) AND a!=10) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=80 ]]) end, { @@ -8037,10 +8037,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR a=44 OR a=43 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR b=25 ]]) end, { @@ -8054,10 +8054,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR a=44 OR a=43 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR b=25 ]]) end, { @@ -8134,10 +8134,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') OR b=1015 OR c=16016 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR f='abcdefghi' OR b=605 OR a=63 @@ -8154,10 +8154,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=3.0 AND d<4.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'opqrs*') + OR (g='gfedcba' AND f LIKE 'opqrs%') OR b=1015 OR c=16016 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR f='abcdefghi' OR b=605 OR a=63 @@ -8173,7 +8173,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='yxwvuts' AND f LIKE 'bcdef%') OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=641 OR b=795 @@ -8189,7 +8189,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='yxwvuts' AND f LIKE 'bcdef%') OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR b=641 OR b=795 @@ -8281,7 +8281,7 @@ test:do_test( OR b=1089 OR ((a BETWEEN 69 AND 71) AND a!=70) OR f IS NULL - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.220.1> @@ -8302,7 +8302,7 @@ test:do_test( OR b=1089 OR ((a BETWEEN 69 AND 71) AND a!=70) OR f IS NULL - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.220.2> @@ -8317,15 +8317,15 @@ test:do_test( SELECT a FROM t2 WHERE b=1026 OR b=407 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=564 OR c=23023 OR b=891 OR c=22022 OR ((a BETWEEN 22 AND 24) AND a!=23) OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.221.1> @@ -8340,15 +8340,15 @@ test:do_test( SELECT a FROM t3 WHERE b=1026 OR b=407 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR b=564 OR c=23023 OR b=891 OR c=22022 OR ((a BETWEEN 22 AND 24) AND a!=23) OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.221.2> @@ -8395,7 +8395,7 @@ test:do_test( OR ((a BETWEEN 79 AND 81) AND a!=80) OR c=18018 OR b=792 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) @@ -8417,7 +8417,7 @@ test:do_test( OR ((a BETWEEN 79 AND 81) AND a!=80) OR c=18018 OR b=792 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) @@ -8437,10 +8437,10 @@ test:do_test( SELECT a FROM t2 WHERE b=429 OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1070 - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.224.1> @@ -8455,10 +8455,10 @@ test:do_test( SELECT a FROM t3 WHERE b=429 OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1070 - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.224.2> @@ -8471,7 +8471,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=572 ]]) end, { @@ -8485,7 +8485,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=572 ]]) end, { @@ -8501,7 +8501,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 62 AND 64) AND a!=63) OR f='abcdefghi' - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.226.1> @@ -8516,7 +8516,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 62 AND 64) AND a!=63) OR f='abcdefghi' - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.226.2> @@ -8562,7 +8562,7 @@ test:do_test( OR a=1 OR ((a BETWEEN 75 AND 77) AND a!=76) OR a=75 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -8581,7 +8581,7 @@ test:do_test( OR a=1 OR ((a BETWEEN 75 AND 77) AND a!=76) OR a=75 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 59 AND 61) AND a!=60) ]]) end, { @@ -8595,9 +8595,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=231 OR a=87 ]]) @@ -8612,9 +8612,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=231 OR a=87 ]]) @@ -8630,8 +8630,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=77 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'hijkl%') OR c=24024 OR c=5005 ]]) @@ -8647,8 +8647,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=77 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'hijkl%') OR c=24024 OR c=5005 ]]) @@ -8663,13 +8663,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=682 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) ]]) end, { @@ -8683,13 +8683,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=682 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) ]]) end, { @@ -8707,7 +8707,7 @@ test:do_test( OR b=121 OR c=2002 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.232.1> @@ -8724,7 +8724,7 @@ test:do_test( OR b=121 OR c=2002 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.232.2> @@ -8740,8 +8740,8 @@ test:do_test( WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=267 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=82 OR a=54 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) @@ -8761,8 +8761,8 @@ test:do_test( WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=267 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=82 OR a=54 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) @@ -8815,9 +8815,9 @@ test:do_test( OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=94.0 AND d<95.0 AND d IS NOT NULL) OR 1000000<b - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') - OR (g='rqponml' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') + OR (g='rqponml' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.235.1> @@ -8836,9 +8836,9 @@ test:do_test( OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=94.0 AND d<95.0 AND d IS NOT NULL) OR 1000000<b - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') - OR (g='rqponml' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') + OR (g='rqponml' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.235.2> @@ -8853,7 +8853,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1001 OR b=168 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) ]]) end, { @@ -8869,7 +8869,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1001 OR b=168 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) ]]) end, { @@ -8884,8 +8884,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=51 - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=330 ]]) end, { @@ -8900,8 +8900,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=51 - OR (g='fedcbaz' AND f GLOB 'stuvw*') - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR b=330 ]]) end, { @@ -8915,13 +8915,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=704 OR a=62 OR f='pqrstuvwx' OR b=495 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b<0 OR b=597 ]]) @@ -8936,13 +8936,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=704 OR a=62 OR f='pqrstuvwx' OR b=495 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b<0 OR b=597 ]]) @@ -8992,7 +8992,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=14014 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=572 OR c=15015 ]]) @@ -9008,7 +9008,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=14014 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=572 OR c=15015 ]]) @@ -9023,9 +9023,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=850 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=88 OR f='hijklmnop' @@ -9044,9 +9044,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=850 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 15 AND 17) AND a!=16) OR b=88 OR f='hijklmnop' @@ -9073,8 +9073,8 @@ test:do_test( OR b=374 OR b=938 OR b=773 - OR (g='jihgfed' AND f GLOB 'zabcd*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='jihgfed' AND f LIKE 'zabcd%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.242.1> @@ -9095,8 +9095,8 @@ test:do_test( OR b=374 OR b=938 OR b=773 - OR (g='jihgfed' AND f GLOB 'zabcd*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='jihgfed' AND f LIKE 'zabcd%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.242.2> @@ -9109,7 +9109,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=146 ]]) end, { @@ -9123,7 +9123,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=146 ]]) end, { @@ -9171,7 +9171,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=399 OR b=1004 OR c=16016 @@ -9193,7 +9193,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=399 OR b=1004 OR c=16016 @@ -9222,8 +9222,8 @@ test:do_test( OR b=861 OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR b=949 - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.246.1> @@ -9243,8 +9243,8 @@ test:do_test( OR b=861 OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR b=949 - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.246.2> @@ -9257,7 +9257,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=83 OR c=26026 OR a=49 @@ -9276,7 +9276,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=83 OR c=26026 OR a=49 @@ -9328,7 +9328,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=451 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.249.1> @@ -9342,7 +9342,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=451 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.249.2> @@ -9356,7 +9356,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=47 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.250.1> @@ -9370,7 +9370,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=47 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.250.2> @@ -9384,7 +9384,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1037 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=344 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) @@ -9401,7 +9401,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1037 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=344 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) @@ -9419,7 +9419,7 @@ test:do_test( SELECT a FROM t2 WHERE b=506 OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=429 OR b=275 ]]) @@ -9436,7 +9436,7 @@ test:do_test( SELECT a FROM t3 WHERE b=506 OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=429 OR b=275 ]]) @@ -9458,7 +9458,7 @@ test:do_test( OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR a=60 OR b=80 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=616 ]]) end, { @@ -9479,7 +9479,7 @@ test:do_test( OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR a=60 OR b=80 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=616 ]]) end, { @@ -9521,13 +9521,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=43 OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=586 OR c=17017 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR a=87 OR b=968 ]]) @@ -9542,13 +9542,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=43 OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=586 OR c=17017 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR a=87 OR b=968 ]]) @@ -9597,8 +9597,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'jklmn*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='rqponml' AND f LIKE 'jklmn%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c>=34035 OR b=850 OR ((a BETWEEN 32 AND 34) AND a!=33) @@ -9620,8 +9620,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'jklmn*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='rqponml' AND f LIKE 'jklmn%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c>=34035 OR b=850 OR ((a BETWEEN 32 AND 34) AND a!=33) @@ -9705,7 +9705,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=993 ]]) @@ -9720,7 +9720,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=993 ]]) @@ -9739,7 +9739,7 @@ test:do_test( OR a=22 OR b=289 OR b=795 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=242 OR a=59 OR b=1045 @@ -9760,7 +9760,7 @@ test:do_test( OR a=22 OR b=289 OR b=795 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR b=242 OR a=59 OR b=1045 @@ -9778,9 +9778,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=245 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR c=3003 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) @@ -9798,9 +9798,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=245 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR c=3003 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=33.0 AND d<34.0 AND d IS NOT NULL) @@ -9817,15 +9817,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') OR b=220 OR b=443 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=62 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=1023 OR a=100 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) end, { @@ -9839,15 +9839,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') OR b=220 OR b=443 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=62 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=1023 OR a=100 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) end, { @@ -9863,8 +9863,8 @@ test:do_test( SELECT a FROM t2 WHERE c=11011 OR f='tuvwxyzab' - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.264.1> @@ -9879,8 +9879,8 @@ test:do_test( SELECT a FROM t3 WHERE c=11011 OR f='tuvwxyzab' - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.264.2> @@ -10005,15 +10005,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=443 OR b=33 OR b=762 OR b=575 OR c=16016 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1092 ]]) end, { @@ -10027,15 +10027,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=443 OR b=33 OR b=762 OR b=575 OR c=16016 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR b=1092 ]]) end, { @@ -10051,14 +10051,14 @@ test:do_test( SELECT a FROM t2 WHERE b=806 OR b=872 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR f='uvwxyzabc' OR b=748 OR b=586 OR ((a BETWEEN 15 AND 17) AND a!=16) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=891 ]]) end, { @@ -10074,14 +10074,14 @@ test:do_test( SELECT a FROM t3 WHERE b=806 OR b=872 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR f='uvwxyzabc' OR b=748 OR b=586 OR ((a BETWEEN 15 AND 17) AND a!=16) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=891 ]]) end, { @@ -10097,8 +10097,8 @@ test:do_test( SELECT a FROM t2 WHERE b=693 OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'hijkl*') - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='rqponml' AND f LIKE 'hijkl%') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=96 ]]) @@ -10115,8 +10115,8 @@ test:do_test( SELECT a FROM t3 WHERE b=693 OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'hijkl*') - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='rqponml' AND f LIKE 'hijkl%') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=96 ]]) @@ -10131,7 +10131,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') OR b=451 OR ((a BETWEEN 96 AND 98) AND a!=97) OR ((a BETWEEN 97 AND 99) AND a!=98) @@ -10148,7 +10148,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') OR b=451 OR ((a BETWEEN 96 AND 98) AND a!=97) OR ((a BETWEEN 97 AND 99) AND a!=98) @@ -10165,16 +10165,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'bcdef*') + WHERE (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=75 OR b=960 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR b=616 OR b=330 OR ((a BETWEEN 16 AND 18) AND a!=17) OR a=26 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.272.1> @@ -10187,16 +10187,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'bcdef*') + WHERE (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR a=75 OR b=960 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR b=616 OR b=330 OR ((a BETWEEN 16 AND 18) AND a!=17) OR a=26 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.272.2> @@ -10210,7 +10210,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=762 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.273.1> @@ -10224,7 +10224,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=762 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.273.2> @@ -10310,7 +10310,7 @@ test:do_test( OR b=176 OR ((a BETWEEN 34 AND 36) AND a!=35) OR b=220 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR a=4 ]]) end, { @@ -10329,7 +10329,7 @@ test:do_test( OR b=176 OR ((a BETWEEN 34 AND 36) AND a!=35) OR b=220 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') OR a=4 ]]) end, { @@ -10344,7 +10344,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=29 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=979 OR b=275 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -10364,7 +10364,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=29 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=979 OR b=275 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -10384,11 +10384,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=74 OR ((a BETWEEN 7 AND 9) AND a!=8) @@ -10405,11 +10405,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR f='fghijklmn' - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=74 OR ((a BETWEEN 7 AND 9) AND a!=8) @@ -10426,10 +10426,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.279.1> @@ -10443,10 +10443,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR ((a BETWEEN 49 AND 51) AND a!=50) - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.279.2> @@ -10495,11 +10495,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR c=23023 OR b=377 OR b=858 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.281.1> @@ -10512,11 +10512,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR c=23023 OR b=377 OR b=858 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.281.2> @@ -10532,13 +10532,13 @@ test:do_test( WHERE (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=322 OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=432 OR b=55 OR a=53 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=25 ]]) end, { @@ -10555,13 +10555,13 @@ test:do_test( WHERE (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=322 OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=432 OR b=55 OR a=53 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=25 ]]) end, { @@ -10576,7 +10576,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=484 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=616 OR c=5005 OR ((a BETWEEN 27 AND 29) AND a!=28) @@ -10593,7 +10593,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=484 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=616 OR c=5005 OR ((a BETWEEN 27 AND 29) AND a!=28) @@ -10610,11 +10610,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=916 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1048 OR c=6006 OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR ((a BETWEEN 59 AND 61) AND a!=60) OR b=751 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -10631,11 +10631,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=916 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1048 OR c=6006 OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR ((a BETWEEN 59 AND 61) AND a!=60) OR b=751 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -10656,7 +10656,7 @@ test:do_test( OR b=275 OR b=396 OR c=4004 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR b=319 OR ((a BETWEEN 83 AND 85) AND a!=84) OR a=3 @@ -10678,7 +10678,7 @@ test:do_test( OR b=275 OR b=396 OR c=4004 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR b=319 OR ((a BETWEEN 83 AND 85) AND a!=84) OR a=3 @@ -10695,16 +10695,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'lmnop*') + WHERE (g='wvutsrq' AND f LIKE 'lmnop%') OR b=718 OR f='vwxyzabcd' OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR ((a BETWEEN 66 AND 68) AND a!=67) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -10718,16 +10718,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'lmnop*') + WHERE (g='wvutsrq' AND f LIKE 'lmnop%') OR b=718 OR f='vwxyzabcd' OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR ((a BETWEEN 66 AND 68) AND a!=67) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -10920,9 +10920,9 @@ test:do_test( OR b=231 OR b=212 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR c=30030 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') ]]) end, { -- <where7-2.292.1> @@ -10940,9 +10940,9 @@ test:do_test( OR b=231 OR b=212 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR c=30030 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') ]]) end, { -- <where7-2.292.2> @@ -10996,8 +10996,8 @@ test:do_test( OR f='vwxyzabcd' OR b=762 OR a=60 - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='xwvutsr' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.294.1> @@ -11015,8 +11015,8 @@ test:do_test( OR f='vwxyzabcd' OR b=762 OR a=60 - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='xwvutsr' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.294.2> @@ -11029,14 +11029,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'ghijk*') + WHERE (g='mlkjihg' AND f LIKE 'ghijk%') OR a=3 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=498 OR a=100 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=69 ]]) end, { @@ -11050,14 +11050,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'ghijk*') + WHERE (g='mlkjihg' AND f LIKE 'ghijk%') OR a=3 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=498 OR a=100 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR a=69 ]]) end, { @@ -11071,12 +11071,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR b=300 OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR b=58 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=286 OR b=234 OR ((a BETWEEN 43 AND 45) AND a!=44) @@ -11094,12 +11094,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR b=300 OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR b=58 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=286 OR b=234 OR ((a BETWEEN 43 AND 45) AND a!=44) @@ -11121,12 +11121,12 @@ test:do_test( OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 23 AND 25) AND a!=24) OR b=594 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR ((a BETWEEN 56 AND 58) AND a!=57) OR ((a BETWEEN 18 AND 20) AND a!=19) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -11144,12 +11144,12 @@ test:do_test( OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 23 AND 25) AND a!=24) OR b=594 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR ((a BETWEEN 56 AND 58) AND a!=57) OR ((a BETWEEN 18 AND 20) AND a!=19) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -11164,8 +11164,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=949 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.298.1> @@ -11179,8 +11179,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=949 - OR (g='xwvutsr' AND f GLOB 'fghij*') - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='xwvutsr' AND f LIKE 'fghij%') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.298.2> @@ -11195,13 +11195,13 @@ test:do_test( SELECT a FROM t2 WHERE b=960 OR a=44 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=39 OR b=828 OR ((a BETWEEN 3 AND 5) AND a!=4) OR d<0.0 OR b=770 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=594 OR ((a BETWEEN 89 AND 91) AND a!=90) ]]) @@ -11218,13 +11218,13 @@ test:do_test( SELECT a FROM t3 WHERE b=960 OR a=44 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR a=39 OR b=828 OR ((a BETWEEN 3 AND 5) AND a!=4) OR d<0.0 OR b=770 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR b=594 OR ((a BETWEEN 89 AND 91) AND a!=90) ]]) @@ -11278,7 +11278,7 @@ test:do_test( WHERE b=1081 OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=1004 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 29 AND 31) AND a!=30) OR b=660 OR b=957 @@ -11298,7 +11298,7 @@ test:do_test( WHERE b=1081 OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=1004 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 29 AND 31) AND a!=30) OR b=660 OR b=957 @@ -11320,9 +11320,9 @@ test:do_test( OR f='yzabcdefg' OR b=880 OR a=63 - OR (g='ponmlkj' AND f GLOB 'stuvw*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.302.1> @@ -11340,9 +11340,9 @@ test:do_test( OR f='yzabcdefg' OR b=880 OR a=63 - OR (g='ponmlkj' AND f GLOB 'stuvw*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') + OR (g='hgfedcb' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.302.2> @@ -11357,12 +11357,12 @@ test:do_test( SELECT a FROM t2 WHERE a=69 OR b=1103 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='wxyzabcde' - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') + OR (g='gfedcba' AND f LIKE 'klmno%') OR f='pqrstuvwx' - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR a=59 OR b=946 ]]) @@ -11379,12 +11379,12 @@ test:do_test( SELECT a FROM t3 WHERE a=69 OR b=1103 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='wxyzabcde' - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') + OR (g='gfedcba' AND f LIKE 'klmno%') OR f='pqrstuvwx' - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR a=59 OR b=946 ]]) @@ -11400,7 +11400,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR a=68 OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) @@ -11416,7 +11416,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR a=68 OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) @@ -11432,7 +11432,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.305.1> @@ -11446,7 +11446,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.305.2> @@ -11526,12 +11526,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR c=14014 OR b=990 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR c=14014 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=740 OR c=3003 ]]) @@ -11547,12 +11547,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR c=14014 OR b=990 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR c=14014 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=740 OR c=3003 ]]) @@ -11640,7 +11640,7 @@ test:do_test( OR a=4 OR b=311 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=396 ]]) end, { @@ -11663,7 +11663,7 @@ test:do_test( OR a=4 OR b=311 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=396 ]]) end, { @@ -11679,7 +11679,7 @@ test:do_test( SELECT a FROM t2 WHERE a=82 OR b=333 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=99 OR a=63 OR a=35 @@ -11698,7 +11698,7 @@ test:do_test( SELECT a FROM t3 WHERE a=82 OR b=333 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR b=99 OR a=63 OR a=35 @@ -11803,9 +11803,9 @@ test:do_test( OR f='hijklmnop' OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=817 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) @@ -11824,9 +11824,9 @@ test:do_test( OR f='hijklmnop' OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=817 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) @@ -11841,12 +11841,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR b=311 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=48 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR c=32032 OR f='opqrstuvw' OR b=300 @@ -11864,12 +11864,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR b=311 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=48 - OR (g='ponmlkj' AND f GLOB 'rstuv*') - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR c=32032 OR f='opqrstuvw' OR b=300 @@ -11889,7 +11889,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR b=1070 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=22 @@ -11912,7 +11912,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=95.0 AND d<96.0 AND d IS NOT NULL) OR b=1070 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=22 @@ -11934,7 +11934,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR a=21 OR b=1026 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -11952,7 +11952,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR a=21 OR b=1026 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -11975,7 +11975,7 @@ test:do_test( OR a=29 OR c=15015 OR a=87 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.319.1> @@ -11994,7 +11994,7 @@ test:do_test( OR a=29 OR c=15015 OR a=87 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.319.2> @@ -12042,7 +12042,7 @@ test:do_test( OR a=91 OR b=1015 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 91 AND 93) AND a!=92) ]]) end, { @@ -12061,7 +12061,7 @@ test:do_test( OR a=91 OR b=1015 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 91 AND 93) AND a!=92) ]]) end, { @@ -12076,12 +12076,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=7 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=1015 OR b=839 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=410 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR a=71 ]]) end, { @@ -12096,12 +12096,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=7 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=1015 OR b=839 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=410 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR a=71 ]]) end, { @@ -12118,12 +12118,12 @@ test:do_test( WHERE b=880 OR b=982 OR a=52 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=24 OR ((a BETWEEN 47 AND 49) AND a!=48) - OR (g='mlkjihg' AND f GLOB 'ijklm*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.323.1> @@ -12139,12 +12139,12 @@ test:do_test( WHERE b=880 OR b=982 OR a=52 - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=24 OR ((a BETWEEN 47 AND 49) AND a!=48) - OR (g='mlkjihg' AND f GLOB 'ijklm*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') ]]) end, { -- <where7-2.323.2> @@ -12158,9 +12158,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.324.1> @@ -12174,9 +12174,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.324.2> @@ -12192,7 +12192,7 @@ test:do_test( WHERE f='abcdefghi' OR a=5 OR b=124 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=432 OR 1000000<b OR a=58 @@ -12214,7 +12214,7 @@ test:do_test( WHERE f='abcdefghi' OR a=5 OR b=124 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=432 OR 1000000<b OR a=58 @@ -12271,7 +12271,7 @@ test:do_test( OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR f='uvwxyzabc' ]]) end, { @@ -12293,7 +12293,7 @@ test:do_test( OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR f='uvwxyzabc' ]]) end, { @@ -12308,16 +12308,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 57 AND 59) AND a!=58) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=564 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR b=77 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=968 OR b=847 - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.328.1> @@ -12331,16 +12331,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 57 AND 59) AND a!=58) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=564 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 56 AND 58) AND a!=57) OR b=77 - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=968 OR b=847 - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='lkjihgf' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.328.2> @@ -12421,7 +12421,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR b=693 - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=132 @@ -12441,7 +12441,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR b=693 - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=132 @@ -12496,11 +12496,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=190 - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=924 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=759 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.333.1> @@ -12514,11 +12514,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=190 - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=924 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=759 - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.333.2> @@ -12576,12 +12576,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=26026 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR c=17017 - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) ]]) @@ -12597,12 +12597,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=26026 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR c=17017 - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) ]]) @@ -12662,9 +12662,9 @@ test:do_test( OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR b=300 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=41 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=135 OR b=605 ]]) @@ -12684,9 +12684,9 @@ test:do_test( OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR b=300 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR a=41 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=135 OR b=605 ]]) @@ -12701,16 +12701,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=762 OR b=484 OR b=190 OR ((a BETWEEN 95 AND 97) AND a!=96) OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1023 ]]) end, { @@ -12724,16 +12724,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=762 OR b=484 OR b=190 OR ((a BETWEEN 95 AND 97) AND a!=96) OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1023 ]]) end, { @@ -12747,7 +12747,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR a=34 OR f='rstuvwxyz' OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) @@ -12764,7 +12764,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR a=34 OR f='rstuvwxyz' OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) @@ -12783,7 +12783,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=1004 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR g IS NULL ]]) end, { @@ -12799,7 +12799,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=1004 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR g IS NULL ]]) end, { @@ -12822,8 +12822,8 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR a=44 OR a=23 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.341.1> @@ -12845,8 +12845,8 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR a=44 OR a=23 - OR (g='ihgfedc' AND f GLOB 'abcde*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='ihgfedc' AND f LIKE 'abcde%') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.341.2> @@ -12864,8 +12864,8 @@ test:do_test( OR a=11 OR ((a BETWEEN 12 AND 14) AND a!=13) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=13 OR a=15 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) @@ -12887,8 +12887,8 @@ test:do_test( OR a=11 OR ((a BETWEEN 12 AND 14) AND a!=13) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=13 OR a=15 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) @@ -13019,16 +13019,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'klmno*') + WHERE (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR a=48 OR b=113 OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=880 OR ((a BETWEEN 85 AND 87) AND a!=86) OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.346.1> @@ -13041,16 +13041,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'klmno*') + WHERE (g='gfedcba' AND f LIKE 'klmno%') OR ((a BETWEEN 9 AND 11) AND a!=10) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR a=48 OR b=113 OR ((a BETWEEN 20 AND 22) AND a!=21) OR b=880 OR ((a BETWEEN 85 AND 87) AND a!=86) OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.346.2> @@ -13065,10 +13065,10 @@ test:do_test( SELECT a FROM t2 WHERE b=517 OR b=187 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR b=1092 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.347.1> @@ -13083,10 +13083,10 @@ test:do_test( SELECT a FROM t3 WHERE b=517 OR b=187 - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR b=1092 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.347.2> @@ -13259,7 +13259,7 @@ test:do_test( OR a=30 OR c=3003 OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR b=564 OR b=55 OR a=38 @@ -13281,7 +13281,7 @@ test:do_test( OR a=30 OR c=3003 OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR b=564 OR b=55 OR a=38 @@ -13328,7 +13328,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=792 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.354.1> @@ -13342,7 +13342,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=792 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.354.2> @@ -13357,9 +13357,9 @@ test:do_test( SELECT a FROM t2 WHERE (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR c=21021 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR f='zabcdefgh' - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=781 OR a=64 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) @@ -13377,9 +13377,9 @@ test:do_test( SELECT a FROM t3 WHERE (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR c=21021 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR f='zabcdefgh' - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR b=781 OR a=64 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) @@ -13395,12 +13395,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR a=34 - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'klmno*') - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'klmno%') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=319 OR b=330 OR ((a BETWEEN 28 AND 30) AND a!=29) @@ -13416,12 +13416,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'pqrst*') + WHERE (g='lkjihgf' AND f LIKE 'pqrst%') OR (d>=90.0 AND d<91.0 AND d IS NOT NULL) OR a=34 - OR (g='rqponml' AND f GLOB 'ijklm*') - OR (g='rqponml' AND f GLOB 'klmno*') - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='rqponml' AND f LIKE 'ijklm%') + OR (g='rqponml' AND f LIKE 'klmno%') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=319 OR b=330 OR ((a BETWEEN 28 AND 30) AND a!=29) @@ -13437,8 +13437,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=45 OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) ]]) @@ -13453,8 +13453,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=45 OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) ]]) @@ -13470,7 +13470,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=53.0 AND d<54.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=165 OR b=836 ]]) @@ -13486,7 +13486,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=53.0 AND d<54.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=165 OR b=836 ]]) @@ -13503,7 +13503,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1034 OR f='vwxyzabcd' - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 57 AND 59) AND a!=58) ]]) end, { @@ -13519,7 +13519,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1034 OR f='vwxyzabcd' - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR ((a BETWEEN 57 AND 59) AND a!=58) ]]) end, { @@ -13575,12 +13575,12 @@ test:do_test( SELECT a FROM t2 WHERE a=37 OR b=88 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=23023 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR a=56 OR ((a BETWEEN 13 AND 15) AND a!=14) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR f='ijklmnopq' OR ((a BETWEEN 85 AND 87) AND a!=86) ]]) @@ -13597,12 +13597,12 @@ test:do_test( SELECT a FROM t3 WHERE a=37 OR b=88 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR c=23023 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR a=56 OR ((a BETWEEN 13 AND 15) AND a!=14) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR f='ijklmnopq' OR ((a BETWEEN 85 AND 87) AND a!=86) ]]) @@ -13620,7 +13620,7 @@ test:do_test( WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) OR a=74 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 42 AND 44) AND a!=43) ]]) end, { @@ -13637,7 +13637,7 @@ test:do_test( WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) OR a=74 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 42 AND 44) AND a!=43) ]]) end, { @@ -13747,13 +13747,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=212 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=20 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=627 ]]) end, { @@ -13767,13 +13767,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR b=212 - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=20 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=627 ]]) end, { @@ -13787,7 +13787,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=157 OR b=1026 @@ -13803,7 +13803,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?jklm*' AND f GLOB 'ijkl*') + WHERE (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=157 OR b=1026 @@ -13823,10 +13823,10 @@ test:do_test( OR a=16 OR ((a BETWEEN 80 AND 82) AND a!=81) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR f='zabcdefgh' - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.368.1> @@ -13843,10 +13843,10 @@ test:do_test( OR a=16 OR ((a BETWEEN 80 AND 82) AND a!=81) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR f='zabcdefgh' - OR (g='lkjihgf' AND f GLOB 'pqrst*') - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.368.2> @@ -13895,11 +13895,11 @@ test:do_test( SELECT a FROM t2 WHERE f IS NULL OR a=37 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR b=168 OR b=22 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=506 ]]) end, { @@ -13915,11 +13915,11 @@ test:do_test( SELECT a FROM t3 WHERE f IS NULL OR a=37 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR b=168 OR b=22 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=506 ]]) end, { @@ -13935,11 +13935,11 @@ test:do_test( SELECT a FROM t2 WHERE a=29 OR ((a BETWEEN 26 AND 28) AND a!=27) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='qponmlk' AND f GLOB 'qrstu*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='qponmlk' AND f LIKE 'qrstu%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=209 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR b=146 ]]) end, { @@ -13955,11 +13955,11 @@ test:do_test( SELECT a FROM t3 WHERE a=29 OR ((a BETWEEN 26 AND 28) AND a!=27) - OR (g='kjihgfe' AND f GLOB 'rstuv*') - OR (g='qponmlk' AND f GLOB 'qrstu*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') + OR (g='qponmlk' AND f LIKE 'qrstu%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=209 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR b=146 ]]) end, { @@ -14017,7 +14017,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=113 OR ((a BETWEEN 40 AND 42) AND a!=41) @@ -14035,7 +14035,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR b=113 OR ((a BETWEEN 40 AND 42) AND a!=41) @@ -14081,7 +14081,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'ijklm*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') OR a=99 OR a=100 OR b=429 @@ -14104,7 +14104,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'ijklm*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') OR a=99 OR a=100 OR b=429 @@ -14164,9 +14164,9 @@ test:do_test( OR c=6006 OR a=18 OR c=24024 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR ((a BETWEEN 44 AND 46) AND a!=45) @@ -14187,9 +14187,9 @@ test:do_test( OR c=6006 OR a=18 OR c=24024 - OR (g='wvutsrq' AND f GLOB 'jklmn*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) OR ((a BETWEEN 44 AND 46) AND a!=45) @@ -14243,7 +14243,7 @@ test:do_test( SELECT a FROM t2 WHERE b=99 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.379.1> @@ -14258,7 +14258,7 @@ test:do_test( SELECT a FROM t3 WHERE b=99 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.379.2> @@ -14271,7 +14271,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?hijk*' AND f GLOB 'ghij*') + WHERE (f LIKE '_hijk%' AND f LIKE 'ghij%') OR ((a BETWEEN 79 AND 81) AND a!=80) OR b=715 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -14287,7 +14287,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?hijk*' AND f GLOB 'ghij*') + WHERE (f LIKE '_hijk%' AND f LIKE 'ghij%') OR ((a BETWEEN 79 AND 81) AND a!=80) OR b=715 OR ((a BETWEEN 23 AND 25) AND a!=24) @@ -14304,7 +14304,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR a=46 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) ]]) @@ -14320,7 +14320,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=97.0 AND d<98.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR a=46 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) ]]) @@ -14335,7 +14335,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR b=1056 @@ -14352,7 +14352,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR b=1056 @@ -14453,7 +14453,7 @@ test:do_test( OR ((a BETWEEN 39 AND 41) AND a!=40) OR b=242 OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=300 OR ((a BETWEEN 24 AND 26) AND a!=25) OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -14476,7 +14476,7 @@ test:do_test( OR ((a BETWEEN 39 AND 41) AND a!=40) OR b=242 OR ((a BETWEEN 32 AND 34) AND a!=33) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=300 OR ((a BETWEEN 24 AND 26) AND a!=25) OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) @@ -14502,7 +14502,7 @@ test:do_test( OR b=1048 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 ]]) end, { @@ -14525,7 +14525,7 @@ test:do_test( OR b=1048 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR c=19019 ]]) end, { @@ -14608,10 +14608,10 @@ test:do_test( OR a=58 OR b=333 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=572 OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.389.1> @@ -14631,10 +14631,10 @@ test:do_test( OR a=58 OR b=333 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=572 OR ((a BETWEEN 50 AND 52) AND a!=51) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.389.2> @@ -14649,7 +14649,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1034 OR f='lmnopqrst' - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.390.1> @@ -14664,7 +14664,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1034 OR f='lmnopqrst' - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.390.2> @@ -14679,7 +14679,7 @@ test:do_test( SELECT a FROM t2 WHERE c=15015 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=58 OR b=674 OR b=979 @@ -14697,7 +14697,7 @@ test:do_test( SELECT a FROM t3 WHERE c=15015 OR (d>=87.0 AND d<88.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=58 OR b=674 OR b=979 @@ -14747,9 +14747,9 @@ test:do_test( OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR b=630 OR a=19 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR f='wxyzabcde' - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=377 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=77 @@ -14770,9 +14770,9 @@ test:do_test( OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR b=630 OR a=19 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR f='wxyzabcde' - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=377 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=77 @@ -14818,14 +14818,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=64 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR c=14014 OR b=586 OR c=27027 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.395.1> @@ -14839,14 +14839,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=64 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR c=14014 OR b=586 OR c=27027 OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.395.2> @@ -14903,11 +14903,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR a=23 OR b=737 OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) @@ -14926,11 +14926,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR a=23 OR b=737 OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) @@ -14983,10 +14983,10 @@ test:do_test( SELECT a FROM t2 WHERE a=18 OR b=1059 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=795 ]]) end, { @@ -15002,10 +15002,10 @@ test:do_test( SELECT a FROM t3 WHERE a=18 OR b=1059 - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=795 ]]) end, { @@ -15019,7 +15019,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=93 OR a=11 OR f='nopqrstuv' @@ -15039,7 +15039,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=93 OR a=11 OR f='nopqrstuv' @@ -15062,8 +15062,8 @@ test:do_test( WHERE b=685 OR a=33 OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='vutsrqp' AND f GLOB 'qrstu*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 39 AND 41) AND a!=40) OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=715 @@ -15085,8 +15085,8 @@ test:do_test( WHERE b=685 OR a=33 OR ((a BETWEEN 40 AND 42) AND a!=41) - OR (g='vutsrqp' AND f GLOB 'qrstu*') - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 39 AND 41) AND a!=40) OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=715 @@ -15107,7 +15107,7 @@ test:do_test( SELECT a FROM t2 WHERE a=89 OR b=1037 - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.402.1> @@ -15122,7 +15122,7 @@ test:do_test( SELECT a FROM t3 WHERE a=89 OR b=1037 - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.402.2> @@ -15179,9 +15179,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR b=726 OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) @@ -15201,9 +15201,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR b=726 OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) @@ -15223,7 +15223,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=924 OR f='lmnopqrst' OR b=1048 @@ -15239,7 +15239,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=924 OR f='lmnopqrst' OR b=1048 @@ -15256,7 +15256,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=198 OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) @@ -15276,7 +15276,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=198 OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR ((a BETWEEN 12 AND 14) AND a!=13) @@ -15341,7 +15341,7 @@ test:do_test( OR b=630 OR a=55 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) ]]) end, { @@ -15359,7 +15359,7 @@ test:do_test( OR b=630 OR a=55 OR c=26026 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) ]]) end, { @@ -15375,12 +15375,12 @@ test:do_test( SELECT a FROM t2 WHERE f='uvwxyzabc' OR f='xyzabcdef' - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.409.1> @@ -15395,12 +15395,12 @@ test:do_test( SELECT a FROM t3 WHERE f='uvwxyzabc' OR f='xyzabcdef' - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR (d>=70.0 AND d<71.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') ]]) end, { -- <where7-2.409.2> @@ -15417,7 +15417,7 @@ test:do_test( OR b=454 OR ((a BETWEEN 92 AND 94) AND a!=93) OR b=179 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='qrstuvwxy' ]]) end, { @@ -15435,7 +15435,7 @@ test:do_test( OR b=454 OR ((a BETWEEN 92 AND 94) AND a!=93) OR b=179 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='qrstuvwxy' ]]) end, { @@ -15452,7 +15452,7 @@ test:do_test( WHERE ((a BETWEEN 6 AND 8) AND a!=7) OR b=619 OR a=20 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=946 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=64 @@ -15474,7 +15474,7 @@ test:do_test( WHERE ((a BETWEEN 6 AND 8) AND a!=7) OR b=619 OR a=20 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=946 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) OR a=64 @@ -15527,8 +15527,8 @@ test:do_test( SELECT a FROM t2 WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=32 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c=32032 ]]) end, { @@ -15544,8 +15544,8 @@ test:do_test( SELECT a FROM t3 WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=32 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR c=32032 ]]) end, { @@ -15654,7 +15654,7 @@ test:do_test( WHERE (d>=32.0 AND d<33.0 AND d IS NOT NULL) OR a=27 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.417.1> @@ -15670,7 +15670,7 @@ test:do_test( WHERE (d>=32.0 AND d<33.0 AND d IS NOT NULL) OR a=27 OR ((a BETWEEN 55 AND 57) AND a!=56) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.417.2> @@ -15720,7 +15720,7 @@ test:do_test( OR b=561 OR b=352 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR a=95 ]]) end, { @@ -15743,7 +15743,7 @@ test:do_test( OR b=561 OR b=352 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR a=95 ]]) end, { @@ -15761,7 +15761,7 @@ test:do_test( OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='ghijklmno' OR b=619 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=476 OR a=83 @@ -15782,7 +15782,7 @@ test:do_test( OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='ghijklmno' OR b=619 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=476 OR a=83 @@ -15868,8 +15868,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1059 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=47 OR b=660 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -15887,8 +15887,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1059 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=47 OR b=660 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -15936,13 +15936,13 @@ test:do_test( WHERE b=597 OR f='lmnopqrst' OR a=24 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 31 AND 33) AND a!=32) OR b=1023 OR a=53 OR a=78 OR f='efghijklm' - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) ]]) end, { @@ -15959,13 +15959,13 @@ test:do_test( WHERE b=597 OR f='lmnopqrst' OR a=24 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR ((a BETWEEN 31 AND 33) AND a!=32) OR b=1023 OR a=53 OR a=78 OR f='efghijklm' - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) ]]) end, { @@ -16012,11 +16012,11 @@ test:do_test( WHERE f='tuvwxyzab' OR b=388 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=957 OR b=663 OR b=847 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.427.1> @@ -16032,11 +16032,11 @@ test:do_test( WHERE f='tuvwxyzab' OR b=388 OR ((a BETWEEN 84 AND 86) AND a!=85) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR b=957 OR b=663 OR b=847 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.427.2> @@ -16051,7 +16051,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR a=56 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.428.1> @@ -16066,7 +16066,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR a=56 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') ]]) end, { -- <where7-2.428.2> @@ -16082,7 +16082,7 @@ test:do_test( WHERE c>=34035 OR b=168 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.429.1> @@ -16098,7 +16098,7 @@ test:do_test( WHERE c>=34035 OR b=168 OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') ]]) end, { -- <where7-2.429.2> @@ -16144,9 +16144,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR f='rstuvwxyz' - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.431.1> @@ -16160,9 +16160,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR f='rstuvwxyz' - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.431.2> @@ -16246,7 +16246,7 @@ test:do_test( WHERE b=113 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=113 - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -16267,7 +16267,7 @@ test:do_test( WHERE b=113 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR b=113 - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR ((a BETWEEN 62 AND 64) AND a!=63) OR c=6006 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -16285,7 +16285,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR c=22022 OR ((a BETWEEN 79 AND 81) AND a!=80) @@ -16303,7 +16303,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR c=22022 OR ((a BETWEEN 79 AND 81) AND a!=80) @@ -16322,7 +16322,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 74 AND 76) AND a!=75) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=47 OR ((a BETWEEN 44 AND 46) AND a!=45) OR a=92 @@ -16331,7 +16331,7 @@ test:do_test( OR c=7007 OR a=93 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.436.1> @@ -16345,7 +16345,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 74 AND 76) AND a!=75) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=47 OR ((a BETWEEN 44 AND 46) AND a!=45) OR a=92 @@ -16354,7 +16354,7 @@ test:do_test( OR c=7007 OR a=93 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.436.2> @@ -16367,11 +16367,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=13 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR c=29029 OR b=311 OR b=366 @@ -16389,11 +16389,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=13 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR c=29029 OR b=311 OR b=366 @@ -16453,12 +16453,12 @@ test:do_test( SELECT a FROM t2 WHERE (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=41 - OR (g='xwvutsr' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR b=913 ]]) end, { @@ -16474,12 +16474,12 @@ test:do_test( SELECT a FROM t3 WHERE (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=41 - OR (g='xwvutsr' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR b=913 ]]) end, { @@ -16593,12 +16593,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=102 OR b=212 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=487 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.443.1> @@ -16611,12 +16611,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=102 OR b=212 OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) OR b=487 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.443.2> @@ -16661,7 +16661,7 @@ test:do_test( SELECT a FROM t2 WHERE b=872 OR ((a BETWEEN 58 AND 60) AND a!=59) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=957 OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR a=67 @@ -16680,7 +16680,7 @@ test:do_test( SELECT a FROM t3 WHERE b=872 OR ((a BETWEEN 58 AND 60) AND a!=59) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=957 OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR a=67 @@ -16700,12 +16700,12 @@ test:do_test( WHERE b=66 OR b=102 OR b=396 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 7 AND 9) AND a!=8) OR b=759 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR f='ghijklmno' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) @@ -16723,12 +16723,12 @@ test:do_test( WHERE b=66 OR b=102 OR b=396 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR ((a BETWEEN 7 AND 9) AND a!=8) OR b=759 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR f='ghijklmno' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR ((a BETWEEN 90 AND 92) AND a!=91) OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) ]]) @@ -16744,8 +16744,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 69 AND 71) AND a!=70) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=72 OR b=1100 OR b=102 @@ -16763,8 +16763,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 69 AND 71) AND a!=70) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=72 OR b=1100 OR b=102 @@ -16878,7 +16878,7 @@ test:do_test( WHERE b=47 OR a=91 OR d>1e10 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.451.1> @@ -16894,7 +16894,7 @@ test:do_test( WHERE b=47 OR a=91 OR d>1e10 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.451.2> @@ -16975,13 +16975,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=619 OR ((a BETWEEN 91 AND 93) AND a!=92) OR c=11011 OR b=550 OR b=1059 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -16998,13 +16998,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=619 OR ((a BETWEEN 91 AND 93) AND a!=92) OR c=11011 OR b=550 OR b=1059 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -17021,16 +17021,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'vwxyz*') + WHERE (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=78 OR a=27 OR b=792 OR b=946 OR c=22022 OR a=23 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=388 ]]) end, { @@ -17044,16 +17044,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'vwxyz*') + WHERE (g='edcbazy' AND f LIKE 'vwxyz%') OR ((a BETWEEN 59 AND 61) AND a!=60) - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=78 OR a=27 OR b=792 OR b=946 OR c=22022 OR a=23 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=388 ]]) end, { @@ -17070,8 +17070,8 @@ test:do_test( WHERE c=32032 OR f IS NULL OR ((a BETWEEN 37 AND 39) AND a!=38) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=825 ]]) end, { @@ -17088,8 +17088,8 @@ test:do_test( WHERE c=32032 OR f IS NULL OR ((a BETWEEN 37 AND 39) AND a!=38) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=825 ]]) end, { @@ -17104,7 +17104,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=84.0 AND d<85.0 AND d IS NOT NULL) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=1078 @@ -17126,7 +17126,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=84.0 AND d<85.0 AND d IS NOT NULL) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=1078 @@ -17147,11 +17147,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR c=25025 OR b=550 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.458.1> @@ -17164,11 +17164,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'ijklm*') + WHERE (g='wvutsrq' AND f LIKE 'ijklm%') OR c=25025 OR b=550 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.458.2> @@ -17183,7 +17183,7 @@ test:do_test( SELECT a FROM t2 WHERE b=432 OR f='opqrstuvw' - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.459.1> @@ -17198,7 +17198,7 @@ test:do_test( SELECT a FROM t3 WHERE b=432 OR f='opqrstuvw' - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.459.2> @@ -17213,7 +17213,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 14 AND 16) AND a!=15) OR b=847 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=583 OR ((a BETWEEN 63 AND 65) AND a!=64) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) @@ -17234,7 +17234,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 14 AND 16) AND a!=15) OR b=847 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR b=583 OR ((a BETWEEN 63 AND 65) AND a!=64) OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) @@ -17299,7 +17299,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=586 OR d<0.0 OR c=9009 @@ -17315,7 +17315,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=586 OR d<0.0 OR c=9009 @@ -17378,7 +17378,7 @@ test:do_test( WHERE ((a BETWEEN 44 AND 46) AND a!=45) OR a=53 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=594 OR b=80 OR ((a BETWEEN 18 AND 20) AND a!=19) @@ -17399,7 +17399,7 @@ test:do_test( WHERE ((a BETWEEN 44 AND 46) AND a!=45) OR a=53 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=594 OR b=80 OR ((a BETWEEN 18 AND 20) AND a!=19) @@ -17482,9 +17482,9 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='wxyzabcde' - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR a=70 OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -17503,9 +17503,9 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='wxyzabcde' - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') OR a=70 OR ((a BETWEEN 23 AND 25) AND a!=24) OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -17522,7 +17522,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=69 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.468.1> @@ -17536,7 +17536,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=69 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.468.2> @@ -17552,8 +17552,8 @@ test:do_test( WHERE a=41 OR a=43 OR a=92 - OR (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.469.1> @@ -17569,8 +17569,8 @@ test:do_test( WHERE a=41 OR a=43 OR a=92 - OR (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='mlkjihg' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.469.2> @@ -17617,7 +17617,7 @@ test:do_test( SELECT a FROM t2 WHERE f='fghijklmn' OR f='fghijklmn' - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=465 OR b=586 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) @@ -17639,7 +17639,7 @@ test:do_test( SELECT a FROM t3 WHERE f='fghijklmn' OR f='fghijklmn' - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR b=465 OR b=586 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) @@ -17660,10 +17660,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='fedcbaz' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=814 OR a=20 OR 1000000<b @@ -17681,10 +17681,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=34.0 AND d<35.0 AND d IS NOT NULL) - OR (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='hgfedcb' AND f GLOB 'hijkl*') - OR (g='fedcbaz' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='hgfedcb' AND f LIKE 'hijkl%') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR b=814 OR a=20 OR 1000000<b @@ -17701,14 +17701,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR c=1001 OR b=484 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR c<=10 OR a=92 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR b=1026 ]]) @@ -17723,14 +17723,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'uvwxy*') + WHERE (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR c=1001 OR b=484 OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR c<=10 OR a=92 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR b=1026 ]]) @@ -17746,13 +17746,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=54 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=993 OR c=22022 OR a=68 OR ((a BETWEEN 99 AND 101) AND a!=100) OR a=62 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=1015 ]]) end, { @@ -17767,13 +17767,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=54 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=993 OR c=22022 OR a=68 OR ((a BETWEEN 99 AND 101) AND a!=100) OR a=62 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') OR b=1015 ]]) end, { @@ -17789,7 +17789,7 @@ test:do_test( SELECT a FROM t2 WHERE b=319 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -17808,7 +17808,7 @@ test:do_test( SELECT a FROM t3 WHERE b=319 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -17889,14 +17889,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR b=407 OR b=454 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) OR b=627 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.478.1> @@ -17909,14 +17909,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR b=407 OR b=454 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) OR b=627 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.478.2> @@ -17933,7 +17933,7 @@ test:do_test( OR c=34034 OR ((a BETWEEN 24 AND 26) AND a!=25) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR a=67 ]]) end, { @@ -17951,7 +17951,7 @@ test:do_test( OR c=34034 OR ((a BETWEEN 24 AND 26) AND a!=25) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR a=67 ]]) end, { @@ -17970,7 +17970,7 @@ test:do_test( OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') ]]) end, { -- <where7-2.480.1> @@ -17988,7 +17988,7 @@ test:do_test( OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR ((a BETWEEN 2 AND 4) AND a!=3) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') ]]) end, { -- <where7-2.480.2> @@ -18006,12 +18006,12 @@ test:do_test( OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) OR b=201 OR a=99 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 36 AND 38) AND a!=37) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=946 OR b=993 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.481.1> @@ -18029,12 +18029,12 @@ test:do_test( OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) OR b=201 OR a=99 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR ((a BETWEEN 36 AND 38) AND a!=37) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR b=946 OR b=993 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.481.2> @@ -18048,7 +18048,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=806 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR b=916 OR b<0 @@ -18070,7 +18070,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=806 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR b=916 OR b<0 @@ -18093,11 +18093,11 @@ test:do_test( SELECT a FROM t2 WHERE b=836 OR d>1e10 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR f='pqrstuvwx' OR ((a BETWEEN 3 AND 5) AND a!=4) OR f='abcdefghi' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=33 OR ((a BETWEEN 19 AND 21) AND a!=20) OR ((a BETWEEN 88 AND 90) AND a!=89) @@ -18116,11 +18116,11 @@ test:do_test( SELECT a FROM t3 WHERE b=836 OR d>1e10 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR f='pqrstuvwx' OR ((a BETWEEN 3 AND 5) AND a!=4) OR f='abcdefghi' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR a=33 OR ((a BETWEEN 19 AND 21) AND a!=20) OR ((a BETWEEN 88 AND 90) AND a!=89) @@ -18140,10 +18140,10 @@ test:do_test( WHERE a=48 OR a=92 OR a=1 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=905 OR ((a BETWEEN 51 AND 53) AND a!=52) ]]) @@ -18161,10 +18161,10 @@ test:do_test( WHERE a=48 OR a=92 OR a=1 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=905 OR ((a BETWEEN 51 AND 53) AND a!=52) ]]) @@ -18215,12 +18215,12 @@ test:do_test( SELECT a FROM t2 WHERE b=740 OR b=564 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=11 OR ((a BETWEEN 44 AND 46) AND a!=45) OR b=322 OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR b=902 OR c>=34035 ]]) @@ -18237,12 +18237,12 @@ test:do_test( SELECT a FROM t3 WHERE b=740 OR b=564 - OR (g='onmlkji' AND f GLOB 'zabcd*') + OR (g='onmlkji' AND f LIKE 'zabcd%') OR a=11 OR ((a BETWEEN 44 AND 46) AND a!=45) OR b=322 OR (d>=6.0 AND d<7.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR b=902 OR c>=34035 ]]) @@ -18264,7 +18264,7 @@ test:do_test( OR a=48 OR b=927 OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR f='abcdefghi' OR b=91 OR b=55 @@ -18287,7 +18287,7 @@ test:do_test( OR a=48 OR b=927 OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') OR f='abcdefghi' OR b=91 OR b=55 @@ -18303,7 +18303,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='srqponm' AND f GLOB 'efghi*') + WHERE (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR a=20 OR b=11 @@ -18319,7 +18319,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='srqponm' AND f GLOB 'efghi*') + WHERE (g='srqponm' AND f LIKE 'efghi%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR a=20 OR b=11 @@ -18338,7 +18338,7 @@ test:do_test( WHERE (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR b=55 OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=50 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) @@ -18358,7 +18358,7 @@ test:do_test( WHERE (d>=27.0 AND d<28.0 AND d IS NOT NULL) OR b=55 OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR a=50 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) @@ -18375,8 +18375,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'ijklm*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.490.1> @@ -18389,8 +18389,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'ijklm*') - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (g='rqponml' AND f LIKE 'ijklm%') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') ]]) end, { -- <where7-2.490.2> @@ -18405,7 +18405,7 @@ test:do_test( SELECT a FROM t2 WHERE b=704 OR b=924 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=113 ]]) end, { @@ -18421,7 +18421,7 @@ test:do_test( SELECT a FROM t3 WHERE b=704 OR b=924 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR b=113 ]]) end, { @@ -18503,11 +18503,11 @@ test:do_test( OR b=726 OR f='abcdefghi' OR b=179 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=539 OR b=66 OR ((a BETWEEN 86 AND 88) AND a!=87) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.494.1> @@ -18524,11 +18524,11 @@ test:do_test( OR b=726 OR f='abcdefghi' OR b=179 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=539 OR b=66 OR ((a BETWEEN 86 AND 88) AND a!=87) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.494.2> @@ -18573,11 +18573,11 @@ test:do_test( OR b=682 OR b=443 OR b=836 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR b=110 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.496.1> @@ -18594,11 +18594,11 @@ test:do_test( OR b=682 OR b=443 OR b=836 - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR ((a BETWEEN 51 AND 53) AND a!=52) OR b=110 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') ]]) end, { -- <where7-2.496.2> @@ -18611,15 +18611,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?zabc*' AND f GLOB 'yzab*') + WHERE (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=462 OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=22 OR b=594 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.497.1> @@ -18632,15 +18632,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?zabc*' AND f GLOB 'yzab*') + WHERE (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=462 OR ((a BETWEEN 4 AND 6) AND a!=5) OR a=22 OR b=594 - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.497.2> @@ -18653,11 +18653,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR f='vwxyzabcd' - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR a=37 OR a=50 ]]) @@ -18672,11 +18672,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR f='vwxyzabcd' - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR a=37 OR a=50 ]]) @@ -18693,10 +18693,10 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 83 AND 85) AND a!=84) OR b=784 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR b=825 OR a=80 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=531 OR a=100 @@ -18714,10 +18714,10 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 83 AND 85) AND a!=84) OR b=784 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR b=825 OR a=80 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=531 OR a=100 @@ -18733,7 +18733,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=220 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) @@ -18748,7 +18748,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'tuvwx*') + WHERE (g='utsrqpo' AND f LIKE 'tuvwx%') OR b=220 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) ]]) @@ -18797,9 +18797,9 @@ test:do_test( OR b=894 OR c=28028 OR b=905 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR b=1037 ]]) end, { @@ -18817,9 +18817,9 @@ test:do_test( OR b=894 OR c=28028 OR b=905 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR b=1037 ]]) end, { @@ -18863,9 +18863,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR b=861 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.504.1> @@ -18878,9 +18878,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'mnopq*') + WHERE (g='wvutsrq' AND f LIKE 'mnopq%') OR b=861 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.504.2> @@ -18894,13 +18894,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=704 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=25 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=487 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 77 AND 79) AND a!=78) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) @@ -18917,13 +18917,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=704 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR b=25 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=487 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 77 AND 79) AND a!=78) OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) @@ -18940,16 +18940,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=19 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=674 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=355 OR ((a BETWEEN 72 AND 74) AND a!=73) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=28028 OR b=649 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='srqponm' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.506.1> @@ -18963,16 +18963,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=19 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=674 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=355 OR ((a BETWEEN 72 AND 74) AND a!=73) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=28028 OR b=649 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='srqponm' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.506.2> @@ -19020,7 +19020,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=135 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -19035,7 +19035,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=135 - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -19049,8 +19049,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.509.1> @@ -19063,8 +19063,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ijklm*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (g='hgfedcb' AND f LIKE 'ijklm%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.509.2> @@ -19077,7 +19077,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR f='ghijklmno' ]]) end, { @@ -19091,7 +19091,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR f='ghijklmno' ]]) end, { @@ -19187,7 +19187,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=99 OR a=54 @@ -19203,7 +19203,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=99 OR a=54 @@ -19220,7 +19220,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=300 - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=319 OR f='fghijklmn' OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -19238,7 +19238,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=300 - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=319 OR f='fghijklmn' OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) @@ -19263,7 +19263,7 @@ test:do_test( OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=748 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.515.1> @@ -19284,7 +19284,7 @@ test:do_test( OR ((a BETWEEN 5 AND 7) AND a!=6) OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=748 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.515.2> @@ -19333,10 +19333,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR b=110 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR c=26026 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR b=850 @@ -19353,10 +19353,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'wxyza*') + WHERE (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) OR b=110 - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR c=26026 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR b=850 @@ -19375,9 +19375,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 1 AND 3) AND a!=2) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=135 OR a=28 OR ((a BETWEEN 1 AND 3) AND a!=2) @@ -19396,9 +19396,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 74 AND 76) AND a!=75) OR ((a BETWEEN 1 AND 3) AND a!=2) - OR (g='jihgfed' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='mlkjihg' AND f GLOB 'klmno*') + OR (g='jihgfed' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='mlkjihg' AND f LIKE 'klmno%') OR b=135 OR a=28 OR ((a BETWEEN 1 AND 3) AND a!=2) @@ -19485,9 +19485,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=52 ]]) end, { @@ -19501,9 +19501,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=52 ]]) end, { @@ -19517,7 +19517,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'abcde*') + WHERE (g='ihgfedc' AND f LIKE 'abcde%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR a=86 OR c=33033 @@ -19535,7 +19535,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'abcde*') + WHERE (g='ihgfedc' AND f LIKE 'abcde%') OR ((a BETWEEN 2 AND 4) AND a!=3) OR a=86 OR c=33033 @@ -19557,7 +19557,7 @@ test:do_test( OR b=517 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR f='defghijkl' OR b=707 OR c>=34035 @@ -19580,7 +19580,7 @@ test:do_test( OR b=517 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR ((a BETWEEN 67 AND 69) AND a!=68) - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR f='defghijkl' OR b=707 OR c>=34035 @@ -19602,7 +19602,7 @@ test:do_test( WHERE (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=209 OR b=399 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.524.1> @@ -19618,7 +19618,7 @@ test:do_test( WHERE (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=209 OR b=399 - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.524.2> @@ -19632,11 +19632,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=597 OR a=95 - OR (g='nmlkjih' AND f GLOB 'defgh*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='nmlkjih' AND f LIKE 'defgh%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=432 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) ]]) @@ -19652,11 +19652,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=597 OR a=95 - OR (g='nmlkjih' AND f GLOB 'defgh*') - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (g='nmlkjih' AND f LIKE 'defgh%') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=432 OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) ]]) @@ -19680,7 +19680,7 @@ test:do_test( OR c=21021 OR b=330 OR b=231 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.526.1> @@ -19702,7 +19702,7 @@ test:do_test( OR c=21021 OR b=330 OR b=231 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') ]]) end, { -- <where7-2.526.2> @@ -19715,7 +19715,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'fghij*') + WHERE (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR f IS NULL ]]) @@ -19730,7 +19730,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'fghij*') + WHERE (g='hgfedcb' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR f IS NULL ]]) @@ -19746,9 +19746,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 99 AND 101) AND a!=100) - OR (g='fedcbaz' AND f GLOB 'pqrst*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') OR 1000000<b - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=990 ]]) end, { @@ -19763,9 +19763,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 99 AND 101) AND a!=100) - OR (g='fedcbaz' AND f GLOB 'pqrst*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') OR 1000000<b - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=990 ]]) end, { @@ -19781,7 +19781,7 @@ test:do_test( SELECT a FROM t2 WHERE b=165 OR a=69 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.529.1> @@ -19796,7 +19796,7 @@ test:do_test( SELECT a FROM t3 WHERE b=165 OR a=69 - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.529.2> @@ -19809,13 +19809,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=784 OR b=583 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=814 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=619 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) ]]) @@ -19830,13 +19830,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=784 OR b=583 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=814 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=619 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) ]]) @@ -19853,7 +19853,7 @@ test:do_test( SELECT a FROM t2 WHERE a=86 OR b=484 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR b=418 OR b=509 OR a=42 @@ -19876,7 +19876,7 @@ test:do_test( SELECT a FROM t3 WHERE a=86 OR b=484 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR b=418 OR b=509 OR a=42 @@ -20007,7 +20007,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR c=5005 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=93 @@ -20015,7 +20015,7 @@ test:do_test( OR b=619 OR b=234 OR b=55 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) ]]) end, { @@ -20029,7 +20029,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR c=5005 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=93 @@ -20037,7 +20037,7 @@ test:do_test( OR b=619 OR b=234 OR b=55 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) ]]) end, { @@ -20053,11 +20053,11 @@ test:do_test( SELECT a FROM t2 WHERE b=355 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=806 OR b=462 OR b=531 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR f='mnopqrstu' ]]) end, { @@ -20073,11 +20073,11 @@ test:do_test( SELECT a FROM t3 WHERE b=355 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=806 OR b=462 OR b=531 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR f='mnopqrstu' ]]) end, { @@ -20093,9 +20093,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 60 AND 62) AND a!=61) OR f='pqrstuvwx' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=495 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR a=75 ]]) end, { @@ -20111,9 +20111,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 60 AND 62) AND a!=61) OR f='pqrstuvwx' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') OR b=495 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR a=75 ]]) end, { @@ -20127,8 +20127,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=748 OR b=913 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -20145,8 +20145,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=748 OR b=913 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -20167,7 +20167,7 @@ test:do_test( OR b=902 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=168 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=50 OR f='uvwxyzabc' OR b=836 @@ -20189,7 +20189,7 @@ test:do_test( OR b=902 OR ((a BETWEEN 63 AND 65) AND a!=64) OR b=168 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR a=50 OR f='uvwxyzabc' OR b=836 @@ -20243,13 +20243,13 @@ test:do_test( SELECT a FROM t2 WHERE b=814 OR c=30030 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR a=16 OR b=1048 OR b=113 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=729 OR a=54 ]]) @@ -20266,13 +20266,13 @@ test:do_test( SELECT a FROM t3 WHERE b=814 OR c=30030 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR a=16 OR b=1048 OR b=113 OR (d>=61.0 AND d<62.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR b=729 OR a=54 ]]) @@ -20288,15 +20288,15 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=399 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=814 OR c=22022 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=1 OR b=311 OR b=121 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=198 ]]) end, { @@ -20311,15 +20311,15 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=399 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=814 OR c=22022 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR a=1 OR b=311 OR b=121 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=198 ]]) end, { @@ -20403,7 +20403,7 @@ test:do_test( OR a=22 OR b=594 OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.545.1> @@ -20424,7 +20424,7 @@ test:do_test( OR a=22 OR b=594 OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') ]]) end, { -- <where7-2.545.2> @@ -20443,7 +20443,7 @@ test:do_test( OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='mnopqrstu' OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=902 @@ -20465,7 +20465,7 @@ test:do_test( OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR f='mnopqrstu' OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=902 @@ -20481,8 +20481,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=13 ]]) end, { @@ -20496,8 +20496,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR a=13 ]]) end, { @@ -20511,11 +20511,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=410 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=418 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) end, { @@ -20529,11 +20529,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'wxyza*') + WHERE (g='edcbazy' AND f LIKE 'wxyza%') OR b=410 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=418 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) ]]) end, { @@ -20552,8 +20552,8 @@ test:do_test( OR a=56 OR a=46 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) ]]) end, { @@ -20572,8 +20572,8 @@ test:do_test( OR a=56 OR a=46 OR (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=41.0 AND d<42.0 AND d IS NOT NULL) ]]) end, { @@ -20633,7 +20633,7 @@ test:do_test( SELECT a FROM t2 WHERE b=539 OR b=418 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=759 ]]) end, { @@ -20649,7 +20649,7 @@ test:do_test( SELECT a FROM t3 WHERE b=539 OR b=418 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR b=759 ]]) end, { @@ -20664,8 +20664,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1001 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR c=34034 OR a=84 ]]) @@ -20681,8 +20681,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1001 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR c=34034 OR a=84 ]]) @@ -20702,7 +20702,7 @@ test:do_test( OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR ((a BETWEEN 71 AND 73) AND a!=72) OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=322 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR c=34034 @@ -20724,7 +20724,7 @@ test:do_test( OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR ((a BETWEEN 71 AND 73) AND a!=72) OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=322 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR c=34034 @@ -20742,12 +20742,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=13013 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=47 OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=828 ]]) end, { @@ -20762,12 +20762,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=13013 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=47 OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=828 ]]) end, { @@ -20783,7 +20783,7 @@ test:do_test( SELECT a FROM t2 WHERE b=451 OR b=836 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.555.1> @@ -20798,7 +20798,7 @@ test:do_test( SELECT a FROM t3 WHERE b=451 OR b=836 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.555.2> @@ -20848,7 +20848,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='tuvwxyzab' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.557.1> @@ -20862,7 +20862,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='tuvwxyzab' - OR (g='nmlkjih' AND f GLOB 'efghi*') + OR (g='nmlkjih' AND f LIKE 'efghi%') ]]) end, { -- <where7-2.557.2> @@ -20881,7 +20881,7 @@ test:do_test( OR d<0.0 OR b=982 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR e IS NULL OR c=32032 @@ -20904,7 +20904,7 @@ test:do_test( OR d<0.0 OR b=982 OR (d>=2.0 AND d<3.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR ((a BETWEEN 97 AND 99) AND a!=98) OR e IS NULL OR c=32032 @@ -20922,9 +20922,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=62 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.559.1> @@ -20938,9 +20938,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=62 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR ((a BETWEEN 89 AND 91) AND a!=90) - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.559.2> @@ -20994,8 +20994,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.561.1> @@ -21009,8 +21009,8 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='wvutsrq' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.561.2> @@ -21026,7 +21026,7 @@ test:do_test( WHERE b=883 OR b=311 OR b=880 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=88 OR b=154 @@ -21048,7 +21048,7 @@ test:do_test( WHERE b=883 OR b=311 OR b=880 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 57 AND 59) AND a!=58) OR a=88 OR b=154 @@ -21067,12 +21067,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='onmlkji' AND f GLOB 'xyzab*') + WHERE (g='onmlkji' AND f LIKE 'xyzab%') OR a=10 OR b=190 OR ((a BETWEEN 8 AND 10) AND a!=9) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 67 AND 69) AND a!=68) OR b=385 OR a=82 @@ -21090,12 +21090,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='onmlkji' AND f GLOB 'xyzab*') + WHERE (g='onmlkji' AND f LIKE 'xyzab%') OR a=10 OR b=190 OR ((a BETWEEN 8 AND 10) AND a!=9) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 67 AND 69) AND a!=68) OR b=385 OR a=82 @@ -21151,7 +21151,7 @@ test:do_test( OR a=49 OR ((a BETWEEN 33 AND 35) AND a!=34) OR c=33033 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR g IS NULL OR b=220 @@ -21174,7 +21174,7 @@ test:do_test( OR a=49 OR ((a BETWEEN 33 AND 35) AND a!=34) OR c=33033 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=81.0 AND d<82.0 AND d IS NOT NULL) OR g IS NULL OR b=220 @@ -21191,7 +21191,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=212 OR b=418 OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -21207,7 +21207,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'tuvwx*') + WHERE (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=212 OR b=418 OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -21283,8 +21283,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.569.1> @@ -21297,8 +21297,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'jklmn*') - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + WHERE (g='hgfedcb' AND f LIKE 'jklmn%') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.569.2> @@ -21356,7 +21356,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=18018 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=410 OR b=858 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21373,7 +21373,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=18018 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR b=410 OR b=858 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21389,7 +21389,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=781 ]]) end, { @@ -21403,7 +21403,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'vwxyz*') + WHERE (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=781 ]]) end, { @@ -21420,10 +21420,10 @@ test:do_test( WHERE b=1070 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=54 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR a=9 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) ]]) end, { @@ -21440,10 +21440,10 @@ test:do_test( WHERE b=1070 OR ((a BETWEEN 50 AND 52) AND a!=51) OR a=54 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR a=9 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) ]]) end, { @@ -21460,8 +21460,8 @@ test:do_test( WHERE a=55 OR a=62 OR a=63 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'ijklm%') OR ((a BETWEEN 99 AND 101) AND a!=100) ]]) end, { @@ -21478,8 +21478,8 @@ test:do_test( WHERE a=55 OR a=62 OR a=63 - OR (g='onmlkji' AND f GLOB 'yzabc*') - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='onmlkji' AND f LIKE 'yzabc%') + OR (g='rqponml' AND f LIKE 'ijklm%') OR ((a BETWEEN 99 AND 101) AND a!=100) ]]) end, { @@ -21527,9 +21527,9 @@ test:do_test( SELECT a FROM t2 WHERE b=553 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=583 OR a=56 ]]) @@ -21546,9 +21546,9 @@ test:do_test( SELECT a FROM t3 WHERE b=553 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR (d>=59.0 AND d<60.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=583 OR a=56 ]]) @@ -21565,7 +21565,7 @@ test:do_test( SELECT a FROM t2 WHERE a=83 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR a=1 OR ((a BETWEEN 17 AND 19) AND a!=18) OR ((a BETWEEN 49 AND 51) AND a!=50) @@ -21584,7 +21584,7 @@ test:do_test( SELECT a FROM t3 WHERE a=83 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR a=1 OR ((a BETWEEN 17 AND 19) AND a!=18) OR ((a BETWEEN 49 AND 51) AND a!=50) @@ -21635,7 +21635,7 @@ test:do_test( OR a=92 OR a=63 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.579.1> @@ -21652,7 +21652,7 @@ test:do_test( OR a=92 OR a=63 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.579.2> @@ -21668,7 +21668,7 @@ test:do_test( WHERE b=440 OR f='vwxyzabcd' OR b=190 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR b=88 OR b=58 @@ -21687,7 +21687,7 @@ test:do_test( WHERE b=440 OR f='vwxyzabcd' OR b=190 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=42.0 AND d<43.0 AND d IS NOT NULL) OR b=88 OR b=58 @@ -21707,7 +21707,7 @@ test:do_test( OR c=24024 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=1001 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR d>1e10 OR b=531 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21728,7 +21728,7 @@ test:do_test( OR c=24024 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) OR b=1001 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR d>1e10 OR b=531 OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) @@ -21774,7 +21774,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR ((a BETWEEN 80 AND 82) AND a!=81) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 91 AND 93) AND a!=92) @@ -21795,7 +21795,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 71 AND 73) AND a!=72) - OR (g='yxwvuts' AND f GLOB 'bcdef*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR ((a BETWEEN 80 AND 82) AND a!=81) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 91 AND 93) AND a!=92) @@ -21820,8 +21820,8 @@ test:do_test( OR b=806 OR b=605 OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.584.1> @@ -21839,8 +21839,8 @@ test:do_test( OR b=806 OR b=605 OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') ]]) end, { -- <where7-2.584.2> @@ -21856,9 +21856,9 @@ test:do_test( WHERE ((a BETWEEN 84 AND 86) AND a!=85) OR b=572 OR c=10010 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=29 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.585.1> @@ -21874,9 +21874,9 @@ test:do_test( WHERE ((a BETWEEN 84 AND 86) AND a!=85) OR b=572 OR c=10010 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=29 - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') ]]) end, { -- <where7-2.585.2> @@ -21962,9 +21962,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=5005 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR b=143 OR a=68 OR a=77 @@ -21982,9 +21982,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=5005 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR b=143 OR a=68 OR a=77 @@ -22002,10 +22002,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=5.0 AND d<6.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR ((a BETWEEN 76 AND 78) AND a!=77) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=99 OR ((a BETWEEN 12 AND 14) AND a!=13) ]]) @@ -22021,10 +22021,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=5.0 AND d<6.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'ghijk*') + OR (g='xwvutsr' AND f LIKE 'ghijk%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR ((a BETWEEN 76 AND 78) AND a!=77) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=99 OR ((a BETWEEN 12 AND 14) AND a!=13) ]]) @@ -22039,12 +22039,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'opqrs*') + WHERE (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=971 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.590.1> @@ -22057,12 +22057,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'opqrs*') + WHERE (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=971 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.590.2> @@ -22075,12 +22075,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=806 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=1015 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.591.1> @@ -22093,12 +22093,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?lmno*' AND f GLOB 'klmn*') + WHERE (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=806 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR b=1015 OR ((a BETWEEN 68 AND 70) AND a!=69) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') ]]) end, { -- <where7-2.591.2> @@ -22119,7 +22119,7 @@ test:do_test( OR a=26 OR b=1048 OR b=561 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR a=56 ]]) @@ -22142,7 +22142,7 @@ test:do_test( OR a=26 OR b=1048 OR b=561 - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 55 AND 57) AND a!=56) OR a=56 ]]) @@ -22165,7 +22165,7 @@ test:do_test( OR b=113 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) OR b=385 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.593.1> @@ -22186,7 +22186,7 @@ test:do_test( OR b=113 OR (d>=16.0 AND d<17.0 AND d IS NOT NULL) OR b=385 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.593.2> @@ -22204,7 +22204,7 @@ test:do_test( OR b=674 OR b=825 OR b=704 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=76 @@ -22227,7 +22227,7 @@ test:do_test( OR b=674 OR b=825 OR b=704 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=76 @@ -22246,7 +22246,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=869 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.595.1> @@ -22260,7 +22260,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=869 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.595.2> @@ -22303,12 +22303,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'hijkl*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='rqponml' AND f LIKE 'hijkl%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=8 OR a=72 OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.597.1> @@ -22321,12 +22321,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'hijkl*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='rqponml' AND f LIKE 'hijkl%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=8 OR a=72 OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.597.2> @@ -22342,7 +22342,7 @@ test:do_test( WHERE a=20 OR ((a BETWEEN 74 AND 76) AND a!=75) OR b=341 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=814 OR b=1026 OR a=14 @@ -22364,7 +22364,7 @@ test:do_test( WHERE a=20 OR ((a BETWEEN 74 AND 76) AND a!=75) OR b=341 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=814 OR b=1026 OR a=14 @@ -22387,8 +22387,8 @@ test:do_test( OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=839 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'xyzab*') - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'xyzab%') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR c=7007 ]]) end, { @@ -22406,8 +22406,8 @@ test:do_test( OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=839 OR (d>=51.0 AND d<52.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'xyzab*') - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'xyzab%') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR c=7007 ]]) end, { @@ -22421,7 +22421,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=21 OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -22443,7 +22443,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=21 OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -22469,11 +22469,11 @@ test:do_test( OR f='bcdefghij' OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=762 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.601.1> @@ -22490,11 +22490,11 @@ test:do_test( OR f='bcdefghij' OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR b=762 OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.601.2> @@ -22574,7 +22574,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=1067 OR b=231 @@ -22595,7 +22595,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=1067 OR b=231 @@ -22620,7 +22620,7 @@ test:do_test( OR b=396 OR b=1059 OR a=69 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=440 OR b=825 ]]) @@ -22640,7 +22640,7 @@ test:do_test( OR b=396 OR b=1059 OR a=69 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR b=440 OR b=825 ]]) @@ -22658,7 +22658,7 @@ test:do_test( WHERE (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR b=308 OR c<=10 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR f='ghijklmno' OR b=289 OR a=5 @@ -22680,7 +22680,7 @@ test:do_test( WHERE (d>=26.0 AND d<27.0 AND d IS NOT NULL) OR b=308 OR c<=10 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') OR f='ghijklmno' OR b=289 OR a=5 @@ -22703,9 +22703,9 @@ test:do_test( OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=993 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=663 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=869 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=121 @@ -22725,9 +22725,9 @@ test:do_test( OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR b=993 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR b=663 - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=869 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=121 @@ -22743,9 +22743,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=770 ]]) end, { @@ -22759,9 +22759,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='hgfedcb' AND f GLOB 'jklmn*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=770 ]]) end, { @@ -22776,10 +22776,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (g='nmlkjih' AND f GLOB 'fghij*') - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='nmlkjih' AND f LIKE 'fghij%') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.609.1> @@ -22793,10 +22793,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 80 AND 82) AND a!=81) - OR (g='nmlkjih' AND f GLOB 'fghij*') - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='nmlkjih' AND f LIKE 'fghij%') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.609.2> @@ -22855,16 +22855,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') OR b=1092 - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR a=77 OR a=63 OR b=762 OR b=894 OR b=685 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.611.1> @@ -22877,16 +22877,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='onmlkji' AND f GLOB 'zabcd*') + WHERE (g='onmlkji' AND f LIKE 'zabcd%') OR b=1092 - OR (g='ihgfedc' AND f GLOB 'cdefg*') - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR a=77 OR a=63 OR b=762 OR b=894 OR b=685 - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.611.2> @@ -22899,7 +22899,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=231 ]]) @@ -22914,7 +22914,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'klmno*') + WHERE (g='wvutsrq' AND f LIKE 'klmno%') OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=231 ]]) @@ -22930,7 +22930,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=828 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 8 AND 10) AND a!=9) ]]) end, { @@ -22945,7 +22945,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=828 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR ((a BETWEEN 8 AND 10) AND a!=9) ]]) end, { @@ -22959,13 +22959,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=520 OR ((a BETWEEN 4 AND 6) AND a!=5) OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR a=21 ]]) end, { @@ -22979,13 +22979,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?opqr*' AND f GLOB 'nopq*') + WHERE (f LIKE '_opqr%' AND f LIKE 'nopq%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=520 OR ((a BETWEEN 4 AND 6) AND a!=5) OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR a=21 ]]) end, { @@ -23000,7 +23000,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=553 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR b=1034 OR b=418 OR a=57 @@ -23019,7 +23019,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=553 - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR b=1034 OR b=418 OR a=57 @@ -23038,9 +23038,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=43 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=418 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=594 OR a=21 @@ -23060,9 +23060,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=43 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') OR b=418 - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR b=594 OR a=21 @@ -23082,7 +23082,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=671 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 95 AND 97) AND a!=96) ]]) end, { @@ -23097,7 +23097,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=671 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR ((a BETWEEN 95 AND 97) AND a!=96) ]]) end, { @@ -23148,7 +23148,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=806 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) OR b=275 @@ -23166,7 +23166,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=806 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) OR b=275 @@ -23184,12 +23184,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=24024 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=429 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR b=110 OR a=39 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.620.1> @@ -23203,12 +23203,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=24024 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=429 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR b=110 OR a=39 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.620.2> @@ -23287,7 +23287,7 @@ test:do_test( SELECT a FROM t2 WHERE b=509 OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=718 OR a=4 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -23307,7 +23307,7 @@ test:do_test( SELECT a FROM t3 WHERE b=509 OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='vutsrqp' AND f GLOB 'nopqr*') + OR (g='vutsrqp' AND f LIKE 'nopqr%') OR b=718 OR a=4 OR ((a BETWEEN 56 AND 58) AND a!=57) @@ -23325,7 +23325,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=1026 OR a=93 OR c=18018 @@ -23341,7 +23341,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR b=1026 OR a=93 OR c=18018 @@ -23422,11 +23422,11 @@ test:do_test( WHERE b=990 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=531 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR f='qrstuvwxy' ]]) end, { @@ -23443,11 +23443,11 @@ test:do_test( WHERE b=990 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=531 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR f='qrstuvwxy' ]]) end, { @@ -23462,9 +23462,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=60 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=627 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR b=883 @@ -23484,9 +23484,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=60 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=627 - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR b=883 @@ -23572,13 +23572,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=28 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=69 OR ((a BETWEEN 85 AND 87) AND a!=86) OR b=781 OR a=64 OR b=91 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR a=16 OR b=278 OR a=26 @@ -23595,13 +23595,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=28 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=69 OR ((a BETWEEN 85 AND 87) AND a!=86) OR b=781 OR a=64 OR b=91 - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR a=16 OR b=278 OR a=26 @@ -23710,7 +23710,7 @@ test:do_test( WHERE f='yzabcdefg' OR ((a BETWEEN 48 AND 50) AND a!=49) OR a=100 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR a=62 OR a=67 OR b=605 @@ -23733,7 +23733,7 @@ test:do_test( WHERE f='yzabcdefg' OR ((a BETWEEN 48 AND 50) AND a!=49) OR a=100 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR a=62 OR a=67 OR b=605 @@ -23787,9 +23787,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=751 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR a=67 OR b=102 @@ -23805,9 +23805,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?stuv*' AND f GLOB 'rstu*') + WHERE (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=751 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR a=67 OR b=102 @@ -23862,14 +23862,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=2002 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=33 OR b=817 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) ]]) end, { @@ -23884,14 +23884,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=2002 - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR ((a BETWEEN 41 AND 43) AND a!=42) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=33 OR b=817 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') + OR (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) ]]) end, { @@ -23905,8 +23905,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=80 OR a=53 OR a=62 @@ -23926,8 +23926,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + WHERE (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=80 OR a=53 OR a=62 @@ -23951,7 +23951,7 @@ test:do_test( OR b=652 OR a=72 OR b=209 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR a=38 OR ((a BETWEEN 66 AND 68) AND a!=67) OR d>1e10 @@ -23971,7 +23971,7 @@ test:do_test( OR b=652 OR a=72 OR b=209 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR a=38 OR ((a BETWEEN 66 AND 68) AND a!=67) OR d>1e10 @@ -24016,11 +24016,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=179 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=509 OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='bcdefghij' ]]) end, { @@ -24035,11 +24035,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=179 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR b=509 OR ((a BETWEEN 58 AND 60) AND a!=59) OR (d>=49.0 AND d<50.0 AND d IS NOT NULL) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='bcdefghij' ]]) end, { @@ -24149,13 +24149,13 @@ test:do_test( SELECT a FROM t2 WHERE (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR b=421 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=704 OR a=90 OR a=78 OR 1000000<b OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -24171,13 +24171,13 @@ test:do_test( SELECT a FROM t3 WHERE (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR b=421 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=704 OR a=90 OR a=78 OR 1000000<b OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR ((a BETWEEN 53 AND 55) AND a!=54) ]]) end, { @@ -24191,7 +24191,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'pqrst*') + WHERE (g='fedcbaz' AND f LIKE 'pqrst%') OR ((a BETWEEN 93 AND 95) AND a!=94) ]]) end, { @@ -24205,7 +24205,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'pqrst*') + WHERE (g='fedcbaz' AND f LIKE 'pqrst%') OR ((a BETWEEN 93 AND 95) AND a!=94) ]]) end, { @@ -24226,7 +24226,7 @@ test:do_test( OR ((a BETWEEN 25 AND 27) AND a!=26) OR e IS NULL OR a=48 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.649.1> @@ -24246,7 +24246,7 @@ test:do_test( OR ((a BETWEEN 25 AND 27) AND a!=26) OR e IS NULL OR a=48 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.649.2> @@ -24292,7 +24292,7 @@ test:do_test( WHERE b=275 OR ((a BETWEEN 57 AND 59) AND a!=58) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) OR f='ijklmnopq' ]]) @@ -24310,7 +24310,7 @@ test:do_test( WHERE b=275 OR ((a BETWEEN 57 AND 59) AND a!=58) OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) OR f='ijklmnopq' ]]) @@ -24360,7 +24360,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='zabcdefgh' - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR a=54 OR b=770 OR ((a BETWEEN 96 AND 98) AND a!=97) @@ -24380,7 +24380,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='zabcdefgh' - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR a=54 OR b=770 OR ((a BETWEEN 96 AND 98) AND a!=97) @@ -24446,7 +24446,7 @@ test:do_test( WHERE b=223 OR a=14 OR ((a BETWEEN 74 AND 76) AND a!=75) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=539 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -24467,7 +24467,7 @@ test:do_test( WHERE b=223 OR a=14 OR ((a BETWEEN 74 AND 76) AND a!=75) - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=539 OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -24486,7 +24486,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=99 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=73 OR a=56 OR b=253 @@ -24504,7 +24504,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=99 - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=73 OR a=56 OR b=253 @@ -24524,8 +24524,8 @@ test:do_test( WHERE b=927 OR b=300 OR b=223 - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=154 OR b=759 ]]) @@ -24543,8 +24543,8 @@ test:do_test( WHERE b=927 OR b=300 OR b=223 - OR (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=154 OR b=759 ]]) @@ -24562,7 +24562,7 @@ test:do_test( WHERE b=242 OR b=905 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR a=24 OR ((a BETWEEN 67 AND 69) AND a!=68) @@ -24584,7 +24584,7 @@ test:do_test( WHERE b=242 OR b=905 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'ijklm*') + OR (g='hgfedcb' AND f LIKE 'ijklm%') OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR a=24 OR ((a BETWEEN 67 AND 69) AND a!=68) @@ -24606,10 +24606,10 @@ test:do_test( WHERE b=190 OR a=72 OR b=377 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) OR b=476 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.659.1> @@ -24625,10 +24625,10 @@ test:do_test( WHERE b=190 OR a=72 OR b=377 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) OR b=476 - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.659.2> @@ -24644,12 +24644,12 @@ test:do_test( WHERE b=245 OR b=638 OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR f='opqrstuvw' OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=817 OR a=85 - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.660.1> @@ -24665,12 +24665,12 @@ test:do_test( WHERE b=245 OR b=638 OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR f='opqrstuvw' OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR b=817 OR a=85 - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.660.2> @@ -24749,9 +24749,9 @@ test:do_test( OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR c<=10 OR ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=553 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=1045 ]]) end, { @@ -24769,9 +24769,9 @@ test:do_test( OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) OR c<=10 OR ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=553 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR b=1045 ]]) end, { @@ -24788,12 +24788,12 @@ test:do_test( WHERE b=440 OR ((a BETWEEN 3 AND 5) AND a!=4) OR ((a BETWEEN 44 AND 46) AND a!=45) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=89 OR c=18018 OR b=154 OR b=506 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=78 OR b=751 ]]) @@ -24811,12 +24811,12 @@ test:do_test( WHERE b=440 OR ((a BETWEEN 3 AND 5) AND a!=4) OR ((a BETWEEN 44 AND 46) AND a!=45) - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=89 OR c=18018 OR b=154 OR b=506 - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=78 OR b=751 ]]) @@ -24832,13 +24832,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=407 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=209 OR b=814 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) OR b=1092 ]]) @@ -24854,13 +24854,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=407 - OR (g='lkjihgf' AND f GLOB 'nopqr*') - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') + OR (g='rqponml' AND f LIKE 'klmno%') OR b=209 OR b=814 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR a=44 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) OR b=1092 ]]) @@ -25002,10 +25002,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=27 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=121 OR ((a BETWEEN 7 AND 9) AND a!=8) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=67 OR ((a BETWEEN 30 AND 32) AND a!=31) OR c=1001 @@ -25024,10 +25024,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=27 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR b=121 OR ((a BETWEEN 7 AND 9) AND a!=8) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=67 OR ((a BETWEEN 30 AND 32) AND a!=31) OR c=1001 @@ -25046,7 +25046,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=99 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) @@ -25063,7 +25063,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=99 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=98.0 AND d<99.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) @@ -25083,9 +25083,9 @@ test:do_test( OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=355 OR b=814 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=81 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=542 OR b=795 ]]) @@ -25104,9 +25104,9 @@ test:do_test( OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR b=355 OR b=814 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=81 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=542 OR b=795 ]]) @@ -25124,10 +25124,10 @@ test:do_test( WHERE (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=363 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=619 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=73 ]]) end, { @@ -25144,10 +25144,10 @@ test:do_test( WHERE (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=363 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 64 AND 66) AND a!=65) OR b=619 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') OR a=73 ]]) end, { @@ -25163,9 +25163,9 @@ test:do_test( SELECT a FROM t2 WHERE b=935 OR a=42 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=330 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.673.1> @@ -25180,9 +25180,9 @@ test:do_test( SELECT a FROM t3 WHERE b=935 OR a=42 - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR b=330 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.673.2> @@ -25201,7 +25201,7 @@ test:do_test( OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR a=64 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=89 ]]) end, { @@ -25221,7 +25221,7 @@ test:do_test( OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR a=64 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR a=89 ]]) end, { @@ -25240,9 +25240,9 @@ test:do_test( OR b=663 OR c=17017 OR b=561 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=495 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR b=352 OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) @@ -25262,9 +25262,9 @@ test:do_test( OR b=663 OR c=17017 OR b=561 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR b=495 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR b=352 OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) @@ -25280,7 +25280,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR f='klmnopqrs' OR f='lmnopqrst' ]]) @@ -25296,7 +25296,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=100.0 AND d<101.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') OR f='klmnopqrs' OR f='lmnopqrst' ]]) @@ -25342,16 +25342,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=36 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=682 OR ((a BETWEEN 53 AND 55) AND a!=54) OR b=91 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 95 AND 97) AND a!=96) OR c=12012 OR b=267 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.678.1> @@ -25365,16 +25365,16 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=36 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 18 AND 20) AND a!=19) OR b=682 OR ((a BETWEEN 53 AND 55) AND a!=54) OR b=91 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 95 AND 97) AND a!=96) OR c=12012 OR b=267 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.678.2> @@ -25390,12 +25390,12 @@ test:do_test( WHERE b=594 OR f='hijklmnop' OR ((a BETWEEN 65 AND 67) AND a!=66) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=707 OR b=363 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=157 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.679.1> @@ -25411,12 +25411,12 @@ test:do_test( WHERE b=594 OR f='hijklmnop' OR ((a BETWEEN 65 AND 67) AND a!=66) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=707 OR b=363 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=157 - OR (g='tsrqpon' AND f GLOB 'yzabc*') + OR (g='tsrqpon' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.679.2> @@ -25473,7 +25473,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') OR b=674 OR ((a BETWEEN 38 AND 40) AND a!=39) OR c=3003 @@ -25492,7 +25492,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'defgh*') + WHERE (g='nmlkjih' AND f LIKE 'defgh%') OR b=674 OR ((a BETWEEN 38 AND 40) AND a!=39) OR c=3003 @@ -25554,7 +25554,7 @@ test:do_test( OR b=707 OR f='vwxyzabcd' OR b=286 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=693 OR ((a BETWEEN 6 AND 8) AND a!=7) ]]) @@ -25576,7 +25576,7 @@ test:do_test( OR b=707 OR f='vwxyzabcd' OR b=286 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=693 OR ((a BETWEEN 6 AND 8) AND a!=7) ]]) @@ -25596,8 +25596,8 @@ test:do_test( OR a=52 OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR d<0.0 - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=168 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' @@ -25619,8 +25619,8 @@ test:do_test( OR a=52 OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) OR d<0.0 - OR (g='rqponml' AND f GLOB 'jklmn*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + OR (g='rqponml' AND f LIKE 'jklmn%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=168 OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='uvwxyzabc' @@ -25638,12 +25638,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='rstuvwxyz' - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=14 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) ]]) @@ -25659,12 +25659,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='rstuvwxyz' - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR a=14 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) ]]) @@ -25681,9 +25681,9 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 13 AND 15) AND a!=14) OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='mnopqrstu' - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR a=38 OR c=26026 @@ -25701,9 +25701,9 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 13 AND 15) AND a!=14) OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR f='mnopqrstu' - OR (g='fedcbaz' AND f GLOB 'tuvwx*') + OR (g='fedcbaz' AND f LIKE 'tuvwx%') OR ((a BETWEEN 33 AND 35) AND a!=34) OR a=38 OR c=26026 @@ -25719,11 +25719,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=7 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='srqponm' AND f LIKE 'ghijk%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -25737,11 +25737,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 71 AND 73) AND a!=72) OR a=7 - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='srqponm' AND f LIKE 'ghijk%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -25759,8 +25759,8 @@ test:do_test( OR b=938 OR b=484 OR b=652 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='opqrstuvw' ]]) end, { @@ -25778,8 +25778,8 @@ test:do_test( OR b=938 OR b=484 OR b=652 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='opqrstuvw' ]]) end, { @@ -25835,12 +25835,12 @@ test:do_test( SELECT a FROM t2 WHERE a=25 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=443 OR b=564 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=531 OR b=1081 OR a=96 @@ -25858,12 +25858,12 @@ test:do_test( SELECT a FROM t3 WHERE a=25 OR ((a BETWEEN 43 AND 45) AND a!=44) - OR (g='gfedcba' AND f GLOB 'mnopq*') - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (g='gfedcba' AND f LIKE 'mnopq%') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) OR b=443 OR b=564 - OR (g='kjihgfe' AND f GLOB 'rstuv*') + OR (g='kjihgfe' AND f LIKE 'rstuv%') OR b=531 OR b=1081 OR a=96 @@ -25880,7 +25880,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=36 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.691.1> @@ -25894,7 +25894,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=36 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.691.2> @@ -25907,7 +25907,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') OR b=531 OR ((a BETWEEN 93 AND 95) AND a!=94) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -25923,7 +25923,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'stuvw*') + WHERE (g='kjihgfe' AND f LIKE 'stuvw%') OR b=531 OR ((a BETWEEN 93 AND 95) AND a!=94) OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) @@ -25975,8 +25975,8 @@ test:do_test( OR b=718 OR a=18 OR a=3 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR c=28028 ]]) end, { @@ -25998,8 +25998,8 @@ test:do_test( OR b=718 OR a=18 OR a=3 - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR c=28028 ]]) end, { @@ -26062,7 +26062,7 @@ test:do_test( OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR ((a BETWEEN 30 AND 32) AND a!=31) OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) ]]) end, { @@ -26081,7 +26081,7 @@ test:do_test( OR (d>=19.0 AND d<20.0 AND d IS NOT NULL) OR ((a BETWEEN 30 AND 32) AND a!=31) OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) ]]) end, { @@ -26095,7 +26095,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR b=883 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=938 @@ -26115,7 +26115,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'ijklm*') + WHERE (g='mlkjihg' AND f LIKE 'ijklm%') OR b=883 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=938 @@ -26167,7 +26167,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'abcde*') + WHERE (g='tsrqpon' AND f LIKE 'abcde%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR ((a BETWEEN 68 AND 70) AND a!=69) OR ((a BETWEEN 74 AND 76) AND a!=75) @@ -26185,7 +26185,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'abcde*') + WHERE (g='tsrqpon' AND f LIKE 'abcde%') OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR ((a BETWEEN 68 AND 70) AND a!=69) OR ((a BETWEEN 74 AND 76) AND a!=75) @@ -26271,12 +26271,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR f='lmnopqrst' OR ((a BETWEEN 11 AND 13) AND a!=12) OR b=872 @@ -26294,12 +26294,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?abcd*' AND f GLOB 'zabc*') - OR (g='srqponm' AND f GLOB 'efghi*') - OR (g='ponmlkj' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='ihgfedc' AND f GLOB 'bcdef*') + WHERE (f LIKE '_abcd%' AND f LIKE 'zabc%') + OR (g='srqponm' AND f LIKE 'efghi%') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR f='lmnopqrst' OR ((a BETWEEN 11 AND 13) AND a!=12) OR b=872 @@ -26319,14 +26319,14 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 71 AND 73) AND a!=72) OR a=20 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=1004 OR b=77 OR b=927 OR a=99 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.703.1> @@ -26341,14 +26341,14 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 71 AND 73) AND a!=72) OR a=20 - OR (g='vutsrqp' AND f GLOB 'rstuv*') - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=1004 OR b=77 OR b=927 OR a=99 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.703.2> @@ -26394,7 +26394,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=572 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.705.1> @@ -26408,7 +26408,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=572 - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.705.2> @@ -26424,8 +26424,8 @@ test:do_test( WHERE (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 54 AND 56) AND a!=55) OR f='lmnopqrst' - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=23 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) @@ -26443,8 +26443,8 @@ test:do_test( WHERE (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 54 AND 56) AND a!=55) OR f='lmnopqrst' - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR a=23 OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) @@ -26463,13 +26463,13 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=605 OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR b=759 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 38 AND 40) AND a!=39) OR a=40 OR f='ghijklmno' - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.707.1> @@ -26486,13 +26486,13 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=605 OR (d>=46.0 AND d<47.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'stuvw*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') OR b=759 - OR (f GLOB '?zabc*' AND f GLOB 'yzab*') + OR (f LIKE '_zabc%' AND f LIKE 'yzab%') OR ((a BETWEEN 38 AND 40) AND a!=39) OR a=40 OR f='ghijklmno' - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.707.2> @@ -26601,7 +26601,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR a=34 OR ((a BETWEEN 6 AND 8) AND a!=7) OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) @@ -26619,7 +26619,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'efghi*') + WHERE (g='nmlkjih' AND f LIKE 'efghi%') OR a=34 OR ((a BETWEEN 6 AND 8) AND a!=7) OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) @@ -26637,16 +26637,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR a=52 OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='ghijklmno' - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=319 OR a=34 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR f='hijklmnop' ]]) end, { @@ -26660,16 +26660,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR a=52 OR ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=24.0 AND d<25.0 AND d IS NOT NULL) OR f='ghijklmno' - OR (g='utsrqpo' AND f GLOB 'stuvw*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=319 OR a=34 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR f='hijklmnop' ]]) end, { @@ -26683,7 +26683,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR a=47 @@ -26699,7 +26699,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'pqrst*') + WHERE (g='qponmlk' AND f LIKE 'pqrst%') OR ((a BETWEEN 69 AND 71) AND a!=70) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR a=47 @@ -26781,11 +26781,11 @@ test:do_test( SELECT a FROM t2 WHERE c=31031 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=256 OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=715 OR b=212 OR b=99 @@ -26804,11 +26804,11 @@ test:do_test( SELECT a FROM t3 WHERE c=31031 OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 66 AND 68) AND a!=67) OR b=256 OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=715 OR b=212 OR b=99 @@ -26899,7 +26899,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 62 AND 64) AND a!=63) ]]) end, { @@ -26913,7 +26913,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR ((a BETWEEN 62 AND 64) AND a!=63) ]]) end, { @@ -26929,11 +26929,11 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 43 AND 45) AND a!=44) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=43 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) OR b=729 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.720.1> @@ -26948,11 +26948,11 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 43 AND 45) AND a!=44) OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=43 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) OR b=729 - OR (g='vutsrqp' AND f GLOB 'opqrs*') + OR (g='vutsrqp' AND f LIKE 'opqrs%') ]]) end, { -- <where7-2.720.2> @@ -26972,7 +26972,7 @@ test:do_test( OR c=8008 OR f='opqrstuvw' OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.721.1> @@ -26992,7 +26992,7 @@ test:do_test( OR c=8008 OR f='opqrstuvw' OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.721.2> @@ -27008,9 +27008,9 @@ test:do_test( WHERE ((a BETWEEN 40 AND 42) AND a!=41) OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR c<=10 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR a=35 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=1089 OR a=73 OR b=737 @@ -27031,9 +27031,9 @@ test:do_test( WHERE ((a BETWEEN 40 AND 42) AND a!=41) OR (d>=62.0 AND d<63.0 AND d IS NOT NULL) OR c<=10 - OR (g='srqponm' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'fghij%') OR a=35 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=1089 OR a=73 OR b=737 @@ -27053,7 +27053,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 0 AND 2) AND a!=1) OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=762 OR ((a BETWEEN 39 AND 41) AND a!=40) OR a=80 @@ -27071,7 +27071,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 0 AND 2) AND a!=1) OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') OR b=762 OR ((a BETWEEN 39 AND 41) AND a!=40) OR a=80 @@ -27092,10 +27092,10 @@ test:do_test( OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=979 OR a=36 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=55 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.724.1> @@ -27113,10 +27113,10 @@ test:do_test( OR ((a BETWEEN 80 AND 82) AND a!=81) OR b=979 OR a=36 - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) OR a=55 - OR (g='fedcbaz' AND f GLOB 'rstuv*') + OR (g='fedcbaz' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.724.2> @@ -27131,8 +27131,8 @@ test:do_test( SELECT a FROM t2 WHERE a=75 OR a=61 - OR (g='onmlkji' AND f GLOB 'abcde*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'abcde%') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.725.1> @@ -27147,8 +27147,8 @@ test:do_test( SELECT a FROM t3 WHERE a=75 OR a=61 - OR (g='onmlkji' AND f GLOB 'abcde*') - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='onmlkji' AND f LIKE 'abcde%') + OR (g='gfedcba' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.725.2> @@ -27162,7 +27162,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1004 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR a=56 ]]) @@ -27178,7 +27178,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1004 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR a=56 ]]) @@ -27194,13 +27194,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=93 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR a=83 OR b=828 OR b=454 OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=924 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR a=50 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) ]]) @@ -27216,13 +27216,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=93 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR a=83 OR b=828 OR b=454 OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=924 - OR (g='lkjihgf' AND f GLOB 'opqrs*') + OR (g='lkjihgf' AND f LIKE 'opqrs%') OR a=50 OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) ]]) @@ -27269,7 +27269,7 @@ test:do_test( SELECT a FROM t2 WHERE a=55 OR a=65 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.729.1> @@ -27284,7 +27284,7 @@ test:do_test( SELECT a FROM t3 WHERE a=55 OR a=65 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.729.2> @@ -27300,7 +27300,7 @@ test:do_test( WHERE ((a BETWEEN 72 AND 74) AND a!=73) OR b=605 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR f='ijklmnopq' OR ((a BETWEEN 86 AND 88) AND a!=87) @@ -27322,7 +27322,7 @@ test:do_test( WHERE ((a BETWEEN 72 AND 74) AND a!=73) OR b=605 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR f='ijklmnopq' OR ((a BETWEEN 86 AND 88) AND a!=87) @@ -27342,7 +27342,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=476 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=982 OR a=43 OR b=355 @@ -27359,7 +27359,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=476 - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=982 OR a=43 OR b=355 @@ -27377,8 +27377,8 @@ test:do_test( SELECT a FROM t2 WHERE a=85 OR b=718 - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) ]]) end, { @@ -27394,8 +27394,8 @@ test:do_test( SELECT a FROM t3 WHERE a=85 OR b=718 - OR (g='fedcbaz' AND f GLOB 'pqrst*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='fedcbaz' AND f LIKE 'pqrst%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) ]]) end, { @@ -27515,12 +27515,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=465 OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=37 OR b=1056 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=1023 ]]) @@ -27535,12 +27535,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?rstu*' AND f GLOB 'qrst*') + WHERE (f LIKE '_rstu%' AND f LIKE 'qrst%') OR b=465 OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=37 OR b=1056 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=1023 ]]) @@ -27557,7 +27557,7 @@ test:do_test( SELECT a FROM t2 WHERE a=76 OR a=8 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=495 OR b=663 OR a=98 @@ -27576,7 +27576,7 @@ test:do_test( SELECT a FROM t3 WHERE a=76 OR a=8 - OR (g='tsrqpon' AND f GLOB 'bcdef*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') OR b=495 OR b=663 OR a=98 @@ -27595,7 +27595,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1081 OR b=542 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=828 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -27615,7 +27615,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1081 OR b=542 - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=828 OR (d>=67.0 AND d<68.0 AND d IS NOT NULL) @@ -27745,9 +27745,9 @@ test:do_test( SELECT a FROM t2 WHERE b=880 OR b=696 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=308 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 96 AND 98) AND a!=97) ]]) end, { @@ -27763,9 +27763,9 @@ test:do_test( SELECT a FROM t3 WHERE b=880 OR b=696 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR b=308 - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR ((a BETWEEN 96 AND 98) AND a!=97) ]]) end, { @@ -27779,7 +27779,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR a=24 OR f IS NULL OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) @@ -27798,7 +27798,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR a=24 OR f IS NULL OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) @@ -27819,7 +27819,7 @@ test:do_test( SELECT a FROM t2 WHERE a=94 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=792 OR a=77 OR a=26 @@ -27839,7 +27839,7 @@ test:do_test( SELECT a FROM t3 WHERE a=94 OR (d>=74.0 AND d<75.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=792 OR a=77 OR a=26 @@ -27935,11 +27935,11 @@ test:do_test( OR c=19019 OR a=42 OR b=938 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.747.1> @@ -27958,11 +27958,11 @@ test:do_test( OR c=19019 OR a=42 OR b=938 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') ]]) end, { -- <where7-2.747.2> @@ -27977,7 +27977,7 @@ test:do_test( SELECT a FROM t2 WHERE b=179 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.748.1> @@ -27992,7 +27992,7 @@ test:do_test( SELECT a FROM t3 WHERE b=179 OR a=50 - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') ]]) end, { -- <where7-2.748.2> @@ -28005,12 +28005,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') OR f='xyzabcdef' OR ((a BETWEEN 49 AND 51) AND a!=50) OR b=575 OR b=385 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=46 OR b=220 @@ -28027,12 +28027,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'rstuv*') + WHERE (g='vutsrqp' AND f LIKE 'rstuv%') OR f='xyzabcdef' OR ((a BETWEEN 49 AND 51) AND a!=50) OR b=575 OR b=385 - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR ((a BETWEEN 63 AND 65) AND a!=64) OR a=46 OR b=220 @@ -28055,7 +28055,7 @@ test:do_test( OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR c=31031 OR b=869 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=245 OR a=92 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) @@ -28078,7 +28078,7 @@ test:do_test( OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR c=31031 OR b=869 - OR (g='jihgfed' AND f GLOB 'zabcd*') + OR (g='jihgfed' AND f LIKE 'zabcd%') OR b=245 OR a=92 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) @@ -28099,8 +28099,8 @@ test:do_test( OR c=28028 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR ((a BETWEEN 17 AND 19) AND a!=18) OR c=9009 OR a=17 @@ -28121,8 +28121,8 @@ test:do_test( OR c=28028 OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='mlkjihg' AND f GLOB 'jklmn*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='mlkjihg' AND f LIKE 'jklmn%') OR ((a BETWEEN 17 AND 19) AND a!=18) OR c=9009 OR a=17 @@ -28141,7 +28141,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=57.0 AND d<58.0 AND d IS NOT NULL) OR b=762 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='tuvwxyzab' OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -28161,7 +28161,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=57.0 AND d<58.0 AND d IS NOT NULL) OR b=762 - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR f='tuvwxyzab' OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) OR ((a BETWEEN 31 AND 33) AND a!=32) @@ -28219,7 +28219,7 @@ test:do_test( OR a=14 OR c=16016 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR f='jklmnopqr' OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) @@ -28240,7 +28240,7 @@ test:do_test( OR a=14 OR c=16016 OR (d>=21.0 AND d<22.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR f='jklmnopqr' OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) @@ -28258,12 +28258,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=949 - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR c<=10 OR a=14 OR b=608 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=121 OR b=333 @@ -28281,12 +28281,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=949 - OR (g='srqponm' AND f GLOB 'cdefg*') - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='srqponm' AND f LIKE 'cdefg%') + OR (g='vutsrqp' AND f LIKE 'rstuv%') OR c<=10 OR a=14 OR b=608 - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) OR b=121 OR b=333 @@ -28303,7 +28303,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=355 OR b=627 OR b=1001 @@ -28321,7 +28321,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'rstuv*') + WHERE (g='kjihgfe' AND f LIKE 'rstuv%') OR b=355 OR b=627 OR b=1001 @@ -28339,7 +28339,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) ]]) end, { @@ -28353,7 +28353,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'efghi*') + WHERE (g='xwvutsr' AND f LIKE 'efghi%') OR (d>=79.0 AND d<80.0 AND d IS NOT NULL) ]]) end, { @@ -28370,11 +28370,11 @@ test:do_test( WHERE b=685 OR a=14 OR b=990 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='efghijklm' OR c=1001 OR b=784 - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) end, { @@ -28391,11 +28391,11 @@ test:do_test( WHERE b=685 OR a=14 OR b=990 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR f='efghijklm' OR c=1001 OR b=784 - OR (g='srqponm' AND f GLOB 'ghijk*') + OR (g='srqponm' AND f LIKE 'ghijk%') OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) ]]) end, { @@ -28410,7 +28410,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=54 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR c=26026 OR ((a BETWEEN 97 AND 99) AND a!=98) ]]) @@ -28426,7 +28426,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=54 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR c=26026 OR ((a BETWEEN 97 AND 99) AND a!=98) ]]) @@ -28441,13 +28441,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'ghijk*') + WHERE (g='hgfedcb' AND f LIKE 'ghijk%') OR c=24024 OR a=98 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=5 OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='pqrstuvwx' OR f='bcdefghij' OR b=1001 @@ -28464,13 +28464,13 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'ghijk*') + WHERE (g='hgfedcb' AND f LIKE 'ghijk%') OR c=24024 OR a=98 - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') OR a=5 OR ((a BETWEEN 31 AND 33) AND a!=32) - OR (g='rqponml' AND f GLOB 'klmno*') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='pqrstuvwx' OR f='bcdefghij' OR b=1001 @@ -28488,11 +28488,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=781 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR f='lmnopqrst' OR a=39 OR a=100 @@ -28510,11 +28510,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=781 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'bcdef*') - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'bcdef%') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR f='lmnopqrst' OR a=39 OR a=100 @@ -28533,11 +28533,11 @@ test:do_test( SELECT a FROM t2 WHERE c=4004 OR b=718 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=50 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR b=363 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR b=1023 ]]) end, { @@ -28553,11 +28553,11 @@ test:do_test( SELECT a FROM t3 WHERE c=4004 OR b=718 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR a=50 OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) OR b=363 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') OR b=1023 ]]) end, { @@ -28576,8 +28576,8 @@ test:do_test( OR b=473 OR ((a BETWEEN 43 AND 45) AND a!=44) OR b=586 - OR (g='tsrqpon' AND f GLOB 'abcde*') - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (g='tsrqpon' AND f LIKE 'abcde%') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.763.1> @@ -28595,8 +28595,8 @@ test:do_test( OR b=473 OR ((a BETWEEN 43 AND 45) AND a!=44) OR b=586 - OR (g='tsrqpon' AND f GLOB 'abcde*') - OR (f GLOB '?vwxy*' AND f GLOB 'uvwx*') + OR (g='tsrqpon' AND f LIKE 'abcde%') + OR (f LIKE '_vwxy%' AND f LIKE 'uvwx%') ]]) end, { -- <where7-2.763.2> @@ -28609,7 +28609,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) ]]) @@ -28624,7 +28624,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) OR (d>=13.0 AND d<14.0 AND d IS NOT NULL) ]]) @@ -28639,11 +28639,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 76 AND 78) AND a!=77) OR a=47 - OR (g='kjihgfe' AND f GLOB 'qrstu*') - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR f='lmnopqrst' ]]) @@ -28658,11 +28658,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR ((a BETWEEN 76 AND 78) AND a!=77) OR a=47 - OR (g='kjihgfe' AND f GLOB 'qrstu*') - OR (g='lkjihgf' AND f GLOB 'lmnop*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') + OR (g='lkjihgf' AND f LIKE 'lmnop%') OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR f='lmnopqrst' ]]) @@ -28680,7 +28680,7 @@ test:do_test( WHERE c>=34035 OR a=29 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR f='abcdefghi' OR b=993 OR ((a BETWEEN 52 AND 54) AND a!=53) @@ -28700,7 +28700,7 @@ test:do_test( WHERE c>=34035 OR a=29 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (f GLOB '?wxyz*' AND f GLOB 'vwxy*') + OR (f LIKE '_wxyz%' AND f LIKE 'vwxy%') OR f='abcdefghi' OR b=993 OR ((a BETWEEN 52 AND 54) AND a!=53) @@ -28878,7 +28878,7 @@ test:do_test( WHERE ((a BETWEEN 32 AND 34) AND a!=33) OR b=1045 OR c=27027 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') ]]) end, { -- <where7-2.771.1> @@ -28894,7 +28894,7 @@ test:do_test( WHERE ((a BETWEEN 32 AND 34) AND a!=33) OR b=1045 OR c=27027 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') ]]) end, { -- <where7-2.771.2> @@ -28910,7 +28910,7 @@ test:do_test( WHERE a=87 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=487 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.772.1> @@ -28926,7 +28926,7 @@ test:do_test( WHERE a=87 OR (d>=47.0 AND d<48.0 AND d IS NOT NULL) OR b=487 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') ]]) end, { -- <where7-2.772.2> @@ -29018,10 +29018,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=220 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=363 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) ]]) @@ -29037,10 +29037,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=220 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=363 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'defgh*') + OR (g='nmlkjih' AND f LIKE 'defgh%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR ((a BETWEEN 10 AND 12) AND a!=11) ]]) @@ -29096,8 +29096,8 @@ test:do_test( WHERE b=1059 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=960 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=894 OR c=2002 ]]) @@ -29115,8 +29115,8 @@ test:do_test( WHERE b=1059 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=960 - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR b=894 OR c=2002 ]]) @@ -29132,7 +29132,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.778.1> @@ -29146,7 +29146,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=14 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.778.2> @@ -29160,7 +29160,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=806 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=795 OR ((a BETWEEN 99 AND 101) AND a!=100) OR ((a BETWEEN 21 AND 23) AND a!=22) @@ -29180,7 +29180,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=806 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') OR b=795 OR ((a BETWEEN 99 AND 101) AND a!=100) OR ((a BETWEEN 21 AND 23) AND a!=22) @@ -29200,7 +29200,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=726 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR f='abcdefghi' OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -29218,7 +29218,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=726 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR ((a BETWEEN 8 AND 10) AND a!=9) OR f='abcdefghi' OR (d>=92.0 AND d<93.0 AND d IS NOT NULL) @@ -29238,7 +29238,7 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=1081 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.781.1> @@ -29254,7 +29254,7 @@ test:do_test( WHERE a=59 OR ((a BETWEEN 5 AND 7) AND a!=6) OR b=1081 - OR (g='fedcbaz' AND f GLOB 'stuvw*') + OR (g='fedcbaz' AND f LIKE 'stuvw%') ]]) end, { -- <where7-2.781.2> @@ -29267,15 +29267,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR b=1037 OR b=132 OR c=1001 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=32 ]]) end, { @@ -29289,15 +29289,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'nopqr*') + WHERE (g='qponmlk' AND f LIKE 'nopqr%') OR b=1037 OR b=132 OR c=1001 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR (d>=58.0 AND d<59.0 AND d IS NOT NULL) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=32 ]]) end, { @@ -29355,7 +29355,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1001 OR ((a BETWEEN 23 AND 25) AND a!=24) OR a=83 @@ -29371,7 +29371,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=1001 OR ((a BETWEEN 23 AND 25) AND a!=24) OR a=83 @@ -29389,13 +29389,13 @@ test:do_test( SELECT a FROM t2 WHERE (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=36 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 46 AND 48) AND a!=47) OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'efghi*') - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='ihgfedc' AND f LIKE 'efghi%') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR ((a BETWEEN 26 AND 28) AND a!=27) ]]) @@ -29412,13 +29412,13 @@ test:do_test( SELECT a FROM t3 WHERE (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=36 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR ((a BETWEEN 46 AND 48) AND a!=47) OR ((a BETWEEN 31 AND 33) AND a!=32) OR (d>=91.0 AND d<92.0 AND d IS NOT NULL) - OR (g='ihgfedc' AND f GLOB 'efghi*') - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='ihgfedc' AND f LIKE 'efghi%') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR ((a BETWEEN 26 AND 28) AND a!=27) ]]) @@ -29434,7 +29434,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=69 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=98 OR b=300 @@ -29456,7 +29456,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=69 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR ((a BETWEEN 58 AND 60) AND a!=59) OR a=98 OR b=300 @@ -29480,8 +29480,8 @@ test:do_test( WHERE ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR ((a BETWEEN 94 AND 96) AND a!=95) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 22 AND 24) AND a!=23) OR b=619 OR c=6006 @@ -29503,8 +29503,8 @@ test:do_test( WHERE ((a BETWEEN 68 AND 70) AND a!=69) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) OR ((a BETWEEN 94 AND 96) AND a!=95) - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 22 AND 24) AND a!=23) OR b=619 OR c=6006 @@ -29525,7 +29525,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 9 AND 11) AND a!=10) OR a=55 - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.788.1> @@ -29540,7 +29540,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 9 AND 11) AND a!=10) OR a=55 - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.788.2> @@ -29558,7 +29558,7 @@ test:do_test( OR b=201 OR a=7 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR b=957 ]]) end, { @@ -29577,7 +29577,7 @@ test:do_test( OR b=201 OR a=7 OR (d>=26.0 AND d<27.0 AND d IS NOT NULL) - OR (g='yxwvuts' AND f GLOB 'cdefg*') + OR (g='yxwvuts' AND f LIKE 'cdefg%') OR b=957 ]]) end, { @@ -29593,10 +29593,10 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 90 AND 92) AND a!=91) OR a=74 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=89 ]]) end, { @@ -29612,10 +29612,10 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 90 AND 92) AND a!=91) OR a=74 - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') OR ((a BETWEEN 95 AND 97) AND a!=96) - OR (g='ihgfedc' AND f GLOB 'bcdef*') - OR (f GLOB '?tuvw*' AND f GLOB 'stuv*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') + OR (f LIKE '_tuvw%' AND f LIKE 'stuv%') OR a=89 ]]) end, { @@ -29636,7 +29636,7 @@ test:do_test( OR b=495 OR b=564 OR b=289 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.791.1> @@ -29656,7 +29656,7 @@ test:do_test( OR b=495 OR b=564 OR b=289 - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') ]]) end, { -- <where7-2.791.2> @@ -29669,7 +29669,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR a=69 OR a=12 OR b=718 @@ -29686,7 +29686,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') OR a=69 OR a=12 OR b=718 @@ -29703,7 +29703,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR f='klmnopqrs' OR b=674 OR a=96 @@ -29712,7 +29712,7 @@ test:do_test( OR b=707 OR f='cdefghijk' OR a=91 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.793.1> @@ -29725,7 +29725,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'zabcd*') + WHERE (g='tsrqpon' AND f LIKE 'zabcd%') OR f='klmnopqrs' OR b=674 OR a=96 @@ -29734,7 +29734,7 @@ test:do_test( OR b=707 OR f='cdefghijk' OR a=91 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.793.2> @@ -29747,12 +29747,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=564 OR b=784 OR b=418 OR b=275 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR a=58 OR c=11011 OR b=660 @@ -29768,12 +29768,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=564 OR b=784 OR b=418 OR b=275 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') OR a=58 OR c=11011 OR b=660 @@ -29794,7 +29794,7 @@ test:do_test( OR b=1004 OR ((a BETWEEN 28 AND 30) AND a!=29) OR ((a BETWEEN 57 AND 59) AND a!=58) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR f='pqrstuvwx' ]]) end, { @@ -29813,7 +29813,7 @@ test:do_test( OR b=1004 OR ((a BETWEEN 28 AND 30) AND a!=29) OR ((a BETWEEN 57 AND 59) AND a!=58) - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR f='pqrstuvwx' ]]) end, { @@ -29886,7 +29886,7 @@ test:do_test( WHERE a=19 OR a=29 OR b=476 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=91 ]]) end, { @@ -29903,7 +29903,7 @@ test:do_test( WHERE a=19 OR a=29 OR b=476 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=91 ]]) end, { @@ -29954,8 +29954,8 @@ test:do_test( OR ((a BETWEEN 95 AND 97) AND a!=96) OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=44 - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=707 OR b=322 ]]) @@ -29975,8 +29975,8 @@ test:do_test( OR ((a BETWEEN 95 AND 97) AND a!=96) OR ((a BETWEEN 32 AND 34) AND a!=33) OR b=44 - OR (g='hgfedcb' AND f GLOB 'ghijk*') - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR b=707 OR b=322 ]]) @@ -29991,8 +29991,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR f='jklmnopqr' ]]) @@ -30007,8 +30007,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?efgh*' AND f GLOB 'defg*') - OR (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (f LIKE '_efgh%' AND f LIKE 'defg%') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR (d>=89.0 AND d<90.0 AND d IS NOT NULL) OR f='jklmnopqr' ]]) @@ -30024,14 +30024,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=946 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=47 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=80 OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.802.1> @@ -30045,14 +30045,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=946 - OR (g='ihgfedc' AND f GLOB 'abcde*') + OR (g='ihgfedc' AND f LIKE 'abcde%') OR a=47 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR (d>=93.0 AND d<94.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'ijklm*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') OR b=80 OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') ]]) end, { -- <where7-2.802.2> @@ -30069,10 +30069,10 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR b=1015 OR a=57 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR ((a BETWEEN 47 AND 49) AND a!=48) OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=165 ]]) @@ -30091,10 +30091,10 @@ test:do_test( OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) OR b=1015 OR a=57 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR ((a BETWEEN 47 AND 49) AND a!=48) OR ((a BETWEEN 98 AND 100) AND a!=99) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR b=165 ]]) @@ -30113,7 +30113,7 @@ test:do_test( OR a=73 OR b=1048 OR c>=34035 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=72 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=638 @@ -30133,7 +30133,7 @@ test:do_test( OR a=73 OR b=1048 OR c>=34035 - OR (g='ihgfedc' AND f GLOB 'cdefg*') + OR (g='ihgfedc' AND f LIKE 'cdefg%') OR a=72 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=638 @@ -30181,10 +30181,10 @@ test:do_test( SELECT a FROM t2 WHERE a=50 OR ((a BETWEEN 61 AND 63) AND a!=62) - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=32 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR a=14 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=946 @@ -30204,10 +30204,10 @@ test:do_test( SELECT a FROM t3 WHERE a=50 OR ((a BETWEEN 61 AND 63) AND a!=62) - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR a=32 OR ((a BETWEEN 93 AND 95) AND a!=94) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR a=14 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR b=946 @@ -30228,7 +30228,7 @@ test:do_test( WHERE ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.807.1> @@ -30244,7 +30244,7 @@ test:do_test( WHERE ((a BETWEEN 88 AND 90) AND a!=89) OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.807.2> @@ -30259,7 +30259,7 @@ test:do_test( SELECT a FROM t2 WHERE a=6 OR f='tuvwxyzab' - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=286 OR b=781 ]]) @@ -30276,7 +30276,7 @@ test:do_test( SELECT a FROM t3 WHERE a=6 OR f='tuvwxyzab' - OR (g='mlkjihg' AND f GLOB 'hijkl*') + OR (g='mlkjihg' AND f LIKE 'hijkl%') OR b=286 OR b=781 ]]) @@ -30291,12 +30291,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='vwxyzabcd' OR b=275 ]]) @@ -30311,12 +30311,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='edcbazy' AND f GLOB 'wxyza*') - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (g='edcbazy' AND f LIKE 'wxyza%') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='vwxyzabcd' OR b=275 ]]) @@ -30332,10 +30332,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR a=59 ]]) end, { @@ -30350,10 +30350,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) - OR (g='xwvutsr' AND f GLOB 'efghi*') - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='xwvutsr' AND f LIKE 'efghi%') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=64.0 AND d<65.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'nopqr*') + OR (g='gfedcba' AND f LIKE 'nopqr%') OR a=59 ]]) end, { @@ -30367,10 +30367,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=663 OR f='ghijklmno' OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -30390,10 +30390,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?xyza*' AND f GLOB 'wxyz*') + WHERE (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (g='kjihgfe' AND f GLOB 'tuvwx*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=663 OR f='ghijklmno' OR ((a BETWEEN 14 AND 16) AND a!=15) @@ -30420,9 +30420,9 @@ test:do_test( OR b=597 OR ((a BETWEEN 92 AND 94) AND a!=93) OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=168 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.812.1> @@ -30442,9 +30442,9 @@ test:do_test( OR b=597 OR ((a BETWEEN 92 AND 94) AND a!=93) OR (d>=88.0 AND d<89.0 AND d IS NOT NULL) - OR (f GLOB '?lmno*' AND f GLOB 'klmn*') + OR (f LIKE '_lmno%' AND f LIKE 'klmn%') OR b=168 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.812.2> @@ -30498,7 +30498,7 @@ test:do_test( OR a=75 OR b=179 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR b=850 OR a=62 @@ -30519,7 +30519,7 @@ test:do_test( OR a=75 OR b=179 OR (d>=43.0 AND d<44.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'stuvw*') + OR (g='utsrqpo' AND f LIKE 'stuvw%') OR (d>=65.0 AND d<66.0 AND d IS NOT NULL) OR b=850 OR a=62 @@ -30583,7 +30583,7 @@ test:do_test( SELECT a FROM t2 WHERE b=176 OR b=297 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR f='ijklmnopq' ]]) end, { @@ -30599,7 +30599,7 @@ test:do_test( SELECT a FROM t3 WHERE b=176 OR b=297 - OR (g='tsrqpon' AND f GLOB 'zabcd*') + OR (g='tsrqpon' AND f LIKE 'zabcd%') OR f='ijklmnopq' ]]) end, { @@ -30653,9 +30653,9 @@ test:do_test( SELECT a FROM t2 WHERE (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=396 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=1012 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=784 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=979 @@ -30676,9 +30676,9 @@ test:do_test( SELECT a FROM t3 WHERE (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR b=396 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR b=1012 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR b=784 OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) OR b=979 @@ -30726,9 +30726,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 79 AND 81) AND a!=80) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.820.1> @@ -30742,9 +30742,9 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 79 AND 81) AND a!=80) - OR (f GLOB '?rstu*' AND f GLOB 'qrst*') + OR (f LIKE '_rstu%' AND f LIKE 'qrst%') OR ((a BETWEEN 23 AND 25) AND a!=24) - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') ]]) end, { -- <where7-2.820.2> @@ -30830,7 +30830,7 @@ test:do_test( OR c=19019 OR b=245 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR b=572 OR ((a BETWEEN 22 AND 24) AND a!=23) @@ -30853,7 +30853,7 @@ test:do_test( OR c=19019 OR b=245 OR ((a BETWEEN 97 AND 99) AND a!=98) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 68 AND 70) AND a!=69) OR b=572 OR ((a BETWEEN 22 AND 24) AND a!=23) @@ -30915,7 +30915,7 @@ test:do_test( OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=828 OR b=363 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.825.1> @@ -30934,7 +30934,7 @@ test:do_test( OR (d>=40.0 AND d<41.0 AND d IS NOT NULL) OR b=828 OR b=363 - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') ]]) end, { -- <where7-2.825.2> @@ -30947,7 +30947,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') OR a=41 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=825 @@ -30963,7 +30963,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') OR a=41 OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=825 @@ -30986,7 +30986,7 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=561 OR c=8008 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=935 OR c=1001 ]]) @@ -31008,7 +31008,7 @@ test:do_test( OR ((a BETWEEN 89 AND 91) AND a!=90) OR b=561 OR c=8008 - OR (g='hgfedcb' AND f GLOB 'ghijk*') + OR (g='hgfedcb' AND f LIKE 'ghijk%') OR b=935 OR c=1001 ]]) @@ -31024,7 +31024,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.828.1> @@ -31038,7 +31038,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 75 AND 77) AND a!=76) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.828.2> @@ -31114,9 +31114,9 @@ test:do_test( OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR f='zabcdefgh' OR b=861 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=28 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=311 ]]) end, { @@ -31137,9 +31137,9 @@ test:do_test( OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR f='zabcdefgh' OR b=861 - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='vutsrqp' AND f LIKE 'pqrst%') OR a=28 - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=311 ]]) end, { @@ -31154,10 +31154,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=575 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR b=418 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=792 OR b=861 OR b=220 @@ -31175,10 +31175,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=575 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) OR b=418 - OR (f GLOB '?qrst*' AND f GLOB 'pqrs*') + OR (f LIKE '_qrst%' AND f LIKE 'pqrs%') OR b=792 OR b=861 OR b=220 @@ -31233,7 +31233,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR b=693 OR a=73 OR b=627 @@ -31243,7 +31243,7 @@ test:do_test( OR b=267 OR b=872 OR a=27 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.834.1> @@ -31256,7 +31256,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR b=693 OR a=73 OR b=627 @@ -31266,7 +31266,7 @@ test:do_test( OR b=267 OR b=872 OR a=27 - OR (g='gfedcba' AND f GLOB 'klmno*') + OR (g='gfedcba' AND f LIKE 'klmno%') ]]) end, { -- <where7-2.834.2> @@ -31351,15 +31351,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=66 OR b=322 OR b=465 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=454 ]]) @@ -31374,15 +31374,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ponmlkj' AND f GLOB 'uvwxy*') + WHERE (g='ponmlkj' AND f LIKE 'uvwxy%') OR b=66 OR b=322 OR b=465 - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR (d>=7.0 AND d<8.0 AND d IS NOT NULL) OR ((a BETWEEN 77 AND 79) AND a!=78) - OR (g='lkjihgf' AND f GLOB 'mnopq*') + OR (g='lkjihgf' AND f LIKE 'mnopq%') OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR b=454 ]]) @@ -31402,7 +31402,7 @@ test:do_test( OR c=15015 OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=803 ]]) end, { @@ -31421,7 +31421,7 @@ test:do_test( OR c=15015 OR (d>=84.0 AND d<85.0 AND d IS NOT NULL) OR ((a BETWEEN 3 AND 5) AND a!=4) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR b=803 ]]) end, { @@ -31436,12 +31436,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1100 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 68 AND 70) AND a!=69) OR a=75 OR a=45 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=27 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=850 @@ -31459,12 +31459,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1100 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR ((a BETWEEN 72 AND 74) AND a!=73) OR ((a BETWEEN 68 AND 70) AND a!=69) OR a=75 OR a=45 - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=27 OR (d>=77.0 AND d<78.0 AND d IS NOT NULL) OR b=850 @@ -31484,7 +31484,7 @@ test:do_test( WHERE b=751 OR ((a BETWEEN 96 AND 98) AND a!=97) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=89 OR ((a BETWEEN 36 AND 38) AND a!=37) @@ -31503,7 +31503,7 @@ test:do_test( WHERE b=751 OR ((a BETWEEN 96 AND 98) AND a!=97) OR (d>=71.0 AND d<72.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR a=89 OR ((a BETWEEN 36 AND 38) AND a!=37) @@ -31519,10 +31519,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR a=1 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.841.1> @@ -31535,10 +31535,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='wvutsrq' AND f GLOB 'jklmn*') - OR (g='yxwvuts' AND f GLOB 'bcdef*') + WHERE (g='wvutsrq' AND f LIKE 'jklmn%') + OR (g='yxwvuts' AND f LIKE 'bcdef%') OR a=1 - OR (g='utsrqpo' AND f GLOB 'tuvwx*') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') ]]) end, { -- <where7-2.841.2> @@ -31557,9 +31557,9 @@ test:do_test( OR c=8008 OR ((a BETWEEN 41 AND 43) AND a!=42) OR b=960 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR b=443 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.842.1> @@ -31578,9 +31578,9 @@ test:do_test( OR c=8008 OR ((a BETWEEN 41 AND 43) AND a!=42) OR b=960 - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR b=443 - OR (g='rqponml' AND f GLOB 'ijklm*') + OR (g='rqponml' AND f LIKE 'ijklm%') ]]) end, { -- <where7-2.842.2> @@ -31624,14 +31624,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=685 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR b=520 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) OR a=53 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=938 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR c=25025 ]]) end, { @@ -31646,14 +31646,14 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=685 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR (d>=63.0 AND d<64.0 AND d IS NOT NULL) OR b=520 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) OR a=53 OR ((a BETWEEN 91 AND 93) AND a!=92) OR b=938 - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR c=25025 ]]) end, { @@ -31700,7 +31700,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='abcdefghi' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.846.1> @@ -31714,7 +31714,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='abcdefghi' - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.846.2> @@ -31802,7 +31802,7 @@ test:do_test( WHERE b=209 OR b=806 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.849.1> @@ -31818,7 +31818,7 @@ test:do_test( WHERE b=209 OR b=806 OR (d>=8.0 AND d<9.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'rstuv*') + OR (g='vutsrqp' AND f LIKE 'rstuv%') ]]) end, { -- <where7-2.849.2> @@ -31863,10 +31863,10 @@ test:do_test( SELECT a FROM t2 WHERE (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR a=45 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=69 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.851.1> @@ -31881,10 +31881,10 @@ test:do_test( SELECT a FROM t3 WHERE (d>=4.0 AND d<5.0 AND d IS NOT NULL) OR a=45 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR a=69 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.851.2> @@ -31899,9 +31899,9 @@ test:do_test( SELECT a FROM t2 WHERE c=9009 OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.852.1> @@ -31916,9 +31916,9 @@ test:do_test( SELECT a FROM t3 WHERE c=9009 OR (d>=85.0 AND d<86.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR (d>=9.0 AND d<10.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'pqrst*') + OR (g='lkjihgf' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.852.2> @@ -31937,7 +31937,7 @@ test:do_test( OR a=47 OR c=24024 OR a=27 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) end, { @@ -31957,7 +31957,7 @@ test:do_test( OR a=47 OR c=24024 OR a=27 - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) ]]) end, { @@ -31971,9 +31971,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=19 ]]) end, { @@ -31987,9 +31987,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='utsrqpo' AND f GLOB 'wxyza*') - OR (g='ponmlkj' AND f GLOB 'stuvw*') + WHERE (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='utsrqpo' AND f LIKE 'wxyza%') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=19 ]]) end, { @@ -32006,7 +32006,7 @@ test:do_test( WHERE c=12012 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR ((a BETWEEN 16 AND 18) AND a!=17) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.855.1> @@ -32022,7 +32022,7 @@ test:do_test( WHERE c=12012 OR (d>=80.0 AND d<81.0 AND d IS NOT NULL) OR ((a BETWEEN 16 AND 18) AND a!=17) - OR (g='edcbazy' AND f GLOB 'uvwxy*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.855.2> @@ -32036,7 +32036,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=429 OR f='jklmnopqr' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -32054,7 +32054,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=429 OR f='jklmnopqr' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) @@ -32071,7 +32071,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=190 ]]) end, { @@ -32085,7 +32085,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=190 ]]) end, { @@ -32099,7 +32099,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=674 OR b=289 ]]) @@ -32114,7 +32114,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'yzabc*') + WHERE (g='jihgfed' AND f LIKE 'yzabc%') OR b=674 OR b=289 ]]) @@ -32131,8 +32131,8 @@ test:do_test( SELECT a FROM t2 WHERE a=17 OR b=539 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.859.1> @@ -32147,8 +32147,8 @@ test:do_test( SELECT a FROM t3 WHERE a=17 OR b=539 - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (g='utsrqpo' AND f GLOB 'vwxyz*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (g='utsrqpo' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.859.2> @@ -32259,12 +32259,12 @@ test:do_test( SELECT a FROM t2 WHERE f='ghijklmno' OR a=26 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=81 OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) OR ((a BETWEEN 28 AND 30) AND a!=29) OR b=275 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=311 OR b=894 OR b=872 @@ -32282,12 +32282,12 @@ test:do_test( SELECT a FROM t3 WHERE f='ghijklmno' OR a=26 - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR a=81 OR (d>=3.0 AND d<4.0 AND d IS NOT NULL) OR ((a BETWEEN 28 AND 30) AND a!=29) OR b=275 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR b=311 OR b=894 OR b=872 @@ -32376,12 +32376,12 @@ test:do_test( WHERE a=44 OR b=55 OR a=30 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR 1000000<b OR a=24 OR b=1089 OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.866.1> @@ -32397,12 +32397,12 @@ test:do_test( WHERE a=44 OR b=55 OR a=30 - OR (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + OR (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR 1000000<b OR a=24 OR b=1089 OR (d>=75.0 AND d<76.0 AND d IS NOT NULL) - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.866.2> @@ -32487,14 +32487,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='edcbazy' AND f GLOB 'uvwxy*') + WHERE (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 25 AND 27) AND a!=26) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='xyzabcdef' OR b=517 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.869.1> @@ -32507,14 +32507,14 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='edcbazy' AND f GLOB 'uvwxy*') + WHERE (g='edcbazy' AND f LIKE 'uvwxy%') OR ((a BETWEEN 25 AND 27) AND a!=26) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR ((a BETWEEN 89 AND 91) AND a!=90) OR f='xyzabcdef' OR b=517 - OR (g='jihgfed' AND f GLOB 'yzabc*') - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='jihgfed' AND f LIKE 'yzabc%') + OR (g='kjihgfe' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.869.2> @@ -32555,9 +32555,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') OR b=762 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=25 OR ((a BETWEEN 65 AND 67) AND a!=66) ]]) @@ -32572,9 +32572,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='tsrqpon' AND f GLOB 'yzabc*') + WHERE (g='tsrqpon' AND f LIKE 'yzabc%') OR b=762 - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR a=25 OR ((a BETWEEN 65 AND 67) AND a!=66) ]]) @@ -32594,9 +32594,9 @@ test:do_test( OR b=839 OR f='defghijkl' OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=498 ]]) end, { @@ -32615,9 +32615,9 @@ test:do_test( OR b=839 OR f='defghijkl' OR (d>=95.0 AND d<96.0 AND d IS NOT NULL) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=52.0 AND d<53.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR b=498 ]]) end, { @@ -32667,7 +32667,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=256 OR b=586 OR a=74 @@ -32686,7 +32686,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='mlkjihg' AND f GLOB 'jklmn*') + WHERE (g='mlkjihg' AND f LIKE 'jklmn%') OR b=256 OR b=586 OR a=74 @@ -32739,14 +32739,14 @@ test:do_test( SELECT a FROM t2 WHERE b=308 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=83 OR c=23023 OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR a=58 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR c=4004 ]]) end, { @@ -32762,14 +32762,14 @@ test:do_test( SELECT a FROM t3 WHERE b=308 OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'bcdef*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') OR a=83 OR c=23023 OR (d>=57.0 AND d<58.0 AND d IS NOT NULL) - OR (g='lkjihgf' AND f GLOB 'nopqr*') + OR (g='lkjihgf' AND f LIKE 'nopqr%') OR a=58 OR ((a BETWEEN 17 AND 19) AND a!=18) - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR c=4004 ]]) end, { @@ -32789,7 +32789,7 @@ test:do_test( OR b=762 OR b=157 OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.877.1> @@ -32808,7 +32808,7 @@ test:do_test( OR b=762 OR b=157 OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') ]]) end, { -- <where7-2.877.2> @@ -32825,12 +32825,12 @@ test:do_test( OR a=1 OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=278 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR f='qrstuvwxy' - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 82 AND 84) AND a!=83) - OR (g='edcbazy' AND f GLOB 'uvwxy*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) ]]) end, { @@ -32848,12 +32848,12 @@ test:do_test( OR a=1 OR ((a BETWEEN 93 AND 95) AND a!=94) OR b=278 - OR (g='xwvutsr' AND f GLOB 'defgh*') + OR (g='xwvutsr' AND f LIKE 'defgh%') OR f='qrstuvwxy' - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 82 AND 84) AND a!=83) - OR (g='edcbazy' AND f GLOB 'uvwxy*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'uvwxy%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) ]]) end, { @@ -32872,9 +32872,9 @@ test:do_test( OR ((a BETWEEN 41 AND 43) AND a!=42) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=759 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 45 AND 47) AND a!=46) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.879.1> @@ -32892,9 +32892,9 @@ test:do_test( OR ((a BETWEEN 41 AND 43) AND a!=42) OR (d>=96.0 AND d<97.0 AND d IS NOT NULL) OR b=759 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR ((a BETWEEN 45 AND 47) AND a!=46) - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') ]]) end, { -- <where7-2.879.2> @@ -32916,7 +32916,7 @@ test:do_test( OR b=44 OR f='zabcdefgh' OR b=979 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.880.1> @@ -32938,7 +32938,7 @@ test:do_test( OR b=44 OR f='zabcdefgh' OR b=979 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.880.2> @@ -32988,7 +32988,7 @@ test:do_test( OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=90 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR f='nopqrstuv' ]]) end, { @@ -33011,7 +33011,7 @@ test:do_test( OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=90 OR (d>=66.0 AND d<67.0 AND d IS NOT NULL) - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') OR f='nopqrstuv' ]]) end, { @@ -33061,7 +33061,7 @@ test:do_test( OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 69 AND 71) AND a!=70) OR d<0.0 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=9009 ]]) end, { @@ -33083,7 +33083,7 @@ test:do_test( OR ((a BETWEEN 4 AND 6) AND a!=5) OR ((a BETWEEN 69 AND 71) AND a!=70) OR d<0.0 - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR c=9009 ]]) end, { @@ -33097,7 +33097,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=814 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -33112,7 +33112,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?uvwx*' AND f GLOB 'tuvw*') + WHERE (f LIKE '_uvwx%' AND f LIKE 'tuvw%') OR b=814 OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) ]]) @@ -33127,7 +33127,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=333 OR b=275 ]]) @@ -33142,7 +33142,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'mnopq*') + WHERE (g='lkjihgf' AND f LIKE 'mnopq%') OR b=333 OR b=275 ]]) @@ -33157,7 +33157,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -33171,7 +33171,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='ihgfedc' AND f GLOB 'efghi*') + WHERE (g='ihgfedc' AND f LIKE 'efghi%') OR ((a BETWEEN 33 AND 35) AND a!=34) ]]) end, { @@ -33187,7 +33187,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 11 AND 13) AND a!=12) OR b=253 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=286 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) @@ -33204,7 +33204,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 11 AND 13) AND a!=12) OR b=253 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=286 OR (d>=10.0 AND d<11.0 AND d IS NOT NULL) ]]) @@ -33220,10 +33220,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 26 AND 28) AND a!=27) OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='ijklmnopq' OR b=891 OR b=1056 @@ -33240,10 +33240,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=15.0 AND d<16.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR ((a BETWEEN 26 AND 28) AND a!=27) OR b=421 - OR (g='xwvutsr' AND f GLOB 'fghij*') + OR (g='xwvutsr' AND f LIKE 'fghij%') OR f='ijklmnopq' OR b=891 OR b=1056 @@ -33260,10 +33260,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='fghijklmn' - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=671 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.890.1> @@ -33277,10 +33277,10 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='fghijklmn' - OR (g='qponmlk' AND f GLOB 'nopqr*') - OR (g='edcbazy' AND f GLOB 'vwxyz*') + OR (g='qponmlk' AND f LIKE 'nopqr%') + OR (g='edcbazy' AND f LIKE 'vwxyz%') OR b=671 - OR (g='xwvutsr' AND f GLOB 'hijkl*') + OR (g='xwvutsr' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.890.2> @@ -33293,10 +33293,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='lkjihgf' AND f GLOB 'lmnop*') - OR (g='srqponm' AND f GLOB 'fghij*') + WHERE (g='lkjihgf' AND f LIKE 'lmnop%') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -33310,10 +33310,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='lkjihgf' AND f GLOB 'lmnop*') - OR (g='srqponm' AND f GLOB 'fghij*') + WHERE (g='lkjihgf' AND f LIKE 'lmnop%') + OR (g='srqponm' AND f LIKE 'fghij%') OR ((a BETWEEN 4 AND 6) AND a!=5) - OR (g='kjihgfe' AND f GLOB 'qrstu*') + OR (g='kjihgfe' AND f LIKE 'qrstu%') OR (d>=11.0 AND d<12.0 AND d IS NOT NULL) ]]) end, { @@ -33439,11 +33439,11 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=46 OR b=187 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.895.1> @@ -33458,11 +33458,11 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 67 AND 69) AND a!=68) OR (d>=69.0 AND d<70.0 AND d IS NOT NULL) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR a=46 OR b=187 OR ((a BETWEEN 69 AND 71) AND a!=70) - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') ]]) end, { -- <where7-2.895.2> @@ -33522,7 +33522,7 @@ test:do_test( OR b=729 OR ((a BETWEEN 81 AND 83) AND a!=82) OR a=58 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=608 ]]) end, { @@ -33543,7 +33543,7 @@ test:do_test( OR b=729 OR ((a BETWEEN 81 AND 83) AND a!=82) OR a=58 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR b=608 ]]) end, { @@ -33561,7 +33561,7 @@ test:do_test( OR f='efghijklm' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=26 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') ]]) end, { -- <where7-2.898.1> @@ -33578,7 +33578,7 @@ test:do_test( OR f='efghijklm' OR (d>=48.0 AND d<49.0 AND d IS NOT NULL) OR a=26 - OR (f GLOB '?efgh*' AND f GLOB 'defg*') + OR (f LIKE '_efgh%' AND f LIKE 'defg%') ]]) end, { -- <where7-2.898.2> @@ -33592,11 +33592,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE a=59 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR a=7 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.899.1> @@ -33610,11 +33610,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE a=59 - OR (g='wvutsrq' AND f GLOB 'mnopq*') + OR (g='wvutsrq' AND f LIKE 'mnopq%') OR a=7 - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=762 - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') ]]) end, { -- <where7-2.899.2> @@ -33627,7 +33627,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR b=539 OR b=399 ]]) @@ -33642,7 +33642,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'nopqr*') + WHERE (g='gfedcba' AND f LIKE 'nopqr%') OR b=539 OR b=399 ]]) @@ -33687,10 +33687,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='rqponml' AND f GLOB 'klmno*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='lmnopqrst' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.902.1> @@ -33703,10 +33703,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?klmn*' AND f GLOB 'jklm*') - OR (g='rqponml' AND f GLOB 'klmno*') + WHERE (f LIKE '_klmn%' AND f LIKE 'jklm%') + OR (g='rqponml' AND f LIKE 'klmno%') OR f='lmnopqrst' - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='nmlkjih' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.902.2> @@ -33751,14 +33751,14 @@ test:do_test( SELECT a FROM t2 WHERE b=1067 OR ((a BETWEEN 53 AND 55) AND a!=54) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=520 OR b=399 OR b=209 OR a=68 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.904.1> @@ -33773,14 +33773,14 @@ test:do_test( SELECT a FROM t3 WHERE b=1067 OR ((a BETWEEN 53 AND 55) AND a!=54) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR b=520 OR b=399 OR b=209 OR a=68 - OR (g='fedcbaz' AND f GLOB 'qrstu*') + OR (g='fedcbaz' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.904.2> @@ -33798,7 +33798,7 @@ test:do_test( OR b=55 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR ((a BETWEEN 21 AND 23) AND a!=22) ]]) @@ -33818,7 +33818,7 @@ test:do_test( OR b=55 OR (d>=34.0 AND d<35.0 AND d IS NOT NULL) OR ((a BETWEEN 20 AND 22) AND a!=21) - OR (g='rqponml' AND f GLOB 'lmnop*') + OR (g='rqponml' AND f LIKE 'lmnop%') OR ((a BETWEEN 0 AND 2) AND a!=1) OR ((a BETWEEN 21 AND 23) AND a!=22) ]]) @@ -33837,7 +33837,7 @@ test:do_test( OR a=2 OR b=784 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=850 ]]) end, { @@ -33855,7 +33855,7 @@ test:do_test( OR a=2 OR b=784 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='ihgfedc' AND f GLOB 'defgh*') + OR (g='ihgfedc' AND f LIKE 'defgh%') OR b=850 ]]) end, { @@ -33903,17 +33903,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR a=18 OR a=30 OR ((a BETWEEN 9 AND 11) AND a!=10) OR ((a BETWEEN 84 AND 86) AND a!=85) OR ((a BETWEEN 8 AND 10) AND a!=9) OR b=792 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR ((a BETWEEN 19 AND 21) AND a!=20) OR c=26026 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.908.1> @@ -33926,17 +33926,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'zabcd*') + WHERE (g='jihgfed' AND f LIKE 'zabcd%') OR a=18 OR a=30 OR ((a BETWEEN 9 AND 11) AND a!=10) OR ((a BETWEEN 84 AND 86) AND a!=85) OR ((a BETWEEN 8 AND 10) AND a!=9) OR b=792 - OR (f GLOB '?mnop*' AND f GLOB 'lmno*') + OR (f LIKE '_mnop%' AND f LIKE 'lmno%') OR ((a BETWEEN 19 AND 21) AND a!=20) OR c=26026 - OR (g='rqponml' AND f GLOB 'hijkl*') + OR (g='rqponml' AND f LIKE 'hijkl%') ]]) end, { -- <where7-2.908.2> @@ -33949,11 +33949,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='vutsrqp' AND f GLOB 'qrstu*') + WHERE (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR a=78 OR ((a BETWEEN 90 AND 92) AND a!=91) @@ -33969,11 +33969,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='vutsrqp' AND f GLOB 'qrstu*') + WHERE (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR ((a BETWEEN 63 AND 65) AND a!=64) - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR (d>=72.0 AND d<73.0 AND d IS NOT NULL) OR a=78 OR ((a BETWEEN 90 AND 92) AND a!=91) @@ -34096,7 +34096,7 @@ test:do_test( OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR a=81 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR f='mnopqrstu' ]]) end, { @@ -34117,7 +34117,7 @@ test:do_test( OR (d>=78.0 AND d<79.0 AND d IS NOT NULL) OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR a=81 - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR f='mnopqrstu' ]]) end, { @@ -34177,7 +34177,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR ((a BETWEEN 27 AND 29) AND a!=28) OR b=319 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) end, { @@ -34197,7 +34197,7 @@ test:do_test( OR ((a BETWEEN 20 AND 22) AND a!=21) OR ((a BETWEEN 27 AND 29) AND a!=28) OR b=319 - OR (g='qponmlk' AND f GLOB 'opqrs*') + OR (g='qponmlk' AND f LIKE 'opqrs%') OR ((a BETWEEN 14 AND 16) AND a!=15) ]]) end, { @@ -34214,7 +34214,7 @@ test:do_test( WHERE b=179 OR ((a BETWEEN 95 AND 97) AND a!=96) OR a=46 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR a=25 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -34237,7 +34237,7 @@ test:do_test( WHERE b=179 OR ((a BETWEEN 95 AND 97) AND a!=96) OR a=46 - OR (g='kjihgfe' AND f GLOB 'uvwxy*') + OR (g='kjihgfe' AND f LIKE 'uvwxy%') OR ((a BETWEEN 53 AND 55) AND a!=54) OR a=25 OR (d>=5.0 AND d<6.0 AND d IS NOT NULL) @@ -34257,7 +34257,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'fghij*') + WHERE (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) ]]) end, { @@ -34271,7 +34271,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'fghij*') + WHERE (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) ]]) end, { @@ -34286,7 +34286,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=748 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=32 OR b=110 OR b=297 @@ -34308,7 +34308,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=748 - OR (g='utsrqpo' AND f GLOB 'wxyza*') + OR (g='utsrqpo' AND f LIKE 'wxyza%') OR a=32 OR b=110 OR b=297 @@ -34332,13 +34332,13 @@ test:do_test( WHERE (d>=33.0 AND d<34.0 AND d IS NOT NULL) OR b=905 OR a=97 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR c=27027 OR f='bcdefghij' OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.919.1> @@ -34354,13 +34354,13 @@ test:do_test( WHERE (d>=33.0 AND d<34.0 AND d IS NOT NULL) OR b=905 OR a=97 - OR (g='hgfedcb' AND f GLOB 'hijkl*') + OR (g='hgfedcb' AND f LIKE 'hijkl%') OR c=27027 OR f='bcdefghij' OR (d>=54.0 AND d<55.0 AND d IS NOT NULL) OR (d>=25.0 AND d<26.0 AND d IS NOT NULL) OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') ]]) end, { -- <where7-2.919.2> @@ -34403,13 +34403,13 @@ test:do_test( SELECT a FROM t2 WHERE b=594 OR b=80 - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=421 OR b=418 OR b=828 OR a=88 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) ]]) end, { @@ -34425,13 +34425,13 @@ test:do_test( SELECT a FROM t3 WHERE b=594 OR b=80 - OR (g='tsrqpon' AND f GLOB 'bcdef*') - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='tsrqpon' AND f LIKE 'bcdef%') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=421 OR b=418 OR b=828 OR a=88 - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR (d>=60.0 AND d<61.0 AND d IS NOT NULL) ]]) end, { @@ -34446,11 +34446,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=366 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR c=16016 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR c=9009 ]]) end, { @@ -34465,11 +34465,11 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=17.0 AND d<18.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'xyzab*') + OR (g='jihgfed' AND f LIKE 'xyzab%') OR b=366 OR (d>=28.0 AND d<29.0 AND d IS NOT NULL) OR c=16016 - OR (g='edcbazy' AND f GLOB 'wxyza*') + OR (g='edcbazy' AND f LIKE 'wxyza%') OR c=9009 ]]) end, { @@ -34485,7 +34485,7 @@ test:do_test( SELECT a FROM t2 WHERE b=33 OR f='qrstuvwxy' - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR b=858 ]]) end, { @@ -34501,7 +34501,7 @@ test:do_test( SELECT a FROM t3 WHERE b=33 OR f='qrstuvwxy' - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR b=858 ]]) end, { @@ -34516,7 +34516,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=861 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=682 OR ((a BETWEEN 93 AND 95) AND a!=94) @@ -34534,7 +34534,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=861 - OR (f GLOB '?xyza*' AND f GLOB 'wxyz*') + OR (f LIKE '_xyza%' AND f LIKE 'wxyz%') OR (d>=29.0 AND d<30.0 AND d IS NOT NULL) OR b=682 OR ((a BETWEEN 93 AND 95) AND a!=94) @@ -34584,7 +34584,7 @@ test:do_test( WHERE f='abcdefghi' OR c=9009 OR b=663 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR b=91 ]]) end, { @@ -34601,7 +34601,7 @@ test:do_test( WHERE f='abcdefghi' OR c=9009 OR b=663 - OR (g='wvutsrq' AND f GLOB 'klmno*') + OR (g='wvutsrq' AND f LIKE 'klmno%') OR b=91 ]]) end, { @@ -34615,15 +34615,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='kjihgfe' AND f GLOB 'qrstu*') + WHERE (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 29 AND 31) AND a!=30) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1015 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=916 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.927.1> @@ -34636,15 +34636,15 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='kjihgfe' AND f GLOB 'qrstu*') + WHERE (g='kjihgfe' AND f LIKE 'qrstu%') OR ((a BETWEEN 29 AND 31) AND a!=30) - OR (f GLOB '?opqr*' AND f GLOB 'nopq*') + OR (f LIKE '_opqr%' AND f LIKE 'nopq%') OR b=1015 - OR (g='qponmlk' AND f GLOB 'qrstu*') + OR (g='qponmlk' AND f LIKE 'qrstu%') OR b=916 OR (d>=31.0 AND d<32.0 AND d IS NOT NULL) OR b=69 - OR (g='hgfedcb' AND f GLOB 'fghij*') + OR (g='hgfedcb' AND f LIKE 'fghij%') ]]) end, { -- <where7-2.927.2> @@ -34664,7 +34664,7 @@ test:do_test( OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR a=63 OR f='mnopqrstu' - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=495 OR a=35 OR a=22 @@ -34687,7 +34687,7 @@ test:do_test( OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR a=63 OR f='mnopqrstu' - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR b=495 OR a=35 OR a=22 @@ -34704,7 +34704,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=869 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=289 OR a=62 OR ((a BETWEEN 9 AND 11) AND a!=10) @@ -34721,7 +34721,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=869 - OR (g='rqponml' AND f GLOB 'jklmn*') + OR (g='rqponml' AND f LIKE 'jklmn%') OR b=289 OR a=62 OR ((a BETWEEN 9 AND 11) AND a!=10) @@ -34774,7 +34774,7 @@ test:do_test( WHERE ((a BETWEEN 57 AND 59) AND a!=58) OR b=1078 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=429 ]]) @@ -34792,7 +34792,7 @@ test:do_test( WHERE ((a BETWEEN 57 AND 59) AND a!=58) OR b=1078 OR ((a BETWEEN 21 AND 23) AND a!=22) - OR (g='mlkjihg' AND f GLOB 'ijklm*') + OR (g='mlkjihg' AND f LIKE 'ijklm%') OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) OR b=429 ]]) @@ -34876,7 +34876,7 @@ test:do_test( WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=858 OR a=58 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR c=21021 OR ((a BETWEEN 45 AND 47) AND a!=46) OR b=616 @@ -34897,7 +34897,7 @@ test:do_test( WHERE (d>=56.0 AND d<57.0 AND d IS NOT NULL) OR b=858 OR a=58 - OR (g='onmlkji' AND f GLOB 'xyzab*') + OR (g='onmlkji' AND f LIKE 'xyzab%') OR c=21021 OR ((a BETWEEN 45 AND 47) AND a!=46) OR b=616 @@ -34917,7 +34917,7 @@ test:do_test( SELECT a FROM t2 WHERE b=682 OR b=99 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR b=531 ]]) end, { @@ -34933,7 +34933,7 @@ test:do_test( SELECT a FROM t3 WHERE b=682 OR b=99 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR b=531 ]]) end, { @@ -34948,13 +34948,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 56 AND 58) AND a!=57) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR b=726 OR a=79 OR a=47 OR b=212 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR c=8008 ]]) end, { @@ -34969,13 +34969,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 56 AND 58) AND a!=57) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (f GLOB '?jklm*' AND f GLOB 'ijkl*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (f LIKE '_jklm%' AND f LIKE 'ijkl%') OR b=726 OR a=79 OR a=47 OR b=212 - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') OR c=8008 ]]) end, { @@ -34993,7 +34993,7 @@ test:do_test( OR ((a BETWEEN 60 AND 62) AND a!=61) OR a=5 OR b=33 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR a=59 OR b=44 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -35014,7 +35014,7 @@ test:do_test( OR ((a BETWEEN 60 AND 62) AND a!=61) OR a=5 OR b=33 - OR (f GLOB '?yzab*' AND f GLOB 'xyza*') + OR (f LIKE '_yzab%' AND f LIKE 'xyza%') OR a=59 OR b=44 OR (d>=14.0 AND d<15.0 AND d IS NOT NULL) @@ -35213,8 +35213,8 @@ test:do_test( SELECT a FROM t2 WHERE a=96 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=85 OR ((a BETWEEN 10 AND 12) AND a!=11) @@ -35236,8 +35236,8 @@ test:do_test( SELECT a FROM t3 WHERE a=96 OR (d>=23.0 AND d<24.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'vwxyz*') - OR (f GLOB '?fghi*' AND f GLOB 'efgh*') + OR (g='ponmlkj' AND f LIKE 'vwxyz%') + OR (f LIKE '_fghi%' AND f LIKE 'efgh%') OR ((a BETWEEN 37 AND 39) AND a!=38) OR a=85 OR ((a BETWEEN 10 AND 12) AND a!=11) @@ -35299,17 +35299,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=60 OR a=4 OR b=520 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=44 OR a=36 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=715 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.945.1> @@ -35322,17 +35322,17 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'hijkl*') + WHERE (g='xwvutsr' AND f LIKE 'hijkl%') OR a=60 OR a=4 OR b=520 - OR (g='ihgfedc' AND f GLOB 'bcdef*') + OR (g='ihgfedc' AND f LIKE 'bcdef%') OR a=44 OR a=36 OR (d>=76.0 AND d<77.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=715 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') ]]) end, { -- <where7-2.945.2> @@ -35349,10 +35349,10 @@ test:do_test( OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR a=24 OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.946.1> @@ -35369,10 +35369,10 @@ test:do_test( OR ((a BETWEEN 56 AND 58) AND a!=57) OR (d>=15.0 AND d<16.0 AND d IS NOT NULL) OR (d>=55.0 AND d<56.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'yzabc*') + OR (g='jihgfed' AND f LIKE 'yzabc%') OR a=24 OR (d>=99.0 AND d<100.0 AND d IS NOT NULL) - OR (f GLOB '?bcde*' AND f GLOB 'abcd*') + OR (f LIKE '_bcde%' AND f LIKE 'abcd%') ]]) end, { -- <where7-2.946.2> @@ -35385,12 +35385,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=132 OR f='ghijklmno' OR b=740 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1059 ]]) end, { @@ -35404,12 +35404,12 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='utsrqpo' AND f GLOB 'vwxyz*') + WHERE (g='utsrqpo' AND f LIKE 'vwxyz%') OR b=132 OR f='ghijklmno' OR b=740 - OR (g='qponmlk' AND f GLOB 'mnopq*') - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='qponmlk' AND f LIKE 'mnopq%') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=1059 ]]) end, { @@ -35459,10 +35459,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='nmlkjih' AND f GLOB 'cdefg*') + WHERE (g='nmlkjih' AND f LIKE 'cdefg%') OR b=1026 OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR b=355 OR b=641 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) @@ -35478,10 +35478,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='nmlkjih' AND f GLOB 'cdefg*') + WHERE (g='nmlkjih' AND f LIKE 'cdefg%') OR b=1026 OR (d>=1.0 AND d<2.0 AND d IS NOT NULL) - OR (g='wvutsrq' AND f GLOB 'lmnop*') + OR (g='wvutsrq' AND f LIKE 'lmnop%') OR b=355 OR b=641 OR (d>=53.0 AND d<54.0 AND d IS NOT NULL) @@ -35506,7 +35506,7 @@ test:do_test( OR f='opqrstuvw' OR a=41 OR a=83 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=751 ]]) end, { @@ -35529,7 +35529,7 @@ test:do_test( OR f='opqrstuvw' OR a=41 OR a=83 - OR (g='nmlkjih' AND f GLOB 'cdefg*') + OR (g='nmlkjih' AND f LIKE 'cdefg%') OR b=751 ]]) end, { @@ -35579,7 +35579,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR f='bcdefghij' OR f='hijklmnop' OR a=65 @@ -35602,7 +35602,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'qrstu*') + WHERE (g='qponmlk' AND f LIKE 'qrstu%') OR f='bcdefghij' OR f='hijklmnop' OR a=65 @@ -35625,11 +35625,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 10 AND 12) AND a!=11) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=1100 OR c=6006 OR c=4004 @@ -35647,11 +35647,11 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='jihgfed' AND f GLOB 'vwxyz*') + WHERE (g='jihgfed' AND f LIKE 'vwxyz%') OR ((a BETWEEN 10 AND 12) AND a!=11) OR ((a BETWEEN 79 AND 81) AND a!=80) - OR (g='kjihgfe' AND f GLOB 'stuvw*') - OR (g='qponmlk' AND f GLOB 'pqrst*') + OR (g='kjihgfe' AND f LIKE 'stuvw%') + OR (g='qponmlk' AND f LIKE 'pqrst%') OR b=1100 OR c=6006 OR c=4004 @@ -35728,7 +35728,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 21 AND 23) AND a!=22) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=737 @@ -35745,7 +35745,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE (d>=42.0 AND d<43.0 AND d IS NOT NULL) - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR ((a BETWEEN 21 AND 23) AND a!=22) OR (d>=12.0 AND d<13.0 AND d IS NOT NULL) OR b=737 @@ -35761,7 +35761,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='rqponml' AND f GLOB 'klmno*') + WHERE (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 5 AND 7) AND a!=6) ]]) end, { @@ -35775,7 +35775,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='rqponml' AND f GLOB 'klmno*') + WHERE (g='rqponml' AND f LIKE 'klmno%') OR ((a BETWEEN 5 AND 7) AND a!=6) ]]) end, { @@ -35789,7 +35789,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR c=32032 OR f='opqrstuvw' OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -35807,7 +35807,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='hgfedcb' AND f GLOB 'hijkl*') + WHERE (g='hgfedcb' AND f LIKE 'hijkl%') OR c=32032 OR f='opqrstuvw' OR ((a BETWEEN 66 AND 68) AND a!=67) @@ -35875,11 +35875,11 @@ test:do_test( OR ((a BETWEEN 8 AND 10) AND a!=9) OR ((a BETWEEN 86 AND 88) AND a!=87) OR b=146 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 73 AND 75) AND a!=74) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=704 ]]) end, { @@ -35897,11 +35897,11 @@ test:do_test( OR ((a BETWEEN 8 AND 10) AND a!=9) OR ((a BETWEEN 86 AND 88) AND a!=87) OR b=146 - OR (g='ponmlkj' AND f GLOB 'rstuv*') + OR (g='ponmlkj' AND f LIKE 'rstuv%') OR ((a BETWEEN 73 AND 75) AND a!=74) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') OR ((a BETWEEN 60 AND 62) AND a!=61) - OR (g='ihgfedc' AND f GLOB 'efghi*') + OR (g='ihgfedc' AND f LIKE 'efghi%') OR b=704 ]]) end, { @@ -35950,7 +35950,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE c=17017 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=971 OR a=37 OR a=7 @@ -35970,7 +35970,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE c=17017 - OR (g='qponmlk' AND f GLOB 'mnopq*') + OR (g='qponmlk' AND f LIKE 'mnopq%') OR b=971 OR a=37 OR a=7 @@ -35990,7 +35990,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE f='tuvwxyzab' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.963.1> @@ -36004,7 +36004,7 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE f='tuvwxyzab' - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') ]]) end, { -- <where7-2.963.2> @@ -36019,7 +36019,7 @@ test:do_test( SELECT a FROM t2 WHERE b=638 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR b=165 OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='stuvwxyza' @@ -36041,7 +36041,7 @@ test:do_test( SELECT a FROM t3 WHERE b=638 OR (d>=44.0 AND d<45.0 AND d IS NOT NULL) - OR (g='gfedcba' AND f GLOB 'lmnop*') + OR (g='gfedcba' AND f LIKE 'lmnop%') OR b=165 OR ((a BETWEEN 10 AND 12) AND a!=11) OR f='stuvwxyza' @@ -36067,7 +36067,7 @@ test:do_test( OR a=93 OR b=858 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.965.1> @@ -36086,7 +36086,7 @@ test:do_test( OR a=93 OR b=858 OR (d>=18.0 AND d<19.0 AND d IS NOT NULL) - OR (g='jihgfed' AND f GLOB 'vwxyz*') + OR (g='jihgfed' AND f LIKE 'vwxyz%') ]]) end, { -- <where7-2.965.2> @@ -36157,7 +36157,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='qponmlk' AND f GLOB 'mnopq*') + WHERE (g='qponmlk' AND f LIKE 'mnopq%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=5 OR b=396 @@ -36174,7 +36174,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='qponmlk' AND f GLOB 'mnopq*') + WHERE (g='qponmlk' AND f LIKE 'mnopq%') OR ((a BETWEEN 24 AND 26) AND a!=25) OR a=5 OR b=396 @@ -36191,7 +36191,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=748 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) @@ -36210,7 +36210,7 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') OR b=748 OR (d>=97.0 AND d<98.0 AND d IS NOT NULL) OR ((a BETWEEN 69 AND 71) AND a!=70) @@ -36231,7 +36231,7 @@ test:do_test( SELECT a FROM t2 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR a=50 OR a=46 OR ((a BETWEEN 38 AND 40) AND a!=39) @@ -36249,7 +36249,7 @@ test:do_test( SELECT a FROM t3 WHERE (d>=30.0 AND d<31.0 AND d IS NOT NULL) OR ((a BETWEEN 8 AND 10) AND a!=9) - OR (f GLOB '?pqrs*' AND f GLOB 'opqr*') + OR (f LIKE '_pqrs%' AND f LIKE 'opqr%') OR a=50 OR a=46 OR ((a BETWEEN 38 AND 40) AND a!=39) @@ -36312,7 +36312,7 @@ test:do_test( OR c=16016 OR b=1078 OR b=960 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.972.1> @@ -36330,7 +36330,7 @@ test:do_test( OR c=16016 OR b=1078 OR b=960 - OR (g='hgfedcb' AND f GLOB 'jklmn*') + OR (g='hgfedcb' AND f LIKE 'jklmn%') ]]) end, { -- <where7-2.972.2> @@ -36345,7 +36345,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1081 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=6 @@ -36363,7 +36363,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1081 OR ((a BETWEEN 19 AND 21) AND a!=20) - OR (g='ponmlkj' AND f GLOB 'tuvwx*') + OR (g='ponmlkj' AND f LIKE 'tuvwx%') OR ((a BETWEEN 73 AND 75) AND a!=74) OR (d>=38.0 AND d<39.0 AND d IS NOT NULL) OR a=6 @@ -36379,10 +36379,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='rqponml' AND f GLOB 'lmnop*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=92 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='fghijklmn' OR a=100 OR b=209 @@ -36402,10 +36402,10 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='fedcbaz' AND f GLOB 'rstuv*') - OR (g='rqponml' AND f GLOB 'lmnop*') + WHERE (g='fedcbaz' AND f LIKE 'rstuv%') + OR (g='rqponml' AND f LIKE 'lmnop%') OR a=92 - OR (f GLOB '?klmn*' AND f GLOB 'jklm*') + OR (f LIKE '_klmn%' AND f LIKE 'jklm%') OR f='fghijklmn' OR a=100 OR b=209 @@ -36458,13 +36458,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE ((a BETWEEN 51 AND 53) AND a!=52) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=91 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR b=77 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.976.1> @@ -36478,13 +36478,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE ((a BETWEEN 51 AND 53) AND a!=52) - OR (g='utsrqpo' AND f GLOB 'uvwxy*') - OR (f GLOB '?cdef*' AND f GLOB 'bcde*') + OR (g='utsrqpo' AND f LIKE 'uvwxy%') + OR (f LIKE '_cdef%' AND f LIKE 'bcde%') OR b=91 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR b=77 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') - OR (g='vutsrqp' AND f GLOB 'pqrst*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') + OR (g='vutsrqp' AND f LIKE 'pqrst%') ]]) end, { -- <where7-2.976.2> @@ -36582,13 +36582,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=737 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=40 OR f='uvwxyzabc' OR b=311 - OR (g='nmlkjih' AND f GLOB 'bcdef*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=927 OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) ]]) @@ -36604,13 +36604,13 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=737 - OR (g='wvutsrq' AND f GLOB 'ijklm*') - OR (f GLOB '?ghij*' AND f GLOB 'fghi*') + OR (g='wvutsrq' AND f LIKE 'ijklm%') + OR (f LIKE '_ghij%' AND f LIKE 'fghi%') OR a=40 OR f='uvwxyzabc' OR b=311 - OR (g='nmlkjih' AND f GLOB 'bcdef*') - OR (f GLOB '?hijk*' AND f GLOB 'ghij*') + OR (g='nmlkjih' AND f LIKE 'bcdef%') + OR (f LIKE '_hijk%' AND f LIKE 'ghij%') OR b=927 OR (d>=50.0 AND d<51.0 AND d IS NOT NULL) ]]) @@ -36657,16 +36657,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR b=487 OR f='tuvwxyzab' - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=971 OR c=19019 OR a=39 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=550 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=660 ]]) end, { @@ -36680,16 +36680,16 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='xwvutsr' AND f GLOB 'ghijk*') + WHERE (g='xwvutsr' AND f LIKE 'ghijk%') OR b=487 OR f='tuvwxyzab' - OR (g='onmlkji' AND f GLOB 'wxyza*') + OR (g='onmlkji' AND f LIKE 'wxyza%') OR b=971 OR c=19019 OR a=39 - OR (f GLOB '?nopq*' AND f GLOB 'mnop*') + OR (f LIKE '_nopq%' AND f LIKE 'mnop%') OR b=550 - OR (g='kjihgfe' AND f GLOB 'tuvwx*') + OR (g='kjihgfe' AND f LIKE 'tuvwx%') OR b=660 ]]) end, { @@ -36735,7 +36735,7 @@ test:do_test( OR b=630 OR b=935 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR f='yzabcdefg' OR ((a BETWEEN 37 AND 39) AND a!=38) ]]) @@ -36754,7 +36754,7 @@ test:do_test( OR b=630 OR b=935 OR (d>=20.0 AND d<21.0 AND d IS NOT NULL) - OR (g='srqponm' AND f GLOB 'defgh*') + OR (g='srqponm' AND f LIKE 'defgh%') OR f='yzabcdefg' OR ((a BETWEEN 37 AND 39) AND a!=38) ]]) @@ -36774,7 +36774,7 @@ test:do_test( OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=696 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=682 OR a=32 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -36797,7 +36797,7 @@ test:do_test( OR (d>=86.0 AND d<87.0 AND d IS NOT NULL) OR f='abcdefghi' OR b=696 - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=682 OR a=32 OR ((a BETWEEN 34 AND 36) AND a!=35) @@ -36815,8 +36815,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=311 ]]) end, { @@ -36830,8 +36830,8 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (g='gfedcba' AND f GLOB 'lmnop*') - OR (f GLOB '?ijkl*' AND f GLOB 'hijk*') + WHERE (g='gfedcba' AND f LIKE 'lmnop%') + OR (f LIKE '_ijkl%' AND f LIKE 'hijk%') OR b=311 ]]) end, { @@ -36884,7 +36884,7 @@ test:do_test( WHERE ((a BETWEEN 98 AND 100) AND a!=99) OR b=110 OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=484 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) ]]) @@ -36902,7 +36902,7 @@ test:do_test( WHERE ((a BETWEEN 98 AND 100) AND a!=99) OR b=110 OR ((a BETWEEN 38 AND 40) AND a!=39) - OR (g='tsrqpon' AND f GLOB 'xyzab*') + OR (g='tsrqpon' AND f LIKE 'xyzab%') OR b=484 OR (d>=82.0 AND d<83.0 AND d IS NOT NULL) ]]) @@ -36925,7 +36925,7 @@ test:do_test( OR c=27027 OR b=1026 OR c=6006 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) ]]) end, { @@ -36947,7 +36947,7 @@ test:do_test( OR c=27027 OR b=1026 OR c=6006 - OR (g='ponmlkj' AND f GLOB 'uvwxy*') + OR (g='ponmlkj' AND f LIKE 'uvwxy%') OR (d>=73.0 AND d<74.0 AND d IS NOT NULL) ]]) end, { @@ -36963,11 +36963,11 @@ test:do_test( SELECT a FROM t2 WHERE (d>=79.0 AND d<80.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR a=97 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=674 OR c=14014 OR b=69 @@ -36985,11 +36985,11 @@ test:do_test( SELECT a FROM t3 WHERE (d>=79.0 AND d<80.0 AND d IS NOT NULL) OR ((a BETWEEN 18 AND 20) AND a!=19) - OR (g='qponmlk' AND f GLOB 'nopqr*') + OR (g='qponmlk' AND f LIKE 'nopqr%') OR a=97 OR (d>=45.0 AND d<46.0 AND d IS NOT NULL) OR ((a BETWEEN 22 AND 24) AND a!=23) - OR (g='mlkjihg' AND f GLOB 'ghijk*') + OR (g='mlkjihg' AND f LIKE 'ghijk%') OR b=674 OR c=14014 OR b=69 @@ -37039,12 +37039,12 @@ test:do_test( SELECT a FROM t2 WHERE b=451 OR ((a BETWEEN 11 AND 13) AND a!=12) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=539 OR a=26 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=465 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.991.1> @@ -37059,12 +37059,12 @@ test:do_test( SELECT a FROM t3 WHERE b=451 OR ((a BETWEEN 11 AND 13) AND a!=12) - OR (g='tsrqpon' AND f GLOB 'abcde*') + OR (g='tsrqpon' AND f LIKE 'abcde%') OR b=539 OR a=26 - OR (g='srqponm' AND f GLOB 'efghi*') + OR (g='srqponm' AND f LIKE 'efghi%') OR b=465 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') ]]) end, { -- <where7-2.991.2> @@ -37135,9 +37135,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t2 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=13 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=322 OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=377 @@ -37156,9 +37156,9 @@ test:do_test( function() return count_steps_sort([[ SELECT a FROM t3 - WHERE (f GLOB '?cdef*' AND f GLOB 'bcde*') + WHERE (f LIKE '_cdef%' AND f LIKE 'bcde%') OR a=13 - OR (f GLOB '?stuv*' AND f GLOB 'rstu*') + OR (f LIKE '_stuv%' AND f LIKE 'rstu%') OR b=322 OR ((a BETWEEN 33 AND 35) AND a!=34) OR b=377 @@ -37181,9 +37181,9 @@ test:do_test( OR b=990 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR b=605 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR a=66 ]]) @@ -37202,9 +37202,9 @@ test:do_test( OR b=990 OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) OR b=605 - OR (g='srqponm' AND f GLOB 'cdefg*') + OR (g='srqponm' AND f LIKE 'cdefg%') OR (d>=36.0 AND d<37.0 AND d IS NOT NULL) - OR (g='vutsrqp' AND f GLOB 'qrstu*') + OR (g='vutsrqp' AND f LIKE 'qrstu%') OR b=968 OR a=66 ]]) @@ -37220,12 +37220,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t2 WHERE b=1059 - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -37240,12 +37240,12 @@ test:do_test( return count_steps_sort([[ SELECT a FROM t3 WHERE b=1059 - OR (g='srqponm' AND f GLOB 'ghijk*') - OR (g='utsrqpo' AND f GLOB 'tuvwx*') - OR (g='nmlkjih' AND f GLOB 'fghij*') + OR (g='srqponm' AND f LIKE 'ghijk%') + OR (g='utsrqpo' AND f LIKE 'tuvwx%') + OR (g='nmlkjih' AND f LIKE 'fghij%') OR (d>=17.0 AND d<18.0 AND d IS NOT NULL) OR (d>=37.0 AND d<38.0 AND d IS NOT NULL) - OR (g='onmlkji' AND f GLOB 'abcde*') + OR (g='onmlkji' AND f LIKE 'abcde%') OR ((a BETWEEN 39 AND 41) AND a!=40) ]]) end, { @@ -37261,7 +37261,7 @@ test:do_test( SELECT a FROM t2 WHERE ((a BETWEEN 41 AND 43) AND a!=42) OR f='nopqrstuv' - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=42 OR b=729 OR b=297 @@ -37282,7 +37282,7 @@ test:do_test( SELECT a FROM t3 WHERE ((a BETWEEN 41 AND 43) AND a!=42) OR f='nopqrstuv' - OR (g='ponmlkj' AND f GLOB 'stuvw*') + OR (g='ponmlkj' AND f LIKE 'stuvw%') OR a=42 OR b=729 OR b=297 @@ -37337,9 +37337,9 @@ test:do_test( SELECT a FROM t2 WHERE b=451 OR b=660 - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=781 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=198 OR b=1023 OR a=98 @@ -37359,9 +37359,9 @@ test:do_test( SELECT a FROM t3 WHERE b=451 OR b=660 - OR (g='onmlkji' AND f GLOB 'yzabc*') + OR (g='onmlkji' AND f LIKE 'yzabc%') OR b=781 - OR (g='jihgfed' AND f GLOB 'wxyza*') + OR (g='jihgfed' AND f LIKE 'wxyza%') OR b=198 OR b=1023 OR a=98 @@ -37383,7 +37383,7 @@ test:do_test( OR a=86 OR c=17017 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=80 OR b=773 ]]) @@ -37402,7 +37402,7 @@ test:do_test( OR a=86 OR c=17017 OR ((a BETWEEN 85 AND 87) AND a!=86) - OR (g='gfedcba' AND f GLOB 'mnopq*') + OR (g='gfedcba' AND f LIKE 'mnopq%') OR a=80 OR b=773 ]]) @@ -37419,7 +37419,7 @@ test:do_test( SELECT a FROM t2 WHERE b=1092 OR a=23 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR d<0.0 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=91 @@ -37437,7 +37437,7 @@ test:do_test( SELECT a FROM t3 WHERE b=1092 OR a=23 - OR (f GLOB '?defg*' AND f GLOB 'cdef*') + OR (f LIKE '_defg%' AND f LIKE 'cdef%') OR d<0.0 OR (d>=22.0 AND d<23.0 AND d IS NOT NULL) OR a=91 -- WBR, Nikita Tatunov. n.tatunov@tarantool.org [-- Attachment #2: Type: text/html, Size: 1291048 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-09-11 7:38 ` Nikita Tatunov @ 2018-09-11 10:11 ` Alexander Turenko 2018-09-11 10:22 ` Alex Khatskevich 2018-09-11 12:03 ` Alex Khatskevich 1 sibling, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-09-11 10:11 UTC (permalink / raw) To: Nikita Tatunov; +Cc: Alex Khatskevich, Nikita Pettik, tarantool-patches Hi! See below. WBR, Alexandr Turenko. On Tue, Sep 11, 2018 at 10:38:38AM +0300, Nikita Tatunov wrote: > Hello, thank you for comments. > See full diff is at the end of the letter. > > >>>> > >>>> - "ESCAPE expression must be a single character", > >>>> + "ESCAPE expression must be a" > >>>> + " single character", > >>> Do not split error messages at the middle of a sentence. It makes errors ungreppable. > >>> Make it <80 somehow different. > >>> > >> > >> Have already been discussed in this thread. > > I suppose that we concluded to try to fit into 80 and split the string only > > in case it is impossible. > > I don’t think so. Anyways, Alexander could you please give your thoughts? Nikita P. gives key_def.c as the example where we don't create constant variables in the case. We shouldn't here too I think. At least it should not be enforced. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-09-11 10:11 ` Alexander Turenko @ 2018-09-11 10:22 ` Alex Khatskevich 0 siblings, 0 replies; 46+ messages in thread From: Alex Khatskevich @ 2018-09-11 10:22 UTC (permalink / raw) To: Alexander Turenko, Nikita Tatunov; +Cc: Nikita Pettik, tarantool-patches On 11.09.2018 13:11, Alexander Turenko wrote: > Hi! > > See below. > > WBR, Alexandr Turenko. > > On Tue, Sep 11, 2018 at 10:38:38AM +0300, Nikita Tatunov wrote: >> Hello, thank you for comments. >> See full diff is at the end of the letter. >> >>>>>> - "ESCAPE expression must be a single character", >>>>>> + "ESCAPE expression must be a" >>>>>> + " single character", >>>>> Do not split error messages at the middle of a sentence. It makes errors ungreppable. >>>>> Make it <80 somehow different. >>>>> >>>> Have already been discussed in this thread. >>> I suppose that we concluded to try to fit into 80 and split the string only >>> in case it is impossible. >> I don’t think so. Anyways, Alexander could you please give your thoughts? > Nikita P. gives key_def.c as the example where we don't create constant > variables in the case. We shouldn't here too I think. At least it should > not be enforced. Actually, Nikita gave it as an example of file where 80 symbols rule is not broken (it is not about using constants to avoid this). If you can provide any arguments on why we should broke the line, while it is possible to keep it as a whole by just creating constant variable in the same scope - I will accept it. Otherwise, arguments for keeping all error messages non-broken which I have mentioned are very important in my opinion and I insist that message is not broken. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-09-11 7:38 ` Nikita Tatunov 2018-09-11 10:11 ` Alexander Turenko @ 2018-09-11 12:03 ` Alex Khatskevich 2018-10-18 20:28 ` Nikita Tatunov 1 sibling, 1 reply; 46+ messages in thread From: Alex Khatskevich @ 2018-09-11 12:03 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, Alexander Turenko [-- Attachment #1: Type: text/plain, Size: 54451 bytes --] >>>>> >>>>> - "ESCAPE expression must be a single character", >>>>> + "ESCAPE expression must be a" >>>>> + " single character", >>>> Do not split error messages at the middle of a sentence. It makes >>>> errors ungreppable. >>>> Make it <80 somehow different. >>>> >>> >>> Have already been discussed in this thread. >> I suppose that we concluded to try to fit into 80 and split the >> string only >> in case it is impossible. > > I don’t think so. Anyways, Alexander could you please give your thoughts? Discussed with Nikita, Alexander, Vladimir, Kirill... Conclusion: use `const char temp variable` if possible. like this: ``` const char *const err_msg = "ESCAPE expression must be a single character"; if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { sqlite3_result_error(context, err_msg, -1); return; ``` If it does not help (but it is) split the message. >>> diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua >>> index 162026845..0d69e8535 100755 >>> --- a/test/sql-tap/e_expr.test.lua >>> +++ b/test/sql-tap/e_expr.test.lua >>> @@ -1,6 +1,6 @@ >>> #!/usr/bin/env tarantool >>> test = require("sqltester") >>> -test:plan(11521) >>> +test:plan(10647) >>> --!./tcltestrunner.lua >>> -- 2010 July 16 >>> @@ -77,7 +77,7 @@ local operations = { >>> {"<>", "ne1"}, >>> {"!=", "ne2"}, >>> {"IS", "is"}, >>> - {"LIKE", "like"}, >>> +-- {"LIKE", "like"}, >>> {"AND", "and"}, >>> {"OR", "or"}, >>> {"MATCH", "match"}, >>> @@ -96,8 +96,9 @@ operations = { >>> {"<<", ">>", "&", "|"}, >>> {"<", "<=", ">", ">="}, >>> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >>> --- are waiting for their hour. >>> - {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, >>> +-- are waiting for their hour, don't confuse them >>> +-- being commented with commenting of "LIKE". >>> + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, >> Delete Like. No one returns here. > > It’s a table of all of the operators thus I think it still worth > leaving it there. > Who knows, it may be that someone will revive tests for LIKE. Delete Like. No one returns here. We do not need a garbage. Like is not relevant anymore for this test. > > diff --git a/extra/mkkeywordhash.c b/extra/mkkeywordhash.c > index 990c4199f..1fee3a7f2 100644 > --- a/extra/mkkeywordhash.c > +++ b/extra/mkkeywordhash.c > @@ -159,7 +159,6 @@ static Keyword aKeywordTable[] = { > { "FOR", "TK_FOR", TRIGGER, > true }, > { "FOREIGN", "TK_FOREIGN", FKEY, true }, > { "FROM", "TK_FROM", ALWAYS, > true }, > - { "GLOB", "TK_LIKE_KW", ALWAYS, > false }, > { "GROUP", "TK_GROUP", ALWAYS, > true }, > { "HAVING", "TK_HAVING", ALWAYS, > true }, > { "IF", "TK_IF", ALWAYS, > true }, > diff --git a/src/box/sql/analyze.c b/src/box/sql/analyze.c > index 5f73f026e..fc7588c3f 100644 > --- a/src/box/sql/analyze.c > +++ b/src/box/sql/analyze.c > @@ -829,7 +829,7 @@ analyzeOneTable(Parse * pParse,/* Parser context */ > return; > } > assert(pTab->tnum != 0); > -if (sqlite3_strlike("\\_%", pTab->def->name, '\\') == 0) { > +if (sql_strlike_ci("\\_%", pTab->def->name, '\\') == 0) { > /* Do not gather statistics on system tables */ > return; > } > @@ -1333,11 +1333,10 @@ analysis_loader(void *data, int argc, char > **argv, char **unused) > /* Position ptr at the end of stat string. */ > for (; *z == ' ' || (*z >= '0' && *z <= '9'); ++z); > while (z[0]) { > -if (sqlite3_strglob("unordered*", z) == 0) { > +if (sql_strlike_cs("unordered%", z, '[') == 0) > index->def->opts.stat->is_unordered = true; > -} else if (sqlite3_strglob("noskipscan*", z) == 0) { > +else if (sql_strlike_cs("noskipscan%", z, '[') == 0) > index->def->opts.stat->skip_scan_enabled = false; > -} > while (z[0] != 0 && z[0] != ' ') > z++; > while (z[0] == ' ') > diff --git a/src/box/sql/func.c b/src/box/sql/func.c > index 66cae17b5..28b435ae3 100644 > --- a/src/box/sql/func.c > +++ b/src/box/sql/func.c > @@ -607,41 +607,38 @@ total_changes(sqlite3_context * context, int > NotUsed, sqlite3_value ** NotUsed2) > sqlite3_result_int(context, sqlite3_total_changes(db)); > } > -/* > - * A structure defining how to do GLOB-style comparisons. > - */ > -struct compareInfo { > -u8 matchAll;/* "*" or "%" */ > -u8 matchOne;/* "?" or "_" */ > -u8 matchSet;/* "[" or 0 */ > -u8 noCase;/* true to ignore case differences */ > -}; > - > /** > - * Providing there are symbols in string s this > - * macro returns UTF-8 code of character and > - * promotes pointer to the next symbol in the string. > - * Otherwise return code is SQL_END_OF_STRING. > + * Providing there are symbols in string s this macro returns > + * UTF-8 code of character and promotes pointer to the next > + * symbol in the string. If s points to an invalid UTF-8 symbol > + * return code is SQL_INVALID_UTF8_SYMBOL. If there're no symbols > + * left in string s return code is SQL_END_OF_STRING. > */ > #define Utf8Read(s, e) ucnv_getNextUChar(pUtf8conv, &(s), (e), &(status)) > #define SQL_END_OF_STRING 0xffff > #define SQL_INVALID_UTF8_SYMBOL 0xfffd > -static const struct compareInfo globInfo = { '*', '?', '[', 0 }; > +/** > + * If SQLITE_CASE_SENSITIVE_LIKE is not defined, then the LIKE > + * operator is not case sensitive. > + */ > +static const int case_insensitive_like = 1; > -/* The correct SQL-92 behavior is for the LIKE operator to ignore > - * case. Thus 'a' LIKE 'A' would be true. > +/** > + * If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE > + * operator is case sensitive causing 'a' LIKE 'A' to be false. > */ > -static const struct compareInfo likeInfoNorm = { '%', '_', 0, 1 }; > +static const int case_sensitive_like = 0; > -/* If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE operator > - * is case sensitive causing 'a' LIKE 'A' to be false > +/** > + * Wildcards. > */ > -static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 }; > +#define match_one '_' > +#define match_all '%' > -/* > - * Possible error returns from sql_utf8_pattern_compare() > +/** > + * Possible error returns from sql_utf8_pattern_compare(). > */ > #define SQL_MATCH 0 > #define SQL_NOMATCH 1 > @@ -650,138 +647,91 @@ static const struct compareInfo likeInfoAlt = { > '%', '_', 0, 0 }; > /** > * Compare two UTF-8 strings for equality where the first string > - * is a GLOB or LIKE expression. > - * > - * Globbing rules: > - * > - * '*' Matches any sequence of zero or more characters. > - * > - * '?' Matches exactly one character. > - * > - * [...] Matches one character from the enclosed list of > - * characters. > - * > - * [^...] Matches one character not in the enclosed list. > - * > - * With the [...] and [^...] matching, a ']' character can be > - * included in the list by making it the first character after > - * '[' or '^'. A range of characters can be specified using '-'. > - * Example: "[a-z]" matches any single lower-case letter. > - * To match a '-', make it the last character in the list. > + * is a LIKE expression. > * > * Like matching rules: > * > - * '%' Matches any sequence of zero or more characters. > + * '%' Matches any sequence of zero or more > + * characters. > * > * '_' Matches any one character. > * > - * Ec Where E is the "esc" character and c is any other > - * character, including '%', '_', and esc, match > - * exactly c. > - * > - * The comments within this routine usually assume glob matching. > + * Ec Where E is the "esc" character and c is any > + * other character, including '%', '_', and esc, > + * match exactly c. > * > * This routine is usually quick, but can be N**2 in the worst > * case. > * > * @param pattern String containing comparison pattern. > * @param string String being compared. > - * @param compareInfo Information about how to compare. > - * @param matchOther The escape char (LIKE) or '[' (GLOB). > + * @param is_like_ci true if LIKE is case insensitive. > + * @param match_other The escape char for LIKE. > * > * @retval SQL_MATCH: Match. > * SQL_NOMATCH: No match. > - * SQL_NOWILDCARDMATCH: No match in spite of having * > - * or % wildcards. > + * SQL_NOWILDCARDMATCH: No match in spite of having % > + * wildcard. > * SQL_INVALID_PATTERN: Pattern contains invalid > * symbol. > */ > static int > sql_utf8_pattern_compare(const char *pattern, > const char *string, > -const struct compareInfo *pInfo, > -UChar32 matchOther) > +const int is_like_ci, > +UChar32 match_other) > { > /* Next pattern and input string chars */ > UChar32 c, c2; > -/* "?" or "_" */ > -UChar32 matchOne = pInfo->matchOne; > -/* "*" or "%" */ > -UChar32 matchAll = pInfo->matchAll; > -/* True if uppercase==lowercase */ > -UChar32 noCase = pInfo->noCase; > /* One past the last escaped input char */ > const char *zEscaped = 0; > -const char * pattern_end = pattern + strlen(pattern); > -const char * string_end = string + strlen(string); > +const char *pattern_end = pattern + strlen(pattern); > +const char *string_end = string + strlen(string); > UErrorCode status = U_ZERO_ERROR; > while (pattern < pattern_end) { > c = Utf8Read(pattern, pattern_end); > if (c == SQL_INVALID_UTF8_SYMBOL) > return SQL_INVALID_PATTERN; > -if (c == matchAll) {/* Match "*" */ > -/* Skip over multiple "*" characters in > -* the pattern. If there are also "?" > +if (c == match_all) { > +/** > +* Skip over multiple "%" characters in > +* the pattern. If there are also "_" > * characters, skip those as well, but > * consume a single character of the > -* input string for each "?" skipped. > +* input string for each "_" skipped. > */ > while ((c = Utf8Read(pattern, pattern_end)) != > SQL_END_OF_STRING) { > if (c == SQL_INVALID_UTF8_SYMBOL) > return SQL_INVALID_PATTERN; > -if (c != matchAll && c != matchOne) > +if (c != match_all && c != match_one) > break; > -if (c == matchOne && > +if (c == match_one && > (c2 = Utf8Read(string, string_end)) == > SQL_END_OF_STRING) > return SQL_NOWILDCARDMATCH; > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > } > -/* > -* "*" at the end of the pattern matches. > +/** > +* "%" at the end of the pattern matches. > */ > if (c == SQL_END_OF_STRING) { > return SQL_MATCH; > } > -if (c == matchOther) { > -if (pInfo->matchSet == 0) { > -c = Utf8Read(pattern, pattern_end); > -if (c == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -if (c == SQL_END_OF_STRING) > -return SQL_NOWILDCARDMATCH; > -} else { > -/* "[...]" immediately > -* follows the "*". We > -* have to do a slow > -* recursive search in > -* this case, but it is > -* an unusual case. > -*/ > -assert(matchOther < 0x80); > -while (string < string_end) { > -int bMatch = > - sql_utf8_pattern_compare( > -&pattern[-1], > -string, > -pInfo, > -matchOther); > -if (bMatch != SQL_NOMATCH) > -return bMatch; > -c = Utf8Read(string, string_end); > -if (c == SQL_INVALID_UTF8_SYMBOL) > -return SQL_NOMATCH; > -} > +if (c == match_other) { > +c = Utf8Read(pattern, pattern_end); > +if (c == SQL_INVALID_UTF8_SYMBOL) > +return SQL_INVALID_PATTERN; > +if (c == SQL_END_OF_STRING) > return SQL_NOWILDCARDMATCH; > -} > } > -/* At this point variable c contains the > +/** > +* At this point variable c contains the > * first character of the pattern string > -* past the "*". Search in the input > +* past the "%". Search in the input > * string for the first matching > * character and recursively continue the > * match from that point. > @@ -793,7 +743,7 @@ sql_utf8_pattern_compare(const char *pattern, > */ > int bMatch; > -if (noCase) > +if (is_like_ci) > c = u_tolower(c); > while (string < string_end){ > /** > @@ -809,7 +759,7 @@ sql_utf8_pattern_compare(const char *pattern, > c2 = Utf8Read(string, string_end); > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > -if (!noCase) { > +if (!is_like_ci) { > if (c2 != c) > continue; > } else { > @@ -818,79 +768,27 @@ sql_utf8_pattern_compare(const char *pattern, > } > bMatch = sql_utf8_pattern_compare(pattern, > string, > - pInfo, > - matchOther); > + is_like_ci, > + match_other); > if (bMatch != SQL_NOMATCH) > return bMatch; > } > return SQL_NOWILDCARDMATCH; > } > -if (c == matchOther) { > -if (pInfo->matchSet == 0) { > -c = Utf8Read(pattern, pattern_end); > -if (c == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -if (c == SQL_END_OF_STRING) > -return SQL_NOMATCH; > -zEscaped = pattern; > -} else { > -UChar32 prior_c = 0; > -int seen = 0; > -int invert = 0; > -c = Utf8Read(string, string_end); > -if (c == SQL_INVALID_UTF8_SYMBOL) > -return SQL_NOMATCH; > -if (string == string_end) > -return SQL_NOMATCH; > -c2 = Utf8Read(pattern, pattern_end); > -if (c2 == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -if (c2 == '^') { > -invert = 1; > -c2 = Utf8Read(pattern, pattern_end); > -if (c2 == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -} > -if (c2 == ']') { > -if (c == ']') > -seen = 1; > -c2 = Utf8Read(pattern, pattern_end); > -if (c2 == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -} > -while (c2 != SQL_END_OF_STRING && c2 != ']') { > -if (c2 == '-' && pattern[0] != ']' > - && pattern < pattern_end > - && prior_c > 0) { > -c2 = Utf8Read(pattern, pattern_end); > -if (c2 == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -if (c >= prior_c && c <= c2) > -seen = 1; > -prior_c = 0; > -} else { > -if (c == c2) { > -seen = 1; > -} > -prior_c = c2; > -} > -c2 = Utf8Read(pattern, pattern_end); > -if (c2 == SQL_INVALID_UTF8_SYMBOL) > -return SQL_INVALID_PATTERN; > -} > -if (pattern == pattern_end || > - (seen ^ invert) == 0) { > -return SQL_NOMATCH; > -} > -continue; > -} > +if (c == match_other) { > +c = Utf8Read(pattern, pattern_end); > +if (c == SQL_INVALID_UTF8_SYMBOL) > +return SQL_INVALID_PATTERN; > +if (c == SQL_END_OF_STRING) > +return SQL_NOMATCH; > +zEscaped = pattern; > } > c2 = Utf8Read(string, string_end); > if (c2 == SQL_INVALID_UTF8_SYMBOL) > return SQL_NOMATCH; > if (c == c2) > continue; > -if (noCase){ > +if (is_like_ci) { > /** > * Small optimisation. Reduce number of > * calls to u_tolower function. SQL > @@ -903,7 +801,7 @@ sql_utf8_pattern_compare(const char *pattern, > c == u_tolower(c2)) > continue; > } > -if (c == matchOne && pattern != zEscaped && > +if (c == match_one && pattern != zEscaped && > c2 != SQL_END_OF_STRING) > continue; > return SQL_NOMATCH; > @@ -911,55 +809,52 @@ sql_utf8_pattern_compare(const char *pattern, > return string == string_end ? SQL_MATCH : SQL_NOMATCH; > } > -/* > - * The sqlite3_strglob() interface. Return 0 on a match (like > strcmp()) and > - * non-zero if there is no match. > +/** > + * Compare two UTF-8 strings for equality using case sensitive > + * sql_utf8_pattern_compare. > */ > int > -sqlite3_strglob(const char *zGlobPattern, const char *zString) > +sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) > { > -return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); > +return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, > esc); > } > -/* > - * The sqlite3_strlike() interface. Return 0 on a match and non-zero for > - * a miss - like strcmp(). > +/** > + * Compare two UTF-8 strings for equality using case insensitive > + * sql_utf8_pattern_compare. > */ > int > -sqlite3_strlike(const char *zPattern, const char *zStr, unsigned int esc) > +sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) > { > -return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); > +return sql_utf8_pattern_compare(zPattern, zStr, > case_insensitive_like, esc); > } > -/* > - * Count the number of times that the LIKE operator (or GLOB which is > - * just a variation of LIKE) gets called. This is used for testing > - * only. > +/** > + * Count the number of times that the LIKE operator gets called. > + * This is used for testing only. > */ > #ifdef SQLITE_TEST > int sqlite3_like_count = 0; > #endif > -/* > - * Implementation of the like() SQL function. This function implements > - * the build-in LIKE operator. The first argument to the function is the > - * pattern and the second argument is the string. So, the SQL > statements: > +/** > + * Implementation of the like() SQL function. This function > + * implements the built-in LIKE operator. The first argument to > + * the function is the pattern and the second argument is the > + * string. So, the SQL statements of the following type: > * > * A LIKE B > * > - * is implemented as like(B,A). > - * > - * This same function (with a different compareInfo structure) computes > - * the GLOB operator. > + * are implemented as like(B,A). > */ > static void > -likeFunc(sqlite3_context * context, int argc, sqlite3_value ** argv) > +likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) > { > const char *zA, *zB; > u32 escape; > int nPat; > sqlite3 *db = sqlite3_context_db_handle(context); > -struct compareInfo *pInfo = sqlite3_user_data(context); > +int *is_like_ci = sqlite3_user_data(context); > #ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS > if (sqlite3_value_type(argv[0]) == SQLITE_BLOB > @@ -974,8 +869,9 @@ likeFunc(sqlite3_context * context, int argc, > sqlite3_value ** argv) > zB = (const char *) sqlite3_value_text(argv[0]); > zA = (const char *) sqlite3_value_text(argv[1]); > -/* Limit the length of the LIKE or GLOB pattern to avoid > -* problems of deep recursion and N*N behavior in > +/** > +* Limit the length of the LIKE pattern to avoid problems > +* of deep recursion and N*N behavior in > * sql_utf8_pattern_compare(). > */ > nPat = sqlite3_value_bytes(argv[0]); > @@ -983,28 +879,29 @@ likeFunc(sqlite3_context * context, int argc, > sqlite3_value ** argv) > testcase(nPat == db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH] + 1); > if (nPat > db->aLimit[SQLITE_LIMIT_LIKE_PATTERN_LENGTH]) { > sqlite3_result_error(context, > - "LIKE or GLOB pattern too complex", -1); > + "LIKE pattern is too complex", -1); > return; > } > /* Encoding did not change */ > assert(zB == (const char *) sqlite3_value_text(argv[0])); > if (argc == 3) { > -/* The escape character string must consist of a single UTF-8 character. > -* Otherwise, return an error. > +/** > +* The escape character string must consist of a > +* single UTF-8 character. Otherwise, return an > +* error. > */ > const unsigned char *zEsc = sqlite3_value_text(argv[2]); > if (zEsc == 0) > return; > if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { > sqlite3_result_error(context, > - "ESCAPE expression must be a single character", > + "ESCAPE expression must be a" > + " single character", > -1); > return; > } > escape = sqlite3Utf8Read(&zEsc); > -} else { > -escape = pInfo->matchSet; > } > if (!zA || !zB) > return; > @@ -1012,10 +909,10 @@ likeFunc(sqlite3_context * context, int argc, > sqlite3_value ** argv) > sqlite3_like_count++; > #endif > int res; > -res = sql_utf8_pattern_compare(zB, zA, pInfo, escape); > +res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); > if (res == SQL_INVALID_PATTERN) { > -sqlite3_result_error(context, "LIKE or GLOB pattern can only" > - " contain UTF-8 characters", -1); > +sqlite3_result_error(context, "LIKE pattern can only contain" > + " UTF-8 characters", -1); > return; > } > sqlite3_result_int(context, res == SQL_MATCH); > @@ -1811,64 +1708,54 @@ setLikeOptFlag(sqlite3 * db, const char > *zName, u8 flagVal) > } > } > -/* > - * Register the built-in LIKE and GLOB functions. The caseSensitive > - * parameter determines whether or not the LIKE operator is case > - * sensitive. GLOB is always case sensitive. > +/** > + * Register the built-in LIKE function. > + * > + * @param db database structure. > + * @param is_case_sensitive whether like should be case sensitive > + * or not. > + * > + * @retval none. > */ > void > -sqlite3RegisterLikeFunctions(sqlite3 * db, int caseSensitive) > +sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) > { > -struct compareInfo *pInfo; > -if (caseSensitive) { > -pInfo = (struct compareInfo *)&likeInfoAlt; > -} else { > -pInfo = (struct compareInfo *)&likeInfoNorm; > -} > -sqlite3CreateFunc(db, "LIKE", 2, 0, pInfo, likeFunc, 0, 0, 0); > -sqlite3CreateFunc(db, "LIKE", 3, 0, pInfo, likeFunc, 0, 0, 0); > -sqlite3CreateFunc(db, "GLOB", 2, 0, (struct compareInfo *)&globInfo, > likeFunc, 0, 0, 0); > -setLikeOptFlag(db, "GLOB", SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE); > +int *is_like_ci; > +if (is_case_sensitive) > +is_like_ci = (int *)&case_sensitive_like; > +else > +is_like_ci = (int *)&case_insensitive_like; > +sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); > +sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); > setLikeOptFlag(db, "LIKE", > - caseSensitive ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : > - SQLITE_FUNC_LIKE); > + is_case_sensitive ? (SQLITE_FUNC_LIKE | > + SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); > } > -/* > - * pExpr points to an expression which implements a function. If > - * it is appropriate to apply the LIKE optimization to that function > - * then set aWc[0] through aWc[2] to the wildcard characters and > - * return TRUE. If the function is not a LIKE-style function then > - * return FALSE. > +/** > + * Check if the function implements LIKE-style comparison & if it > + * is appropriate to apply a LIKE query optimization. > + * > + * @param db database structure. > + * @param pExpr pointer to a function-implementing expression. > + * @param is_like_ci true if LIKE is case insensitive. > * > - * *pIsNocase is set to true if uppercase and lowercase are > equivalent for > - * the function (default for LIKE). If the function makes the > distinction > - * between uppercase and lowercase (as does GLOB) then *pIsNocase is > set to > - * false. > + * @retval 0 if it's appropriate to apply optimization. > + * 1 if it's not. > */ > int > -sqlite3IsLikeFunction(sqlite3 * db, Expr * pExpr, int *pIsNocase, > char *aWc) > +sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_like_ci) > { > FuncDef *pDef; > -if (pExpr->op != TK_FUNCTION > - || !pExpr->x.pList || pExpr->x.pList->nExpr != 2) { > +if (pExpr->op != TK_FUNCTION || !pExpr->x.pList || > + pExpr->x.pList->nExpr != 2) > return 0; > -} > assert(!ExprHasProperty(pExpr, EP_xIsSelect)); > pDef = sqlite3FindFunction(db, pExpr->u.zToken, 2, 0); > if (NEVER(pDef == 0) || (pDef->funcFlags & SQLITE_FUNC_LIKE) == 0) { > return 0; > } > - > -/* The memcpy() statement assumes that the wildcard characters are > -* the first three statements in the compareInfo structure. The > -* asserts() that follow verify that assumption > -*/ > -memcpy(aWc, pDef->pUserData, 3); > -assert((char *)&likeInfoAlt == (char *)&likeInfoAlt.matchAll); > -assert(&((char *)&likeInfoAlt)[1] == (char *)&likeInfoAlt.matchOne); > -assert(&((char *)&likeInfoAlt)[2] == (char *)&likeInfoAlt.matchSet); > -*pIsNocase = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; > +*is_like_ci = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; > return 1; > } > @@ -1962,16 +1849,14 @@ sqlite3RegisterBuiltinFunctions(void) > AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, > groupConcatFinalize), > -LIKEFUNC(glob, 2, &globInfo, > -SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), > #ifdef SQLITE_CASE_SENSITIVE_LIKE > -LIKEFUNC(like, 2, &likeInfoAlt, > +LIKEFUNC(like, 2, &case_sensitive_like, > SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), > -LIKEFUNC(like, 3, &likeInfoAlt, > +LIKEFUNC(like, 3, &case_sensitive_like, > SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE), > #else > -LIKEFUNC(like, 2, &likeInfoNorm, SQLITE_FUNC_LIKE), > -LIKEFUNC(like, 3, &likeInfoNorm, SQLITE_FUNC_LIKE), > +LIKEFUNC(like, 2, &case_insensitive_like, SQLITE_FUNC_LIKE), > +LIKEFUNC(like, 3, &case_insensitive_like, SQLITE_FUNC_LIKE), > #endif > #ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION > FUNCTION(unknown, -1, 0, 0, unknownFunc), > diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c > index 5fb29c75c..26a602b23 100644 > --- a/src/box/sql/pragma.c > +++ b/src/box/sql/pragma.c > @@ -771,8 +771,10 @@ sqlite3Pragma(Parse * pParse, Token * pId,/* > First part of [schema.]id field */ > } > #endif > -/* Reinstall the LIKE and GLOB functions. The variant of LIKE * > -* used will be case sensitive or not depending on the RHS. > +/** > +* Reinstall the LIKE and functions. The variant > +* of LIKE * used will be case sensitive or not > +* depending on the RHS. > */ > case PragTyp_CASE_SENSITIVE_LIKE:{ > if (zRight) { > diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h > index e7a02dc1d..a805adf22 100644 > --- a/src/box/sql/sqliteInt.h > +++ b/src/box/sql/sqliteInt.h > @@ -565,16 +565,15 @@ char * > sqlite3_vsnprintf(int, char *, const char *, va_list); > int > -sqlite3_strlike(const char *zGlob, const char *zStr, > -unsigned int cEsc); > +sql_strlike_cs(const char *zLike, const char *zStr, unsigned int cEsc); > + > +int > +sql_strlike_ci(const char *zLike, const char *zStr, unsigned int cEsc); > typedef void (*sqlite3_destructor_type) (void *); > #define SQLITE_STATIC ((sqlite3_destructor_type)0) > #define SQLITE_TRANSIENT ((sqlite3_destructor_type)-1) > -int > -sqlite3_strglob(const char *zGlob, const char *zStr); > - > int > sqlite3_prepare(sqlite3 * db,/* Database handle */ > const char *zSql,/* SQL statement, UTF-8 encoded */ > @@ -701,9 +700,6 @@ struct on_conflict { > enum on_conflict_action optimized_action; > }; > -void * > -sqlite3_user_data(sqlite3_context *); > - > void > sqlite3_randomness(int N, void *P); > @@ -2355,7 +2351,7 @@ struct Expr { > #define EP_Distinct 0x000010/* Aggregate function with DISTINCT > keyword */ > #define EP_VarSelect 0x000020/* pSelect is correlated, not constant */ > #define EP_DblQuoted 0x000040/* token.z was originally in "..." */ > -#define EP_InfixFunc 0x000080/* True for an infix function: LIKE, > GLOB, etc */ > +#define EP_InfixFunc 0x000080/* True for an infix function: LIKE, etc */ > #define EP_Collate 0x000100/* Tree contains a TK_COLLATE operator */ > #define EP_Generic 0x000200/* Ignore COLLATE or affinity on this > tree */ > #define EP_IntValue 0x000400/* Integer value contained in u.iValue */ > @@ -4378,7 +4374,7 @@ index_column_count(const Index *); > bool > index_is_unique_not_null(const Index *); > void sqlite3RegisterLikeFunctions(sqlite3 *, int); > -int sqlite3IsLikeFunction(sqlite3 *, Expr *, int *, char *); > +int sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_case_insensitive); > void sqlite3SchemaClear(sqlite3 *); > Schema *sqlite3SchemaCreate(sqlite3 *); > int sqlite3CreateFunc(sqlite3 *, const char *, int, int, void *, > diff --git a/src/box/sql/sqliteLimit.h b/src/box/sql/sqliteLimit.h > index b88c9c6d3..e76353aff 100644 > --- a/src/box/sql/sqliteLimit.h > +++ b/src/box/sql/sqliteLimit.h > @@ -164,8 +164,7 @@ enum { > #endif > /* > - * Maximum length (in bytes) of the pattern in a LIKE or GLOB > - * operator. > + * Maximum length (in bytes) of the pattern in a LIKE operator. > */ > #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH > #define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 > diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c > index 0c978142d..3f10f4d68 100644 > --- a/src/box/sql/vdbe.c > +++ b/src/box/sql/vdbe.c > @@ -5521,7 +5521,7 @@ vdbe_return: > testcase( nVmStep>0); > p->aCounter[SQLITE_STMTSTATUS_VM_STEP] += (int)nVmStep; > assert(rc!=SQLITE_OK || nExtraDelete==0 > -|| sqlite3_strlike("DELETE%",p->zSql,0)!=0 > +|| sql_strlike_ci("DELETE%", p->zSql, 0) != 0 > ); > return rc; > diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c > index c35c25ac4..f864ea7fa 100644 > --- a/src/box/sql/wherecode.c > +++ b/src/box/sql/wherecode.c > @@ -339,7 +339,7 @@ sqlite3WhereAddScanStatus(Vdbe * v,/* Vdbe to add > scanstatus entry to */ > * automatically disabled. In this way, terms get disabled if derived > * virtual terms are tested first. For example: > * > - * x GLOB 'abc*' AND x>='abc' AND x<'acd' > + * x LIKE 'abc%' AND x>='abc' AND x<'acd' > * \___________/ \______/ \_____/ > * parent child1 child2 > * > diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c > index 612868695..2d9fb6453 100644 > --- a/src/box/sql/whereexpr.c > +++ b/src/box/sql/whereexpr.c > @@ -218,38 +218,61 @@ operatorMask(int op) > return c; > } > +/** > + * Wildcard characters. > + */ > +#define match_one '_' > +#define match_all '%' If possible - move the define to a header which both (whereexpr and func) file include. This also require to give more descriptive name, e.g. LIKE_MATCH_ONE. > + > #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION > -/* > - * Check to see if the given expression is a LIKE or GLOB operator that > - * can be optimized using inequality constraints. Return TRUE if it is > - * so and false if not. > +/** > + * Check to see if the given expression is a LIKE operator that > + * can be optimized using inequality constraints. > * > - * In order for the operator to be optimizible, the RHS must be a string > - * literal that does not begin with a wildcard. The LHS must be a column > - * that may only be NULL, a string, or a BLOB, never a number. The > - * collating sequence for the column on the LHS must be appropriate for > - * the operator. > + * In order for the operator to be optimizible, the RHS must be a > + * string literal that does not begin with a wildcard. The LHS > + * must be a column that may only be NULL, a string, or a BLOB, > + * never a number. The collating sequence for the column on the > + * LHS must be appropriate for the operator. > + * > + * @param pParse Parsing and code generating context. > + * @param pExpr Test this expression. > + * @param ppPrefix Pointer to TK_STRING expression with > + * pattern prefix. > + * @param pisComplete True if the only wildcard is '%' in the > + * last character. > + * @param pnoCase True if case insensitive. > + * > + * @retval True if the given expr is a LIKE operator & is > + * optimizable using inequality constraints. > + * False if not. > */ > static int > -isLikeOrGlob(Parse * pParse,/* Parsing and code generating context */ > - Expr * pExpr,/* Test this expression */ > - Expr ** ppPrefix,/* Pointer to TK_STRING expression with pattern > prefix */ > - int *pisComplete,/* True if the only wildcard is % in the last > character */ > - int *pnoCase/* True if uppercase is equivalent to lowercase */ > - ) > +is_like(Parse *pParse, > +Expr *pExpr, > +Expr **ppPrefix, > +int *pisComplete, > +int *pnoCase) > { > -const char *z = 0;/* String on RHS of LIKE operator */ > -Expr *pRight, *pLeft;/* Right and left size of LIKE operator */ > -ExprList *pList;/* List of operands to the LIKE operator */ > -int c;/* One character in z[] */ > -int cnt;/* Number of non-wildcard prefix characters */ > -char wc[3];/* Wildcard characters */ > -sqlite3 *db = pParse->db;/* Database connection */ > +/* String on RHS of LIKE operator */ > +const char *z = 0; > +/* Right and left size of LIKE operator */ > +Expr *pRight, *pLeft; > +/* List of operands to the LIKE operator */ > +ExprList *pList; > +/* One character in z[] */ > +int c; > +/* Number of non-wildcard prefix characters */ > +int cnt; > +/* Database connection */ > +sqlite3 *db = pParse->db; > sqlite3_value *pVal = 0; > -int op;/* Opcode of pRight */ > -int rc;/* Result code to return */ > +/* Opcode of pRight */ > +int op; > +/* Result code to return */ > +int rc; > -if (!sqlite3IsLikeFunction(db, pExpr, pnoCase, wc)) { > +if (!sql_is_like_func(db, pExpr, pnoCase)) { > return 0; > } > pList = pExpr->x.pList; > @@ -257,8 +280,9 @@ isLikeOrGlob(Parse * pParse,/* Parsing and code > generating context */ > /* Value might be numeric */ > if (pLeft->op != TK_COLUMN || > sqlite3ExprAffinity(pLeft) != AFFINITY_TEXT) { > -/* IMP: R-02065-49465 The left-hand side of the LIKE or GLOB operator > must > -* be the name of an indexed column with TEXT affinity. > +/* IMP: R-02065-49465 The left-hand side of the > +* LIKE operator must be the name of an indexed > +* column with TEXT affinity. > */ > return 0; > } > @@ -281,13 +305,11 @@ isLikeOrGlob(Parse * pParse,/* Parsing and code > generating context */ > } > if (z) { > cnt = 0; > -while ((c = z[cnt]) != 0 && c != wc[0] && c != wc[1] > - && c != wc[2]) { > +while ((c = z[cnt]) != 0 && c != match_one && c != match_all) > cnt++; > -} > if (cnt != 0 && 255 != (u8) z[cnt - 1]) { > Expr *pPrefix; > -*pisComplete = c == wc[0] && z[cnt + 1] == 0; > +*pisComplete = c == match_all && z[cnt + 1] == 0; > pPrefix = sqlite3Expr(db, TK_STRING, z); > if (pPrefix) > pPrefix->u.zToken[cnt] = 0; > @@ -943,19 +965,32 @@ exprAnalyze(SrcList * pSrc,/* the FROM clause */ > int idxTerm/* Index of the term to be analyzed */ > ) > { > -WhereInfo *pWInfo = pWC->pWInfo;/* WHERE clause processing context */ > -WhereTerm *pTerm;/* The term to be analyzed */ > -WhereMaskSet *pMaskSet;/* Set of table index masks */ > -Expr *pExpr;/* The expression to be analyzed */ > -Bitmask prereqLeft;/* Prerequesites of the pExpr->pLeft */ > -Bitmask prereqAll;/* Prerequesites of pExpr */ > -Bitmask extraRight = 0;/* Extra dependencies on LEFT JOIN */ > -Expr *pStr1 = 0;/* RHS of LIKE/GLOB operator */ > -int isComplete = 0;/* RHS of LIKE/GLOB ends with wildcard */ > -int noCase = 0;/* uppercase equivalent to lowercase */ > -int op;/* Top-level operator. pExpr->op */ > -Parse *pParse = pWInfo->pParse;/* Parsing context */ > -sqlite3 *db = pParse->db;/* Database connection */ > +/* WHERE clause processing context */ > +WhereInfo *pWInfo = pWC->pWInfo; > +/* The term to be analyzed */ > +WhereTerm *pTerm; > +/* Set of table index masks */ > +WhereMaskSet *pMaskSet; > +/* The expression to be analyzed */ > +Expr *pExpr; > +/* Prerequesites of the pExpr->pLeft */ > +Bitmask prereqLeft; > +/* Prerequesites of pExpr */ > +Bitmask prereqAll; > +/* Extra dependencies on LEFT JOIN */ > +Bitmask extraRight = 0; > +/* RHS of LIKE operator */ > +Expr *pStr1 = 0; > +/* RHS of LIKE ends with wildcard */ > +int isComplete = 0; > +/* uppercase equivalent to lowercase */ > +int noCase = 0; > +/* Top-level operator. pExpr->op */ > +int op; > +/* Parsing context */ > +Parse *pParse = pWInfo->pParse; > +/* Database connection */ > +sqlite3 *db = pParse->db; > if (db->mallocFailed) { > return; > @@ -1111,37 +1146,44 @@ exprAnalyze(SrcList * pSrc,/* the FROM clause */ > #endif/* SQLITE_OMIT_OR_OPTIMIZATION */ > #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION > -/* Add constraints to reduce the search space on a LIKE or GLOB > +/** > +* Add constraints to reduce the search space on a LIKE > * operator. > * > -* A like pattern of the form "x LIKE 'aBc%'" is changed into constraints > +* A like pattern of the form "x LIKE 'aBc%'" is changed > +* into constraints: > * > * x>='ABC' AND x<'abd' AND x LIKE 'aBc%' > * > -* The last character of the prefix "abc" is incremented to form the > -* termination condition "abd". If case is not significant (the default > -* for LIKE) then the lower-bound is made all uppercase and the upper- > -* bound is made all lowercase so that the bounds also work when comparing > -* BLOBs. > +* The last character of the prefix "abc" is incremented > +* to form the termination condition "abd". If case is > +* not significant (the default for LIKE) then the > +* lower-bound is made all uppercase and the upper-bound > +* is made all lowercase so that the bounds also work > +* when comparing BLOBs. > */ > if (pWC->op == TK_AND > - && isLikeOrGlob(pParse, pExpr, &pStr1, &isComplete, &noCase) > - ) { > -Expr *pLeft;/* LHS of LIKE/GLOB operator */ > -Expr *pStr2;/* Copy of pStr1 - RHS of LIKE/GLOB operator */ > + && is_like(pParse, pExpr, &pStr1, &isComplete, &noCase)) { > +/* LHS of LIKE operator */ > +Expr *pLeft; > +/* Copy of pStr1 - RHS of LIKE operator */ > +Expr *pStr2; > Expr *pNewExpr1; > Expr *pNewExpr2; > int idxNew1; > int idxNew2; > -const char *zCollSeqName;/* Name of collating sequence */ > +/* Name of collating sequence */ > +const char *zCollSeqName; > const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC; > pLeft = pExpr->x.pList->a[1].pExpr; > pStr2 = sqlite3ExprDup(db, pStr1, 0); > -/* Convert the lower bound to upper-case and the upper bound to > -* lower-case (upper-case is less than lower-case in ASCII) so that > -* the range constraints also work for BLOBs > +/** > +* Convert the lower bound to upper-case and the > +* upper bound to lower-case (upper-case is less > +* than lower-case in ASCII) so that the range > +* constraints also work for BLOBs > */ > if (noCase && !pParse->db->mallocFailed) { > int i; > diff --git a/test/sql-tap/alter.test.lua b/test/sql-tap/alter.test.lua > index cfe280121..98338c493 100755 > --- a/test/sql-tap/alter.test.lua > +++ b/test/sql-tap/alter.test.lua > @@ -232,7 +232,7 @@ test:do_execsql_test( > [[ > CREATE TABLE xyz(x PRIMARY KEY); > ALTER TABLE xyz RENAME TO "xyz1234abc"; > - SELECT "name" FROM "_space" WHERE "name" GLOB 'xyz*'; > + SELECT "name" FROM "_space" WHERE "name" = 'xyz1234abc'; > ]], { > -- <alter-5.1> > "xyz1234abc" > @@ -243,7 +243,7 @@ test:do_execsql_test( > "alter-5.2", > [[ > ALTER TABLE "xyz1234abc" RENAME TO xyzabc; > - SELECT "name" FROM "_space" WHERE "name" GLOB 'XYZ*'; > + SELECT "name" FROM "_space" WHERE "name" = 'XYZABC'; > ]], { > -- <alter-5.2> > "XYZABC" > diff --git a/test/sql-tap/analyze9.test.lua > b/test/sql-tap/analyze9.test.lua > index 3b3d52f67..ec3e545d8 100755 > --- a/test/sql-tap/analyze9.test.lua > +++ b/test/sql-tap/analyze9.test.lua > @@ -206,10 +206,10 @@ test:do_execsql_test( > INSERT INTO t1 VALUES(81, 1, 'one-i'); > INSERT INTO t1 VALUES(91, 1, 'one-j'); > INSERT INTO t1 SELECT a+1,2,'two' || substr(c,4) FROM t1; > - INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 > WHERE c GLOB 'one-*'; > - INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE > c GLOB 'one-*'; > - INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE > c GLOB 'one-*'; > - INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE > c GLOB 'one-*'; > + INSERT INTO t1 SELECT a+2,3,'three'||substr(c,4) FROM t1 > WHERE c LIKE 'one-%'; > + INSERT INTO t1 SELECT a+3,4,'four'||substr(c,4) FROM t1 WHERE > c LIKE 'one-%'; > + INSERT INTO t1 SELECT a+4,5,'five'||substr(c,4) FROM t1 WHERE > c LIKE 'one-%'; > + INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE > c LIKE 'one-%'; > CREATE INDEX t1b ON t1(b); > ANALYZE; > SELECT c FROM t1 WHERE b=3 AND a BETWEEN 30 AND 60; > diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua > index 9780d2cf9..0d69e8535 100755 > --- a/test/sql-tap/e_expr.test.lua > +++ b/test/sql-tap/e_expr.test.lua > @@ -1,6 +1,6 @@ > #!/usr/bin/env tarantool > test = require("sqltester") > -test:plan(10665) > +test:plan(10647) > --!./tcltestrunner.lua > -- 2010 July 16 > @@ -77,10 +77,7 @@ local operations = { > {"<>", "ne1"}, > {"!=", "ne2"}, > {"IS", "is"}, > --- NOTE: This test needs refactoring after deletion of GLOB & > ---type restrictions for LIKE. (See #3572) > -- {"LIKE", "like"}, > --- {"GLOB", "glob"}, > {"AND", "and"}, > {"OR", "or"}, > {"MATCH", "match"}, > @@ -98,12 +95,10 @@ operations = { > {"+", "-"}, > {"<<", ">>", "&", "|"}, > {"<", "<=", ">", ">="}, > --- NOTE: This test needs refactoring after deletion of GLOB & > ---type restrictions for LIKE. (See #3572) > -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & > --- are waiting for their hour, don't confuse them > ---being commented with ticket above. > - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, > +-- are waiting for their hour, don't confuse them > +-- being commented with commenting of "LIKE". > + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, > {"AND"}, > {"OR"}, > } > @@ -128,7 +123,7 @@ end > -- EVIDENCE-OF: R-15514-65163 SQLite understands the following binary > -- operators, in order from highest to lowest precedence: || * / % + - > -- << >> & | < <= > >= = == != <> IS IS > --- NOT IN LIKE GLOB MATCH REGEXP AND OR > +-- NOT IN LIKE MATCH REGEXP AND OR > -- > -- EVIDENCE-OF: R-38759-38789 Operators IS and IS NOT have the same > -- precedence as =. > @@ -482,7 +477,6 @@ for _, op in ipairs(oplist) do > end > end > end > - > --------------------------------------------------------------------------- > -- Test the IS and IS NOT operators. > -- > @@ -1303,11 +1297,11 @@ end > test:execsql [[ > CREATE TABLE tblname(cname PRIMARY KEY); > ]] > + > local function glob(args) > return 1 > end > -box.internal.sql_create_function("GLOB", glob) > box.internal.sql_create_function("MATCH", glob) > box.internal.sql_create_function("REGEXP", glob) > local test_cases12 ={ > @@ -1369,47 +1363,43 @@ local test_cases12 ={ > {47, "EXPR1 LIKE EXPR2"}, > {48, "EXPR1 LIKE EXPR2 ESCAPE EXPR"}, > - {49, "EXPR1 GLOB EXPR2"}, > - {50, "EXPR1 GLOB EXPR2 ESCAPE EXPR"}, > - {51, "EXPR1 REGEXP EXPR2"}, > - {52, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, > - {53, "EXPR1 MATCH EXPR2"}, > - {54, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, > - {55, "EXPR1 NOT LIKE EXPR2"}, > - {56, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, > - {57, "EXPR1 NOT GLOB EXPR2"}, > - {58, "EXPR1 NOT GLOB EXPR2 ESCAPE EXPR"}, > - {59, "EXPR1 NOT REGEXP EXPR2"}, > - {60, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, > - {61, "EXPR1 NOT MATCH EXPR2"}, > - {62, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, > - > - {63, "EXPR IS NULL"}, > - {64, "EXPR IS NOT NULL"}, > - > - {65, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, > - {66, "EXPR BETWEEN EXPR1 AND EXPR2"}, > - > - {67, "EXPR NOT IN (SELECT cname FROM tblname)"}, > - {68, "EXPR NOT IN (1)"}, > - {69, "EXPR NOT IN (1, 2, 3)"}, > - {70, "EXPR NOT IN tblname"}, > - {71, "EXPR IN (SELECT cname FROM tblname)"}, > - {72, "EXPR IN (1)"}, > - {73, "EXPR IN (1, 2, 3)"}, > - {74, "EXPR IN tblname"}, > - > - {75, "EXISTS (SELECT cname FROM tblname)"}, > - {76, "NOT EXISTS (SELECT cname FROM tblname)"}, > - > - {77, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > - {78, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, > - {79, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE > EXPR2 END"}, > - {80, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > - {81, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > - {82, "CASE WHEN EXPR1 THEN EXPR2 END"}, > - {83, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 > END"}, > - {84, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > + {49, "EXPR1 REGEXP EXPR2"}, > + {50, "EXPR1 REGEXP EXPR2 ESCAPE EXPR"}, > + {51, "EXPR1 MATCH EXPR2"}, > + {52, "EXPR1 MATCH EXPR2 ESCAPE EXPR"}, > + {53, "EXPR1 NOT LIKE EXPR2"}, > + {54, "EXPR1 NOT LIKE EXPR2 ESCAPE EXPR"}, > + {55, "EXPR1 NOT REGEXP EXPR2"}, > + {56, "EXPR1 NOT REGEXP EXPR2 ESCAPE EXPR"}, > + {57, "EXPR1 NOT MATCH EXPR2"}, > + {58, "EXPR1 NOT MATCH EXPR2 ESCAPE EXPR"}, > + > + {59, "EXPR IS NULL"}, > + {60, "EXPR IS NOT NULL"}, > + > + {61, "EXPR NOT BETWEEN EXPR1 AND EXPR2"}, > + {62, "EXPR BETWEEN EXPR1 AND EXPR2"}, > + > + {63, "EXPR NOT IN (SELECT cname FROM tblname)"}, > + {64, "EXPR NOT IN (1)"}, > + {65, "EXPR NOT IN (1, 2, 3)"}, > + {66, "EXPR NOT IN tblname"}, > + {67, "EXPR IN (SELECT cname FROM tblname)"}, > + {68, "EXPR IN (1)"}, > + {69, "EXPR IN (1, 2, 3)"}, > + {70, "EXPR IN tblname"}, > + > + {71, "EXISTS (SELECT cname FROM tblname)"}, > + {72, "NOT EXISTS (SELECT cname FROM tblname)"}, > + > + {73, "CASE EXPR WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > + {74, "CASE EXPR WHEN EXPR1 THEN EXPR2 END"}, > + {75, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE > EXPR2 END"}, > + {76, "CASE EXPR WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > + {77, "CASE WHEN EXPR1 THEN EXPR2 ELSE EXPR END"}, > + {78, "CASE WHEN EXPR1 THEN EXPR2 END"}, > + {79, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 ELSE EXPR2 > END"}, > + {80, "CASE WHEN EXPR1 THEN EXPR2 WHEN EXPR THEN EXPR1 END"}, > } > for _, val in ipairs(test_cases12) do > @@ -1802,7 +1792,7 @@ test:do_execsql_test( > }) > --------------------------------------------------------------------------- > --- Test the statements related to the LIKE and GLOB operators. > +-- Test the statements related to the LIKE operator. > -- > -- EVIDENCE-OF: R-16584-60189 The LIKE operator does a pattern matching > -- comparison. > @@ -2274,102 +2264,38 @@ test:do_execsql_test( > -- </e_expr-16.1.7> > }) > --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but > --- uses the Unix file globbing syntax for its wildcards. > --- > --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. > +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the > +-- NOT keyword to invert the sense of the test. > -- > test:do_execsql_test( > - "e_expr-17.1.1", > - [[ > - SELECT 'abcxyz' GLOB 'abc%' > - ]], { > - -- <e_expr-17.1.1> > - 0 > - -- </e_expr-17.1.1> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.2", > - [[ > - SELECT 'abcxyz' GLOB 'abc*' > - ]], { > - -- <e_expr-17.1.2> > - 1 > - -- </e_expr-17.1.2> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.3", > - [[ > - SELECT 'abcxyz' GLOB 'abc___' > - ]], { > - -- <e_expr-17.1.3> > - 0 > - -- </e_expr-17.1.3> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.4", > - [[ > - SELECT 'abcxyz' GLOB 'abc???' > - ]], { > - -- <e_expr-17.1.4> > - 1 > - -- </e_expr-17.1.4> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.5", > + "e_expr-17.2.0", > [[ > - SELECT 'abcxyz' GLOB 'abc*' > + PRAGMA case_sensitive_like = 1; > + SELECT 'abcxyz' NOT LIKE 'ABC%'; > ]], { > - -- <e_expr-17.1.5> > + -- <e_expr-17.2.0> > 1 > - -- </e_expr-17.1.5> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.6", > - [[ > - SELECT 'ABCxyz' GLOB 'abc*' > - ]], { > - -- <e_expr-17.1.6> > - 0 > - -- </e_expr-17.1.6> > - }) > - > -test:do_execsql_test( > - "e_expr-17.1.7", > - [[ > - SELECT 'abcxyz' GLOB 'ABC*' > - ]], { > - -- <e_expr-17.1.7> > - 0 > - -- </e_expr-17.1.7> > + -- </e_expr-17.2.0> > }) > --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the > --- NOT keyword to invert the sense of the test. > --- > test:do_execsql_test( > "e_expr-17.2.1", > [[ > - SELECT 'abcxyz' NOT GLOB 'ABC*' > + SELECT 'abcxyz' NOT LIKE 'abc%' > ]], { > -- <e_expr-17.2.1> > - 1 > + 0 > -- </e_expr-17.2.1> > }) > test:do_execsql_test( > "e_expr-17.2.2", > [[ > - SELECT 'abcxyz' NOT GLOB 'abc*' > + PRAGMA case_sensitive_like = 0 > ]], { delete 17.2.1 17.2.2 (it was creaget for glob, like tested below), and move `PRAGMA case_sensitive_like = 0` out of the test (it is not a test) (use just test:execsql or box.exequte) > -- <e_expr-17.2.2> > - 0 > - -- </e_expr-17.2.2> > + > + -- <e_expr-17.2.2> > }) > test:do_execsql_test( > @@ -2448,62 +2374,6 @@ if 0>0 then > db("nullvalue", "") > end > --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by > --- calling the function glob(Y,X) and can be modified by overriding that > --- function. > - > -local globargs = {} > -local function globfunc(...) > - local args = {...} > - for i, v in ipairs(args) do > - table.insert(globargs, v) > - end > - return 1 > -end > -box.internal.sql_create_function("GLOB", globfunc, 2) > ---db("func", "glob", "-argcount", 2, "globfunc") Do not delete this test. Rewrite it for like. > - > -test:do_execsql_test( > - "e_expr-17.3.1", > - [[ > - SELECT 'abc' GLOB 'def' > - ]], { > - -- <e_expr-17.3.1> > - 1 > - -- </e_expr-17.3.1> > - }) > - > -test:do_test( > - "e_expr-17.3.2", > - function() > - return globargs > - end, { > - -- <e_expr-17.3.2> > - "def", "abc" > - -- </e_expr-17.3.2> > - }) > - > -globargs = { } > -test:do_execsql_test( > - "e_expr-17.3.3", > - [[ > - SELECT 'X' NOT GLOB 'Y' > - ]], { > - -- <e_expr-17.3.3> > - 0 > - -- </e_expr-17.3.3> > - }) > - > -test:do_test( > - "e_expr-17.3.4", > - function() > - return globargs > - end, { > - -- <e_expr-17.3.4> > - "Y", "X" > - -- </e_expr-17.3.4> > - }) > - > --sqlite3("db", "test.db") > -- EVIDENCE-OF: R-41650-20872 No regexp() user function is defined by > -- default and so use of the REGEXP operator will normally result in an > 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 addf0e36d..a6d822ccd 100755 > --- a/test/sql-tap/gh-3251-string-pattern-comparison.test.lua > +++ b/test/sql-tap/gh-3251-string-pattern-comparison.test.lua > @@ -142,17 +142,17 @@ for i, tested_string in ipairs(invalid_testcases) do > local test_name = prefix .. "2." .. tostring(i) > local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" > test:do_catchsql_test(test_name, test_itself, > - {1, "LIKE or GLOB pattern can only contain > UTF-8 characters"}) > + {1, "LIKE pattern can only contain UTF-8 > characters"}) > test_name = prefix .. "3." .. tostring(i) > test_itself = "SELECT 'abc' LIKE 'abc" .. tested_string .. "';" > test:do_catchsql_test(test_name, test_itself, > - {1, "LIKE or GLOB pattern can only contain > UTF-8 characters"}) > + {1, "LIKE pattern can only contain UTF-8 > characters"}) > test_name = prefix .. "4." .. tostring(i) > test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "c';" > test:do_catchsql_test(test_name, test_itself, > - {1, "LIKE or GLOB pattern can only contain > UTF-8 characters"}) > + {1, "LIKE pattern can only contain UTF-8 > characters"}) > -- Just skipping if row value predicand contains invalid character. > @@ -185,7 +185,7 @@ local valid_testcases = { > -- Valid testcases. > for i, tested_string in ipairs(valid_testcases) do > - test_name = prefix .. "8." .. tostring(i) > + local test_name = prefix .. "8." .. tostring(i) > local test_itself = "SELECT 'abc' LIKE 'ab" .. tested_string .. "';" > test:do_execsql_test(test_name, test_itself, {0}) > diff --git a/test/sql-tap/like2.test.lua b/test/sql-tap/like2.test.lua > index abcac39fb..c6c81cb4d 100755 > --- a/test/sql-tap/like2.test.lua > +++ b/test/sql-tap/like2.test.lua > @@ -12,11 +12,11 @@ test:plan(282) > -- May you find forgiveness for yourself and forgive others. > -- May you share freely, never taking more than you give. > -- > -------------------------------------------------------------------------- > --- This file implements regression tests for SQLite library. The > --- focus of this file is testing the LIKE and GLOB operators and > --- in particular the optimizations that occur to help those operators > --- run faster. > +----------------------------------------------------------------- > +-- This file implements regression tests for SQLite library. The > +-- focus of this file is testing the LIKE operator and > +-- in particular the optimizations that occur to help this > +-- operator run faster. > -- > -- $Id: like2.test,v 1.1 2008/05/26 18:33:41 drh Exp $ > -- ["set","testdir",[["file","dirname",["argv0"]]]] [-- Attachment #2: Type: text/html, Size: 147246 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-09-11 12:03 ` Alex Khatskevich @ 2018-10-18 20:28 ` Nikita Tatunov 2018-10-21 3:48 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-10-18 20:28 UTC (permalink / raw) To: Alexander Turenko; +Cc: tarantool-patches, korablev [-- Attachment #1: Type: text/plain, Size: 17820 bytes --] Hello! Consider some comments please. Diff with previous version will be at the end. > On Sep 11, 2018, at 15:03, Alex Khatskevich <avkhatskevich@tarantool.org> wrote: > > >>>>>> >>>>>> - "ESCAPE expression must be a single character", >>>>>> + "ESCAPE expression must be a" >>>>>> + " single character", >>>>> Do not split error messages at the middle of a sentence. It makes errors ungreppable. >>>>> Make it <80 somehow different. >>>>> >>>> >>>> Have already been discussed in this thread. >>> I suppose that we concluded to try to fit into 80 and split the string only >>> in case it is impossible. >> >> I don’t think so. Anyways, Alexander could you please give your thoughts? > Discussed with Nikita, Alexander, Vladimir, Kirill... Conclusion: use `const char temp variable` if possible. > like this: > ``` > const char *const err_msg = > "ESCAPE expression must be a single character"; > if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { > sqlite3_result_error(context, > err_msg, > -1); > return; > ``` > > If it does not help (but it is) split the message. Splitted both error messages. >>>> diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua >>>> index 162026845..0d69e8535 100755 >>>> --- a/test/sql-tap/e_expr.test.lua >>>> +++ b/test/sql-tap/e_expr.test.lua >>>> @@ -1,6 +1,6 @@ >>>> #!/usr/bin/env tarantool >>>> test = require("sqltester") >>>> -test:plan(11521) >>>> +test:plan(10647) >>>> >>>> --!./tcltestrunner.lua >>>> -- 2010 July 16 >>>> @@ -77,7 +77,7 @@ local operations = { >>>> {"<>", "ne1"}, >>>> {"!=", "ne2"}, >>>> {"IS", "is"}, >>>> - {"LIKE", "like"}, >>>> +-- {"LIKE", "like"}, >>>> {"AND", "and"}, >>>> {"OR", "or"}, >>>> {"MATCH", "match"}, >>>> @@ -96,8 +96,9 @@ operations = { >>>> {"<<", ">>", "&", "|"}, >>>> {"<", "<=", ">", ">="}, >>>> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >>>> --- are waiting for their hour. >>>> - {"=", "==", "!=", "<>", "LIKE"}, --"MATCH", "REGEXP"}, >>>> +-- are waiting for their hour, don't confuse them >>>> +-- being commented with commenting of "LIKE". >>>> + {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, >>> Delete Like. No one returns here. >> >> It’s a table of all of the operators thus I think it still worth leaving it there. >> Who knows, it may be that someone will revive tests for LIKE. > Delete Like. No one returns here. > We do not need a garbage. Like is not relevant anymore for this test. Deleted. >> >> /* >> - * Maximum length (in bytes) of the pattern in a LIKE or GLOB >> - * operator. >> + * Maximum length (in bytes) of the pattern in a LIKE operator. >> */ >> #ifndef SQLITE_MAX_LIKE_PATTERN_LENGTH >> #define SQLITE_MAX_LIKE_PATTERN_LENGTH 50000 >> diff --git a/src/box/sql/vdbe.c b/src/box/sql/vdbe.c >> index 0c978142d..3f10f4d68 100644 >> --- a/src/box/sql/vdbe.c >> +++ b/src/box/sql/vdbe.c >> @@ -5521,7 +5521,7 @@ vdbe_return: >> testcase( nVmStep>0); >> p->aCounter[SQLITE_STMTSTATUS_VM_STEP] += (int)nVmStep; >> assert(rc!=SQLITE_OK || nExtraDelete==0 >> - || sqlite3_strlike("DELETE%",p->zSql,0)!=0 >> + || sql_strlike_ci("DELETE%", p->zSql, 0) != 0 >> ); >> return rc; >> >> diff --git a/src/box/sql/wherecode.c b/src/box/sql/wherecode.c >> index c35c25ac4..f864ea7fa 100644 >> --- a/src/box/sql/wherecode.c >> +++ b/src/box/sql/wherecode.c >> @@ -339,7 +339,7 @@ sqlite3WhereAddScanStatus(Vdbe * v, /* Vdbe to add scanstatus entry to */ >> * automatically disabled. In this way, terms get disabled if derived >> * virtual terms are tested first. For example: >> * >> - * x GLOB 'abc*' AND x>='abc' AND x<'acd' >> + * x LIKE 'abc%' AND x>='abc' AND x<'acd' >> * \___________/ \______/ \_____/ >> * parent child1 child2 >> * >> diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c >> index 612868695..2d9fb6453 100644 >> --- a/src/box/sql/whereexpr.c >> +++ b/src/box/sql/whereexpr.c >> @@ -218,38 +218,61 @@ operatorMask(int op) >> return c; >> } >> >> +/** >> + * Wildcard characters. >> + */ >> +#define match_one '_' >> +#define match_all '%' > If possible - move the define to a header which both (whereexpr and func) file include. > This also require to give more descriptive name, e.g. LIKE_MATCH_ONE. Moved them to sqliteInt.h and renamed to: 1) `MATCH_ALL_WILDCARD`. 2) `MATCH_ONE_WILDCARD`. >> for _, val in ipairs(test_cases12) do >> @@ -1802,7 +1792,7 @@ test:do_execsql_test( >> }) >> >> --------------------------------------------------------------------------- >> --- Test the statements related to the LIKE and GLOB operators. >> +-- Test the statements related to the LIKE operator. >> -- >> -- EVIDENCE-OF: R-16584-60189 The LIKE operator does a pattern matching >> -- comparison. >> @@ -2274,102 +2264,38 @@ test:do_execsql_test( >> -- </e_expr-16.1.7> >> }) >> >> --- EVIDENCE-OF: R-52087-12043 The GLOB operator is similar to LIKE but >> --- uses the Unix file globbing syntax for its wildcards. >> --- >> --- EVIDENCE-OF: R-09813-17279 Also, GLOB is case sensitive, unlike LIKE. >> +-- EVIDENCE-OF: R-39616-20555 LIKE may be preceded by the >> +-- NOT keyword to invert the sense of the test. >> -- >> test:do_execsql_test( >> - "e_expr-17.1.1", >> - [[ >> - SELECT 'abcxyz' GLOB 'abc%' >> - ]], { >> - -- <e_expr-17.1.1> >> - 0 >> - -- </e_expr-17.1.1> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.2", >> - [[ >> - SELECT 'abcxyz' GLOB 'abc*' >> - ]], { >> - -- <e_expr-17.1.2> >> - 1 >> - -- </e_expr-17.1.2> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.3", >> - [[ >> - SELECT 'abcxyz' GLOB 'abc___' >> - ]], { >> - -- <e_expr-17.1.3> >> - 0 >> - -- </e_expr-17.1.3> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.4", >> - [[ >> - SELECT 'abcxyz' GLOB 'abc???' >> - ]], { >> - -- <e_expr-17.1.4> >> - 1 >> - -- </e_expr-17.1.4> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.5", >> + "e_expr-17.2.0", >> [[ >> - SELECT 'abcxyz' GLOB 'abc*' >> + PRAGMA case_sensitive_like = 1; >> + SELECT 'abcxyz' NOT LIKE 'ABC%'; >> ]], { >> - -- <e_expr-17.1.5> >> + -- <e_expr-17.2.0> >> 1 >> - -- </e_expr-17.1.5> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.6", >> - [[ >> - SELECT 'ABCxyz' GLOB 'abc*' >> - ]], { >> - -- <e_expr-17.1.6> >> - 0 >> - -- </e_expr-17.1.6> >> - }) >> - >> -test:do_execsql_test( >> - "e_expr-17.1.7", >> - [[ >> - SELECT 'abcxyz' GLOB 'ABC*' >> - ]], { >> - -- <e_expr-17.1.7> >> - 0 >> - -- </e_expr-17.1.7> >> + -- </e_expr-17.2.0> >> }) >> >> --- EVIDENCE-OF: R-39616-20555 Both GLOB and LIKE may be preceded by the >> --- NOT keyword to invert the sense of the test. >> --- >> test:do_execsql_test( >> "e_expr-17.2.1", >> [[ >> - SELECT 'abcxyz' NOT GLOB 'ABC*' >> + SELECT 'abcxyz' NOT LIKE 'abc%' >> ]], { >> -- <e_expr-17.2.1> >> - 1 >> + 0 >> -- </e_expr-17.2.1> >> }) >> >> test:do_execsql_test( >> "e_expr-17.2.2", >> [[ >> - SELECT 'abcxyz' NOT GLOB 'abc*' >> + PRAGMA case_sensitive_like = 0 >> ]], { > delete 17.2.1 17.2.2 (it was creaget for glob, like tested below), and move > `PRAGMA case_sensitive_like = 0` out of the test (it is not a test) (use just test:execsql or box.exequte) Done. >> -- <e_expr-17.2.2> >> - 0 >> - -- </e_expr-17.2.2> >> + >> + -- <e_expr-17.2.2> >> }) >> >> test:do_execsql_test( >> @@ -2448,62 +2374,6 @@ if 0>0 then >> db("nullvalue", "") >> end >> >> --- EVIDENCE-OF: R-39414-35489 The infix GLOB operator is implemented by >> --- calling the function glob(Y,X) and can be modified by overriding that >> --- function. >> - >> -local globargs = {} >> -local function globfunc(...) >> - local args = {...} >> - for i, v in ipairs(args) do >> - table.insert(globargs, v) >> - end >> - return 1 >> -end >> -box.internal.sql_create_function("GLOB", globfunc, 2) >> ---db("func", "glob", "-argcount", 2, "globfunc") > Do not delete this test. Rewrite it for like. There’re literally almost the same tests for like (15.1.x). >> - >> -test:do_execsql_test( >> - "e_expr-17.3.1", >> - [[ >> - SELECT 'abc' GLOB 'def' >> - ]], { >> - -- <e_expr-17.3.1> >> - 1 >> - -- </e_expr-17.3.1> >> - }) >> - >> -test:do_test( >> - "e_expr-17.3.2", >> - function() >> - return globargs >> - end, { >> - -- <e_expr-17.3.2> >> - "def", "abc" >> - -- </e_expr-17.3.2> >> - }) >> - >> -globargs = { } >> -test:do_execsql_test( >> - "e_expr-17.3.3", >> - [[ >> - SELECT 'X' NOT GLOB 'Y' >> - ]], { >> - -- <e_expr-17.3.3> >> - 0 >> - -- </e_expr-17.3.3> >> - }) >> - >> -test:do_test( >> - "e_expr-17.3.4", >> - function() >> - return globargs >> - end, { >> - -- <e_expr-17.3.4> >> - "Y", "X" >> - -- </e_expr-17.3.4> >> - }) >> - >> --sqlite3("db", "test.db") >> -- EVIDENCE-OF: R-41650-20872 No regexp() user function is defined by >> -- default and so use of the REGEXP operator will normally result in an >> 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 addf0e36d..a6d822ccd 100755 diff: diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 28b435ae3..f57967bd8 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -631,12 +631,6 @@ static const int case_insensitive_like = 1; */ static const int case_sensitive_like = 0; -/** - * Wildcards. - */ -#define match_one '_' -#define match_all '%' - /** * Possible error returns from sql_utf8_pattern_compare(). */ @@ -693,7 +687,7 @@ sql_utf8_pattern_compare(const char *pattern, c = Utf8Read(pattern, pattern_end); if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; - if (c == match_all) { + if (c == MATCH_ALL_WILDCARD) { /** * Skip over multiple "%" characters in * the pattern. If there are also "_" @@ -705,9 +699,10 @@ sql_utf8_pattern_compare(const char *pattern, SQL_END_OF_STRING) { if (c == SQL_INVALID_UTF8_SYMBOL) return SQL_INVALID_PATTERN; - if (c != match_all && c != match_one) + if (c != MATCH_ALL_WILDCARD && + c != MATCH_ONE_WILDCARD) break; - if (c == match_one && + if (c == MATCH_ONE_WILDCARD && (c2 = Utf8Read(string, string_end)) == SQL_END_OF_STRING) return SQL_NOWILDCARDMATCH; @@ -801,7 +796,7 @@ sql_utf8_pattern_compare(const char *pattern, c == u_tolower(c2)) continue; } - if (c == match_one && pattern != zEscaped && + if (c == MATCH_ONE_WILDCARD && pattern != zEscaped && c2 != SQL_END_OF_STRING) continue; return SQL_NOMATCH; @@ -894,11 +889,10 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) const unsigned char *zEsc = sqlite3_value_text(argv[2]); if (zEsc == 0) return; + const char *const err_msg = + "ESCAPE expression must be a single character"; if (sqlite3Utf8CharLen((char *)zEsc, -1) != 1) { - sqlite3_result_error(context, - "ESCAPE expression must be a" - " single character", - -1); + sqlite3_result_error(context, err_msg, -1); return; } escape = sqlite3Utf8Read(&zEsc); @@ -911,8 +905,9 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) int res; res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); if (res == SQL_INVALID_PATTERN) { - sqlite3_result_error(context, "LIKE pattern can only contain" - " UTF-8 characters", -1); + const char *const err_msg = + "LIKE pattern can only contain UTF-8 characters"; + sqlite3_result_error(context, err_msg, -1); return; } sqlite3_result_int(context, res == SQL_MATCH); diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h index a805adf22..420c76bfe 100644 --- a/src/box/sql/sqliteInt.h +++ b/src/box/sql/sqliteInt.h @@ -564,6 +564,12 @@ sqlite3_snprintf(int, char *, const char *, ...); char * sqlite3_vsnprintf(int, char *, const char *, va_list); +/** + * Wildcard characters used in REGEXP-like operators. + */ +#define MATCH_ONE_WILDCARD '_' +#define MATCH_ALL_WILDCARD '%' + int sql_strlike_cs(const char *zLike, const char *zStr, unsigned int cEsc); diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index 2d9fb6453..616acc640 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -218,12 +218,6 @@ operatorMask(int op) return c; } -/** - * Wildcard characters. - */ -#define match_one '_' -#define match_all '%' - #ifndef SQLITE_OMIT_LIKE_OPTIMIZATION /** * Check to see if the given expression is a LIKE operator that @@ -305,11 +299,13 @@ is_like(Parse *pParse, } if (z) { cnt = 0; - while ((c = z[cnt]) != 0 && c != match_one && c != match_all) + while ((c = z[cnt]) != 0 && c != MATCH_ONE_WILDCARD && + c != MATCH_ALL_WILDCARD) cnt++; if (cnt != 0 && 255 != (u8) z[cnt - 1]) { Expr *pPrefix; - *pisComplete = c == match_all && z[cnt + 1] == 0; + *pisComplete = c == MATCH_ALL_WILDCARD && + z[cnt + 1] == 0; pPrefix = sqlite3Expr(db, TK_STRING, z); if (pPrefix) pPrefix->u.zToken[cnt] = 0; diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index 0d69e8535..6d1edcfd0 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -77,7 +77,6 @@ local operations = { {"<>", "ne1"}, {"!=", "ne2"}, {"IS", "is"}, --- {"LIKE", "like"}, {"AND", "and"}, {"OR", "or"}, {"MATCH", "match"}, @@ -98,7 +97,7 @@ operations = { -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & -- are waiting for their hour, don't confuse them -- being commented with commenting of "LIKE". - {"=", "==", "!=", "<>"}, --"LIKE"}, --"MATCH", "REGEXP"}, + {"=", "==", "!=", "<>"}, --"MATCH", "REGEXP"}, {"AND"}, {"OR"}, } @@ -2278,10 +2277,12 @@ test:do_execsql_test( -- </e_expr-17.2.0> }) +test:execsql("PRAGMA case_sensitive_like = 0;") + test:do_execsql_test( "e_expr-17.2.1", [[ - SELECT 'abcxyz' NOT LIKE 'abc%' + SELECT 'abcxyz' NOT LIKE 'ABC%' ]], { -- <e_expr-17.2.1> 0 @@ -2290,85 +2291,65 @@ test:do_execsql_test( test:do_execsql_test( "e_expr-17.2.2", - [[ - PRAGMA case_sensitive_like = 0 - ]], { - -- <e_expr-17.2.2> - - -- <e_expr-17.2.2> - }) - -test:do_execsql_test( - "e_expr-17.2.3", - [[ - SELECT 'abcxyz' NOT LIKE 'ABC%' - ]], { - -- <e_expr-17.2.3> - 0 - -- </e_expr-17.2.3> - }) - -test:do_execsql_test( - "e_expr-17.2.4", [[ SELECT 'abcxyz' NOT LIKE 'abc%' ]], { - -- <e_expr-17.2.4> + -- <e_expr-17.2.2> 0 - -- </e_expr-17.2.4> + -- </e_expr-17.2.2> }) test:do_execsql_test( - "e_expr-17.2.5", + "e_expr-17.2.3", [[ SELECT 'abdxyz' NOT LIKE 'abc%' ]], { - -- <e_expr-17.2.5> + -- <e_expr-17.2.3> 1 - -- </e_expr-17.2.5> + -- </e_expr-17.2.3> }) -- MUST_WORK_TEST uses access to nullvalue... (sql parameters) and built in functions if 0>0 then db("nullvalue", "null") test:do_execsql_test( - "e_expr-17.2.6", + "e_expr-17.2.4", [[ SELECT 'abcxyz' NOT GLOB NULL ]], { - -- <e_expr-17.2.6> + -- <e_expr-17.2.4> "null" - -- </e_expr-17.2.6> + -- </e_expr-17.2.4> }) test:do_execsql_test( - "e_expr-17.2.7", + "e_expr-17.2.5", [[ SELECT 'abcxyz' NOT LIKE NULL ]], { - -- <e_expr-17.2.7> + -- <e_expr-17.2.5> "null" - -- </e_expr-17.2.7> + -- </e_expr-17.2.5> }) test:do_execsql_test( - "e_expr-17.2.8", + "e_expr-17.2.6", [[ SELECT NULL NOT GLOB 'abc*' ]], { - -- <e_expr-17.2.8> + -- <e_expr-17.2.6> "null" - -- </e_expr-17.2.8> + -- </e_expr-17.2.6> }) test:do_execsql_test( - "e_expr-17.2.9", + "e_expr-17.2.7", [[ SELECT NULL NOT LIKE 'ABC%' ]], { - -- <e_expr-17.2.9> + -- <e_expr-17.2.7> "null" - -- </e_expr-17.2.9> + -- </e_expr-17.2.7> }) db("nullvalue", "") [-- Attachment #2: Type: text/html, Size: 57703 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-10-18 20:28 ` Nikita Tatunov @ 2018-10-21 3:48 ` Alexander Turenko 2018-10-26 15:21 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-10-21 3:48 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, korablev I don't have objections re this commit in general. Please, fix minor comments below and proceed with Nikita P. WBR, Alexander Turenko. > - * Providing there are symbols in string s this > - * macro returns UTF-8 code of character and > - * promotes pointer to the next symbol in the string. > - * Otherwise return code is SQL_END_OF_STRING. > + * Providing there are symbols in string s this macro returns > + * UTF-8 code of character and promotes pointer to the next > + * symbol in the string. If s points to an invalid UTF-8 symbol > + * return code is SQL_INVALID_UTF8_SYMBOL. If there're no symbols > + * left in string s return code is SQL_END_OF_STRING. > -/* > - * Possible error returns from sql_utf8_pattern_compare() > +/** > + * Possible error returns from sql_utf8_pattern_compare(). > */ > - * '%' Matches any sequence of zero or more characters. > + * '%' Matches any sequence of zero or more > + * characters. > - * Ec Where E is the "esc" character and c is any other > - * character, including '%', '_', and esc, match > - * exactly c. > + * Ec Where E is the "esc" character and c is any > + * other character, including '%', '_', and esc, > + * match exactly c. > - const char * pattern_end = pattern + strlen(pattern); > - const char * string_end = string + strlen(string); > + const char *pattern_end = pattern + strlen(pattern); > + const char *string_end = string + strlen(string); Please, amend these hunks into the first patch. The first patch includes code style fixes, so it would look more appropriate in it, eps. when you already touch the code in it. > +static const int case_insensitive_like = 1; > +static const int case_sensitive_like = 0; Are not they are mutually exclusive? Can we leave just one? Why they are not defines? /** .. */ inside functions should be /* */ (they are just comments and they aren't documentation comments). It appears here ans there, so, please, grep the intire patch for such things. > - return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); > + return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, esc); > - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); > + return sql_utf8_pattern_compare(zPattern, zStr, case_insensitive_like, esc); Exceeds 80 symbols > + * @param is_case_sensitive whether like should be case sensitive > + * or not. Indent is strange. > + int *is_like_ci; > + if (is_case_sensitive) > + is_like_ci = (int *)&case_sensitive_like; > + else > + is_like_ci = (int *)&case_insensitive_like; Discarding const qualifier? It seems not being right thing to do. It is better to define is_like_ci pointer as const. > -int sqlite3IsLikeFunction(sqlite3 *, Expr *, int *, char *); > +int sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_case_insensitive); The code around does not have parameter names, so here they are looks strange. > + /* String on RHS of LIKE operator */ > + const char *z = 0; > + /* Right and left size of LIKE operator */ > + Expr *pRight, *pLeft; > + /* List of operands to the LIKE operator */ > + ExprList *pList; > + /* One character in z[] */ > + int c; > + /* Number of non-wildcard prefix characters */ > + int cnt; > + /* Database connection */ > + sqlite3 *db = pParse->db; > sqlite3_value *pVal = 0; > - int op; /* Opcode of pRight */ > - int rc; /* Result code to return */ > + /* Opcode of pRight */ > + int op; > + /* Result code to return */ > + int rc; Our code style suggests to add a period at end of the comment. The same in exprAnalyze() below. > + INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; Trailing whitespaces. > --- NOTE: This test needs refactoring after deletion of GLOB & > --- type restrictions for LIKE. (See #3572) > -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & > --- are waiting for their hour, don't confuse them > --- being commented with ticket above. > - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, > +-- are waiting for their hour, don't confuse them > +-- being commented with commenting of "LIKE". > + {"=", "==", "!=", "<>"}, --"MATCH", "REGEXP"}, Another NOTE -> NOTE. 'don't confuse them being commented with commenting of "LIKE"' -- can be removed. test/sql-tap/like3.test.lua cases can be rewritten with LIKE instead of removing, right? I think it worth to do if it is so. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-10-21 3:48 ` Alexander Turenko @ 2018-10-26 15:21 ` Nikita Tatunov 2018-10-29 12:15 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-10-26 15:21 UTC (permalink / raw) To: Alexander Turenko; +Cc: tarantool-patches, korablev Hello again, Alexander! Here are some comments / fixes to the review. Issues: https://github.com/tarantool/tarantool/issues/3334 https://github.com/tarantool/tarantool/issues/3251 https://github.com/tarantool/tarantool/issues/3572 Branch https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs > On Oct 21, 2018, at 06:48, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > I don't have objections re this commit in general. Please, fix minor > comments below and proceed with Nikita P. > > WBR, Alexander Turenko. > >> - * Providing there are symbols in string s this >> - * macro returns UTF-8 code of character and >> - * promotes pointer to the next symbol in the string. >> - * Otherwise return code is SQL_END_OF_STRING. >> + * Providing there are symbols in string s this macro returns >> + * UTF-8 code of character and promotes pointer to the next >> + * symbol in the string. If s points to an invalid UTF-8 symbol >> + * return code is SQL_INVALID_UTF8_SYMBOL. If there're no symbols >> + * left in string s return code is SQL_END_OF_STRING. > >> -/* >> - * Possible error returns from sql_utf8_pattern_compare() >> +/** >> + * Possible error returns from sql_utf8_pattern_compare(). >> */ > >> - * '%' Matches any sequence of zero or more characters. >> + * '%' Matches any sequence of zero or more >> + * characters. > >> - * Ec Where E is the "esc" character and c is any other >> - * character, including '%', '_', and esc, match >> - * exactly c. >> + * Ec Where E is the "esc" character and c is any >> + * other character, including '%', '_', and esc, >> + * match exactly c. > >> - const char * pattern_end = pattern + strlen(pattern); >> - const char * string_end = string + strlen(string); >> + const char *pattern_end = pattern + strlen(pattern); >> + const char *string_end = string + strlen(string); > > Please, amend these hunks into the first patch. The first patch includes > code style fixes, so it would look more appropriate in it, eps. when you > already touch the code in it. Done. > >> +static const int case_insensitive_like = 1; >> +static const int case_sensitive_like = 0; > > Are not they are mutually exclusive? Can we leave just one? > > Why they are not defines? I guess it’s a bad idea since we need pointers to them in some functions. e.g: int *is_like_ci; if (is_case_sensitive) is_like_ci = (void *)&case_sensitive_like; else is_like_ci = (void *)&case_insensitive_like; sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); > > /** .. */ inside functions should be /* */ (they are just comments and > they aren't documentation comments). It appears here ans there, so, > please, grep the intire patch for such things. Fixed. > >> - return sql_utf8_pattern_compare(zGlobPattern, zString, &globInfo, '['); >> + return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, esc); > >> - return sql_utf8_pattern_compare(zPattern, zStr, &likeInfoNorm, esc); >> + return sql_utf8_pattern_compare(zPattern, zStr, case_insensitive_like, esc); > > Exceeds 80 symbols thank you, didn’t notice. > >> + * @param is_case_sensitive whether like should be case sensitive >> + * or not. > > Indent is strange. fixed. > >> + int *is_like_ci; >> + if (is_case_sensitive) >> + is_like_ci = (int *)&case_sensitive_like; >> + else >> + is_like_ci = (int *)&case_insensitive_like; > > Discarding const qualifier? It seems not being right thing to do. It is > better to define is_like_ci pointer as const. It’s not possible due to so-called “down qualification” and will cause compiler warnings. > >> -int sqlite3IsLikeFunction(sqlite3 *, Expr *, int *, char *); >> +int sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_case_insensitive); > > The code around does not have parameter names, so here they are looks > strange. fixed. > >> + /* String on RHS of LIKE operator */ >> + const char *z = 0; >> + /* Right and left size of LIKE operator */ >> + Expr *pRight, *pLeft; >> + /* List of operands to the LIKE operator */ >> + ExprList *pList; >> + /* One character in z[] */ >> + int c; >> + /* Number of non-wildcard prefix characters */ >> + int cnt; >> + /* Database connection */ >> + sqlite3 *db = pParse->db; >> sqlite3_value *pVal = 0; >> - int op; /* Opcode of pRight */ >> - int rc; /* Result code to return */ >> + /* Opcode of pRight */ >> + int op; >> + /* Result code to return */ >> + int rc; > > Our code style suggests to add a period at end of the comment. The same > in exprAnalyze() below. Thank you, fixed. > >> + INSERT INTO t1 SELECT a+5,6,'six'||substr(c,4) FROM t1 WHERE c LIKE 'one-%'; > > Trailing whitespaces. deleted. > >> --- NOTE: This test needs refactoring after deletion of GLOB & >> --- type restrictions for LIKE. (See #3572) >> -- Another NOTE: MATCH & REGEXP aren't supported in Tarantool & >> --- are waiting for their hour, don't confuse them >> --- being commented with ticket above. >> - {"=", "==", "!=", "<>"}, --"LIKE", "GLOB"}, --"MATCH", "REGEXP"}, >> +-- are waiting for their hour, don't confuse them >> +-- being commented with commenting of "LIKE". >> + {"=", "==", "!=", "<>"}, --"MATCH", "REGEXP"}, > > Another NOTE -> NOTE. > > 'don't confuse them being commented with commenting of "LIKE"' -- can be > removed. Fixed. > > test/sql-tap/like3.test.lua cases can be rewritten with LIKE instead of > removing, right? I think it worth to do if it is so. Ok, sure. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-10-26 15:21 ` Nikita Tatunov @ 2018-10-29 12:15 ` Alexander Turenko 2018-11-08 15:09 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-10-29 12:15 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, korablev Hi! See remaining comments below. WBR, Alexander Turenko. > >> +static const int case_insensitive_like = 1; > >> +static const int case_sensitive_like = 0; > > > > Are not they are mutually exclusive? Can we leave just one? > > > > Why they are not defines? > > I guess it’s a bad idea since we need pointers to them in some functions. > e.g: > > int *is_like_ci; > if (is_case_sensitive) > is_like_ci = (void *)&case_sensitive_like; > else > is_like_ci = (void *)&case_insensitive_like; > sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); > sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); I think we can use SQLITE_INT_TO_PTR and SQLITE_PTR_TO_INT to pass an integer value as a pointer and then cast it back. Maybe we also should change LIKEFUNC macro. > >> + int *is_like_ci; > >> + if (is_case_sensitive) > >> + is_like_ci = (int *)&case_sensitive_like; > >> + else > >> + is_like_ci = (int *)&case_insensitive_like; > > > > Discarding const qualifier? It seems not being right thing to do. It is > > better to define is_like_ci pointer as const. > > It’s not possible due to so-called “down qualification” and will cause > compiler warnings. We'll anyway discard it here or there, so nevermind. I proposed to change it to SQLITE_INT_TO_PTR. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-10-29 12:15 ` Alexander Turenko @ 2018-11-08 15:09 ` Nikita Tatunov 2018-11-09 12:18 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-11-08 15:09 UTC (permalink / raw) To: tarantool-patches; +Cc: korablev, Alexander Turenko [-- Attachment #1: Type: text/plain, Size: 8698 bytes --] Hello! thank you for the review. Issues: https://github.com/tarantool/tarantool/issues/3251 <https://github.com/tarantool/tarantool/issues/3251> https://github.com/tarantool/tarantool/issues/3334 <https://github.com/tarantool/tarantool/issues/3334> Branch: https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs <https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs> Please consider following changes: 1. I rebased the whole branch on fresh 2.1. > On Oct 29, 2018, at 15:15, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > Hi! > > See remaining comments below. > > WBR, Alexander Turenko. > >>>> +static const int case_insensitive_like = 1; >>>> +static const int case_sensitive_like = 0; >>> >>> Are not they are mutually exclusive? Can we leave just one? >>> >>> Why they are not defines? >> >> I guess it’s a bad idea since we need pointers to them in some functions. >> e.g: >> >> int *is_like_ci; >> if (is_case_sensitive) >> is_like_ci = (void *)&case_sensitive_like; >> else >> is_like_ci = (void *)&case_insensitive_like; >> sqlite3CreateFunc(db, "LIKE", 2, 0, is_like_ci, likeFunc, 0, 0, 0); >> sqlite3CreateFunc(db, "LIKE", 3, 0, is_like_ci, likeFunc, 0, 0, 0); > > I think we can use SQLITE_INT_TO_PTR and SQLITE_PTR_TO_INT to pass an > integer value as a pointer and then cast it back. Maybe we also should > change LIKEFUNC macro. > >>>> + int *is_like_ci; >>>> + if (is_case_sensitive) >>>> + is_like_ci = (int *)&case_sensitive_like; >>>> + else >>>> + is_like_ci = (int *)&case_insensitive_like; >>> >>> Discarding const qualifier? It seems not being right thing to do. It is >>> better to define is_like_ci pointer as const. >> >> It’s not possible due to so-called “down qualification” and will cause >> compiler warnings. > > We'll anyway discard it here or there, so nevermind. I proposed to > change it to SQLITE_INT_TO_PTR. > 2. Changed manipulations with “sensitiveness” of LIKE using your advice thus there’s no static consts in func.c anymore. diff with the previous version of the patch: diff --git a/src/box/sql/func.c b/src/box/sql/func.c index b1983e594..5feab52f6 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -627,18 +627,6 @@ total_changes(sqlite3_context * context, int NotUsed, sqlite3_value ** NotUsed2) #define SQL_END_OF_STRING 0xffff #define SQL_INVALID_UTF8_SYMBOL 0xfffd -/** - * If SQLITE_CASE_SENSITIVE_LIKE is not defined, then the LIKE - * operator is not case sensitive. - */ -static const int case_insensitive_like = 1; - -/** - * If SQLITE_CASE_SENSITIVE_LIKE is defined, then the LIKE - * operator is case sensitive causing 'a' LIKE 'A' to be false. - */ -static const int case_sensitive_like = 0; - /** * Possible error returns from sql_utf8_pattern_compare(). */ @@ -819,8 +807,7 @@ sql_utf8_pattern_compare(const char *pattern, int sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zPattern, zStr, case_sensitive_like, - esc); + return sql_utf8_pattern_compare(zPattern, zStr, 0, esc); } /** @@ -830,8 +817,7 @@ sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) int sql_strlike_ci(const char *zPattern, const char *zStr, unsigned int esc) { - return sql_utf8_pattern_compare(zPattern, zStr, case_insensitive_like, - esc); + return sql_utf8_pattern_compare(zPattern, zStr, 1, esc); } /** @@ -859,7 +845,7 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) u32 escape = SQL_END_OF_STRING; int nPat; sqlite3 *db = sqlite3_context_db_handle(context); - int *is_like_ci = sqlite3_user_data(context); + int is_like_ci = SQLITE_PTR_TO_INT(sqlite3_user_data(context)); #ifdef SQLITE_LIKE_DOESNT_MATCH_BLOBS if (sqlite3_value_type(argv[0]) == SQLITE_BLOB @@ -913,7 +899,7 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) sqlite3_like_count++; #endif int res; - res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); + res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); if (res == SQL_INVALID_PATTERN) { const char *const err_msg = "LIKE pattern can only contain UTF-8 characters"; @@ -1698,24 +1684,20 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) * @retval none. */ void -sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) +sqlite3RegisterLikeFunctions(sqlite3 *db, int *is_case_insensitive) { /* * FIXME: after introducing type <BOOLEAN> LIKE must * return that type: TRUE if the string matches the * supplied pattern and FALSE otherwise. */ - int *is_like_ci; - if (is_case_sensitive) - is_like_ci = (void *)&case_sensitive_like; - else - is_like_ci = (void *)&case_insensitive_like; - sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, is_like_ci, - likeFunc, 0, 0, 0); - sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, is_like_ci, - likeFunc, 0, 0, 0); + int is_like_ci = SQLITE_PTR_TO_INT(is_case_insensitive); + sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, + is_case_insensitive, likeFunc, 0, 0, 0); + sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, + is_case_insensitive, likeFunc, 0, 0, 0); setLikeOptFlag(db, "LIKE", - is_case_sensitive ? (SQLITE_FUNC_LIKE | + !(is_like_ci) ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); } @@ -1841,14 +1823,14 @@ sqlite3RegisterBuiltinFunctions(void) groupConcatFinalize, AFFINITY_TEXT), #ifdef SQLITE_CASE_SENSITIVE_LIKE - LIKEFUNC(like, 2, &case_sensitive_like, - SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE, AFFINITY_INTEGER), - LIKEFUNC(like, 3, &case_sensitive_like, - SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE, AFFINITY_INTEGER), + LIKEFUNC(like, 2, 0,SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE, + AFFINITY_INTEGER), + LIKEFUNC(like, 3, 0,SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE, + AFFINITY_INTEGER), #else - LIKEFUNC(like, 2, &case_insensitive_like, SQLITE_FUNC_LIKE, + LIKEFUNC(like, 2, 1, SQLITE_FUNC_LIKE, AFFINITY_INTEGER), - LIKEFUNC(like, 3, &case_insensitive_like, SQLITE_FUNC_LIKE, + LIKEFUNC(like, 3, 1, SQLITE_FUNC_LIKE, AFFINITY_INTEGER), #endif #ifdef SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c index cd6db2b34..546b18ae2 100644 --- a/src/box/sql/pragma.c +++ b/src/box/sql/pragma.c @@ -586,9 +586,10 @@ sqlite3Pragma(Parse * pParse, Token * pId, /* First part of [schema.]id field */ */ case PragTyp_CASE_SENSITIVE_LIKE:{ if (zRight) { + int *is_like_ci = + SQLITE_INT_TO_PTR(!(sqlite3GetBoolean(zRight, 0))); sqlite3RegisterLikeFunctions(db, - sqlite3GetBoolean - (zRight, 0)); + is_like_ci); } break; } diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h index f92d4e6b8..dd819622b 100644 --- a/src/box/sql/sqliteInt.h +++ b/src/box/sql/sqliteInt.h @@ -1759,7 +1759,7 @@ struct FuncDestructor { pArg, 0, xFunc, 0, #zName, {SQLITE_AFF_STRING, {0}}} #define LIKEFUNC(zName, nArg, arg, flags, type) \ {nArg, SQLITE_FUNC_CONSTANT|flags, \ - (void *)arg, 0, likeFunc, 0, #zName, {0}, type } + (void *)(SQLITE_INT_TO_PTR(arg)), 0, likeFunc, 0, #zName, {0}, type } #define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal, type) \ {nArg, (nc*SQLITE_FUNC_NEEDCOLL), \ SQLITE_INT_TO_PTR(arg), 0, xStep,xFinal,#zName, {0}, type} @@ -4551,7 +4551,7 @@ sql_key_info_unref(struct sql_key_info *key_info); struct key_def * sql_key_info_to_key_def(struct sql_key_info *key_info); -void sqlite3RegisterLikeFunctions(sqlite3 *, int); +void sqlite3RegisterLikeFunctions(sqlite3 *, int *); int sql_is_like_func(sqlite3 *, Expr *, int *); int sqlite3CreateFunc(sqlite3 *, const char *, enum affinity_type, int, int, void *, diff --git a/test/sql-tap/collation.test.lua b/test/sql-tap/collation.test.lua index eb4f43a90..dbbe1c0fe 100755 --- a/test/sql-tap/collation.test.lua +++ b/test/sql-tap/collation.test.lua @@ -219,7 +219,7 @@ local like_testcases = {0, {"Aab", "aaa"}} }, {"2.1.2", "EXPLAIN QUERY PLAN SELECT * FROM tx1 WHERE s1 LIKE 'A%';", - {0, {0, 0, 0, "/USING COVERING INDEX I1/"}} }, + {0, {0, 0, 0, "SEARCH TABLE TX1 USING COVERING INDEX I1 (S1>? AND S1<?)"}}}, {"2.2.0", "PRAGMA case_sensitive_like = true;", {0}}, [-- Attachment #2: Type: text/html, Size: 19004 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-11-08 15:09 ` Nikita Tatunov @ 2018-11-09 12:18 ` Alexander Turenko 2018-11-10 3:38 ` Nikita Tatunov 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-11-09 12:18 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, korablev Hi! See comments below. WBR, Alexander Turenko. On Thu, Nov 08, 2018 at 06:09:23PM +0300, Nikita Tatunov wrote: > Hello! thank you for the review. > > Issues: > https://github.com/tarantool/tarantool/issues/3251 <https://github.com/tarantool/tarantool/issues/3251> > https://github.com/tarantool/tarantool/issues/3334 <https://github.com/tarantool/tarantool/issues/3334> > > Branch: > https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs <https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs> > It seems you forgot to push the new changes. > @@ -913,7 +899,7 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) > sqlite3_like_count++; > #endif > int res; > - res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); > + res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); > if (res == SQL_INVALID_PATTERN) { > const char *const err_msg = > "LIKE pattern can only contain UTF-8 characters"; > @@ -1698,24 +1684,20 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) > * @retval none. > */ > void > -sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) > +sqlite3RegisterLikeFunctions(sqlite3 *db, int *is_case_insensitive) > { > /* > * FIXME: after introducing type <BOOLEAN> LIKE must > * return that type: TRUE if the string matches the > * supplied pattern and FALSE otherwise. > */ > - int *is_like_ci; > - if (is_case_sensitive) > - is_like_ci = (void *)&case_sensitive_like; > - else > - is_like_ci = (void *)&case_insensitive_like; > - sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, is_like_ci, > - likeFunc, 0, 0, 0); > - sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, is_like_ci, > - likeFunc, 0, 0, 0); > + int is_like_ci = SQLITE_PTR_TO_INT(is_case_insensitive); > + sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, > + is_case_insensitive, likeFunc, 0, 0, 0); > + sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, > + is_case_insensitive, likeFunc, 0, 0, 0); > setLikeOptFlag(db, "LIKE", > - is_case_sensitive ? (SQLITE_FUNC_LIKE | > + !(is_like_ci) ? (SQLITE_FUNC_LIKE | > SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); > } I think sqlite3RegisterLikeFunctions should accept int as the second parameter. BTW, it seems that we add SQLITE_FUNC_CASE into flags, so maybe we can read it in likeFunc and don't pass additional parameter at all? It is just raw idea, I don't know the mechanics of sql functions much. > diff --git a/test/sql-tap/collation.test.lua b/test/sql-tap/collation.test.lua > index eb4f43a90..dbbe1c0fe 100755 > --- a/test/sql-tap/collation.test.lua > +++ b/test/sql-tap/collation.test.lua > @@ -219,7 +219,7 @@ local like_testcases = > {0, {"Aab", "aaa"}} }, > {"2.1.2", > "EXPLAIN QUERY PLAN SELECT * FROM tx1 WHERE s1 LIKE 'A%';", > - {0, {0, 0, 0, "/USING COVERING INDEX I1/"}} }, > + {0, {0, 0, 0, "SEARCH TABLE TX1 USING COVERING INDEX I1 (S1>? AND S1<?)"}}}, What is this hunk about? ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-11-09 12:18 ` Alexander Turenko @ 2018-11-10 3:38 ` Nikita Tatunov 2018-11-13 19:23 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: Nikita Tatunov @ 2018-11-10 3:38 UTC (permalink / raw) To: Alexander Turenko; +Cc: tarantool-patches, korablev [-- Attachment #1: Type: text/plain, Size: 6666 bytes --] Hello! Thank you for comments. > On Nov 9, 2018, at 15:18, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > Hi! > > See comments below. > > WBR, Alexander Turenko. > > On Thu, Nov 08, 2018 at 06:09:23PM +0300, Nikita Tatunov wrote: >> Hello! thank you for the review. >> >> Issues: >> https://github.com/tarantool/tarantool/issues/3251 <https://github.com/tarantool/tarantool/issues/3251> >> https://github.com/tarantool/tarantool/issues/3334 <https://github.com/tarantool/tarantool/issues/3334> >> >> Branch: >> https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs <https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hangs> >> > > It seems you forgot to push the new changes. Ermm, did I? I have just opened the branch and it contains a commit which was pushed at 8th of November (and as I see it’s exactly the commit from the diff) > >> @@ -913,7 +899,7 @@ likeFunc(sqlite3_context *context, int argc, sqlite3_value **argv) >> sqlite3_like_count++; >> #endif >> int res; >> - res = sql_utf8_pattern_compare(zB, zA, *is_like_ci, escape); >> + res = sql_utf8_pattern_compare(zB, zA, is_like_ci, escape); >> if (res == SQL_INVALID_PATTERN) { >> const char *const err_msg = >> "LIKE pattern can only contain UTF-8 characters"; >> @@ -1698,24 +1684,20 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) >> * @retval none. >> */ >> void >> -sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_sensitive) >> +sqlite3RegisterLikeFunctions(sqlite3 *db, int *is_case_insensitive) >> { >> /* >> * FIXME: after introducing type <BOOLEAN> LIKE must >> * return that type: TRUE if the string matches the >> * supplied pattern and FALSE otherwise. >> */ >> - int *is_like_ci; >> - if (is_case_sensitive) >> - is_like_ci = (void *)&case_sensitive_like; >> - else >> - is_like_ci = (void *)&case_insensitive_like; >> - sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, is_like_ci, >> - likeFunc, 0, 0, 0); >> - sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, is_like_ci, >> - likeFunc, 0, 0, 0); >> + int is_like_ci = SQLITE_PTR_TO_INT(is_case_insensitive); >> + sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, >> + is_case_insensitive, likeFunc, 0, 0, 0); >> + sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, >> + is_case_insensitive, likeFunc, 0, 0, 0); >> setLikeOptFlag(db, "LIKE", >> - is_case_sensitive ? (SQLITE_FUNC_LIKE | >> + !(is_like_ci) ? (SQLITE_FUNC_LIKE | >> SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); >> } > > I think sqlite3RegisterLikeFunctions should accept int as the second > parameter. Sure, fixed it. > BTW, it seems that we add SQLITE_FUNC_CASE into flags, so maybe we can > read it in likeFunc and don't pass additional parameter at all? It is > just raw idea, I don't know the mechanics of sql functions much. I’m not sure it’s a good idea, at least not in terms of this patch. Call to likeFunc comes right from OP_FUNCTION which is used for sql functions (of course it’s not only LIKE). Thus the list of parameters is pretty much defined there. (*pCtx->pFunc->xSFunc)(pCtx, pCtx->argc, pCtx->argv);/* IMP: R-24505-23230 */ > >> diff --git a/test/sql-tap/collation.test.lua b/test/sql-tap/collation.test.lua >> index eb4f43a90..dbbe1c0fe 100755 >> --- a/test/sql-tap/collation.test.lua >> +++ b/test/sql-tap/collation.test.lua >> @@ -219,7 +219,7 @@ local like_testcases = >> {0, {"Aab", "aaa"}} }, >> {"2.1.2", >> "EXPLAIN QUERY PLAN SELECT * FROM tx1 WHERE s1 LIKE 'A%';", >> - {0, {0, 0, 0, "/USING COVERING INDEX I1/"}} }, >> + {0, {0, 0, 0, "SEARCH TABLE TX1 USING COVERING INDEX I1 (S1>? AND S1<?)"}}}, > > What is this hunk about? I found that this changed message occurs even on fresh 2.1. I was using this and few other test cases to test my patch so it was kind of concerned with the patch and i decided to fix it at the same time. (I don’t really think it does worth opening an issue). I assume this issue was caused by commit 6b8acd8fde and just wasn’t fixed. I guess I should’ve wrote about it in the previous letter. diff with the previous version: diff --git a/src/box/sql/func.c b/src/box/sql/func.c index 5feab52f6..ed7926b18 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -1684,20 +1684,20 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) * @retval none. */ void -sqlite3RegisterLikeFunctions(sqlite3 *db, int *is_case_insensitive) +sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_insensitive) { /* * FIXME: after introducing type <BOOLEAN> LIKE must * return that type: TRUE if the string matches the * supplied pattern and FALSE otherwise. */ - int is_like_ci = SQLITE_PTR_TO_INT(is_case_insensitive); + int *is_like_ci = SQLITE_INT_TO_PTR(is_case_insensitive); sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 2, 0, - is_case_insensitive, likeFunc, 0, 0, 0); + is_like_ci, likeFunc, 0, 0, 0); sqlite3CreateFunc(db, "LIKE", AFFINITY_INTEGER, 3, 0, - is_case_insensitive, likeFunc, 0, 0, 0); + is_like_ci, likeFunc, 0, 0, 0); setLikeOptFlag(db, "LIKE", - !(is_like_ci) ? (SQLITE_FUNC_LIKE | + !(is_case_insensitive) ? (SQLITE_FUNC_LIKE | SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); } diff --git a/src/box/sql/pragma.c b/src/box/sql/pragma.c index 546b18ae2..8939aa702 100644 --- a/src/box/sql/pragma.c +++ b/src/box/sql/pragma.c @@ -586,10 +586,9 @@ sqlite3Pragma(Parse * pParse, Token * pId, /* First part of [schema.]id field */ */ case PragTyp_CASE_SENSITIVE_LIKE:{ if (zRight) { - int *is_like_ci = - SQLITE_INT_TO_PTR(!(sqlite3GetBoolean(zRight, 0))); - sqlite3RegisterLikeFunctions(db, - is_like_ci); + int is_like_ci = + !(sqlite3GetBoolean(zRight, 0)); + sqlite3RegisterLikeFunctions(db, is_like_ci); } break; } diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h index dd819622b..07e83e444 100644 --- a/src/box/sql/sqliteInt.h +++ b/src/box/sql/sqliteInt.h @@ -4551,7 +4551,7 @@ sql_key_info_unref(struct sql_key_info *key_info); struct key_def * sql_key_info_to_key_def(struct sql_key_info *key_info); -void sqlite3RegisterLikeFunctions(sqlite3 *, int *); +void sqlite3RegisterLikeFunctions(sqlite3 *, int); int sql_is_like_func(sqlite3 *, Expr *, int *); int sqlite3CreateFunc(sqlite3 *, const char *, enum affinity_type, int, int, void *, [-- Attachment #2: Type: text/html, Size: 15454 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-11-10 3:38 ` Nikita Tatunov @ 2018-11-13 19:23 ` Alexander Turenko 2018-11-14 14:16 ` n.pettik 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-11-13 19:23 UTC (permalink / raw) To: Nikita Tatunov; +Cc: tarantool-patches, korablev Hi! I gave some minor comments and I think I cannot add any value anymore. Nikita N., can you look into this patch? > - if (sqlite3_strglob("unordered*", z) == 0) { > + if (sql_strlike_cs("unordered%", z, '[') == 0) > index->def->opts.stat->is_unordered = true; > - } else if (sqlite3_strglob("noskipscan*", z) == 0) { > + else if (sql_strlike_cs("noskipscan%", z, '[') == 0) > index->def->opts.stat->skip_scan_enabled = false; > - } I don't think '[' works here as it was in globs, so the parameter can be just removed. > -sqlite3_strglob(const char *zGlobPattern, const char *zString) > +sql_strlike_cs(const char *zPattern, const char *zStr, unsigned int esc) Why not UChar32, but 'unsigned int'? (It does not matter if the above is true.) See other comments below. WBR, Alexander Turenko. > > BTW, it seems that we add SQLITE_FUNC_CASE into flags, so maybe we can > > read it in likeFunc and don't pass additional parameter at all? It is > > just raw idea, I don't know the mechanics of sql functions much. > > I’m not sure it’s a good idea, at least not in terms of this patch. > Call to likeFunc comes right from OP_FUNCTION which is used for sql > functions (of course it’s not only LIKE). Thus the list of parameters is > pretty much defined there. > > (*pCtx->pFunc->xSFunc)(pCtx, pCtx->argc, pCtx->argv);/* IMP: R-24505-23230 */ > I'll leave this question to consider for the next reviewer. > >> diff --git a/test/sql-tap/collation.test.lua b/test/sql-tap/collation.test.lua > >> index eb4f43a90..dbbe1c0fe 100755 > >> --- a/test/sql-tap/collation.test.lua > >> +++ b/test/sql-tap/collation.test.lua > >> @@ -219,7 +219,7 @@ local like_testcases = > >> {0, {"Aab", "aaa"}} }, > >> {"2.1.2", > >> "EXPLAIN QUERY PLAN SELECT * FROM tx1 WHERE s1 LIKE 'A%';", > >> - {0, {0, 0, 0, "/USING COVERING INDEX I1/"}} }, > >> + {0, {0, 0, 0, "SEARCH TABLE TX1 USING COVERING INDEX I1 (S1>? AND S1<?)"}}}, > > > > What is this hunk about? > > I found that this changed message occurs even on fresh 2.1. > I was using this and few other test cases to test my patch so it was > kind of concerned with the patch and i decided to fix it at the same time. > (I don’t really think it does worth opening an issue). > I assume this issue was caused by commit 6b8acd8fde and just > wasn’t fixed. > I guess I should’ve wrote about it in the previous letter. > If so it should be separate commit. At least the message of this commit should state the changes. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-11-13 19:23 ` Alexander Turenko @ 2018-11-14 14:16 ` n.pettik 2018-11-14 17:41 ` Alexander Turenko 0 siblings, 1 reply; 46+ messages in thread From: n.pettik @ 2018-11-14 14:16 UTC (permalink / raw) To: tarantool-patches; +Cc: Nikita Tatunov, Alexander Turenko > On 13 Nov 2018, at 22:23, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > Hi! > > I gave some minor comments and I think I cannot add any value anymore. > Nikita N., can you look into this patch? > Part of #3589 > Part of #3572 > Needed for #3251 > Needed for #3334 Why this patch is ’needed for’ but comes after these issues are closed by previous patch? Also I don’t like the fact that your patch not only removes GLOB function, but also changes some user-visible interface. It still would be OK if you wrote about it in commit message or in doc request. For instance, as I understand from code, percent symbol (‘%’) now works as star (‘*’) did before. Personally I don’t like many code style fixes because they obfuscate patch and make it complicate to review. What is more, they don’t deal with all problems: they partially fix comments but don’t fix naming. It looks awful. But since it is done and two reviewers already gave their OK I guess it would be irrational to start from scratch. Finally, to be honest I didn’t review ALL changed tests. I looked through and they seem to be OK. I’ve pushed also several non-functional fixes - see branch np/gh-3251-where-like-hangs. Let's assume this as formal LGTM. diff --git a/src/box/sql/func.c b/src/box/sql/func.c index f0baf3db0..c3d3ccfb2 100644 --- a/src/box/sql/func.c +++ b/src/box/sql/func.c @@ -1674,12 +1674,6 @@ setLikeOptFlag(sqlite3 * db, const char *zName, u8 flagVal) /** * Register the built-in LIKE function. - * - * @param db database structure. - * @param is_case_sensitive whether like should be case sensitive - * or not. - * - * @retval none. */ void sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_insensitive) @@ -1699,30 +1693,18 @@ sqlite3RegisterLikeFunctions(sqlite3 *db, int is_case_insensitive) SQLITE_FUNC_CASE) : SQLITE_FUNC_LIKE); } -/** - * Check if the function implements LIKE-style comparison & if it - * is appropriate to apply a LIKE query optimization. - * - * @param db database structure. - * @param pExpr pointer to a function-implementing expression. - * @param is_like_ci true if LIKE is case insensitive. - * - * @retval 0 if it's appropriate to apply optimization. - * 1 if it's not. - */ int -sql_is_like_func(sqlite3 *db, Expr *pExpr, int *is_like_ci) +sql_is_like_func(struct sqlite3 *db, struct Expr *expr, bool *is_like_ci) { - FuncDef *pDef; - if (pExpr->op != TK_FUNCTION || !pExpr->x.pList || - pExpr->x.pList->nExpr != 2) + if (expr->op != TK_FUNCTION || !expr->x.pList || + expr->x.pList->nExpr != 2) return 0; - assert(!ExprHasProperty(pExpr, EP_xIsSelect)); - pDef = sqlite3FindFunction(db, pExpr->u.zToken, 2, 0); - if (NEVER(pDef == 0) || (pDef->funcFlags & SQLITE_FUNC_LIKE) == 0) { + assert(!ExprHasProperty(expr, EP_xIsSelect)); + struct FuncDef *func = sqlite3FindFunction(db, expr->u.zToken, 2, 0); + assert(func != NULL); + if ((func->funcFlags & SQLITE_FUNC_LIKE) == 0) return 0; - } - *is_like_ci = (pDef->funcFlags & SQLITE_FUNC_CASE) == 0; + *is_like_ci = (func->funcFlags & SQLITE_FUNC_CASE) == 0; return 1; } diff --git a/src/box/sql/sqliteInt.h b/src/box/sql/sqliteInt.h index 07e83e444..af124b731 100644 --- a/src/box/sql/sqliteInt.h +++ b/src/box/sql/sqliteInt.h @@ -4552,7 +4552,20 @@ struct key_def * sql_key_info_to_key_def(struct sql_key_info *key_info); void sqlite3RegisterLikeFunctions(sqlite3 *, int); -int sql_is_like_func(sqlite3 *, Expr *, int *); + +/** + * Check if the function implements LIKE-style comparison & if it + * is appropriate to apply a LIKE query optimization. + * + * @param db database structure. + * @param pExpr pointer to a function-implementing expression. + * @param[out] is_like_ci true if LIKE is case insensitive. + * + * @retval 1 if LIKE optimization can be used, 0 otherwise. + */ +int +sql_is_like_func(struct sqlite3 *db, struct Expr *expr, bool *is_like_ci); + int sqlite3CreateFunc(sqlite3 *, const char *, enum affinity_type, int, int, void *, void (*)(sqlite3_context *, int, sqlite3_value **), diff --git a/src/box/sql/whereexpr.c b/src/box/sql/whereexpr.c index 5f6344405..5d6b04418 100644 --- a/src/box/sql/whereexpr.c +++ b/src/box/sql/whereexpr.c @@ -232,21 +232,17 @@ operatorMask(int op) * @param pParse Parsing and code generating context. * @param pExpr Test this expression. * @param ppPrefix Pointer to TK_STRING expression with - * pattern prefix. + * pattern prefix. * @param pisComplete True if the only wildcard is '%' in the - * last character. + * last character. * @param pnoCase True if case insensitive. * * @retval True if the given expr is a LIKE operator & is - * optimizable using inequality constraints. - * False if not. + * optimizable using inequality constraints. */ static int -is_like(Parse *pParse, - Expr *pExpr, - Expr **ppPrefix, - int *pisComplete, - int *pnoCase) +like_optimization_is_valid(Parse *pParse, Expr *pExpr, Expr **ppPrefix, + int *pisComplete, int *pnoCase) { /* String on RHS of LIKE operator. */ const char *z = 0; @@ -1158,17 +1154,16 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ * is made all lowercase so that the bounds also work * when comparing BLOBs. */ - if (pWC->op == TK_AND - && is_like(pParse, pExpr, &pStr1, &isComplete, &noCase)) { - /* LHS of LIKE operator */ + if (pWC->op == TK_AND && + like_optimization_is_valid(pParse, pExpr, &pStr1, + &isComplete, &noCase)) { Expr *pLeft; - /* Copy of pStr1 - RHS of LIKE operator */ + /* Copy of pStr1 - RHS of LIKE operator. */ Expr *pStr2; Expr *pNewExpr1; Expr *pNewExpr2; int idxNew1; int idxNew2; - /* Name of collating sequence */ const char *zCollSeqName; const u16 wtFlags = TERM_LIKEOPT | TERM_VIRTUAL | TERM_DYNAMIC; @@ -1179,7 +1174,7 @@ exprAnalyze(SrcList * pSrc, /* the FROM clause */ * Convert the lower bound to upper-case and the * upper bound to lower-case (upper-case is less * than lower-case in ASCII) so that the range - * constraints also work for BLOBs + * constraints also work for BLOBs. */ if (noCase && !pParse->db->mallocFailed) { int i; diff --git a/test/sql-tap/e_expr.test.lua b/test/sql-tap/e_expr.test.lua index f49810999..db44999a6 100755 --- a/test/sql-tap/e_expr.test.lua +++ b/test/sql-tap/e_expr.test.lua @@ -1264,7 +1264,6 @@ test:do_execsql_test( test:execsql [[ CREATE TABLE tblname(cname INT PRIMARY KEY); ]] - local function glob(args) return 1 end ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-11-14 14:16 ` n.pettik @ 2018-11-14 17:41 ` Alexander Turenko 2018-11-14 21:48 ` n.pettik 0 siblings, 1 reply; 46+ messages in thread From: Alexander Turenko @ 2018-11-14 17:41 UTC (permalink / raw) To: n.pettik; +Cc: tarantool-patches, Nikita Tatunov On Wed, Nov 14, 2018 at 05:16:52PM +0300, n.pettik wrote: > > > > On 13 Nov 2018, at 22:23, Alexander Turenko <alexander.turenko@tarantool.org> wrote: > > > > Hi! > > > > I gave some minor comments and I think I cannot add any value anymore. > > Nikita N., can you look into this patch? > > > Part of #3589 > > Part of #3572 > > Needed for #3251 > > Needed for #3334 > > Why this patch is ’needed for’ but comes after > these issues are closed by previous patch? > > Also I don’t like the fact that your patch not only removes > GLOB function, but also changes some user-visible interface. > It still would be OK if you wrote about it in commit message > or in doc request. For instance, as I understand from code, > percent symbol (‘%’) now works as star (‘*’) did before. > '*' from GLOB is subject to remove, '%' from LIKE still doing its work. Comments that use names of symbols from GLOB are changed to use LIKE syntax. > Personally I don’t like many code style fixes because > they obfuscate patch and make it complicate to review. > What is more, they don’t deal with all problems: they > partially fix comments but don’t fix naming. It looks awful. > But since it is done and two reviewers already gave their > OK I guess it would be irrational to start from scratch. > Agreed. We should push developers to do refactoring in a separate commit underneath actual changes. > Finally, to be honest I didn’t review ALL changed tests. > I looked through and they seem to be OK. > > I’ve pushed also several non-functional fixes - > see branch np/gh-3251-where-like-hangs. > Don't have objections against your changes. > Let's assume this as formal LGTM. ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH 2/2] sql: remove GLOB from Tarantool 2018-11-14 17:41 ` Alexander Turenko @ 2018-11-14 21:48 ` n.pettik 0 siblings, 0 replies; 46+ messages in thread From: n.pettik @ 2018-11-14 21:48 UTC (permalink / raw) To: tarantool-patches; +Cc: Alexander Turenko, Nikita Tatunov, Kirill Yukhin [-- Attachment #1: Type: text/plain, Size: 1070 bytes --] >> Also I don’t like the fact that your patch not only removes >> GLOB function, but also changes some user-visible interface. >> It still would be OK if you wrote about it in commit message >> or in doc request. For instance, as I understand from code, >> percent symbol (‘%’) now works as star (‘*’) did before. >> > > '*' from GLOB is subject to remove, '%' from LIKE still doing its work. > Comments that use names of symbols from GLOB are changed to use LIKE > syntax. My bad. Original comments in source code turned out to be incomplete and misleading a bit. >> Finally, to be honest I didn’t review ALL changed tests. >> I looked through and they seem to be OK. >> >> I’ve pushed also several non-functional fixes - >> see branch np/gh-3251-where-like-hangs. >> > > Don't have objections against your changes. > >> Let's assume this as formal LGTM. OK, then I am going to squash commits with fixes and patch will be ready to push. Kirill, note that updated branch to push is: np/gh-3251-where-like-hangs [-- Attachment #2: Type: text/html, Size: 6728 bytes --] ^ permalink raw reply [flat|nested] 46+ messages in thread
* [tarantool-patches] Re: [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal 2018-08-16 17:00 [tarantool-patches] [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal N.Tatunov 2018-08-16 17:00 ` [tarantool-patches] [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue N.Tatunov 2018-08-16 17:00 ` [tarantool-patches] [PATCH 2/2] sql: remove GLOB from Tarantool N.Tatunov @ 2018-11-15 4:57 ` Kirill Yukhin 2 siblings, 0 replies; 46+ messages in thread From: Kirill Yukhin @ 2018-11-15 4:57 UTC (permalink / raw) To: tarantool-patches; +Cc: avkhatskevich, N.Tatunov Hello, On 16 Aug 20:00, N.Tatunov wrote: > Branch: https://github.com/tarantool/tarantool/tree/N_Tatunov/gh-3251-where-like-hanging > Issues: > https://github.com/tarantool/tarantool/issues/3251 > https://github.com/tarantool/tarantool/issues/3334 > https://github.com/tarantool/tarantool/issues/3589 > https://github.com/tarantool/tarantool/issues/3572 > > Currently we have internal functions for pattern comparisons that are > hanging in certain situations. This patch-set is aimed on refactoring > these functions, fixing possible bugs including the ones that are known. > Also since we want to get close to ANSI SQL it was decided that we're > going to remove GLOB from Tarantool. And due to changes in comparisons > some tests containing GLOB would need refactoring. Thus in order not to > refactor tests that are anyways going to be removed it is quite > convenient to remove GLOB support in the same patch-set. I've checked in the patchset into 2.1 branch. -- Regards, Kirill Yukhin ^ permalink raw reply [flat|nested] 46+ messages in thread
end of thread, other threads:[~2018-11-15 4:57 UTC | newest] Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-08-16 17:00 [tarantool-patches] [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal N.Tatunov 2018-08-16 17:00 ` [tarantool-patches] [PATCH 1/2] sql: LIKE & GLOB pattern comparison issue N.Tatunov 2018-08-17 9:23 ` [tarantool-patches] " Alex Khatskevich 2018-08-17 11:17 ` Alexander Turenko 2018-08-17 11:42 ` Alex Khatskevich 2018-09-09 13:33 ` Nikita Tatunov 2018-09-10 22:20 ` Alex Khatskevich 2018-09-11 6:06 ` Nikita Tatunov 2018-09-11 10:06 ` Alex Khatskevich 2018-09-11 13:31 ` Nikita Tatunov 2018-10-18 18:02 ` Nikita Tatunov 2018-10-21 3:51 ` Alexander Turenko 2018-10-26 15:19 ` Nikita Tatunov 2018-10-29 13:01 ` Alexander Turenko 2018-10-31 5:25 ` Nikita Tatunov 2018-11-01 10:30 ` Alexander Turenko 2018-11-14 14:16 ` n.pettik 2018-11-14 17:06 ` Alexander Turenko 2018-08-16 17:00 ` [tarantool-patches] [PATCH 2/2] sql: remove GLOB from Tarantool N.Tatunov 2018-08-17 8:25 ` [tarantool-patches] " Alex Khatskevich 2018-08-17 8:49 ` n.pettik 2018-08-17 9:01 ` Alex Khatskevich 2018-08-17 9:20 ` n.pettik 2018-08-17 9:28 ` Alex Khatskevich [not found] ` <04D02794-07A5-4146-9144-84EE720C8656@corp.mail.ru> 2018-08-17 8:53 ` Alex Khatskevich 2018-08-17 11:26 ` Alexander Turenko 2018-08-17 11:34 ` Alexander Turenko 2018-08-17 13:46 ` Nikita Tatunov 2018-09-09 14:57 ` Nikita Tatunov 2018-09-10 22:06 ` Alex Khatskevich 2018-09-11 7:38 ` Nikita Tatunov 2018-09-11 10:11 ` Alexander Turenko 2018-09-11 10:22 ` Alex Khatskevich 2018-09-11 12:03 ` Alex Khatskevich 2018-10-18 20:28 ` Nikita Tatunov 2018-10-21 3:48 ` Alexander Turenko 2018-10-26 15:21 ` Nikita Tatunov 2018-10-29 12:15 ` Alexander Turenko 2018-11-08 15:09 ` Nikita Tatunov 2018-11-09 12:18 ` Alexander Turenko 2018-11-10 3:38 ` Nikita Tatunov 2018-11-13 19:23 ` Alexander Turenko 2018-11-14 14:16 ` n.pettik 2018-11-14 17:41 ` Alexander Turenko 2018-11-14 21:48 ` n.pettik 2018-11-15 4:57 ` [tarantool-patches] Re: [PATCH v2 0/2] sql: pattern comparison fixes & GLOB removal Kirill Yukhin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox