Changeset: 24eb3a4c056a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/24eb3a4c056a
Added Files:
        sql/test/BugTracker-2023/Tests/recursive-trigger-crash-7383.test
Modified Files:
        sql/server/rel_updates.c
        sql/test/BugTracker-2023/Tests/All
Branch: Sep2022
Log Message:

added test and fixed bug #7383 , use result from function to end recursion


diffs (54 lines):

diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -97,7 +97,12 @@ rel_insert_hash_idx(mvc *sql, const char
        assert(is_project(ins->op) || ins->op == op_table);
        if (list_length(i->columns) <= 1 || non_updatable_index(i->type)) {
                /* dummy append */
-               inserts->r = ins = rel_project(sql->sa, ins, 
rel_projections(sql, ins, NULL, 1, 1));
+               list *exps = rel_projections(sql, ins, NULL, 1, 1);
+               if (!exps)
+                       return NULL;
+               inserts->r = ins = rel_project(sql->sa, ins, exps);
+               if (!ins)
+                       return NULL;
                list_append(ins->exps, exp_label(sql->sa, exp_atom_lng(sql->sa, 
0), ++sql->label));
                return inserts;
        }
@@ -254,9 +259,11 @@ rel_insert_idxs(mvc *sql, sql_table *t, 
                sql_idx *i = n->data;
 
                if (hash_index(i->type) || non_updatable_index(i->type)) {
-                       rel_insert_hash_idx(sql, alias, i, inserts);
+                       if (rel_insert_hash_idx(sql, alias, i, inserts) == NULL)
+                               return NULL;
                } else if (i->type == join_idx) {
-                       rel_insert_join_idx(sql, alias, i, inserts);
+                       if (rel_insert_join_idx(sql, alias, i, inserts) == NULL)
+                               return NULL;
                }
        }
        if (inserts->r != p) {
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,5 +1,6 @@
 ambiguous-identifiers-7372
 temp-table-foreign-key-crash-7378
 add-drop-column-crash-7381
+recursive-trigger-crash-7383
 view-on-alias-crash-7386
 alter-inc-seq-crash-7387
diff --git a/sql/test/BugTracker-2023/Tests/recursive-trigger-crash-7383.test 
b/sql/test/BugTracker-2023/Tests/recursive-trigger-crash-7383.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2023/Tests/recursive-trigger-crash-7383.test
@@ -0,0 +1,8 @@
+statement ok
+create table t1(c1 int auto_increment primary key NOT NULL);
+
+statement ok
+create trigger i1 after insert on t1 for each row insert into t1 values(NULL);
+
+statement error
+insert into t1 values(NULL);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to