Changeset: 789e813e6ba0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/789e813e6ba0
Modified Files:
        sql/server/rel_basetable.c
        sql/server/rel_basetable.h
        sql/server/rel_dump.c
        sql/server/rel_psm.c
        sql/server/rel_rel.c
        sql/server/rel_updates.c
        sql/test/BugTracker-2015/Tests/crash.Bug-3736.test
Branch: Jul2021
Log Message:

Partly reverting commits ff40ce536e95 and 0487ed622863 Making the TID column 
optional, makes join idxs not be used on some plans. SQLancer15 crashing query 
needs an alternative solution


diffs (144 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
@@ -16,7 +16,6 @@
 
 #define USED_LEN(nr) ((nr+31)/32)
 #define rel_base_set_used(b,nr) b->used[(nr)/32] |= (1<<((nr)%32))
-#define rel_base_set_not_used(b,nr) b->used[(nr)/32] &= ~(1<<((nr)%32))
 #define rel_base_is_used(b,nr) ((b->used[(nr)/32]&(1<<((nr)%32))) != 0)
 
 typedef struct rel_base_t {
@@ -75,7 +74,7 @@ rel_base_use_tid( mvc *sql, sql_rel *rt)
 }
 
 void
-rel_base_use_all( mvc *sql, sql_rel *rel, int with_tid)
+rel_base_use_all( mvc *sql, sql_rel *rel)
 {
        sql_table *t = rel->l;
        rel_base_t *ba = rel->r;
@@ -88,14 +87,10 @@ 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++)
                        ba->used[i] = ~0;
-               if (!with_tid)
-                       rel_base_set_not_used(ba, ol_length(t->columns));
        }
 }
 
