Update of /cvsroot/monetdb/sql/src/server
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv6264/src/server
Modified Files:
Tag: Nov2009
bin_optimizer.mx sql_rel2bin.mx
Log Message:
more leak fixing
more like join fixing
Index: sql_rel2bin.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_rel2bin.mx,v
retrieving revision 1.139.2.1
retrieving revision 1.139.2.2
diff -u -d -r1.139.2.1 -r1.139.2.2
--- sql_rel2bin.mx 12 Nov 2009 07:08:24 -0000 1.139.2.1
+++ sql_rel2bin.mx 22 Nov 2009 20:30:16 -0000 1.139.2.2
@@ -55,6 +55,7 @@
return tail_column(st->op2.stval);
case st_join2:
+ case st_joinN:
return tail_column(st->op2.stval);
case st_releqjoin:
return tail_column(st->op2.lval->h->data);
@@ -63,8 +64,10 @@
case st_select:
case st_select2:
+ case st_selectN:
case st_uselect:
case st_uselect2:
+ case st_uselectN:
case st_semijoin:
case st_limit:
@@ -136,13 +139,16 @@
case st_select:
case st_select2:
+ case st_selectN:
case st_uselect:
case st_uselect2:
+ case st_uselectN:
case st_semijoin:
case st_limit:
case st_join:
case st_join2:
+ case st_joinN:
case st_outerjoin:
case st_diff:
case st_union:
@@ -755,30 +761,46 @@
r = stmt_mark(stmt_dup(res), 4);
n = n->next;
}
+ /* TODO also handle joinN */
for (; n; n = n->next) {
stmt *j = n->data;
stmt *ld = stmt_dup(j->op1.stval);
stmt *o2 = stmt_dup(j->op2.stval);
- stmt *rd = (j->type != st_join2)?stmt_reverse(o2):o2;
- stmt *le = stmt_project(l, ld );
- stmt *re = stmt_project(r, rd );
+ stmt *rd = (j->type == st_join)?stmt_reverse(o2):o2;
- if (j->type == st_join2) {
+ if (j->type == st_joinN) {
+ /* make single list will columns/values,
+ call function
+ Then same als lower
+ */
+ assert(0);
+ } else if (j->type == st_join2) {
+ stmt *le = stmt_project(l, ld );
+ stmt *re = stmt_project(r, rd );
comp_type c1 = j->flag&2 ? cmp_gte : cmp_gt;
comp_type c2 = j->flag&1 ? cmp_lte : cmp_lt;
- stmt *r2 = stmt_join(stmt_dup(r),
stmt_dup(j->op3.stval), cmp_equal);
+ stmt *r2 = stmt_project(stmt_dup(r),
stmt_dup(j->op3.stval));
stmt *cmp1 = stmt_uselect(le, re, c1);
stmt *cmp2 = stmt_uselect(stmt_dup(le), r2, c2);
+
stmt *cmp = stmt_semijoin(cmp1, cmp2);
+ /* use a single uselect2 ? */
+ /*
+ stmt *cmp = stmt_uselect2(le, re, r2,
(comp_type)j->flag);
+ */
/* TODO semijoin may break order */
l = stmt_semijoin(stmt_dup(l), stmt_dup(cmp));
r = stmt_semijoin(stmt_dup(r), cmp);
} else {
+ stmt *le = stmt_project(l, ld );
+ stmt *re = stmt_project(r, rd );
+ /* TODO force scan select ? */
stmt *cmp = stmt_uselect(le, re, (comp_type)j->flag);
- /* TODO semijoin may break order */
+ /* TODO semijoin may break order,
+ ie maybe do a mirror + project */
l = stmt_semijoin(stmt_dup(l), stmt_dup(cmp));
r = stmt_semijoin(stmt_dup(r), cmp);
}
@@ -1150,12 +1172,15 @@
case st_limit:
case st_join:
case st_join2:
+ case st_joinN:
case st_reverse:
case st_select:
case st_select2:
+ case st_selectN:
case st_uselect:
case st_uselect2:
+ case st_uselectN:
case st_temp:
case st_diff:
Index: bin_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/bin_optimizer.mx,v
retrieving revision 1.20
retrieving revision 1.20.2.1
diff -u -d -r1.20 -r1.20.2.1
--- bin_optimizer.mx 4 Aug 2009 07:24:17 -0000 1.20
+++ bin_optimizer.mx 22 Nov 2009 20:30:16 -0000 1.20.2.1
@@ -218,6 +218,7 @@
case st_limit:
case st_releqjoin:
case st_join2:
+ case st_joinN:
return 1;
case st_join:
@@ -410,7 +411,8 @@
}
case st_join:
- case st_join2:{
+ case st_join2:
+ case st_joinN:{
if (s->op1.stval) {
stmt *os = s->op1.stval;
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Monetdb-sql-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-sql-checkins