Changeset: 173aface3c42 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=173aface3c42
Modified Files:
        debian/monetdb5-sql.default
        debian/monetdb5-sql.init.d
        sql/backends/monet5/sql.mx
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        sql/storage/bat/bat_storage.c
Branch: default
Log Message:

Merge with Feb2013 branch.


diffs (205 lines):

diff --git a/debian/monetdb5-sql.default b/debian/monetdb5-sql.default
--- a/debian/monetdb5-sql.default
+++ b/debian/monetdb5-sql.default
@@ -5,8 +5,5 @@
 # should monetdbd be started at system startup (yes/no)
 STARTUP="no"
 
-# should all databases be started (yes/no)
-START_ALL_DBS="no"
-
 # the database farm where databases are kept
 DBFARM=/var/lib/monetdb
diff --git a/debian/monetdb5-sql.init.d b/debian/monetdb5-sql.init.d
--- a/debian/monetdb5-sql.init.d
+++ b/debian/monetdb5-sql.init.d
@@ -71,7 +71,7 @@ case "$1" in
 
         if running; then
             echo "$NAME is already running"
-            exit 1
+            exit 0
         fi
 
         init
@@ -83,10 +83,6 @@ case "$1" in
         else
             echo " ERROR, $NAME didn't start"
         fi
-
-        if [ "$START_ALL_DBS" = "yes" ]; then
-             sudo -u monetdb "/usr/bin/monetdb start -a"
-        fi
         ;;
   stop)
         if running ;  then
@@ -94,7 +90,7 @@ case "$1" in
             start-stop-daemon --stop --pidfile $PIDFILE --exec $DAEMON -c 
monetdb:monetdb -- stop ${DBFARM}
             echo "$NAME."
                else
