Changeset: 636ea86fee63 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=636ea86fee63
Added Files:
        sql/test/BugTracker-2016/Tests/rename_exps.Bug-3974.stable.out.32bit
Modified Files:
        clients/R/MonetDB.R/R/dbi.R
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows
        
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows.single
        sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py
        
sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out.32bit
        testing/Mtest.py.in
Branch: default
Log Message:

Merge with Jun2016 branch.


diffs (207 lines):

diff --git a/clients/R/MonetDB.R/R/dbi.R b/clients/R/MonetDB.R/R/dbi.R
--- a/clients/R/MonetDB.R/R/dbi.R
+++ b/clients/R/MonetDB.R/R/dbi.R
@@ -524,7 +524,7 @@ setMethod("dbWriteTable", signature(conn
       if (csvdump) {
         tmp <- tempfile(fileext = ".csv")
         write.table(value, tmp, sep = ",", quote = TRUE, row.names = FALSE, 
col.names = FALSE, na="", fileEncoding = "UTF-8")
-        dbSendQuery(conn, paste0("COPY INTO ", qname, " FROM '", tmp, "' USING 
DELIMITERS ',','\\n','\"' NULL AS ''"))
+        dbSendQuery(conn, paste0("COPY INTO ", qname, " FROM '", 
encodeString(tmp), "' USING DELIMITERS ',','\\n','\"' NULL AS ''"))
         file.remove(tmp) 
       } else {
         vins <- paste("(", paste(rep("?", length(value)), collapse=', '), ")", 
sep='')
@@ -924,7 +924,7 @@ monet.read.csv <- monetdb.read.csv <- fu
   delimspec <- paste0("USING DELIMITERS '", delim, "','", newline, "','", 
quote, "'")
   
   for(i in seq_along(files)) {
-    thefile <- normalizePath(files[i])
+    thefile <- encodeString(normalizePath(files[i]))
     dbSendUpdate(conn, paste("COPY", if(header) "OFFSET 2", "INTO", 
       tablename, "FROM", paste("'", thefile, "'", sep=""), delimspec, "NULL 
as", paste("'", 
       na.strings[1], "'", sep=""), if(locked) "LOCKED", if(best.effort) "BEST 
EFFORT"))
diff --git 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows.single
 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows.single
--- 
a/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows.single
+++ 
b/monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out.Windows.single
@@ -56,7 +56,7 @@ Ready.
 % def # name
 % clob # type
 % 449 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();"
  ]
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.garbageCollector();"
  ]
 #explain copy into ttt from 'a:\tmp/xyz';
 % .explain # table_name
 % mal # name
@@ -88,7 +88,7 @@ end user.s4_1;
 % def # name
 % clob # type
 % 472 # length
-[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.aliases();optimizer.pushselect();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.sql_append();optimizer.garbageCollector();"
   ]
+[ 
"optimizer.inline();optimizer.remap();optimizer.costModel();optimizer.coercions();optimizer.evaluate();optimizer.pushselect();optimizer.aliases();optimizer.mitosis();optimizer.mergetable();optimizer.deadcode();optimizer.commonTerms();optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.matpack();optimizer.dataflow();optimizer.querylog();optimizer.multiplex();optimizer.generator();optimizer.sql_append();optimizer.garbageCollector();"
   ]
 #explain copy into ttt from 'Z:/tmp/xyz';
 % .explain # table_name
 % mal # name
diff --git a/sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py 
b/sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py
--- a/sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py
+++ b/sql/test/BugTracker-2013/Tests/binary_copy_into.Bug-3345.SQL.py
@@ -19,8 +19,11 @@ shutil.copyfile(os.path.join(src,'n_regi
 
 clt.stdin.write('start transaction;');
 clt.stdin.write('create table bug (n_nationkey INTEGER,n_regionkey 
INTEGER);\n')
-clt.stdin.write('copy binary into bug from \'%s/n_nationkey.sorted\', 
\'%s/n_regionkey.sorted\';\n'% (dst,dst))
+clt.stdin.write('copy binary into bug from \'%s\', \'%s\';\n' %
+                (os.path.join(dst, 'n_nationkey.sorted').replace('\\', '\\\\'),
+                 os.path.join(dst, 'n_regionkey.sorted').replace('\\', 
'\\\\')))
 
 out, err = clt.communicate()
-sys.stdout.write(out.replace(os.environ['TSTTRGBASE'],'${TSTTRGBASE}').replace('\\','/'))
-sys.stderr.write(err.replace(os.environ['TSTTRGBASE'],'${TSTTRGBASE}').replace('\\','/'))
+# normalize output
+sys.stdout.write(out.replace(os.environ['TSTTRGBASE'].replace('\\', 
'\\\\'),'${TSTTRGBASE}').replace('\\\\','/'))
+sys.stderr.write(err.replace(os.environ['TSTTRGBASE'].replace('\\', 
'\\\\'),'${TSTTRGBASE}').replace('\\\\','/'))
diff --git 
a/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out.32bit 
b/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out.32bit
--- 
a/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out.32bit
+++ 
b/sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out.32bit
@@ -37,15 +37,14 @@ Ready.
 % clob # type
 % 107 # length
 function user.s2_1(A0:int):void;
-    X_21:void := querylog.define("explain select count(*) from tmp where i = 
20160222;","default_pipe",11);
+    X_20:void := querylog.define("explain select count(*) from tmp where i = 
20160222;","default_pipe",10);
     X_2 := sql.mvc();
     X_6:bat[:oid,:int] := sql.bind(X_2,"sys","tmp","i",0);
-    X_9 := X_6;
     X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","tmp");
-    X_10 := algebra.subselect(X_9,X_3,A0,A0,true,false,false);
-    X_13 := algebra.leftfetchjoin(X_10,X_9);
-    X_14 := aggr.count(X_13);
-    sql.resultSet("sys.L1","L1","wrd",32,0,7,X_14);
+    X_9 := algebra.subselect(X_6,X_3,A0,A0,true,false,false);
+    X_12 := algebra.leftfetchjoin(X_9,X_6);
+    X_13 := aggr.count(X_12);
+    sql.resultSet("sys.L1","L1","wrd",32,0,7,X_13);
 end user.s2_1;
 # optimizer.mitosis()
 # optimizer.dataflow()
@@ -55,16 +54,15 @@ end user.s2_1;
 % clob # type
 % 113 # length
 function user.s3_1(A0:str):void;
-    X_23:void := querylog.define("explain select count(*) from tmp where i = 
\\'20160222\\';","default_pipe",12);
+    X_22:void := querylog.define("explain select count(*) from tmp where i = 
\\'20160222\\';","default_pipe",11);
     X_2 := sql.mvc();
     X_6:bat[:oid,:int] := sql.bind(X_2,"sys","tmp","i",0);
-    X_9 := X_6;
     X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","tmp");
-    X_10 := calc.int(A0,8,0);
-    X_12 := algebra.subselect(X_9,X_3,X_10,X_10,true,false,false);
-    X_15 := algebra.leftfetchjoin(X_12,X_9);
-    X_16 := aggr.count(X_15);
-    sql.resultSet("sys.L1","L1","wrd",32,0,7,X_16);
+    X_9 := calc.int(A0,8,0);
+    X_11 := algebra.subselect(X_6,X_3,X_9,X_9,true,false,false);
+    X_14 := algebra.leftfetchjoin(X_11,X_6);
+    X_15 := aggr.count(X_14);
+    sql.resultSet("sys.L1","L1","wrd",32,0,7,X_15);
 end user.s3_1;
 # optimizer.mitosis()
 # optimizer.dataflow()
@@ -74,16 +72,15 @@ end user.s3_1;
 % clob # type
 % 108 # length
 function user.s4_1(A0:lng):void;
-    X_23:void := querylog.define("explain select count(*) from tmp where i = 
201602221;","default_pipe",12);
+    X_22:void := querylog.define("explain select count(*) from tmp where i = 
201602221;","default_pipe",11);
     X_2 := sql.mvc();
     X_6:bat[:oid,:int] := sql.bind(X_2,"sys","tmp","i",0);
-    X_9 := X_6;
-    X_10:bat[:oid,:lng] := batcalc.lng(0,X_9,10,0);
+    X_9:bat[:oid,:lng] := batcalc.lng(0,X_6,10,0);
     X_3:bat[:oid,:oid] := sql.tid(X_2,"sys","tmp");
-    X_12 := algebra.subselect(X_10,X_3,A0,A0,true,false,false);
-    X_15 := algebra.leftfetchjoin(X_12,X_9);
-    X_16 := aggr.count(X_15);
-    sql.resultSet("sys.L1","L1","wrd",32,0,7,X_16);
+    X_11 := algebra.subselect(X_9,X_3,A0,A0,true,false,false);
+    X_14 := algebra.leftfetchjoin(X_11,X_6);
+    X_15 := aggr.count(X_14);
+    sql.resultSet("sys.L1","L1","wrd",32,0,7,X_15);
 end user.s4_1;
 # optimizer.mitosis()
 # optimizer.dataflow()
diff --git 
a/sql/test/BugTracker-2016/Tests/rename_exps.Bug-3974.stable.out.32bit 
b/sql/test/BugTracker-2016/Tests/rename_exps.Bug-3974.stable.out.32bit
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2016/Tests/rename_exps.Bug-3974.stable.out.32bit
@@ -0,0 +1,45 @@
+stdout of test 'rename_exps.Bug-3974` in directory 'sql/test/BugTracker-2016` 
itself:
+
+
+# 12:27:17 >  
+# 12:27:17 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=39847" "--set" 
"mapi_usock=/var/tmp/mtest-21445/.s.monetdb.39847" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_BugTracker-2016"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 12:27:17 >  
+
+# MonetDB 5 server v11.21.18
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2016', using 4 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit 
integers dynamically linked
+# Found 7.332 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2015 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://localhost.nes.nl:39847/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-21445/.s.monetdb.39847
+# MonetDB/GIS module loaded
+# Start processing logs sql/sql_logs version 52200
+# Start reading the write-ahead log 'sql_logs/sql/log.11'
+# Finished reading the write-ahead log 'sql_logs/sql/log.11'
+# Finished processing logs sql/sql_logs
+# MonetDB/SQL module loaded
+# MonetDB/R   module loaded
+
+Ready.
+
+# 12:27:17 >  
+# 12:27:17 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-21445" "--port=39847"
+# 12:27:17 >  
+
+#create table foo (a int, b int);
+#prepare select count(b) from (select a,b from foo union all select null,null 
from foo) t;
+#prepare select count(b) from (select a,b from foo union all select null,null 
from foo) t;
+% .prepare,    .prepare,       .prepare,       .prepare,       .prepare,       
.prepare # table_name
+% type,        digits, scale,  schema, table,  column # name
+% varchar,     int,    int,    str,    str,    str # type
+% 3,   2,      1,      0,      2,      2 # length
+[ "wrd",       32,     0,      "",     "L3",   "L3"    ]
+#drop table foo;
+
+# 12:27:17 >  
+# 12:27:17 >  "Done."
+# 12:27:17 >  
+
diff --git a/testing/Mtest.py.in b/testing/Mtest.py.in
--- a/testing/Mtest.py.in
+++ b/testing/Mtest.py.in
@@ -600,11 +600,21 @@ def startswithpath(str,pre) :
 if sys.version_info[0] == 2:
     import urllib
     path = urllib.url2pathname
-    url = urllib.pathname2url
+    def url(str) :
+        url = urllib.pathname2url(str)
+        # on Windows, C:\tmp\foo becomes ///C:/tmp/foo, turn into /C:/tmp/foo
+        if url.startswith('///'):
+            url = url[2:]
+        return url
 elif sys.version_info[0] == 3:
     import urllib.request
     path = urllib.request.url2pathname
-    url = urllib.request.pathname2url
+    def url(str) :
+        url = urllib.request.pathname2url(str)
+        # on Windows, C:\tmp\foo becomes ///C:/tmp/foo, turn into /C:/tmp/foo
+        if url.startswith('///'):
+            url = url[2:]
+        return url
 
 def try_open(path, mode) :
     try:
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to