Changeset: dcf1c003fbfa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/dcf1c003fbfa
Added Files:
        sql/test/BugTracker-2023/Tests/view-on-alias-crash-7386.test
Modified Files:
        sql/server/rel_rel.c
        sql/test/BugTracker-2023/Tests/All
Branch: Sep2022
Log Message:

add test and fix for bug #7386, lookup of alias columns fixed


diffs (50 lines):

diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -917,7 +917,7 @@ rel_groupby(mvc *sql, sql_rel *l, list *
                                list_append(gexps, e);
                        } else {
                                const char *ername = exp_relname(e), *nername = 
exp_relname(ne), *ename = exp_name(e), *nename = exp_name(ne);
-                               if ((ername && !nername) || (!ername && 
nername) || 
+                               if ((ername && !nername) || (!ername && 
nername) ||
                                        (ername && nername && 
strcmp(ername,nername) != 0) || strcmp(ename,nename) != 0)
                                        list_append(gexps, e);
                        }
@@ -1905,11 +1905,15 @@ rel_deps(mvc *sql, sql_rel *r, list *ref
                                continue;
                        } else if (oname[0] == '%') {
                                sql_idx *i = find_sql_idx(t, oname+1);
-                               cond_append(l, &i->base);
-                       } else {
-                               sql_column *c = find_sql_column(t, oname);
-                               cond_append(l, &c->base);
+                               if (i) {
+                                       cond_append(l, &i->base);
+                                       continue;
+                               }
                        }
+                       sql_column *c = find_sql_column(t, oname);
+                       if (!c)
+                               return -1;
+                       cond_append(l, &c->base);
                }
        } break;
        case op_table: {
diff --git a/sql/test/BugTracker-2023/Tests/All 
b/sql/test/BugTracker-2023/Tests/All
--- a/sql/test/BugTracker-2023/Tests/All
+++ b/sql/test/BugTracker-2023/Tests/All
@@ -1,3 +1,4 @@
 ambiguous-identifiers-7372
 temp-table-foreign-key-crash-7378
+view-on-alias-crash-7386
 alter-inc-seq-crash-7387
diff --git a/sql/test/BugTracker-2023/Tests/view-on-alias-crash-7386.test 
b/sql/test/BugTracker-2023/Tests/view-on-alias-crash-7386.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2023/Tests/view-on-alias-crash-7386.test
@@ -0,0 +1,5 @@
+statement ok
+CREATE VIEW t2 AS SELECT 1 UNION ALL SELECT 1;
+
+statement ok
+CREATE VIEW v2 AS SELECT * FROM t2;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to