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

Reply via email to