Changeset: 3a667a2ed241 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3a667a2ed241
Modified Files:
        sql/server/rel_updates.c
        sql/test/astro/Tests/astro.test
Branch: Jul2021
Log Message:

Set columns to be inserted or updated as used


diffs (44 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
@@ -1041,6 +1041,7 @@ update_generate_assignments(sql_query *q
                                list_append(exps, exp_column(sql->sa, 
t->base.name, cname, &c->type, CARD_MULTI, 0, 0));
                                exp_setname(sql->sa, v, c->t->base.name, 
c->base.name);
                                updates[c->colnr] = v;
+                               rel_base_use(sql, bt, c->colnr);
                        }
                } else {
                        char *cname = assignment->h->next->data.sval;
@@ -1069,6 +1070,7 @@ update_generate_assignments(sql_query *q
                        list_append(exps, exp_column(sql->sa, t->base.name, 
cname, &c->type, CARD_MULTI, 0, 0));
                        exp_setname(sql->sa, v, c->t->base.name, c->base.name);
                        updates[c->colnr] = v;
+                       rel_base_use(sql, bt, c->colnr);
                }
        }
        r = rel_project(sql->sa, r, list_append(new_exp_list(sql->sa), 
exp_column(sql->sa, rname, TID, sql_bind_localtype("oid"), CARD_MULTI, 0, 1)));
@@ -1331,7 +1333,11 @@ merge_into_table(sql_query *query, dlist
                        extra_project = rel_project(sql->sa, join_rel, 
rel_projections(sql, joined, NULL, 1, 0));
                        if (!(insert = merge_generate_inserts(query, t, 
extra_project, sts->h->data.lval, sts->h->next->data.sym)))
                                return NULL;
-                       if (!(insert = rel_insert(query->sql, 
rel_basetable(sql, t, bt_name), insert)))
+
+                       sql_rel *ibt = rel_basetable(sql, t, bt_name);
+                       rel_base_use_all(query->sql, ibt);
+                       ibt = rewrite_basetable(query->sql, ibt);
+                       if (!(insert = rel_insert(query->sql, ibt, insert)))
                                return NULL;
                } else {
                        assert(0);
diff --git a/sql/test/astro/Tests/astro.test b/sql/test/astro/Tests/astro.test
--- a/sql/test/astro/Tests/astro.test
+++ b/sql/test/astro/Tests/astro.test
@@ -65,7 +65,7 @@ plan UPDATE fluxz
               )
 ----
 update(
-| table("sys"."fluxz") [ "fluxz"."%TID%" NOT NULL ] COUNT 
+| table("sys"."fluxz") [ "fluxz"."filter" NOT NULL, "fluxz"."f_datapoints" NOT 
NULL, "fluxz"."avg_flux" NOT NULL, "fluxz"."avg_fluxsq" NOT NULL, 
"fluxz"."avg_w" NOT NULL, "fluxz"."avg_wflux" NOT NULL, "fluxz"."avg_wfluxsq" 
NOT NULL, "fluxz"."avg_dec_zone_deg" NOT NULL, "fluxz"."%TID%" NOT NULL ] COUNT 
 | project (
 | | single left outer join (
 | | | semijoin (
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to