Changeset: 6f08c3259fc1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6f08c3259fc1
Added Files:
        sql/test/Tests/table_function.stable.err
        sql/test/Tests/table_function.stable.out
Modified Files:
        java/src/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
        sql/backends/monet5/sql.mx
        sql/server/rel_optimizer.c
        sql/storage/bat/bat_storage.c
        
sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out
        sql/test/BugTracker-2012/Tests/fixed_limit_for_prepare.Bug-3208.sql
        
sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.sql
        
sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.stable.out
        sql/test/BugTracker-2012/Tests/mal_syntax_error.Bug-2949.sql
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
        sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        
sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out
        sql/test/Tests/All
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/table_function.sql.src
        sql/test/Tests/trace.stable.out
        sql/test/leaks/Tests/check0.stable.out
        sql/test/leaks/Tests/check1.stable.out
        sql/test/leaks/Tests/check2.stable.out
        sql/test/leaks/Tests/check3.stable.out
        sql/test/leaks/Tests/check4.stable.out
        sql/test/leaks/Tests/check5.stable.out
        sql/test/leaks/Tests/drop3.stable.out
        sql/test/leaks/Tests/select1.stable.out
        sql/test/leaks/Tests/select2.stable.out
        sql/test/leaks/Tests/temp1.stable.out
        sql/test/leaks/Tests/temp2.stable.out
        sql/test/leaks/Tests/temp3.stable.out
        sql/test/mapi/Tests/php_monetdb.stable.out
Branch: default
Log Message:

merge with default


diffs (truncated from 1009 to 300 lines):

diff --git a/java/src/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java 
b/java/src/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
--- a/java/src/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
+++ b/java/src/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
@@ -973,12 +973,15 @@ public class MonetPreparedStatement
 
                // Reduction is possible via rounding; do it and we're good to 
go.
                x = x.round(new MathContext(targetScale, RoundingMode.HALF_UP));
-               x = x.stripTrailingZeros();
 
                // MonetDB doesn't like leading 0's, since it counts them as 
part of
                // the precision, so let's strip them off. (But be careful not 
to do
-               // this to the exact number "0".)
+               // this to the exact number "0".)  Also strip off trailing
+               // numbers that are inherent to the double representation.
                String xStr = x.toPlainString();
