Changeset: 34eecc7f2810 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=34eecc7f2810
Added Files:
        common/utils/ChangeLog.Mar2018
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-case-coalesce.Bug-6550.stable.err
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-case-coalesce.Bug-6550.stable.out
        sql/test/BugTracker-2018/Tests/sqlitelogictest-complex-case.Bug-6552.sql
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-having-not-in.Bug-6553.sql
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-wrong-cast-null.Bug-6551.stable.err
        
sql/test/BugTracker-2018/Tests/sqlitelogictest-wrong-cast-null.Bug-6551.stable.out
        sql/test/Dump/Tests/dump-empty.sql
        sql/test/emptydb-upgrade-chain-hge/Tests/dump.sql
        sql/test/emptydb-upgrade-chain/Tests/dump.sql
        sql/test/emptydb-upgrade-hge/Tests/dump.sql
        sql/test/emptydb-upgrade/Tests/dump.sql
        sql/test/emptydb/Tests/dump.sql
        sql/test/testdb-upgrade-chain-hge/Tests/dump.sql
        sql/test/testdb-upgrade-chain/Tests/dump.sql
        sql/test/testdb-upgrade-hge/Tests/dump.sql
        sql/test/testdb-upgrade/Tests/dump.sql
        sql/test/testdb/Tests/testdb-dump.sql
Removed Files:
        sql/test/Dump/Tests/dump-empty.SQL.py
        sql/test/emptydb-upgrade-chain-hge/Tests/dump.SQL.py
        sql/test/emptydb-upgrade-chain/Tests/dump.SQL.py
        sql/test/emptydb-upgrade-hge/Tests/dump.SQL.py
        sql/test/emptydb-upgrade/Tests/dump.SQL.py
        sql/test/emptydb/Tests/dump.SQL.py
        sql/test/testdb-upgrade-chain-hge/Tests/dump.SQL.py.src
        sql/test/testdb-upgrade-chain/Tests/dump.SQL.py.src
        sql/test/testdb-upgrade-hge/Tests/dump.SQL.py.src
        sql/test/testdb-upgrade/Tests/dump.SQL.py.src
        sql/test/testdb/Tests/testdb-dump.SQL.py
        testing/trace.py
Modified Files:
        ChangeLog.Mar2018
        NT/makelibdef.py
        NT/mkgeomwxs.py
        NT/mkodbcwxs.py
        NT/mksqlwxs.py
        NT/rules.msc
        buildtools/autogen/autogen.py
        buildtools/autogen/autogen/am.py
        buildtools/autogen/autogen/codegen.py
        buildtools/autogen/autogen/msc.py
        buildtools/conf/fixlicense.py
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/examples/python/basics.py
        clients/examples/python/mclient-python2.py
        clients/examples/python/sqlsample.py
        clients/mapiclient/dotfile.py
        clients/mapiclient/mclient.c
        clients/mapiclient/stethoscope.c
        clients/mapiclient/tachograph.c
        clients/mapiclient/tomograph.c
        clients/mapilib/ChangeLog.Mar2018
        clients/mapilib/mapi.c
        clients/mapilib/mapi.h
        common/utils/mcrypt.c
        common/utils/mcrypt.h
        configure.ag
        monetdb5/modules/mal/mal_mapi.c
        sql/backends/monet5/UDF/capi/capi.c
        sql/backends/monet5/sql.mal
        sql/backends/monet5/sql_user.c
        sql/benchmarks/hist-uva/ground/create.py
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        
sql/test/BugTracker-2009/Tests/parallel_bulk-load.SF-2771052.unpack_csv.py
        sql/test/BugTracker-2010/Tests/new-readonly-db.Bug-2695.py
        sql/test/BugTracker-2011/Tests/interrupted-initialization.Bug-2875.py
        sql/test/BugTracker-2014/Tests/acidity-fail.Bug-3635.py
        sql/test/BugTracker-2014/Tests/copy-into.Bug-3481.SQL.py
        sql/test/BugTracker-2014/Tests/python-microseconds.Bug-3439.SQL.py
        sql/test/BugTracker-2014/Tests/utf8bom.Bug-3436.SQL.py
        sql/test/BugTracker-2015/Tests/acidity2-fail.Bug-3635.SQL.py
        sql/test/BugTracker-2015/Tests/null.Bug-3833.stable.out
        sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
        sql/test/BugTracker-2016/Tests/null_in_null.Bug-3900.stable.out
        sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out
        
sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.FreeBSD
        
sql/test/BugTracker-2017/Tests/cleanup_statistics.Bug-6439.stable.out.Windows
        
sql/test/BugTracker-2017/Tests/python_loader_clobbers_default_with_null.Bug-6464.stable.err
        sql/test/BugTracker-2018/Tests/All
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.sql
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out
        sql/test/BugTracker/Tests/python_escape.SF-1916844.SQL.py
        sql/test/Dependencies/Tests/Dependencies.stable.out
        sql/test/Dependencies/Tests/Dependencies.stable.out.int128
        sql/test/Dependencies/Tests/dependency_loop.stable.out
        sql/test/Dependencies/Tests/dependency_loop.stable.out.int128
        sql/test/Tests/keys.stable.out
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/Users/Tests/grantAndRevokeUserLoggedIN.Bug-3476.SQL.py
        sql/test/concurrent/Tests/crash_on_concurrent_use.SF-1411926.SQL.py
        sql/test/concurrent/Tests/simple_select.SQL.py
        sql/test/emptydb-upgrade-chain-hge/Tests/package.py
        sql/test/emptydb-upgrade-chain/Tests/package.py
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
        sql/test/emptydb/Tests/package-hge.py
        sql/test/emptydb/Tests/package.py
        sql/test/malloc_fail/Tests/mallocs.SQL.py
        sql/test/mapi/Tests/python_dec38.py
        sql/test/mapi/Tests/python_int128.py
        sql/test/remote/Tests/ssbm.SQL.py
        sql/test/testdb-upgrade-chain-hge/Tests/package.py
        sql/test/testdb-upgrade-chain/Tests/package.py
        sql/test/testdb/Tests/testdb-package-hge.py
        sql/test/testdb/Tests/testdb-package.py
        sql/test/wlcr/Tests/wlc01.py
        sql/test/wlcr/Tests/wlc100.py
        sql/test/wlcr/Tests/wlc20.py
        sql/test/wlcr/Tests/wlc21.py
        sql/test/wlcr/Tests/wlc30.py
        sql/test/wlcr/Tests/wlc40.py
        sql/test/wlcr/Tests/wlc50.py
        sql/test/wlcr/Tests/wlc70.py
        sql/test/wlcr/Tests/wlcr00.py
        sql/test/wlcr/Tests/wlr01.py
        sql/test/wlcr/Tests/wlr100.py
        sql/test/wlcr/Tests/wlr20.py
        sql/test/wlcr/Tests/wlr30.py
        sql/test/wlcr/Tests/wlr40.py
        sql/test/wlcr/Tests/wlr50.py
        sql/test/wlcr/Tests/wlr70.py
        testing/Makefile.ag
        testing/Mfilter.py
        testing/Mtest.py.in
        testing/malcheck.py
        tools/merovingian/daemon/client.c
Branch: default
Log Message:

Merge with Mar2018 branch.


diffs (truncated from 4395 to 300 lines):

diff --git a/ChangeLog.Mar2018 b/ChangeLog.Mar2018
--- a/ChangeLog.Mar2018
+++ b/ChangeLog.Mar2018
@@ -2,9 +2,9 @@
 # This file is updated with Maddlog
 
 * Wed Feb 14 2018 Stefan Manegold <stefan.maneg...@cwi.nl>
-- mclient's executing time profiling options and output format have
+- mclient's execution time profiling options and output format have
   been changed. Instead of implicitly via the "--interactive"/"-i"