@@ -113,7 +108,7 @@ rel_basetable(mvc *sql, sql_table *t, co
        assert(atname);
        if (strcmp(atname, t->base.name) != 0)
                ba->name = sa_strdup(sa, atname);
-       for(int i = nrcols + 1; i<end; i++) /* TID is not used at start */
+       for(int i = nrcols; i<end; i++)
                rel_base_set_used(ba, i);
        rel->l = t;
        rel->r = ba;
diff --git a/sql/server/rel_basetable.h b/sql/server/rel_basetable.h
--- a/sql/server/rel_basetable.h
+++ b/sql/server/rel_basetable.h
@@ -24,7 +24,7 @@ extern sql_rel *rel_basetable(mvc *sql, 
 extern void rel_base_disallow(sql_rel *r);             /* set flag too check 
per column access */
 extern int rel_base_use(mvc *ql, sql_rel *rt, int nr); /* return error on 
(read) access violation */
 extern void rel_base_use_tid(mvc *sql, sql_rel *rt);
-extern void rel_base_use_all(mvc *sql, sql_rel *rel, int with_tid);
+extern void rel_base_use_all(mvc *sql, sql_rel *rel);
 extern char *rel_base_name(sql_rel *r);
 extern char *rel_base_rename(sql_rel *r, char *name);
 
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1815,7 +1815,7 @@ rel_read(mvc *sql, char *r, int *pos, li
                                                return sql_error(sql, -1, 
SQLSTATE(42000) "Access denied for %s to table '%s.%s'\n",
                                                                         
get_string_global_var(sql, "current_user"), s->base.name, tname);
                                }
-                               rel_base_use_all(sql, rel, 1);
+                               rel_base_use_all(sql, rel);
                                rel = rewrite_basetable(sql, rel);
 
                                if (!r[*pos])
diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c
--- a/sql/server/rel_psm.c
+++ b/sql/server/rel_psm.c
@@ -1240,7 +1240,7 @@ static sql_rel_view*
 _stack_push_table(mvc *sql, const char *tname, sql_table *t)
 {
        sql_rel *r = rel_basetable(sql, t, tname );
-       rel_base_use_all(sql, r, 1);
+       rel_base_use_all(sql, r);
        r = rewrite_basetable(sql, r);
        return stack_push_rel_view(sql, tname, r);
 }
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
@@ -907,7 +907,7 @@ list *
                return new_exp_list(sql->sa);
 
        if (!tname && is_basetable(rel->op) && !is_processed(rel))
-               rel_base_use_all( sql, rel, 1);
+               rel_base_use_all( sql, rel);
 
        switch(rel->op) {
        case op_join:
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, 1);
+       rel_base_use_all(query->sql, rel);
        rel = rewrite_basetable(query->sql, rel);
        return rel_insert(query->sql, rel, inserts);
 }
diff --git a/sql/test/BugTracker-2015/Tests/crash.Bug-3736.test 
b/sql/test/BugTracker-2015/Tests/crash.Bug-3736.test
--- a/sql/test/BugTracker-2015/Tests/crash.Bug-3736.test
+++ b/sql/test/BugTracker-2015/Tests/crash.Bug-3736.test
@@ -113,8 +113,8 @@ Select b.* FROM open_auctions o, bidder 
 ----
 REF 1 (2)
 join (
-| table("sys"."open_auctions") [ "open_auctions"."open_auction_id" NOT NULL as 
"o"."open_auction_id" ] COUNT ,
-| table("sys"."bidder") [ "bidder"."id" NOT NULL HASHCOL  as "b"."id", 
"bidder"."open_auction_id" NOT NULL as "b"."open_auction_id", "bidder"."date" 
NOT NULL as "b"."date", "bidder"."time" NOT NULL as "b"."time", 
"bidder"."personref" NOT NULL as "b"."personref", "bidder"."increase" NOT NULL 
as "b"."increase" ] COUNT 
+| table("sys"."open_auctions") [ "open_auctions"."open_auction_id" NOT NULL as 
"o"."open_auction_id", "open_auctions"."%TID%" NOT NULL as "o"."%TID%" ] COUNT ,
+| table("sys"."bidder") [ "bidder"."id" NOT NULL HASHCOL  as "b"."id", 
"bidder"."open_auction_id" NOT NULL as "b"."open_auction_id", "bidder"."date" 
NOT NULL as "b"."date", "bidder"."time" NOT NULL as "b"."time", 
"bidder"."personref" NOT NULL as "b"."personref", "bidder"."increase" NOT NULL 
as "b"."increase", "bidder"."%TID%" NOT NULL as "b"."%TID%" ] COUNT 
 ) [ "o"."open_auction_id" NOT NULL = "b"."open_auction_id" NOT NULL ]
 REF 2 (2)
 single left outer join (
@@ -123,7 +123,7 @@ single left outer join (
 | | select (
 | | | project (
 | | | | crossproduct (
-| | | | | table("sys"."bidder") [ "bidder"."id" NOT NULL HASHCOL  as 
"b3"."id", "bidder"."increase" NOT NULL as "b3"."increase" ] COUNT ,
+| | | | | table("sys"."bidder") [ "bidder"."id" NOT NULL HASHCOL  as 
"b3"."id", "bidder"."increase" NOT NULL as "b3"."increase", "bidder"."%TID%" 
NOT NULL as "b3"."%TID%" ] COUNT ,
 | | | | | group by (
 | | | | | | join (
 | | | | | | | group by (
@@ -131,13 +131,13 @@ single left outer join (
 | | | | | | | | | & REF 1 
 | | | | | | | | ) [ "o"."open_auction_id" NOT NULL ]
 | | | | | | | ) [ "o"."open_auction_id" NOT NULL ] [ "o"."open_auction_id" NOT 
NULL ],
-| | | | | | | table("sys"."bidder") [ "bidder"."id" NOT NULL HASHCOL  as 
"b3a"."id", "bidder"."open_auction_id" NOT NULL as "b3a"."open_auction_id" ] 
COUNT 
+| | | | | | | table("sys"."bidder") [ "bidder"."id" NOT NULL HASHCOL  as 
"b3a"."id", "bidder"."open_auction_id" NOT NULL as "b3a"."open_auction_id", 
"bidder"."%TID%" NOT NULL as "b3a"."%TID%" ] COUNT 
 | | | | | | ) [ "b3a"."open_auction_id" NOT NULL = "o"."open_auction_id" NOT 
NULL ]
 | | | | | ) [ "o"."open_auction_id" NOT NULL ] [ "sys"."min" no nil 
("b3a"."id" NOT NULL HASHCOL ) as "%1"."%1", "o"."open_auction_id" NOT NULL ]
 | | | | ) [  ]
-| | | ) [ "o"."open_auction_id" NOT NULL, "b3"."id" NOT NULL HASHCOL , 
"b3"."increase" NOT NULL, "%1"."%1", "b3"."increase" NOT NULL as "%2"."%2" ]
+| | | ) [ "o"."open_auction_id" NOT NULL, "b3"."id" NOT NULL HASHCOL , 
"b3"."increase" NOT NULL, "b3"."%TID%" NOT NULL, "%1"."%1", "b3"."increase" NOT 
NULL as "%2"."%2" ]
 | | ) [ "b3"."id" NOT NULL HASHCOL  = "%1"."%1" ]
-| ) [ "b3"."id" NOT NULL HASHCOL , "b3"."increase" NOT NULL, "%1"."%1", 
"%2"."%2" NOT NULL, "o"."open_auction_id" NOT NULL as "%5"."%5" ]
+| ) [ "b3"."id" NOT NULL HASHCOL , "b3"."increase" NOT NULL, "b3"."%TID%" NOT 
NULL, "%1"."%1", "%2"."%2" NOT NULL, "o"."open_auction_id" NOT NULL as 
"%5"."%5" ]
 ) [ "o"."open_auction_id" NOT NULL * = "%5"."%5" NOT NULL ]
 project (
 | single select (
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to