Changeset: 2a5100ec44b6 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2a5100ec44b6 Added Files: sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.sql sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.err sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.out Modified Files: common/utils/msabaoth.c gdk/ChangeLog.Jul2012 gdk/gdk_relop.mx sql/backends/monet5/sql_scenario.c sql/test/BugTracker-2012/Tests/All sql/test/testdb-upgrade-chain/Tests/package.py sql/test/testdb/Tests/testdb-package.py tools/merovingian/ChangeLog.Jul2012 Branch: default Log Message:
Merged from Oct2012 diffs (truncated from 370 to 300 lines): diff --git a/common/utils/msabaoth.c b/common/utils/msabaoth.c --- a/common/utils/msabaoth.c +++ b/common/utils/msabaoth.c @@ -337,6 +337,7 @@ msab_marchConnection(const char *host, c } } +#define STARTEDFILE ".started" /** * Removes all known publications of available services. The function * name is a nostalgic phrase from "Defender of the Crown" from the @@ -357,6 +358,10 @@ msab_wildRetreat(void) return(tmp); unlink(path); + if ((tmp = getDBPath(&path, PATHLENGTH, STARTEDFILE)) != NULL) + return(tmp); + unlink(path); + if ((tmp = getDBPath(&path, PATHLENGTH, _sabaoth_internal_uuid)) != NULL) return(tmp); unlink(path); @@ -365,7 +370,6 @@ msab_wildRetreat(void) } #define UPLOGFILE ".uplog" -#define STARTINGFILE ".starting" /** * Writes a start attempt to the sabaoth start/stop log. Examination of * the log at a later stage reveals crashes of the server. In addition @@ -409,11 +413,12 @@ msab_registerStarting(void) return(NULL); } fclose(fopen(path, "w")); - /* flag this database as starting up, with the same boundary - * conditions as above */ - if ((tmp = getDBPath(&path, PATHLENGTH, STARTINGFILE)) != NULL) + + /* remove any stray file that would suggest we've finished starting up */ + if ((tmp = getDBPath(&path, PATHLENGTH, STARTEDFILE)) != NULL) return(tmp); - fclose(fopen(path, "w")); + unlink(path); + return(NULL); } @@ -430,10 +435,10 @@ msab_registerStarted(void) char *path = pathbuf; char *tmp; - /* remove starting flag */ - if ((tmp = getDBPath(&path, PATHLENGTH, STARTINGFILE)) != NULL) + /* flag this database as started up */ + if ((tmp = getDBPath(&path, PATHLENGTH, STARTEDFILE)) != NULL) return(tmp); - unlink(path); + fclose(fopen(path, "w")); return(NULL); } @@ -625,11 +630,11 @@ msab_getStatus(sabdb** ret, char *dbname } else if (data[0] == '\t') { /* see if the database has finished starting */ snprintf(buf, sizeof(buf), "%s/%s/%s", - path, e->d_name, STARTINGFILE); + path, e->d_name, STARTEDFILE); if (stat(buf, &statbuf) == -1) { + sdb->state = SABdbStarting; + } else { sdb->state = SABdbRunning; - } else { - sdb->state = SABdbStarting; } } else { /* should be \n */ sdb->state = SABdbInactive; @@ -648,11 +653,11 @@ msab_getStatus(sabdb** ret, char *dbname /* lock denied, so mserver is running, see if the database * has finished starting */ snprintf(buf, sizeof(buf), "%s/%s/%s", - path, e->d_name, STARTINGFILE); + path, e->d_name, STARTEDFILE); if (stat(buf, &statbuf) == -1) { + sdb->state = SABdbStarting; + } else { sdb->state = SABdbRunning; - } else { - sdb->state = SABdbStarting; } } else { /* locking succeed, check for a crash in the uplog */ diff --git a/gdk/ChangeLog.Jul2012 b/gdk/ChangeLog.Jul2012 --- a/gdk/ChangeLog.Jul2012 +++ b/gdk/ChangeLog.Jul2012 @@ -1,3 +1,7 @@ # ChangeLog file for MonetDB # This file is updated with Maddlog +* Fri Aug 31 2012 Sjoerd Mullender <sjo...@acm.org> +- Fixed a bug in BATantijoin when either side is a singleton BAT. + This fixes bug 3139. + diff --git a/gdk/gdk_relop.mx b/gdk/gdk_relop.mx --- a/gdk/gdk_relop.mx +++ b/gdk/gdk_relop.mx @@ -2518,11 +2518,18 @@ BATantijoin(BAT *l, BAT *r) BATiter li = bat_iterator(l); BATiter ri = bat_iterator(r); - /* try to keep void columns where possible */ - if (rc == 1) - return BATconst(l, BATttype(r), BUNtail(ri, BUNfirst(r))); - if (lc == 1) - return BATmirror(BATconst(BATmirror(r), BAThtype(l), BUNhead(li, BUNfirst(l)))); + if (rc == 1) { + l = BATantiuselect_(l, BUNhead(ri, BUNfirst(r)), NULL, 1, 1); + bn = BATconst(l, BATttype(r), BUNtail(ri, BUNfirst(r))); + BBPunfix(l->batCacheid); + return bn; + } + if (lc == 1) { + r = BATantiuselect_(BATmirror(r), BUNtail(li, BUNfirst(l)), NULL, 1, 1); + bn = BATmirror(BATconst(r, BAThtype(l), BUNhead(li, BUNfirst(l)))); + BBPunfix(r->batCacheid); + return bn; + } } bn = BATnew(BAThtype(l), BATttype(r), sz); 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 @@ -156,11 +156,11 @@ SQLprelude(void) ms->optimizer = "MALoptimizer"; /* ms->tactics = .. */ ms->engine = "MALengine"; - fprintf(stdout, "# MonetDB/SQL module loaded\n"); - fflush(stdout); /* make merovingian see this *now* */ tmp = SQLinit(); if (tmp != MAL_SUCCEED) return(tmp); + fprintf(stdout, "# MonetDB/SQL module loaded\n"); + fflush(stdout); /* make merovingian see this *now* */ /* only register availability of scenarios AFTER we are inited! */ s->name = "sql"; diff --git a/sql/test/BugTracker-2012/Tests/All b/sql/test/BugTracker-2012/Tests/All --- a/sql/test/BugTracker-2012/Tests/All +++ b/sql/test/BugTracker-2012/Tests/All @@ -48,3 +48,4 @@ with_and_exists.Bug-3099 index_column_crash.Bug-3113 foreign_key.Bug-3114 cast-tinyint-Bug-3137 +not-equal-Bug.3139 diff --git a/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.sql b/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.sql new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.sql @@ -0,0 +1,18 @@ +create table t1_bug3139 (id int,dp int); +create table t2_bug3139 (id int, s int); +insert into t1_bug3139 values (1,1),(2,2),(3,2),(4,2),(5,3),(6,3),(7,1); +insert into t2_bug3139 values (1,1),(1,2),(1,3); +select t1_bug3139.id, t1_bug3139.dp, t3.cnt +from t1_bug3139, + (select count(*) as cnt from t2_bug3139) t3 +where t1_bug3139.id > 1 and t1_bug3139.dp <> t3.cnt; + +declare t2_bug3139_cnt bigint; +set t2_bug3139_cnt = (select count(*) from t2_bug3139); +select t1_bug3139.id, t1_bug3139.dp, t2_bug3139_cnt +from t1_bug3139 +where t1_bug3139.id > 1 and t1_bug3139.dp <> t2_bug3139_cnt; + +select t1_bug3139.id, t1_bug3139.dp +from t1_bug3139 +where t1_bug3139.id > 1 and t1_bug3139.dp <> (select count(*) from t2_bug3139); diff --git a/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.err b/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.err new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.err @@ -0,0 +1,37 @@ +stderr of test 'not-equal-Bug.3139` in directory 'test/BugTracker-2012` itself: + + +# 12:20:07 > +# 12:20:07 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "gdk_dbfarm=/ufs/sjoerd/Monet-stable/var/MonetDB" "--set" "mapi_open=true" "--set" "mapi_port=31329" "--set" "monet_prompt=" "--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012" "--set" "mal_listing=0" +# 12:20:07 > + +# builtin opt gdk_dbname = demo +# builtin opt gdk_dbfarm = /ufs/sjoerd/Monet-stable/var/monetdb5/dbfarm +# builtin opt gdk_debug = 0 +# builtin opt gdk_alloc_map = no +# 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 gdk_dbfarm = /ufs/sjoerd/Monet-stable/var/MonetDB +# cmdline opt mapi_open = true +# cmdline opt mapi_port = 31329 +# cmdline opt monet_prompt = +# cmdline opt mal_listing = 2 +# cmdline opt gdk_dbname = mTests_test_BugTracker-2012 +# cmdline opt mal_listing = 0 + +# 12:20:07 > +# 12:20:07 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=madrid" "--port=31329" +# 12:20:07 > + + +# 12:20:07 > +# 12:20:07 > "Done." +# 12:20:07 > + diff --git a/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.out b/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.out new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2012/Tests/not-equal-Bug.3139.stable.out @@ -0,0 +1,95 @@ +stdout of test 'not-equal-Bug.3139` in directory 'test/BugTracker-2012` itself: + + +# 12:20:07 > +# 12:20:07 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "gdk_dbfarm=/ufs/sjoerd/Monet-stable/var/MonetDB" "--set" "mapi_open=true" "--set" "mapi_port=31329" "--set" "monet_prompt=" "--trace" "--forcemito" "--set" "mal_listing=2" "--dbname=mTests_test_BugTracker-2012" "--set" "mal_listing=0" +# 12:20:07 > + +# MonetDB 5 server v11.11.8 (hg id: a7d755e49c02) +# This is an unreleased version +# Serving database 'mTests_test_BugTracker-2012', using 8 threads +# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically linked +# Found 15.629 GiB available main-memory. +# Copyright (c) 1993-July 2008 CWI. +# Copyright (c) August 2008-2012 MonetDB B.V., all rights reserved +# Visit http://www.monetdb.org/ for further information +# Listening for connection requests on mapi:monetdb://madrid.ins.cwi.nl:31329/ +# MonetDB/GIS module loaded +# MonetDB/JAQL module loaded +# MonetDB/SQL module loaded + +Ready. +# SQL catalog created, loading sql scripts once +# loading sql script: 09_like.sql +# loading sql script: 10_math.sql +# loading sql script: 11_times.sql +# loading sql script: 12_url.sql +# loading sql script: 13_date.sql +# loading sql script: 14_inet.sql +# loading sql script: 15_history.sql +# loading sql script: 16_tracelog.sql +# loading sql script: 17_compress.sql +# loading sql script: 18_dictionary.sql +# loading sql script: 19_cluster.sql +# loading sql script: 20_vacuum.sql +# loading sql script: 21_dependency_functions.sql +# loading sql script: 22_clients.sql +# loading sql script: 23_skyserver.sql +# loading sql script: 24_zorder.sql +# loading sql script: 25_debug.sql +# loading sql script: 39_analytics.sql +# loading sql script: 40_geom.sql +# loading sql script: 80_udf.sql +# loading sql script: 99_system.sql + +# 12:20:07 > +# 12:20:07 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" "--host=madrid" "--port=31329" +# 12:20:07 > + +#create table t1_bug3139 (id int,dp int); +#create table t2_bug3139 (id int, s int); +#insert into t1_bug3139 values (1,1),(2,2),(3,2),(4,2),(5,3),(6,3),(7,1); +[ 7 ] +#insert into t2_bug3139 values (1,1),(1,2),(1,3); +[ 3 ] +#select t1_bug3139.id, t1_bug3139.dp, t3.cnt +#from t1_bug3139, +# (select count(*) as cnt from t2_bug3139) t3 +#where t1_bug3139.id > 1 and t1_bug3139.dp <> t3.cnt; +% sys.t1_bug3139, sys.t1_bug3139, .t3 # table_name +% id, dp, cnt # name +% int, int, wrd # type +% 1, 1, 1 # length +[ 2, 2, 3 ] +[ 3, 2, 3 ] +[ 4, 2, 3 ] +[ 7, 1, 3 ] +#declare t2_bug3139_cnt bigint; +#set t2_bug3139_cnt = (select count(*) from t2_bug3139); +#select t1_bug3139.id, t1_bug3139.dp, t2_bug3139_cnt +#from t1_bug3139 +#where t1_bug3139.id > 1 and t1_bug3139.dp <> t2_bug3139_cnt; +% sys.t1_bug3139, sys.t1_bug3139, . # table_name +% id, dp, single_value # name +% int, int, bigint # type +% 1, 1, 1 # length +[ 2, 2, 3 ] _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list