Update of /cvsroot/monetdb/sql/src/server
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv7958/src/server

Modified Files:
        rel_exp.mx 
Log Message:
propagated changes of Friday Aug 07 2009
from the Aug2009 branch to the development trunk

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009/08/07 - nielsnes: src/server/rel_exp.mx,1.33.2.1
bug fixing

prepare/execute statements now go to seperate query cache
check for ambiguous order by columns
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Index: rel_exp.mx
===================================================================
RCS file: /cvsroot/monetdb/sql/src/server/rel_exp.mx,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- rel_exp.mx  25 Jul 2009 22:08:38 -0000      1.33
+++ rel_exp.mx  7 Aug 2009 21:24:39 -0000       1.34
@@ -81,7 +81,7 @@
 extern int exp_is_correlation(sql_exp *e, sql_rel *r );
 extern int exp_is_atom(sql_exp *e);
 
-extern sql_exp *exps_bind_column( list *exps, char *cname);
+extern sql_exp *exps_bind_column( list *exps, char *cname, int *ambiguous);
 extern sql_exp *exps_bind_column2( list *exps, char *rname, char *cname);
 
 extern int exps_card( list *l );
@@ -608,10 +608,10 @@
 
        switch(e->type) {
        case e_column:
-               if (e->l) { 
+               if (e->l) {
                        ne = exps_bind_column2(rel->exps, e->l, e->r);
                } else {
-                       ne = exps_bind_column(rel->exps, e->r);
+                       ne = exps_bind_column(rel->exps, e->r, NULL);
                }
                return ne;
        case e_convert:
@@ -663,7 +663,7 @@
                        else if (rel->exps && e->l)
                                ne = exps_bind_column2(rel->exps, e->l, e->r);
                        else if (rel->exps)
-                               ne = exps_bind_column(rel->exps, e->r);
+                               ne = exps_bind_column(rel->exps, e->r, NULL);
                }
                break;
                case op_basetable: 
@@ -727,18 +727,26 @@
 }
 
 sql_exp *
-exps_bind_column( list *exps, char *cname ) 
+exps_bind_column( list *exps, char *cname, int *ambiguous ) 
 {
+       sql_exp *e = NULL;
+
        if (exps && cname) {
                node *en;
 
                for (en = exps->h; en; en = en->next ) {
-                       sql_exp *e = en->data;
-                       if (e->name && strcmp(e->name, cname) == 0)
-                               return e;
+                       sql_exp *ce = en->data;
+                       if (ce->name && strcmp(ce->name, cname) == 0) {
+                               if (e) {
+                                       if (ambiguous)
+                                               *ambiguous = 1;
+                                       return NULL;
+                               }
+                               e = ce;
+                       }
                }
        }
-       return NULL;
+       return e;
 }
 
 sql_exp *


------------------------------------------------------------------------------
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