Changeset: 29a3b1f4f0cd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=29a3b1f4f0cd
Modified Files:
sql/src/server/rel_select.mx
Branch: Oct2010
Log Message:
checking better for subqueries (fixes problem with ambiguous identifier)
diffs (39 lines):
diff -r a7d27208706f -r 29a3b1f4f0cd sql/src/server/rel_select.mx
--- a/sql/src/server/rel_select.mx Mon Sep 13 17:59:04 2010 +0200
+++ b/sql/src/server/rel_select.mx Mon Sep 13 23:45:11 2010 +0200
@@ -179,6 +179,16 @@
set_subquery(r);
}
+static int
+rel_issubquery(sql_rel*r)
+{
+ if (!r->subquery) {
+ if (is_select(r->op))
+ return rel_issubquery(r->l);
+ }
+ return r->subquery;
+}
+
/* we don't name relations directly, but sometimes we need the relation
name. So we look it up in the first expression
*/
@@ -1165,14 +1175,16 @@
*p = rel;
r = rel_bind_column_(sql, p, rel->r, cname);
- if (!r || !is_subquery(right)) {
+ if (!r || !rel_issubquery(right)) {
*p = rel;
l = rel_bind_column_(sql, p, rel->l, cname);
- if (l && r && !is_subquery(r)) {
+ if (l && r && !rel_issubquery(r)) {
(void) sql_error(sql, ERR_AMBIGUOUS, "SELECT:
identifier '%s' ambiguous", cname);
return NULL;
}
}
+ if (sql->session->status == -ERR_AMBIGUOUS)
+ return NULL;
if (l && !r)
return l;
return r;
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list