Changeset: b7c83816e1d8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b7c83816e1d8
Modified Files:
sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.out
Branch: default
Log Message:
merging from Oct2010
diffs (truncated from 380 to 300 lines):
diff -r b02e5798091a -r b7c83816e1d8 MonetDB5/src/modules/mal/pqueue.mx
--- a/MonetDB5/src/modules/mal/pqueue.mx Wed Sep 15 10:45:40 2010 +0200
+++ b/MonetDB5/src/modules/mal/pqueue.mx Wed Sep 15 15:09:12 2010 +0200
@@ -954,16 +954,13 @@
bn = BATnew(TYPE_oid, TYPE_oid, n);
for(i=0; i<n; ) {
oid *v = (oid*)Tloc(a,i), ov = *v;
- for( j=i; j<n; j++) {
- v = (oid*)Tloc(a,j);
- if (*v != ov)
- break;
- }
+ for( j=i; *v == ov; j++, v = (oid*)Tloc(a,j))
+ ;
if (j == i+1) {
BUNins(bn, Hloc(a,i), &ov, FALSE);
} else {
BAT *s = BATslice(b, i, j), *sbn = NULL;
- wrd nn = n-j;
+ wrd nn = n-i;
if ((b->htype == TYPE_void ?
pqueue_topn_v...@1@2(&sbn,s,&nn) : pqueue_to...@1@2(&sbn,s,&nn)) == GDK_SUCCEED
&& sbn) {
BATins(bn, sbn, FALSE);
@@ -1006,16 +1003,13 @@
bn = BATnew(TYPE_oid, TYPE_oid, n);
for(i=0; i<n; ) {
oid *v = (oid*)Tloc(a,i), ov = *v;
- for( j=i; j<n; j++) {
- v = (oid*)Tloc(a,j);
- if (*v != ov)
- break;
- }
+ for( j=i; *v == ov; j++, v = (oid*)Tloc(a,j))
+ ;
if (j == i+1) {
BUNins(bn, Hloc(a,i), &ov, FALSE);
} else {
BAT *s = BATslice(b, i, j), *sbn = NULL;
- wrd nn = n-j;
+ wrd nn = n-i;
if ((b->htype == TYPE_void ?
pqueue_utopn_v...@1@2(&sbn,s,&nn) : pqueue_uto...@1@2(&sbn,s,&nn)) ==
GDK_SUCCEED && sbn) {
BATins(bn, sbn, FALSE);
diff -r b02e5798091a -r b7c83816e1d8 MonetDB5/src/optimizer/opt_mergetable.mx
--- a/MonetDB5/src/optimizer/opt_mergetable.mx Wed Sep 15 10:45:40 2010 +0200
+++ b/MonetDB5/src/optimizer/opt_mergetable.mx Wed Sep 15 15:09:12 2010 +0200
@@ -1227,13 +1227,29 @@
}
pushInstruction(mb, pck);
+ /* first project using the current topn as the next topn
+ * operators need aligned bats
+ */
+ var = getArg(pck,0);
+ if (cur_topn) {
+ InstrPtr mi = bat_mirror(mb, cur_topn);
+ q = newInstruction(mb, ASSIGNsymbol);
+ setModuleId(q, algebraRef);
+ setFunctionId(q, leftjoinRef);
+ getArg(q, 0) = newTmpVariable(mb, tpe);
+ q = pushArgument(mb, q, getArg(mi, 0));
+ q = pushArgument(mb, q, var);
+ pushInstruction(mb, q);
+ var = getArg(q,0);
+ }
+
/* re-do the topn */
if (!slc)
tpe = newBatType(TYPE_oid, TYPE_oid);
getArg(tpn, arg++) = newTmpVariable(mb, tpe);
if (cur_topn)
getArg(tpn, arg++) = cur_topn;
- getArg(tpn, arg) = getArg(pck, 0);
+ getArg(tpn, arg) = var;
pushInstruction(mb, tpn);
cur_topn = getArg(tpn, 0);
diff -r b02e5798091a -r b7c83816e1d8 sql/src/backends/monet5/sql_gencode.mx
--- a/sql/src/backends/monet5/sql_gencode.mx Wed Sep 15 10:45:40 2010 +0200
+++ b/sql/src/backends/monet5/sql_gencode.mx Wed Sep 15 15:09:12 2010 +0200
@@ -779,16 +779,6 @@
q = pushInt(mb, q, 1);
len = getDestVar(q);
-/*
- if ((s->flag-1) > 0) {
- q = newStmt2(mb, algebraRef,
sortTailRef);
- } else {
- q = newStmt2(mb, algebraRef,
sortReverseTailRef);
- }
- q = pushArgument(mb, q, l);
- l = getDestVar(q);
-*/
-
q = newStmt1(mb, algebraRef, "slice");
q = pushArgument(mb, q, l);
q = pushArgument(mb, q, offset);
diff -r b02e5798091a -r b7c83816e1d8 sql/src/server/bin_optimizer.mx
--- a/sql/src/server/bin_optimizer.mx Wed Sep 15 10:45:40 2010 +0200
+++ b/sql/src/server/bin_optimizer.mx Wed Sep 15 15:09:12 2010 +0200
@@ -324,19 +324,6 @@
os->optimized = ns->optimized = 3;
return ns;
}
- /* try to push the limit through the order */
- if (!s->op4.stval && j->type == st_order) {
- s = stmt_order(stmt_limit(stmt_dup(j->op1.stval),
- stmt_dup(s->op2.stval),
- stmt_dup(s->op3.stval),
- LIMIT_DIRECTION(j->flag,1,0)), j->flag);
- ns = bin_optimizer(c, s);
- stmt_destroy(s);
- assert(os->rewritten==NULL);
- os->rewritten = stmt_dup(ns);
- os->optimized = ns->optimized = 3;
- return ns;
- }
/* try to push the limit through the reverse */
if (!s->op4.stval && !s->flag && j->type == st_reverse) {
s = stmt_reverse(stmt_limit(stmt_dup(j->op1.stval),
diff -r b02e5798091a -r b7c83816e1d8 sql/src/server/rel_bin.mx
--- a/sql/src/server/rel_bin.mx Wed Sep 15 10:45:40 2010 +0200
+++ b/sql/src/server/rel_bin.mx Wed Sep 15 15:09:12 2010 +0200
@@ -263,9 +263,9 @@
atom *a = e->l;
s = stmt_atom(atom_dup(a));
} else if (e->r) { /* parameters */
- s = stmt_var(_strdup(e->r), &e->tpe, 0, e->flag);
+ s = stmt_var(_strdup(e->r), e->tpe.type?&e->tpe:NULL,
0, e->flag);
} else { /* arguments */
- s = stmt_varnr(e->flag, &e->tpe);
+ s = stmt_varnr(e->flag, e->tpe.type?&e->tpe:NULL);
}
} break;
case e_convert: {
@@ -1105,7 +1105,7 @@
for (n = s->op1.lval->h; n; n = n->next) {
stmt *t = n->data;
- list_append(rl, stmt_join(stmt_dup(grp->ext), stmt_dup(t),
cmp_equal));
+ list_append(rl, stmt_project(stmt_dup(grp->ext), stmt_dup(t)));
}
if (grp)
@@ -1638,7 +1638,7 @@
}
if (need_distinct(rel))
psub = rel2bin_distinct(psub);
- if (!topn && rel->r) {
+ if ((!topn || need_distinct(rel)) && rel->r) {
list *oexps = rel->r;
stmt *orderby = NULL;
diff -r b02e5798091a -r b7c83816e1d8 sql/src/server/rel_exp.mx
--- a/sql/src/server/rel_exp.mx Wed Sep 15 10:45:40 2010 +0200
+++ b/sql/src/server/rel_exp.mx Wed Sep 15 15:09:12 2010 +0200
@@ -351,7 +351,8 @@
sql_exp *e = exp_create(e_atom);
e->card = CARD_ATOM;
e->flag = i;
- e->tpe = *tpe;
+ if (tpe)
+ e->tpe = *tpe;
return e;
}
@@ -362,7 +363,8 @@
e->r = _strdup(name);
e->card = CARD_ATOM;
e->flag = frame;
- e->tpe = *tpe;
+ if (tpe)
+ e->tpe = *tpe;
return e;
}
@@ -377,7 +379,8 @@
e->name = _strdup(acname);
e->l = (org_rname)?_strdup(org_rname):NULL;
e->r = _strdup(org_cname);
- e->tpe = *t;
+ if (t)
+ e->tpe = *t;
if (!has_nils)
set_has_no_nil(e);
if (intern)
@@ -395,7 +398,8 @@
e->name = _strdup(cname);
e->l = (rname)?_strdup(rname):NULL;
e->r = _strdup(cname);
- e->tpe = *t;
+ if (t)
+ e->tpe = *t;
if (!has_nils)
set_has_no_nil(e);
if (intern)
@@ -460,13 +464,16 @@
if (e->l) {
atom *a = e->l;
return atom_type(a);
- } else { /* atom reference */
+ } else if (e->tpe.type) { /* atom reference */
return &e->tpe;
}
+ break;
}
case e_convert:
case e_column:
- return &e->tpe;
+ if (e->tpe.type)
+ return &e->tpe;
+ break;
case e_aggr: {
sql_subaggr *a = e->f;
return &a->res;
@@ -483,6 +490,7 @@
default:
return NULL;
}
+ return NULL;
}
char *
diff -r b02e5798091a -r b7c83816e1d8
sql/src/storage/restrict/restrict_storage.mx
--- a/sql/src/storage/restrict/restrict_storage.mx Wed Sep 15 10:45:40
2010 +0200
+++ b/sql/src/storage/restrict/restrict_storage.mx Wed Sep 15 15:09:12
2010 +0200
@@ -376,7 +376,8 @@
(void)tr;
/* snapshot large bats */
- if (BATcount(b) > SNAPSHOT_MINSIZE)
+ bat_set_access(b, BAT_READ);
+ if (BATcount(b) > SNAPSHOT_MINSIZE)
BATmode(b, PERSISTENT);
if (BATcount(b) > (BUN) REMAP_PAGE_MAXSIZE)
BATmmap(b, STORE_MMAP, STORE_MMAP, STORE_MMAP,
STORE_MMAP);
@@ -390,6 +391,7 @@
BAT *b = temp_descriptor(bat->bid);
(void)tr;
+ bat_set_access(b, BAT_READ);
BATcommit(b);
bat_destroy(b);
return LOG_OK;
@@ -524,6 +526,7 @@
bat_destroy(b);
} else if (!bat->bid) {
b = bat_new(TYPE_void, TYPE_oid, t->sz);
+ bat_set_access(b, BAT_READ);
bat->bid = temp_create(b);
bat_destroy(b);
}
@@ -553,6 +556,7 @@
(void)tr;
/* snapshot large bats */
+ bat_set_access(b, BAT_READ);
if (BATcount(b) > SNAPSHOT_MINSIZE)
BATmode(b, PERSISTENT);
if (BATcount(b) > (BUN) REMAP_PAGE_MAXSIZE)
diff -r b02e5798091a -r b7c83816e1d8
sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
---
a/sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
Wed Sep 15 10:45:40 2010 +0200
+++
b/sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.err
Wed Sep 15 15:09:12 2010 +0200
@@ -68,9 +68,9 @@
# 22:29:10 > mclient -lsql -i -umonetdb -Pmonetdb --host=pegasus --port=30332
# 22:29:10 >
-MAPI = mone...@rig:35972
+MAPI = mone...@alf:32679
QUERY = select * from env() as env where name = ( select 'prefix' from env()
as env );
-ERROR = !SQLException:zero_or_one:cardinality violation (53>1)
+ERROR = !SQLException:zero_or_one:cardinality violation (51>1)
# 13:22:15 >
# 13:22:15 > Done.
diff -r b02e5798091a -r b7c83816e1d8
sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.out
---
a/sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.out
Wed Sep 15 10:45:40 2010 +0200
+++
b/sql/src/test/BugDay_2005-12-19_2.9.3/Tests/select_from_env.SF-1240701.1242164.stable.out
Wed Sep 15 15:09:12 2010 +0200
@@ -77,7 +77,6 @@
[ "derive_pipe" ]
[ "dictionary_pipe" ]
[ "compression_pipe" ]
-[ "opt_debug" ]
[ "gdk_mem_pagebits" ]
[ "gdk_mem_bigsize" ]
[ "monet_pid" ]
diff -r b02e5798091a -r b7c83816e1d8
sql/src/test/BugTracker-2009/Tests/double_count_limit_bug.SF-2862146.stable.out
---
a/sql/src/test/BugTracker-2009/Tests/double_count_limit_bug.SF-2862146.stable.out
Wed Sep 15 10:45:40 2010 +0200
+++
b/sql/src/test/BugTracker-2009/Tests/double_count_limit_bug.SF-2862146.stable.out
Wed Sep 15 15:09:12 2010 +0200
@@ -26,8 +26,8 @@
# 22:42:43 >
#SELECT COUNT (*) AS c1, COUNT (*) AS c2 FROM t2 limit 100;
-% .t2, . # table_name
-% c1, single_value # name
+% .t2, .t2 # table_name
+% c1, c2 # name
% wrd, wrd # type
% 1, 1 # length
[ 0, 0 ]
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list