-                       echo "$NAME not running (${PIDFILE}."
+                       echo "$NAME not running."
         fi
         ;;
   restart)
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
@@ -7614,8 +7614,8 @@ RAstatement(Client cntxt, MalBlkPtr mb, 
        str msg = getSQLContext(cntxt, mb, &m, &b);
        sql_rel *rel;
 
-       assert(m->sa == NULL);
-       m->sa = sa_create();
+       if (!m->sa)
+               m->sa = sa_create();
        rel = rel_read(m, *expr, &pos);
        if (rel) {
                int oldvtop = cntxt->curprg->def->vtop;
@@ -7623,11 +7623,8 @@ RAstatement(Client cntxt, MalBlkPtr mb, 
                stmt *s;
                char *msg;
 
-               rel_print(m, rel, 0);
-               if (*opt) { 
+               if (*opt) 
                        rel = rel_optimizer(m, rel);
-                       rel_print(m, rel, 0);
-               }
                s = output_rel_bin(m, rel);
                rel_destroy(rel);
 
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -707,7 +707,7 @@ read_exps(mvc *sql, sql_rel *lrel, sql_r
 static sql_exp*
 exp_read(mvc *sql, sql_rel *lrel, sql_rel *rrel, char *r, int *pos, int grp) 
 {
-       comp_type f = cmp_equal;
+       int f = -1;
        int not = 1, old, d=0, s=0, unique = 0, no_nils = 0;
        char *tname, *cname = NULL, *e, *b = r + *pos, *st;
        sql_exp *exp = NULL;
@@ -862,6 +862,11 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                exp->p = prop_create(sql->sa, PROP_HASHIDX, exp->p);
                skipWS(r,pos);
        }
+       if (strncmp(r+*pos, "HASHCOL",  strlen("HASHCOL")) == 0) {
+               (*pos)+= (int) strlen("HASHCOL");
+               exp->p = prop_create(sql->sa, PROP_HASHCOL, exp->p);
+               skipWS(r,pos);
+       }
        if (strncmp(r+*pos, "FETCH",  strlen("FETCH")) == 0) {
                (*pos)+= (int) strlen("FETCH");
                exp->p = prop_create(sql->sa, PROP_FETCH, exp->p);
@@ -924,7 +929,7 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
        default:
                return exp;
        }
-       if (f) {
+       if (f >= 0) {
                sql_exp *e;
 
                skipWS(r,pos);
@@ -993,6 +998,10 @@ rel_read(mvc *sql, char *r, int *pos)
                        exps = read_exps(sql, rel, NULL, r, pos, '[', 0);
                        if (exps && list_length(exps))
                                rel->exps = exps;
+                       if (strncmp(r+*pos, "COUNT",  strlen("COUNT")) == 0) {
+                               (*pos)+= (int) strlen("COUNT");
+                               skipWS( r, pos);
+                       }
                        return rel;
                } else { /* top N */
                        *pos += (int) strlen("top N");
@@ -1058,22 +1067,23 @@ rel_read(mvc *sql, char *r, int *pos)
                rel->exps = exps;
                return rel;
        case 's':
-               *pos += (int) strlen("sample");
-               skipWS(r, pos);
-               if (r[*pos] != '(') 
-                       return sql_error(sql, -1, "sample: missing '('\n");
-               (*pos)++;
-               skipWS(r, pos);
-               nrel = rel_read(sql, r, pos);
-               if (r[*pos] != ')') 
-                       return sql_error(sql, -1, "sample: missing ')'\n");
-               (*pos)++;
-               skipWS(r, pos);
-               exps = read_exps(sql, nrel, NULL, r, pos, '[', 0);
-               rel = rel_sample(sql->sa, nrel, exps);
-               return rel;
        case 'a':
-               if (r[*pos+2] == 'l') {
+               if (r[*pos+1] == 'a') {
+                       *pos += (int) strlen("sample");
+                       skipWS(r, pos);
+                       if (r[*pos] != '(') 
+                               return sql_error(sql, -1, "sample: missing 
'('\n");
+                       (*pos)++;
+                       skipWS(r, pos);
+                       nrel = rel_read(sql, r, pos);
+                       if (r[*pos] != ')') 
+                               return sql_error(sql, -1, "sample: missing 
')'\n");
+                       (*pos)++;
+                       skipWS(r, pos);
+                       exps = read_exps(sql, nrel, NULL, r, pos, '[', 0);
+                       rel = rel_sample(sql->sa, nrel, exps);
+                       return rel;
+               } else if (r[*pos+2] == 'l') {
                        *pos += (int) strlen("select");
                        skipWS(r, pos);
                        if (r[*pos] != '(') 
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
@@ -2621,10 +2621,10 @@ exps_merge_rse( mvc *sql, list *l, list 
  *      (x = c and y > 1 and y < 10) or 
  *      (x = e and y > 1 and y < 20) 
  * ->
- *     ((x = a and y > 1 and b < 5) or 
- *      (x = c and y > 1 and y < 5) or 
- *      (x = e and y > 1 and y < 5)) and
- *              x in (a,b,c) and
+ *     ((x = a and y > 1 and y < 5) or 
+ *      (x = c and y > 1 and y < 10) or 
+ *      (x = e and y > 1 and y < 20)) and
+ *              x in (a,c,e) and
  *              y > 1 and y < 20
  * */
 static sql_rel *
@@ -5534,11 +5534,12 @@ _rel_optimizer(mvc *sql, sql_rel *rel, i
        }
 
        if (gp.cnt[op_select]) {
-               rel = rewrite_topdown(sql, rel, &rel_push_select_down, 
&changes); 
-               rel = rewrite(sql, rel, &rel_remove_empty_select, &e_changes); 
                /* only once */
                if (level <= 0)
                        rel = rewrite(sql, rel, &rel_merge_rse, &changes); 
+
+               rel = rewrite_topdown(sql, rel, &rel_push_select_down, 
&changes); 
+               rel = rewrite(sql, rel, &rel_remove_empty_select, &e_changes); 
        }
 
        if (gp.cnt[op_select] && gp.cnt[op_join]) {
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
@@ -105,6 +105,14 @@ delta_bind_bat( sql_delta *bat, int acce
        if (temp || access == RD_INS) {
                assert(bat->ibid);
                b = temp_descriptor(bat->ibid);
+               if (BATcount(b) && bat->ubid) {
+                       BAT *upd = temp_descriptor(bat->ubid), *updins;
+                       
+                       updins = BATsemijoin(upd, b);
+                       bat_destroy(upd);
+                       void_replace_bat(b, updins, TRUE);
+                       bat_destroy(updins);
+               }
        } else if (!bat->bid) {
                int tt = 0;
                b = temp_descriptor(bat->ibid);
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to