Changeset: cee6feb62c92 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cee6feb62c92
Modified Files:
        sql/server/rel_select.c
Branch: Oct2014
Log Message:

fixed handling of * and x.* in group by queries


diffs (51 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -194,7 +194,7 @@ exp_alias_or_copy( mvc *sql, char *tname
 
 /* return all expressions, with table name == tname */
 static list *
-rel_table_projections( mvc *sql, sql_rel *rel, char *tname )
+rel_table_projections( mvc *sql, sql_rel *rel, char *tname, int level )
 {
        list *exps;
 
@@ -214,15 +214,15 @@ rel_table_projections( mvc *sql, sql_rel
        case op_left:
        case op_right:
        case op_full:
-               exps = rel_table_projections( sql, rel->l, tname);
+               exps = rel_table_projections( sql, rel->l, tname, level+1);
                if (exps)
                        return exps;
-               return rel_table_projections( sql, rel->r, tname);
+               return rel_table_projections( sql, rel->r, tname, level+1);
        case op_apply:
        case op_semi:
        case op_anti:
        case op_select:
-               return rel_table_projections( sql, rel->l, tname);
+               return rel_table_projections( sql, rel->l, tname, level+1);
 
        case op_topn:
        case op_sample:
@@ -231,8 +231,8 @@ rel_table_projections( mvc *sql, sql_rel
        case op_except:
        case op_inter:
        case op_project:
-               if (!is_processed(rel))
-                       return rel_table_projections( sql, rel->l, tname);
+               if (!is_processed(rel) && level == 0)
+                       return rel_table_projections( sql, rel->l, tname, 
level+1);
                /* fall through */
        case op_table:
        case op_basetable:
@@ -4902,7 +4902,7 @@ rel_table_exp(mvc *sql, sql_rel **rel, s
                char *tname = column_e->data.lval->h->data.sval;
                list *exps;
        
-               if ((exps = rel_table_projections(sql, *rel, tname)) != NULL)
+               if ((exps = rel_table_projections(sql, *rel, tname, 0)) != NULL)
                        return exps;
                if (!tname)
                        return sql_error(sql, 02,
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to