[prev in list] [next in list] [prev in thread] [next in thread]
List: monetdb-checkins
Subject: MonetDB: Jul2021 - Defensive lines. Add TID column if no other c...
From: Pedro_Ferreira <commits+pedro.ferreira=monetdbsolutions.com () mon
Date: 2021-05-28 9:48:29
Message-ID: hg.0487ed622863.1622195309.3183691476473050765 () monetdb-vm0 ! spin-off ! cwi ! nl
[Download RAW message or body]
Changeset: 0487ed622863 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0487ed622863
Modified Files:
sql/server/rel_basetable.c
sql/server/rel_updates.c
sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
Branch: Jul2021
Log Message:
Defensive lines. Add TID column if no other column is used, when inserting into a \
join idx and if the user is not allowed to use any other columns
diffs (68 lines):
diff --git a/sql/server/rel_basetable.c b/sql/server/rel_basetable.c
--- a/sql/server/rel_basetable.c
+++ b/sql/server/rel_basetable.c
@@ -88,6 +88,8 @@ rel_base_use_all( mvc *sql, sql_rel *rel
continue;
rel_base_set_used(ba, i);
}
+ if (with_tid)
+ rel_base_set_used(ba, ol_length(t->columns));
} else {
int len = USED_LEN(ol_length(t->columns) + 1 + ol_length(t->idxs));
for (int i = 0; i < len; i++)
@@ -223,8 +225,9 @@ rel_base_projection( mvc *sql, sql_rel *
if (rel_base_is_used(ba, i))
append(exps, bind_col_exp(sql, name, cn->data));
}
- if (intern && rel_base_is_used(ba, i))
+ if ((intern && rel_base_is_used(ba, i)) || list_empty(exps)) /* Add TID column if \
no column is used */ append(exps, exp_column(sql->sa, name, TID, \
sql_bind_localtype("oid"), CARD_MULTI, 0, 1)); + i++;
if (intern) {
for (node *in = ol_first_node(t->idxs); in; in = in->next, i++) {
if (rel_base_is_used(ba, i)) {
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
@@ -286,7 +286,7 @@ static sql_rel *
rel_insert_table(sql_query *query, sql_table *t, char *name, sql_rel *inserts)
{
sql_rel *rel = rel_basetable(query->sql, t, name);
- rel_base_use_all(query->sql, rel, 0);
+ rel_base_use_all(query->sql, rel, 1);
rel = rewrite_basetable(query->sql, rel);
return rel_insert(query->sql, rel, inserts);
}
diff --git a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out \
b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
--- a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
+++ b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out
@@ -3,7 +3,7 @@
% clob # type
% 193 # length
insert(
-| table("sys"."cm_tmp") [ "cm_tmp"."i" ] COUNT
+| table("sys"."cm_tmp") [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ] COUNT
| union (
| | project (
| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n", varchar \
"NULL", varchar "null", varchar "/file1", bigint "-1", bigint "0", int "0", varchar \
"NULL", int "0", int "1"),
diff --git a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows \
b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
--- a/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
+++ b/sql/test/BugTracker-2009/Tests/copy_multiple_files.SF-2902320.stable.out.Windows
@@ -5,7 +5,7 @@
% clob # type
% 194 # length
insert(
-| table("sys"."cm_tmp") [ "cm_tmp"."i" ] COUNT
+| table("sys"."cm_tmp") [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ] COUNT
| union (
| | project (
| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n", varchar \
"NULL", varchar "null", varchar "\\file1", bigint "-1", bigint "0", int "0", varchar \
"NULL", int "0", int "1"), @@ -23,7 +23,7 @@ insert(
% clob # type
% 196 # length
insert(
-| table("sys"."cm_tmp") [ "cm_tmp"."i" ] COUNT
+| table("sys"."cm_tmp") [ "cm_tmp"."i", "cm_tmp"."%TID%" NOT NULL ] COUNT
| union (
| | project (
| | | table ("sys"."copyfrom"(table("cm_tmp"), varchar "|", varchar "\n", varchar \
"NULL", varchar "null", varchar "a:\\file1", bigint "-1", bigint "0", int "0", \
varchar "NULL", int "0", int "1"), _______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic