Changeset: df0f58b61ec3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=df0f58b61ec3
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
Branch: unlock
Log Message:

make sure we skip the indices without storage properly


diffs (58 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -3960,7 +3960,7 @@ rel2bin_insert(backend *be, sql_rel *rel
 
        if (t->idxs.set) {
                idx_m = m;
-               for (n = t->idxs.set->h; n && m; n = n->next, m = m->next) {
+               for (n = t->idxs.set->h; n && m; n = n->next) {
                        stmt *is = m->data;
                        sql_idx *i = n->data;
 
@@ -3975,6 +3975,8 @@ rel2bin_insert(backend *be, sql_rel *rel
                        }
                        if (!insert)
                                insert = is;
+                       /* If the index doesn't hold delta structures, don't 
update the 'm' variable */
+                       m = m->next;
                }
        }
 
@@ -3982,14 +3984,18 @@ rel2bin_insert(backend *be, sql_rel *rel
                pos = stmt_claim(be, t, cnt);
 
        if (t->idxs.set)
-       for (n = t->idxs.set->h, m = idx_m; n && m; n = n->next, m = m->next) {
+       for (n = t->idxs.set->h, m = idx_m; n && m; n = n->next) {
                stmt *is = m->data;
                sql_idx *i = n->data;
 
-               if (non_updatable_index(i->type) || (hash_index(i->type) && 
list_length(i->columns) <= 1)) /* Some indexes don't hold delta structures */
+               if (non_updatable_index(i->type)) /* Some indexes don't hold 
delta structures */
                        continue;
+               if (hash_index(i->type) && list_length(i->columns) <= 1)
+                       is = NULL;
                if (is)
                        is = stmt_append_idx(be, i, pos, is);
+               /* If the index doesn't hold delta structures, don't update the 
'm' variable */
+               m = m->next;
        }
 
        for (n = t->columns.set->h, m = inserts->op4.lval->h; n && m; n = 
n->next, m = m->next) {
diff --git a/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128 
b/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
--- a/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
+++ b/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
@@ -48,7 +48,11 @@ MAPI  = (monetdb) /var/tmp/mtest-446274/
 QUERY = PREPARE SELECT DISTINCT ?, CAST(CASE least(?, r'weHtU') WHEN ? THEN ? 
WHEN ? THEN ? WHEN (VALUES (?)) THEN r'G' ELSE ? END AS DATE) WHERE (?) IS NOT 
NULL LIMIT 519007555986016405;
 ERROR = !Cannot have a parameter (?) for IS NOT NULL operator
 CODE  = 42000
-MAPI  = (monetdb) /var/tmp/mtest-14251/.s.monetdb.34553
+MAPI  = (monetdb) /var/tmp/mtest-1182483/.s.monetdb.39468
+QUERY = CALL sys.shrink('sys', 't2');
+ERROR = !SELECT: no such binary operator 'shrink(char,char)'
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-1182483/.s.monetdb.39468
 QUERY = PREPARE SELECT (1 + CAST(l0t0.c0 AS BIGINT)) * scale_up(?, 2) FROM 
(select 1) AS l0t0(c0);
 ERROR = !SELECT: no such binary operator 'sql_mul(hugeint,month_interval)'
 CODE  = 42000
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to