Changeset: 254b623822db for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/254b623822db Modified Files: sql/test/BugTracker-2023/Tests/misc-crashes-7390.test testing/sqllogictest.py Branch: default Log Message:
Merge with Dec2023 branch. diffs (truncated from 323 to 300 lines): diff --git a/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test b/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test --- a/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test +++ b/sql/test/BugTracker-2023/Tests/misc-crashes-7390.test @@ -247,16 +247,25 @@ UPDATE v0 SET v1 = (WITH v0 AS (SELECT 4 statement ok DROP TABLE v0 --- -- 18.sql --- statement ok --- CREATE TABLE v0(v1 NUMERIC) +-- 18.sql +statement ok +CREATE TABLE v0(v1 NUMERIC) + +query I nosort +SELECT 38 ^ v1 FROM v0 AS v3 WINDOW v2 AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8 +---- --- statement ok --- UPDATE v0 SET v1 = (WITH v0 (v1) AS (SELECT 127 WHERE (v1 < 2147483647 OR v1 > -1) AND v1 / v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 FROM v0 AS v3 WINDOW v2 AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8) ^ v1 --- sql/server/rel_select.c:3102: rel_binop_: Assertion `t1 && t2' failed. +query I nosort +WITH v0 (v1) AS (SELECT 127 FROM v0 WHERE (v1 < 2147483647 OR v1 > -1) AND v1 / v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 ^ v1 FROM v0 AS v3 WINDOW v2 AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8 +---- --- statement ok --- DROP TABLE v0 +skipif knownfail +statement ok +UPDATE v0 SET v1 = (WITH v0 (v1) AS (SELECT 127 WHERE (v1 < 2147483647 OR v1 > -1) AND v1 / v1 + v1 <= 95 = v1 >= -128 + 15) SELECT 38 FROM v0 AS v3 WINDOW v2 AS ( ), v4 AS (GROUPS BETWEEN -32768 PRECEDING AND 94 FOLLOWING) LIMIT 16 OFFSET 8) ^ v1 +-- sql/server/rel_select.c:3104: rel_binop_: Assertion `t1 && t2' failed. + +statement ok +DROP TABLE v0 -- 19.sql statement ok @@ -342,7 +351,7 @@ DROP TABLE v0 -- statement ok -- WITH v0 AS (SELECT 14, * FROM v0) INSERT INTO v0 SELECT v1 * 0 FROM v0 NATURAL JOIN v0, v0, v0 AS v2, v0, v0 AS v3 ORDER BY v1 * 0 / 77 --- query I +-- query I nosort -- SELECT count(*) FROM v0 -- ---- -- 131080 diff --git a/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test b/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test --- a/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test +++ b/sql/test/BugTracker-2024/Tests/between-true-and-null-Bug-7465.test @@ -14,6 +14,7 @@ SELECT (((t1.c0 NOT IN (true)))=((t1.c0 ---- NULL +skipif knownfail query I SELECT * FROM t1 WHERE (((t1.c0 NOT IN (true)))=((t1.c0 BETWEEN true AND NULL))) ---- diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in --- a/testing/Mtest.py.in +++ b/testing/Mtest.py.in @@ -391,7 +391,7 @@ CONDITIONALS = { 'SANITIZER' : "@SANITIZER_FALSE@", # unknown at compile time; # hence, we set them only at runtime in main() below - 'KNOWNFAIL' : False, # skip on release branch when not in testweb + 'KNOWNFAIL' : False, # normally skip, but --alltests or explicit 'HAVE_MONETDBJDBC_JAR' : False, 'HAVE_JDBCCLIENT_JAR' : False, 'HAVE_JDBCTESTS_JAR' : False, @@ -1926,18 +1926,11 @@ def RunTest(env, TST, COND, oktests, len ('.py', '.py', 'python', ''), ('.MAL.py', '.MAL.py', 'python', 'MAL'), ('.SQL.py', '.SQL.py', 'python', 'SQL'), - ('.malC', '.malC', 'mal', 'MAL'), - ('_s00.malC', '.malC', 'malXs', 'MAL'), - ('_p00.malC', '.malC', 'malXp', 'MAL'), ('.sql', '.sql', 'sql', 'SQL'), - ('_s00.sql', '.sql', 'sqlXs', 'SQL'), - ('_p00.sql', '.sql', 'sqlXp', 'SQL'), ('.R', '.R', 'R', 'SQL'), ('.rb', '.rb', 'ruby', 'SQL'), #TODO: # ('.java', '.java', 'Java', 'SQL'), - # ('_s00.java', '.java', 'JavaXs', 'SQL'), - # ('_p00.java', '.java', 'JavaXp', 'SQL'), # ('.odmg', '.odmg', 'odmg', 'SQL'), ) for tst, ext, cll, srv in tests: @@ -1950,11 +1943,11 @@ def RunTest(env, TST, COND, oktests, len break else: if os.name == "nt": - reason = "test missing: '"+os.path.join(TSTSRCDIR,TST)+".(exe|com|bat|cmd|py|malC|sql)`" + reason = "test missing: '"+os.path.join(TSTSRCDIR,TST)+".(exe|com|bat|cmd|py|sql)`" #TODO: #elif os.name == "posix": else: - reason = "test missing: '"+os.path.join(TSTSRCDIR,TST)+"[.py|.malC|.sql|.R|.rb]`" + reason = "test missing: '"+os.path.join(TSTSRCDIR,TST)+"[.py|.sql|.R|.rb]`" if verbosity > 1: print('%s%s ' % (prompt(), os.path.join(env['TSTDIR'], TST + EXT)), end='') @@ -2100,10 +2093,7 @@ def RunTest(env, TST, COND, oktests, len if reason: pass elif MissingTests: - reason = "as required test%s '%s' failed." % (len(MissingTests) != 1 and 's' or '', "', '".join(MissingTests)) - elem = SkipTest(env, TST, EXT, reason, length) - elif EXT == ".malC" and not env['exe']['MAL_Client'][0]: - reason = "as %s is not available." % env['MALCLIENT'].split(None, 1)[0] + reason = "as required test%s '%s' failed." % ('s' if len(MissingTests) != 1 else '', "', '".join(MissingTests)) elem = SkipTest(env, TST, EXT, reason, length) elif EXT == ".sql" and not env['exe']['SQL_Client'][0]: reason = "as %s is not available." % env['SQLCLIENT'].split(None, 1)[0] @@ -2123,12 +2113,6 @@ def RunTest(env, TST, COND, oktests, len elif MissingMods: reason = "as modules '%s` are missing." % str(MissingMods) elem = SkipTest(env, TST, EXT, reason, length) - elif CALL == "malXp": - reason = "as multiple MAL clients in parallel are currently not supported by %s." % THISFILE - elem = SkipTest(env, TST, EXT, reason, length) - elif CALL == "sqlXp": - reason = "as multiple SQL clients in parallel are currently not supported by %s." % THISFILE - elem = SkipTest(env, TST, EXT, reason, length) else: test = re.compile("^"+TST+r"((_[sp][0-9][0-9])?\..*)?$", re.MULTILINE) for f in listdir(RELSRCDIR): @@ -2885,7 +2869,8 @@ def DoIt(env, SERVER, CALL, TST, EXT, Te port=int(pSrvr.port), database=TSTDB, language='sql', - timeout=TIMEOUT) + timeout=TIMEOUT, + alltests=CONDITIONALS['KNOWNFAIL']) except KeyboardInterrupt: raise except: @@ -2899,27 +2884,6 @@ def DoIt(env, SERVER, CALL, TST, EXT, Te pass cmd = [sys.executable, TST + EXT, TST] returncode = RunIt(cmd, False, "", ClntOut, ClntErr, TIMEOUT) - elif CALL in ["mal", "malXs"]: - TSTs = [] - if CALL == "mal": - X="" - else: - X="_s[0-9][0-9]" - test = re.compile("^"+TST+X+EXT+"$", re.MULTILINE) - d = listdir(os.getcwd()) - d.sort() - for f in d: - if test.match(f): - TSTs.append(f) - - if CALL.startswith("mal"): - Clnt = splitcommand(exe['MAL_Client'][1]) - else: - Clnt = [] # cannot happen - for f in TSTs: - returncode = RunIt(Clnt, True, openutf8(f), ClntOut, ClntErr, TIMEOUT) - if returncode: - break elif CALL == "sqltest" or CALL == "maltest": issqllogictest = True import MonetDBtesting.sqllogictest as sqllogictest @@ -2935,7 +2899,8 @@ def DoIt(env, SERVER, CALL, TST, EXT, Te port=int(pSrvr.port), database=TSTDB, language=lang, - timeout=TIMEOUT) + timeout=TIMEOUT, + alltests=CONDITIONALS['KNOWNFAIL']) except KeyboardInterrupt: raise except: @@ -2969,13 +2934,9 @@ def DoIt(env, SERVER, CALL, TST, EXT, Te # something went wrong, we don't know what # print a stack trace and continue sys.excepthook(*sys.exc_info()) - elif CALL in ["sql", "sqlXs"]: + elif CALL == "sql": TSTs = [] - if CALL == "sql": - X="" - else: - X="_s[0-9][0-9]" - test = re.compile("^"+TST+X+EXT+"$", re.MULTILINE) + test = re.compile("^"+TST+EXT+"$", re.MULTILINE) d = listdir(os.getcwd()) d.sort() for f in d: @@ -3524,8 +3485,8 @@ def main(argv) : nomito = opts.nomito global restart restart = opts.restart - if int(MonetDB_VERSION[1])%2 == 0 or opts.alltests: - CONDITIONALS['KNOWNFAIL'] = 'execute' + if opts.alltests: + CONDITIONALS['KNOWNFAIL'] = True par['TIMEOUT'] = opts.timeout env['GDK_DEBUG'] = str(opts.debug) env['GDK_NR_THREADS'] = str(opts.nr_threads) @@ -3877,7 +3838,7 @@ def main(argv) : exe = {} exe['mserver5'] = CheckExec('mserver5') , 'mserver5 --debug=%s --set gdk_nr_threads=%s %s --set mapi_listenaddr=all --set mapi_port=0 %s %s' % \ - (env['GDK_DEBUG'], env['GDK_NR_THREADS'], env['setMONETDB_MOD_PATH'], SOCK, not nomito and '--forcemito' or '') + (env['GDK_DEBUG'], env['GDK_NR_THREADS'], env['setMONETDB_MOD_PATH'], SOCK, '--forcemito' if not nomito else '') exe['ruby_client'] = CheckExec(env['RUBYCLIENT'].split(None, 1)[0]) , '%s %s' % (env['RUBYCLIENT'], '${PORT}') exe['MAL_Client'] = CheckExec(env['MALCLIENT'].split(None, 1)[0]) , '%s --host=%s --port=%s' % (env['MALCLIENT'], HOST, '${PORT}') exe['SQL_Client'] = CheckExec(env['SQLCLIENT'].split(None, 1)[0]) , '%s -i -e --host=%s --port=%s' % (env['SQLCLIENT'], HOST, '${PORT}') @@ -3901,10 +3862,9 @@ def main(argv) : ErrXit("%s: not a valid test name" % args[0]) args = [head] if tail != 'All': - CONDITIONALS['KNOWNFAIL'] = 'execute' - for ext in ('_s00.malC', '_p00.malC', '_s00.sql', - '_p00.sql', '.MAL.py', '.SQL.py', '.malC', - '.sql', '.py', '.R', ''): + CONDITIONALS['KNOWNFAIL'] = True + for ext in ('.test', '.maltest', 'MAL.py', '.SQL.py', + '.sql', '.py', '.R', '.rb', ''): # extentions .in and .src are never combined if tail.endswith(ext + '.in'): args.append(tail[:-len(ext + '.in')]) @@ -3918,11 +3878,11 @@ def main(argv) : else: ErrXit("%s: not a valid test name" % args[0]) elif head and tail and os.path.isdir(head) and tail != 'Tests' and os.path.isdir(os.path.join(head, 'Tests')): - CONDITIONALS['KNOWNFAIL'] = 'execute' + CONDITIONALS['KNOWNFAIL'] = True args = [head, tail] - if len(args) == 1: - if os.path.isdir(args[0]): + if len(args) == 1: + if os.path.isdir(args[0]): d = os.path.realpath(args[0]) if startswithpath(d + os.sep, TSTSRCBASE + os.sep): dirlist.append(d) @@ -3934,7 +3894,7 @@ def main(argv) : elif args[0] != "All": #TODO: # check, whether args[0] in All - CONDITIONALS['KNOWNFAIL'] = 'execute' + CONDITIONALS['KNOWNFAIL'] = True testlist.append(args[0]) elif len(args) > 1: i = 0 @@ -3947,7 +3907,7 @@ def main(argv) : # WARNING/ERROR i = i + 1 if len(dirlist) == 1 and i < len(args) and args[i] != "All": - CONDITIONALS['KNOWNFAIL'] = 'execute' + CONDITIONALS['KNOWNFAIL'] = True while i < len(args): if os.sep not in args[i]: #TODO: diff --git a/testing/sqllogictest.py b/testing/sqllogictest.py --- a/testing/sqllogictest.py +++ b/testing/sqllogictest.py @@ -16,7 +16,7 @@ # The skipif/onlyif mechanism has been slightly extended. Recognized # "system"s are: # MonetDB, arch=<architecture>, system=<system>, bits=<bits>, -# threads=<threads>, has-hugeint +# threads=<threads>, has-hugeint, knownfail # where <architecture> is generally what the Python call # platform.machine() returns (i.e. x86_64, i686, aarch64, ppc64, # ppc64le, note 'AMD64' is translated to 'x86_64' and 'arm64' to @@ -140,12 +140,13 @@ class SQLLogic: def connect(self, username='monetdb', password='monetdb', hostname='localhost', port=None, database='demo', - language='sql', timeout=None): + language='sql', timeout=None, alltests=False): self.language = language self.hostname = hostname self.port = port self.database = database self.timeout = timeout + self.alltests = alltests if language == 'sql': self.dbh = pymonetdb.connect(username=username, password=password, @@ -753,7 +754,9 @@ class SQLLogic: if words[1] == f'threads={nthreads}': skipping = True elif words[1] == 'has-hugeint': - skipping = hashge + skipping |= hashge + elif words[1] == 'knownfail': + skipping |= not self.alltests elif words[0] == 'onlyif': if words[1] not in ('MonetDB', f'arch={architecture}', f'system={system}', f'bits={bits}'): skipping = True @@ -764,7 +767,9 @@ class SQLLogic: if words[1] != f'threads={nthreads}': skipping = True elif words[1] == 'has-hugeint': _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org