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