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