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

Reply via email to