Update of /cvsroot/monetdb/sql/src/server
In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv17802/src/server
Modified Files:
bin_optimizer.mx sql_statement.mx
Log Message:
fixed bug push down of limit statements
Index: bin_optimizer.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/bin_optimizer.mx,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- bin_optimizer.mx 28 Nov 2009 19:56:43 -0000 1.21
+++ bin_optimizer.mx 29 Nov 2009 09:32:22 -0000 1.22
@@ -279,7 +279,6 @@
j = s->op1.stval;
/* push through the projection joins */
- /* TODO put limit under (and keep above) cross products */
if (s->flag == 0 &&
j->type == st_join && j->flag == cmp_equal &&
j->op1.stval->t && j->op1.stval->t == j->op2.stval->h) {
@@ -326,7 +325,7 @@
s = stmt_order(stmt_limit(stmt_dup(j->op1.stval),
s->op2.stval->op1.aval->data.val.ival,
s->op3.stval->op1.aval->data.val.ival,
- j->flag+1), j->flag);
+ LIMIT_DIRECTION(j->flag,1,0)), j->flag);
ns = bin_optimizer(c, s);
stmt_destroy(s);
assert(os->rewritten==NULL);
@@ -351,7 +350,7 @@
if (!s->op2.stval->op1.aval->data.val.ival && j->type ==
st_mark) {
s = stmt_mark_tail(stmt_limit(stmt_dup(j->op1.stval),
s->op2.stval->op1.aval->data.val.ival,
- s->op3.stval->op1.aval->data.val.ival, j->flag),
+ s->op3.stval->op1.aval->data.val.ival, s->flag),
j->op2.stval->op1.aval->data.val.ival);
ns = bin_optimizer(c, s);
stmt_destroy(s);
Index: sql_statement.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/sql_statement.mx,v
retrieving revision 1.193
retrieving revision 1.194
diff -u -d -r1.193 -r1.194
--- sql_statement.mx 28 Nov 2009 19:57:42 -0000 1.193
+++ sql_statement.mx 29 Nov 2009 09:32:22 -0000 1.194
@@ -273,7 +273,7 @@
extern stmt *stmt_mirror(stmt *s);
#define LIMIT_DIRECTION(dir,order,before_project) \
- (order)?((before_project)?dir+3:dir+1):dir
+ (dir<<2)+(before_project<<1)+(order)
extern stmt *stmt_limit(stmt *s, int offset, int limit, int direction);
extern stmt *stmt_order(stmt *s, int direction);
extern stmt *stmt_reorder(stmt *s, stmt *t, int direction);
------------------------------------------------------------------------------
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