[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