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 -- [email protected]
To unsubscribe send an email to [email protected]