-  option (or when using and interactive mclient console), execution time
+  option (or when using an interactive mclient console), execution time
   profiling is now controlled via an explicit "--timer=timermode"/"-t
   timermode" command-line option, or a "\t timermode" command in the
   interactive mclient console. The default (also in the interactive
@@ -25,7 +25,7 @@
   only the total wall-clock time per batch is measured and reported. The
   server-measured detailed performance timings "sql", "opt", "run" are
   always measured and reported per query. Also, all timing information
-  is now given on a separate line and set to stderr rather than stdout.
+  is now given on a separate line and sent to stderr rather than stdout.
 
 * Fri Feb  9 2018 Sjoerd Mullender <sjo...@acm.org>
 - Some types and constants were moved from configure (and hence
diff --git a/NT/makelibdef.py b/NT/makelibdef.py
--- a/NT/makelibdef.py
+++ b/NT/makelibdef.py
@@ -1,8 +1,10 @@
+from __future__ import print_function
+
 import fileinput, re
 p = re.compile('^\s*\d+\s+[0-9A-F]+\s+[0-9A-F]+\s+(\w+)')
-print 'LIBRARY R'
-print 'EXPORTS'
+print('LIBRARY R')
+print('EXPORTS')
 for line in fileinput.input():
-    m = p.match(line);
-    if (m):
-        print m.group(1);
+    m = p.match(line)
+    if m:
+        print(m.group(1))
diff --git a/NT/mkgeomwxs.py b/NT/mkgeomwxs.py
--- a/NT/mkgeomwxs.py
+++ b/NT/mkgeomwxs.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
 # python mkgeomwxs.py VERSION makedefs.txt PREFIX > 
PREFIX/MonetDB5-Geom-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\candle.exe" -nologo -arch 
x64/x86 PREFIX/MonetDB5-Geom-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\light.exe" -nologo -sice:ICE03 
-sice:ICE60 -sice:ICE82 -ext WixUIExtension 
PREFIX/MonetDB5-Geom-Installer.wixobj
diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py
--- a/NT/mkodbcwxs.py
+++ b/NT/mkodbcwxs.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
 # python mkodbcwxs.py VERSION makedefs.txt PREFIX > 
PREFIX/MonetDB-ODBC-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\candle.exe" -nologo -arch 
x64/x86 PREFIX/MonetDB-ODBC-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\light.exe" -nologo -sice:ICE03 
-sice:ICE60 -sice:ICE82 -ext WixUIExtension PREFIX/MonetDB-ODBC-Installer.wixobj
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
 # python mksqlwxs.py VERSION makedefs.txt PREFIX > 
PREFIX/MonetDB5-SQL-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\candle.exe" -nologo -arch 
x64/x86 PREFIX/MonetDB5-SQL-Installer.wxs
 # "c:\Program Files (x86)\WiX Toolset v3.10\bin\light.exe" -nologo -sice:ICE03 
-sice:ICE60 -sice:ICE82 -ext WixUIExtension PREFIX/MonetDB5-SQL-Installer.wixobj
diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -85,6 +85,14 @@ PYTHON3LIB=python32.lib
 !ENDIF
 PYTHON3_LIBDIR=share\MonetDB\python3
 
+!IFDEF PYTHON2BASE
+PYTHON_LIBDIR=$(PYTHON2_LIBDIR)
+!ELSE
+!IFDEF PYTHON3BASE
+PYTHON_LIBDIR=$(PYTHON3_LIBDIR)
+!ENDIF
+!ENDIF
+
 !IFDEF HAVE_PCRE
 # This is the location of the PCRE library
 !IFNDEF LIBPCRE
@@ -440,6 +448,7 @@ CONFIGURE=$(PYTHON) $(CONFIGURE_PY) \
        "LIBZLIB=$(LIBZLIB)" \
        "PACKAGE=$(pkg)" \
        "PYTHON=$(PYTHON)" \
+       "PYTHON_LIBDIR=$(PYTHON_LIBDIR)" \
        "PYTHON2=$(PYTHON2)" \
        "PYTHON2_LIBDIR=$(PYTHON2_LIBDIR)" \
        "PYTHON3=$(PYTHON3)" \
diff --git a/buildtools/autogen/autogen.py b/buildtools/autogen/autogen.py
--- a/buildtools/autogen/autogen.py
+++ b/buildtools/autogen/autogen.py
@@ -6,6 +6,8 @@
 #
 # Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
 
+from __future__ import print_function
+
 #
 # autogen scans the makefile.ag
 # and generates both the makefile.am and makefile.msc
diff --git a/buildtools/autogen/autogen/am.py b/buildtools/autogen/autogen/am.py
--- a/buildtools/autogen/autogen/am.py
+++ b/buildtools/autogen/autogen/am.py
@@ -4,6 +4,8 @@
 #
 # Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
 
+from __future__ import print_function
+
 import os
 import posixpath
 import sys
diff --git a/buildtools/autogen/autogen/codegen.py 
b/buildtools/autogen/autogen/codegen.py
--- a/buildtools/autogen/autogen/codegen.py
+++ b/buildtools/autogen/autogen/codegen.py
@@ -4,6 +4,8 @@
 #
 # Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
 
+from __future__ import print_function
+
 import string
 import re
 import fileinput
@@ -138,13 +140,29 @@ def find_org(deps,f):
 buildincsfiles = {}
 installincsfiles = {}
 
+# replacement for os.path.join which also normalizes the resultant
+# path, keeping Make variables in place
+def normpathjoin(a, *p):
+    f = os.path.join(a, *p)
+    parts = re.split(r'(\$(?:[^()]|\([^()]*\)))', f)
+    for i in range(len(parts)):
+        prt = parts[i]
+        if prt and prt != os.sep and not prt.startswith('$'):
+            s, e = 0, len(prt)
+            if prt.startswith(os.sep):
+                s += len(os.sep)
+            if prt.endswith(os.sep):
+                e -= len(os.sep)
+            parts[i] = prt[:s] + os.path.normpath(prt[s:e]) + prt[e:]
+    return ''.join(parts)
+
 def do_deps(targets,deps,includes,incmap,cwd,incdirsmap):
     basename = os.path.basename(cwd)
     incs = {}
     do_scan(targets,deps,incmap,cwd,incs)
     do_dep_combine(deps,includes,cwd,incs)
 
-    normcwd = os.path.normpath(cwd)
+    normcwd = normpathjoin(cwd)
     buildincs = buildincsfiles[normcwd] = {}
     for k,vals in incs.items():
         buildincs[k] = vals
@@ -156,7 +174,7 @@ def do_deps(targets,deps,includes,incmap
             if os.path.isabs(i):
                 nvals.append(i)
             else:
-                inc = os.path.normpath(os.path.join(cwd,i))
+                inc = normpathjoin(cwd,i)
                 mlen = 0
                 subsrc = ''
                 subins = ''
@@ -203,7 +221,7 @@ def do_scan_target(target,targets,deps,i
     if target not in incs:
         inc_files = []
         if ext in scan_map:
-            org = os.path.join(cwd,find_org(deps,target))
+            org = normpathjoin(cwd,find_org(deps,target))
             if os.path.exists(org):
                 b = readfilepart(org,ext)
                 pat,sep,incext = scan_map[ext]
@@ -214,29 +232,29 @@ def do_scan_target(target,targets,deps,i
                         ressep = sep.search(b, p, e)
                         while ressep is not None:
                             n = ressep.start(0)
-                            fnd1 = b[p:n]
+                            fnd1 = b[p:n] + incext
                             p = ressep.end(0) # start of next file
-                            if fnd1+incext in deps or fnd1+incext in targets:
-                                if fnd1+incext not in inc_files:
-                                    inc_files.append(fnd1+incext)
-                            elif fnd1+incext in incmap:
-                                if fnd1+incext not in inc_files:
-                                    
inc_files.append(os.path.join(incmap[fnd1+incext],fnd1+incext))
+                            if fnd1 in deps or fnd1 in targets:
+                                if fnd1 not in inc_files:
+                                    inc_files.append(fnd1)
+                            elif fnd1 in incmap:
+                                if fnd1 not in inc_files:
+                                    
inc_files.append(normpathjoin(incmap[fnd1],fnd1))
                             ressep = sep.search(b,p,e)
-                    fnd = b[p:e]
-                    if fnd+incext in deps or fnd+incext in targets:
-                        if fnd+incext not in inc_files:
-                            inc_files.append(fnd+incext)
-                    elif fnd+incext in incmap:
-                        if fnd+incext not in inc_files:
-                            
inc_files.append(os.path.join(incmap[fnd+incext],fnd+incext))
-                    elif os.path.exists(os.path.join(cwd, fnd+incext)):
-                        if fnd+incext not in inc_files:
-                            inc_files.append(fnd+incext)
-                        if fnd+incext not in incs:
-                            incs[fnd+incext] = []
+                    fnd = b[p:e] + incext
+                    if fnd in deps or fnd in targets:
+                        if fnd not in inc_files:
+                            inc_files.append(fnd)
+                    elif fnd in incmap:
+                        if fnd not in inc_files:
+                            inc_files.append(normpathjoin(incmap[fnd],fnd))
+                    elif os.path.exists(os.path.join(cwd, fnd)):
+                        if fnd not in inc_files:
+                            inc_files.append(fnd)
+                        if fnd not in incs:
+                            incs[fnd] = []
 ##                     else:
-##                         print fnd + incext + " not in deps or incmap"
+##                         print(fnd + " not in deps or incmap")
                     res = pat.search(b,res.end(0))
         incs[target] = inc_files
 
@@ -274,7 +292,7 @@ def expand_incdir(i,topdir):
     if i.find(os.sep) >= 0:
         d,rest = i.split(os.sep, 1)
         if d == "top_srcdir" or d == "top_builddir":
-            dir = os.path.join(topdir, rest)
+            dir = normpathjoin(topdir, rest)
         elif d == "srcdir" or d == "builddir":
             dir = rest
     return dir
@@ -314,7 +332,7 @@ def collect_includes(incdirs, cwd, topdi
     for dir,org in dirs:
         if dir.startswith('$'):
             continue
-        dir = os.path.normpath(os.path.join(cwd, dir))
+        dir = normpathjoin(cwd, dir)
         if dir in buildincsfiles:
             incs = buildincsfiles[dir]
         elif dir in installincsfiles:
@@ -327,14 +345,14 @@ def collect_includes(incdirs, cwd, topdi
                 incfiles = []
                 for inc in incs[file]:
                     if not os.path.isabs(inc) and inc[0] != '$':
-                        inc = os.path.join(org,inc)
+                        inc = normpathjoin(org,inc)
                     incfiles.append(inc)
-                includes[os.path.join(org,file)] = incfiles
+                includes[normpathjoin(org,file)] = incfiles
                 incmap[file] = org
         else:
             if os.path.exists(dir):
                 for inc in os.listdir(dir):
-                    includes[os.path.join(org,inc)] = [ os.path.join(org,inc) ]
+                    includes[normpathjoin(org,inc)] = [ normpathjoin(org,inc) ]
                     incmap[inc] = org
 
     return includes,incmap
diff --git a/buildtools/autogen/autogen/msc.py 
b/buildtools/autogen/autogen/msc.py
--- a/buildtools/autogen/autogen/msc.py
+++ b/buildtools/autogen/autogen/msc.py
@@ -4,6 +4,8 @@
 #
 # Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
 
+from __future__ import print_function
+
 import string
 import os
 import re
diff --git a/buildtools/conf/fixlicense.py b/buildtools/conf/fixlicense.py
--- a/buildtools/conf/fixlicense.py
+++ b/buildtools/conf/fixlicense.py
@@ -6,6 +6,8 @@
 #
 # Copyright 1997 - July 2008 CWI, August 2008 - 2018 MonetDB B.V.
 
+from __future__ import print_function
+
 import os, sys, getopt, stat
 
 usage = '''\
@@ -41,7 +43,7 @@ def main():
         opts, args = getopt.getopt(sys.argv[1:], 'arl:sv',
                                    ['pre=', 'post=', 'start=', 'end='])
     except getopt.GetoptError:
-        print >> sys.stderr, usage % {'prog': sys.argv[0]}
+        print(usage % {'prog': sys.argv[0]}, file=sys.stderr)
         sys.exit(1)
     for o, a in opts:
         if o == '-a':
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to