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

Reply via email to