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

Reply via email to