+               int dot = xStr.indexOf(".");
+               if (dot != 0)
+                       xStr = xStr.substring(0, Math.min(xStr.length(), dot + 
1 + scale[i]));
                while (xStr.startsWith("0") && xStr.length() > 1)
                        xStr = xStr.substring(1);
                setValue(idx, xStr);
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -7697,6 +7697,8 @@ RAstatement(Client cntxt, MalBlkPtr mb, 
        sql_rel *rel;
        list *refs;
 
+       if (msg)
+               return msg;
        if (!m->sa)
                m->sa = sa_create();
        refs = sa_list(m->sa);
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -4727,7 +4727,7 @@ rel_use_index(int *changes, mvc *sql, sq
                                        ((left && !rel_find_exp(rel->l, e->l)) 
||
                                        (!left && !rel_find_exp(rel->r, 
e->l)))) 
                                        nre = e->l;
-                               single_table = (!re || 
!exps_match_col_exps(nre, re));
+                               single_table = (!re || (exp_relname(nre) && 
exp_relname(re) && strcmp(exp_relname(nre), exp_relname(re)) == 0));
                                re = nre;
                        }
                        if (single_table) { /* add PROP_HASHCOL to all column 
exps */
@@ -5312,8 +5312,8 @@ rel_semijoin_use_fk(int *changes, mvc *s
                rel->exps = NULL;
                append(rels, rel->l);
                append(rels, rel->r);
-
                (void) find_fk( sql, rels, exps);
+
                rel->exps = exps;
        }
        return rel;
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -547,6 +547,9 @@ append_col(sql_trans *tr, sql_column *c,
                bat = c->data;
        /* appends only write */
        bat->wtime = c->base.wtime = c->t->base.wtime = c->t->s->base.wtime = 
tr->wtime = tr->wstime;
+       /* inserts are ordered with the current delta implementation */
+       /* therefor mark appends as reads */
+       c->t->s->base.rtime = c->t->base.rtime = tr->stime;
        if (tpe == TYPE_bat)
                delta_append_bat(bat, i);
        else
@@ -1038,16 +1041,6 @@ snapshot_create_idx(sql_trans *tr, sql_i
 }
 
 static int
-new_persistent_dbat( sql_dbat *bat)
-{
-       BAT *b = temp_descriptor(bat->dbid);
-
-       bat->dbid = temp_create(b);
-       bat_destroy(b);
-       return LOG_OK;
-}
-
-static int
 load_dbat(sql_dbat *bat, int bid)
 {
        BAT *b = quick_descriptor(bid);
@@ -1080,7 +1073,7 @@ create_del(sql_trans *tr, sql_table *t)
                        return load_dbat(bat, bid);
                ok = LOG_ERR;
        } else if (bat->dbid && !isTempTable(t)) {
-               return new_persistent_dbat(bat);
+               return ok;
        } else if (!bat->dbid) {
                b = bat_new(TYPE_void, TYPE_oid, t->sz);
                bat_set_access(b, BAT_READ);
diff --git 
a/sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out
 
b/sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out
--- 
a/sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out
+++ 
b/sql/test/BugTracker-2012/Tests/aggregate_vs_positional_column_crash.Bug-3085.stable.out
@@ -28,13 +28,13 @@ Ready.
 % L2,  L1 # name
 % tinyint,     wrd # type
 % 1,   2 # length
-[ 1,   39      ]
+[ 1,   38      ]
 #SELECT (SELECT count(*) FROM tables), 1;
 % .L1, .L1 # table_name
 % L1,  single_value # name
 % wrd, tinyint # type
 % 2,   1 # length
-[ 39,  1       ]
+[ 38,  1       ]
 
 # 21:48:51 >  
 # 21:48:51 >  "Done."
diff --git 
a/sql/test/BugTracker-2012/Tests/fixed_limit_for_prepare.Bug-3208.sql 
b/sql/test/BugTracker-2012/Tests/fixed_limit_for_prepare.Bug-3208.sql
--- a/sql/test/BugTracker-2012/Tests/fixed_limit_for_prepare.Bug-3208.sql
+++ b/sql/test/BugTracker-2012/Tests/fixed_limit_for_prepare.Bug-3208.sql
@@ -56,7 +56,7 @@ VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
        ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
?, ?,
        ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 
?);        
 
-EXEC 0('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
+exec **('', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
        '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
'', '',
        '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
'', '',
        '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 
'', '',
diff --git 
a/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.sql 
b/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.sql
--- 
a/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.sql
+++ 
b/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.sql
@@ -33,7 +33,7 @@ SELECT TR.x, TR.z, comp
 FROM 
 (SELECT TR1.u as x, TR1.v as y, TR2.v as z, TR1.r as rxy, TR2.r as ryz
            FROM
-               RX as TR1 JOIN R as TR2 
+               RX as TR1 JOIN RX as TR2 
                    ON (TR1.v = TR2.u AND TR1.u <> TR2.v)
        ) as TR                         
            JOIN 
diff --git 
a/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.stable.out
 
b/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.stable.out
--- 
a/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.stable.out
+++ 
b/sql/test/BugTracker-2012/Tests/join_over_multitable_using_index.Bug-3181.stable.out
@@ -61,8 +61,12 @@ Ready.
 #      ON (TR.rxy = s AND TR.ryz = t);
 % sys.tr,      sys.tr, sys.trans # table_name
 % x,   z,      comp # name
-% int, varchar,        int # type
-% 1,   0,      1 # length
+% int, int,    int # type
+% 1,   1,      3 # length
+[ 0,   2,      255     ]
+[ 0,   3,      31      ]
+[ 0,   4,      31      ]
+[ 3,   4,      255     ]
 #Drop index trans_st_idx;
 #Drop table trans;
 #Drop table rx;
diff --git a/sql/test/BugTracker-2012/Tests/mal_syntax_error.Bug-2949.sql 
b/sql/test/BugTracker-2012/Tests/mal_syntax_error.Bug-2949.sql
--- a/sql/test/BugTracker-2012/Tests/mal_syntax_error.Bug-2949.sql
+++ b/sql/test/BugTracker-2012/Tests/mal_syntax_error.Bug-2949.sql
@@ -15,3 +15,4 @@ END;
 select * from refine();
 
 drop function refine;
+drop table r;
diff --git 
a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err 
b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
--- a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
+++ b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.err
@@ -30,9 +30,9 @@ stderr of test 'predicate_select.Bug-309
 # 18:53:13 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=niels" 
"--port=32323"
 # 18:53:13 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-30433/.s.monetdb.30902
+MAPI  = (monetdb) /var/tmp/mtest-21655/.s.monetdb.39354
 QUERY = select * from tables where name;
-ERROR = !conversion of string 'r' to type bit failed.
+ERROR = !conversion of string 'optimizers' to type bit failed.
 
 # 18:53:13 >  
 # 18:53:13 >  "Done."
diff --git 
a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out 
b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
--- a/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
+++ b/sql/test/BugTracker-2012/Tests/predicate_select.Bug-3090.stable.out
@@ -61,11 +61,11 @@ Ready.
 [ 5595,        "optimizers",   2000,   "create view sys.optimizers as select * 
from sys.optimizers();",        1,      true,   0,      false,  0       ]
 [ 5605,        "environment",  2000,   "create view sys.environment as select 
* from sys.environment();",      1,      true,   0,      false,  0       ]
 [ 5647,        "queue",        2000,   "create view sys.queue as select * from 
sys.queue();",  1,      true,   0,      false,  0       ]
-[ 6128,        "storage",      2000,   "create view sys.storage as select * 
from sys.storage();",      1,      true,   0,      false,  0       ]
-[ 6140,        "storagemodelinput",    2000,   NULL,   0,      true,   0,      
false,  0       ]
-[ 6183,        "storagemodel", 2000,   "create view sys.storagemodel as select 
* from sys.storagemodel();",    1,      true,   0,      false,  0       ]
-[ 6192,        "tablestoragemodel",    2000,   "-- A summary of the table 
storage requirement is is available as a table view.\n-- The auxillary column 
denotes the maximum space if all non-sorted columns\n-- would be augmented with 
a hash (rare situation)\ncreate view sys.tablestoragemodel\nas select 
\"schema\",\"table\",max(count) as \"count\",\n\tsum(columnsize) as 
columnsize,\n\tsum(heapsize) as heapsize,\n\tsum(indices) as 
indices,\n\tsum(case when sorted = false then 8 * count else 0 end) as 
auxillary\nfrom sys.storagemodel() group by \"schema\",\"table\";",      1,     
 true,   0,      false,  0       ]
-[ 6214,        "systemfunctions",      2000,   NULL,   0,      true,   0,      
false,  0       ]
+[ 6160,        "storage",      2000,   "create view sys.storage as select * 
from sys.storage();",      1,      true,   0,      false,  0       ]
+[ 6172,        "storagemodelinput",    2000,   NULL,   0,      true,   0,      
false,  0       ]
+[ 6215,        "storagemodel", 2000,   "create view sys.storagemodel as select 
* from sys.storagemodel();",    1,      true,   0,      false,  0       ]
+[ 6224,        "tablestoragemodel",    2000,   "-- A summary of the table 
storage requirement is is available as a table view.\n-- The auxillary column 
denotes the maximum space if all non-sorted columns\n-- would be augmented with 
a hash (rare situation)\ncreate view sys.tablestoragemodel\nas select 
\"schema\",\"table\",max(count) as \"count\",\n\tsum(columnsize) as 
columnsize,\n\tsum(heapsize) as heapsize,\n\tsum(indices) as 
indices,\n\tsum(case when sorted = false then 8 * count else 0 end) as 
auxillary\nfrom sys.storagemodel() group by \"schema\",\"table\";",      1,     
 true,   0,      false,  0       ]
+[ 6246,        "systemfunctions",      2000,   NULL,   0,      true,   0,      
false,  0       ]
 
 # 18:53:13 >  
 # 18:53:13 >  "Done."
diff --git a/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out 
b/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
--- a/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
+++ b/sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
@@ -42,7 +42,7 @@ Ready.
 | | | ) [ L1 ]                                                                 
                                    |
 | | ) [  ] [ sys.sum no nil (L1) as L1 ]                                       
                                    |
 | ) [ L1 NOT NULL as L1.L1 ]                                                   
                                                                                
                                                                                
                                                                     |
-+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
++--------------------------------------------------------------------------------------+
 20 rows
 
 Operation successful
diff --git 
a/sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out
 
b/sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out
--- 
a/sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out
+++ 
b/sql/test/BugTracker/Tests/set_sql_debug_64__breaking_the_DB.SF-1906287.stable.out
@@ -35,7 +35,7 @@ stdout of test 'set_sql_debug_64__breaki
 % name,        fullname,       default_schema # name
 % varchar,     varchar,        int # type
 % 9,   10,     4 # length
-[ "skyserver", "sky server",   7663    ]
+[ "skyserver", "sky server",   7720    ]
 #alter user "skyserver" set schema "sys";
 #drop schema sky;
 #drop user skyserver;
diff --git a/sql/test/Tests/All b/sql/test/Tests/All
--- a/sql/test/Tests/All
+++ b/sql/test/Tests/All
@@ -81,7 +81,7 @@ coalesce
 round
 rank
 function_syntax
-table_functions
+table_function
 procedure_syntax
 order_by_simple_exp
 order_by_complex_exp
diff --git a/sql/test/Tests/systemfunctions.stable.out 
b/sql/test/Tests/systemfunctions.stable.out
--- a/sql/test/Tests/systemfunctions.stable.out
+++ b/sql/test/Tests/systemfunctions.stable.out
@@ -229,6 +229,23 @@ Ready.
 [ "sys",       "isempty",      1,      "geometry",     ""      ]
 [ "sys",       "issimple",     0,      "boolean",      "create function 
issimple(g geometry) returns boolean external name geom.\"IsSimple\";" ]
 [ "sys",       "issimple",     1,      "geometry",     ""      ]
+[ "sys",       "json_filter",  0,      "json", "-- access the top level key by 
name, return its value\ncreate function json_filter(js json, name 
string)\nreturns json external name json.filter;"     ]
+[ "sys",       "json_filter",  1,      "json", ""      ]
+[ "sys",       "json_filter",  2,      "clob", ""      ]
+[ "sys",       "json_filter_all",      0,      "json", "create function 
json_filter_all(js json, name string)\nreturns json external name 
json.filterall;"     ]
+[ "sys",       "json_filter_all",      1,      "json", ""      ]
+[ "sys",       "json_filter_all",      2,      "clob", ""      ]
+[ "sys",       "json_isvalid", 0,      "boolean",      "-- test string for 
JSON compliancy\ncreate function json_isvalid(js string)\nreturns bool external 
name json.isvalid;" ]
+[ "sys",       "json_isvalid", 1,      "clob", ""      ]
+[ "sys",       "json_isvalidarray",    0,      "boolean",      "create 
function json_isvalidarray(js string)\nreturns bool external name 
json.isvalidarray;"   ]
+[ "sys",       "json_isvalidarray",    1,      "clob", ""      ]
+[ "sys",       "json_isvalidobject",   0,      "boolean",      "create 
function json_isvalidobject(js string)\nreturns bool external name 
json.isvalidobject;" ]
+[ "sys",       "json_isvalidobject",   1,      "clob", ""      ]
+[ "sys",       "json_length",  0,      "int",  "-- return the number of 
primary components\ncreate function json_length(js json)\nreturns integer 
external name json.length;"  ]
+[ "sys",       "json_length",  1,      "json", ""      ]
+[ "sys",       "json_path",    0,      "json", "-- a simple path 
extractor\ncreate function json_path(js json, e string)\nreturns json external 
name json.path;"       ]
+[ "sys",       "json_path",    1,      "json", ""      ]
+[ "sys",       "json_path",    2,      "clob", ""      ]
 [ "sys",       "length",       0,      "double",       "create function 
length(g geometry) returns float external name geom.\"Length\";"       ]
 [ "sys",       "length",       1,      "geometry",     ""      ]
 [ "sys",       "like", 0,      "clob", "create filter function \"like\"(val 
string, pat string, esc string) external name algebra.likesubselect;"      ]
diff --git a/sql/test/Tests/table_function.sql.src 
b/sql/test/Tests/table_function.sql.src
--- a/sql/test/Tests/table_function.sql.src
+++ b/sql/test/Tests/table_function.sql.src
@@ -1,1 +1,1 @@
-$RELSRCDIR/../tablefunctions.sql
+$RELSRCDIR/../table_function.sql
diff --git a/sql/test/Tests/table_function.stable.err 
b/sql/test/Tests/table_function.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/table_function.stable.err
@@ -0,0 +1,35 @@
+stderr of test 'table_function` in directory 'sql/test` itself:
+
+
+# 18:57:51 >  
+# 18:57:51 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=36910" "--set" 
"mapi_usock=/var/tmp/mtest-26433/.s.monetdb.36910" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test"
 "--set" "mal_listing=0"
+# 18:57:51 >  
+
+# builtin opt  gdk_dbpath = 
/home/niels/scratch/rc-monetdb/Linux-x86_64/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = yes
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 36910
+# cmdline opt  mapi_usock = /var/tmp/mtest-26433/.s.monetdb.36910
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/niels/scratch/rc-monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test
+# cmdline opt  mal_listing = 0
+
+# 18:57:52 >  
+# 18:57:52 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-26433" "--port=36910"
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to