Changeset: 0296ba855135 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0296ba855135 Added Files: sql/test/mergetables/Tests/part-elim.sql sql/test/mergetables/Tests/part-elim.stable.err sql/test/mergetables/Tests/part-elim.stable.out Modified Files: gdk/gdk_storage.c sql/backends/monet5/sql_optimizer.c sql/backends/monet5/sql_optimizer.h sql/backends/monet5/sql_scenario.c sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out sql/test/mergetables/Tests/All Branch: embedded Log Message:
merge diffs (truncated from 342 to 300 lines): diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c --- a/gdk/gdk_storage.c +++ b/gdk/gdk_storage.c @@ -712,13 +712,6 @@ BATsave(BAT *bd) BAT *b = bd; BATcheck(b, "BATsave", GDK_FAIL); - /* there is a possibility that BATsave gets called with a - * pointer to a BAT that has *no* fixes (refs == 0), and so - * the heaps may not be in core, in which case BATmirror() - * would not find the mirror (this can happen when BATsave - * gets called during a (sub)commit after the BAT had been - * trimmed) */ - CHECKDEBUG if (BATmirror(b)) BATassertProps(b); /* views cannot be saved, but make an exception for * force-remapped views */ @@ -798,23 +791,6 @@ BATsave(BAT *bd) if (err == GDK_SUCCEED) { bd->batCopiedtodisk = 1; DESCclean(bd); - /* see comment with BATassertProps() at the top of this function */ - if (BATmirror(bd)) { - if (bd->htype && bd->H->heap.storage == STORE_MMAP) { - HEAPshrink(&bd->H->heap, bd->H->heap.free); - if (bd->batCapacity > bd->H->heap.size >> bd->H->shift) - bd->batCapacity = (BUN) (bd->H->heap.size >> bd->H->shift); - } - if (bd->ttype && bd->T->heap.storage == STORE_MMAP) { - HEAPshrink(&bd->T->heap, bd->T->heap.free); - if (bd->batCapacity > bd->T->heap.size >> bd->T->shift) - bd->batCapacity = (BUN) (bd->T->heap.size >> bd->T->shift); - } - if (bd->H->vheap && bd->H->vheap->storage == STORE_MMAP) - HEAPshrink(bd->H->vheap, bd->H->vheap->free); - if (bd->T->vheap && bd->T->vheap->storage == STORE_MMAP) - HEAPshrink(bd->T->vheap, bd->T->vheap->free); - } return GDK_SUCCEED; } return err; diff --git a/sql/backends/monet5/sql_optimizer.c b/sql/backends/monet5/sql_optimizer.c --- a/sql/backends/monet5/sql_optimizer.c +++ b/sql/backends/monet5/sql_optimizer.c @@ -215,8 +215,8 @@ addOptimizers(Client c, MalBlkPtr mb, ch addtoMalBlkHistory(mb, "getStatistics"); } -void -addQueryToCache(Client c) +str +optimizeQuery(Client c) { MalBlkPtr mb; backend *be; @@ -226,13 +226,12 @@ addQueryToCache(Client c) assert(be && be->mvc); /* SQL clients should always have their state set */ pipe = getSQLoptimizer(be->mvc); - insertSymbol(c->nspace, c->curprg); trimMalBlk(c->curprg->def); c->blkmode = 0; mb = c->curprg->def; chkProgram(c->fdout, c->nspace, mb); #ifdef _SQL_OPTIMIZER_DEBUG - mnstr_printf(GDKout, "ADD QUERY TO CACHE\n"); + mnstr_printf(GDKout, "Optimize query\n"); printFunction(GDKout, mb, 0, LIST_MAL_ALL); #endif /* @@ -250,23 +249,34 @@ addQueryToCache(Client c) if (msg != MAL_SUCCEED) GDKfree(msg); /* ignore error */ } - return; + return NULL; } addOptimizers(c, mb, pipe); msg = optimizeMALBlock(c, mb); - if (msg != MAL_SUCCEED) { - showScriptException(c->fdout, mb, 0, MAL, "%s", msg); - GDKfree(msg); - return; - } + if (msg) + return msg; /* time to execute the optimizers */ if (c->debug) optimizerCheck(c, mb, "sql.baseline", -1, 0); #ifdef _SQL_OPTIMIZER_DEBUG - mnstr_printf(GDKout, "ADD optimized QUERY TO CACHE\n"); + mnstr_printf(GDKout, "End Optimize Query\n"); printFunction(GDKout, mb, 0, LIST_MAL_ALL); #endif + return NULL; +} + +void +addQueryToCache(Client c) +{ + str msg = NULL; + + insertSymbol(c->nspace, c->curprg); + msg = optimizeQuery(c); + if (msg != MAL_SUCCEED) { + showScriptException(c->fdout, c->curprg->def, 0, MAL, "%s", msg); + GDKfree(msg); + } } /* diff --git a/sql/backends/monet5/sql_optimizer.h b/sql/backends/monet5/sql_optimizer.h --- a/sql/backends/monet5/sql_optimizer.h +++ b/sql/backends/monet5/sql_optimizer.h @@ -12,6 +12,7 @@ //#define _SQL_OPTIMIZER_DEBUG +sql5_export str optimizeQuery(Client c); sql5_export void addQueryToCache(Client c); sql5_export str SQLoptimizer(Client c); sql5_export void SQLsetAccessMode(Client c); diff --git a/sql/backends/monet5/sql_scenario.c b/sql/backends/monet5/sql_scenario.c --- a/sql/backends/monet5/sql_scenario.c +++ b/sql/backends/monet5/sql_scenario.c @@ -1202,6 +1202,7 @@ SQLparser(Client c) if ( OPTmitosisPlanOverdue(c, be->q->name) ){ msg = SQLCacheRemove(c, be->q->name); qc_delete(be->mvc->qc, be->q); + be->q = NULL; goto recompilequery; } @@ -1294,17 +1295,12 @@ recompilequery: chkTypes(c->fdout, c->nspace, c->curprg->def, TRUE); /* resolve types */ if (opt) { - MalBlkPtr mb = c->curprg->def; + str msg = optimizeQuery(c); - trimMalBlk(mb); - chkProgram(c->fdout, c->nspace, mb); - addOptimizers(c, mb, "default_pipe"); // TODO change to active pipe! - msg = optimizeMALBlock(c, mb); if (msg != MAL_SUCCEED) { sqlcleanup(m, err); goto finalize; } - c->curprg->def = mb; } //printFunction(c->fdout, c->curprg->def, 0, LIST_MAL_ALL); /* we know more in this case than chkProgram(c->fdout, c->nspace, c->curprg->def); */ diff --git a/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out b/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out --- a/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out +++ b/sql/test/BugTracker-2009/Tests/use_order_column_first.SF-2686008.stable.out @@ -94,7 +94,7 @@ project ( project ( | group by ( | | table(sys.sorted) [ sorted.a, sorted.b ] COUNT -| ) [ sorted.a, sorted.b ] [ sorted.b, sorted.a ] +| ) [ sorted.b, sorted.a ] [ sorted.b, sorted.a ] ) [ sorted.a, sorted.b ] # 13:59:55 > diff --git a/sql/test/mergetables/Tests/All b/sql/test/mergetables/Tests/All --- a/sql/test/mergetables/Tests/All +++ b/sql/test/mergetables/Tests/All @@ -16,3 +16,4 @@ mergedrop1 mergedrop2 mergemergeload singlekeyconstraint +part-elim diff --git a/sql/test/mergetables/Tests/part-elim.sql b/sql/test/mergetables/Tests/part-elim.sql new file mode 100644 --- /dev/null +++ b/sql/test/mergetables/Tests/part-elim.sql @@ -0,0 +1,30 @@ +create table mt2(id bigint, posX real); +create table mt1(id bigint, posX real); + +create merge table test(id bigint, posX real); +alter table test add table mt1; +alter table test add table mt2; + +insert into mt1 values (1021, 12.4); +insert into mt1 values (1022, 13.4); +insert into mt1 values (1023, 14.4); +insert into mt1 values (1024, 15.4); + +insert into mt2 values (1, 1.4); +insert into mt2 values (2, 1.4); +insert into mt2 values (3, 1.4); +insert into mt2 values (4, 1.4); + +alter table mt1 set read only; +alter table mt2 set read only; + +analyze sys.mt1 (id,posX) minmax; +analyze sys.mt2 (id,posX) minmax; + +plan select * from test where id between 1 and 10000; +plan select * from test where id between 1 and 1000; + +drop table test; +drop table mt1; +drop table mt2; + diff --git a/sql/test/mergetables/Tests/part-elim.stable.err b/sql/test/mergetables/Tests/part-elim.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/mergetables/Tests/part-elim.stable.err @@ -0,0 +1,35 @@ +stderr of test 'part-elim` in directory 'sql/test/mergetables` itself: + + +# 12:32:44 > +# 12:32:44 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=32914" "--set" "mapi_usock=/var/tmp/mtest-25433/.s.monetdb.32914" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/niels/scratch/monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_mergetables" "--set" "embedded_r=yes" +# 12:32:44 > + +# builtin opt gdk_dbpath = /home/niels/scratch/monetdb/Linux-x86_64/var/monetdb5/dbfarm/demo +# builtin opt gdk_debug = 0 +# builtin opt gdk_vmtrim = no +# 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 = 32914 +# cmdline opt mapi_usock = /var/tmp/mtest-25433/.s.monetdb.32914 +# cmdline opt monet_prompt = +# cmdline opt gdk_dbpath = /home/niels/scratch/monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_mergetables +# cmdline opt embedded_r = yes +# cmdline opt gdk_debug = 536870922 + +# 12:32:44 > +# 12:32:44 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-25433" "--port=32914" +# 12:32:44 > + + +# 12:32:44 > +# 12:32:44 > "Done." +# 12:32:44 > + diff --git a/sql/test/mergetables/Tests/part-elim.stable.out b/sql/test/mergetables/Tests/part-elim.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/mergetables/Tests/part-elim.stable.out @@ -0,0 +1,89 @@ +stdout of test 'part-elim` in directory 'sql/test/mergetables` itself: + + +# 12:32:44 > +# 12:32:44 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=32914" "--set" "mapi_usock=/var/tmp/mtest-25433/.s.monetdb.32914" "--set" "monet_prompt=" "--forcemito" "--dbpath=/home/niels/scratch/monetdb/Linux-x86_64/var/MonetDB/mTests_sql_test_mergetables" "--set" "embedded_r=yes" +# 12:32:44 > + +# MonetDB 5 server v11.22.0 +# This is an unreleased version +# Serving database 'mTests_sql_test_mergetables', 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:32914/ +# Listening for UNIX domain connection requests on mapi:monetdb:///var/tmp/mtest-25433/.s.monetdb.32914 +# MonetDB/GIS module loaded +# Start processing logs sql/sql_logs version 52200 +# Start reading the write-ahead log 'sql_logs/sql/log.19' +# Finished reading the write-ahead log 'sql_logs/sql/log.19' +# Finished processing logs sql/sql_logs +# MonetDB/SQL module loaded +# MonetDB/R module loaded + +Ready. + +# 12:32:44 > +# 12:32:44 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=/var/tmp/mtest-25433" "--port=32914" +# 12:32:44 > + +#create table mt2(id bigint, posX real); +#create table mt1(id bigint, posX real); +#create merge table test(id bigint, posX real); +#alter table test add table mt1; +#alter table test add table mt2; +#insert into mt1 values (1021, 12.4); +[ 1 ] +#insert into mt1 values (1022, 13.4); +[ 1 ] +#insert into mt1 values (1023, 14.4); +[ 1 ] +#insert into mt1 values (1024, 15.4); +[ 1 ] +#insert into mt2 values (1, 1.4); +[ 1 ] +#insert into mt2 values (2, 1.4); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list