Changeset: 955cddafcc5d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/955cddafcc5d
Added Files:
sql/test/BugTracker-2024/Tests/add-partition-crash-7437.test
sql/test/BugTracker-2024/Tests/aggr-exp-copy-crash-7435.test
sql/test/BugTracker-2024/Tests/exp-bin-crash-7434.test
Modified Files:
sql/backends/monet5/rel_bin.c
sql/server/rel_exp.c
sql/server/rel_propagate.c
sql/test/BugTracker-2024/Tests/All
Branch: Dec2023
Log Message:
fixes for issue #7437, #7435 and #7434
check in exp_copy for window functions with single (order by) arguments
check for errors in rel_alter_table_add_partition_list
check for relation in exp_bin for window functions
diffs (88 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
@@ -1570,7 +1570,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
/*if (rows && en == exps->h && f->func->type !=
F_LOADER)
es = stmt_const(be, rows, es);*/
else if (f->func->type == F_ANALYTIC &&
es->nrcols == 0) {
- if (en == exps->h && left->nrcols)
+ if (en == exps->h && left &&
left->nrcols)
es = stmt_const(be,
bin_find_smallest_column(be, left), es); /* ensure the first argument is a
column */
if (!f->func->s &&
!strcmp(f->func->base.name, "window_bound")
&& exps->h->next &&
list_length(f->func->ops) == 6 && en == exps->h->next && left->nrcols)
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -2881,8 +2881,11 @@ exp_copy(mvc *sql, sql_exp * e)
ne = exp_aggr(sql->sa, l, e->f, need_distinct(e),
need_no_nil(e), e->card, has_nil(e));
if (e->r) { /* copy obe and gbe lists */
list *er = (list*) e->r;
- assert(list_length(er) == 2);
- ne->r = list_append(list_append(sa_list(sql->sa),
exps_copy(sql, er->h->data)), exps_copy(sql, er->h->next->data));
+ assert(list_length(er) <= 2);
+ if (list_length(er) == 2)
+ ne->r =
list_append(list_append(sa_list(sql->sa), exps_copy(sql, er->h->data)),
exps_copy(sql, er->h->next->data));
+ else
+ ne->r = list_append(sa_list(sql->sa),
exps_copy(sql, er->h->data));
}
break;
}
diff --git a/sql/server/rel_propagate.c b/sql/server/rel_propagate.c
--- a/sql/server/rel_propagate.c
+++ b/sql/server/rel_propagate.c
@@ -410,6 +410,8 @@ rel_alter_table_add_partition_list(sql_q
symbol* next = dn->data.sym;
sql_exp *pnext = generate_partition_limits(query,
&rel_psm, next, tpe, true);
+ if (!pnext)
+ return NULL;
if (next->token == SQL_NULL)
return sql_error(sql, 02, SQLSTATE(42000)
"ALTER TABLE: a list value cannot be null");
append(lvals, pnext);
diff --git a/sql/test/BugTracker-2024/Tests/All
b/sql/test/BugTracker-2024/Tests/All
--- a/sql/test/BugTracker-2024/Tests/All
+++ b/sql/test/BugTracker-2024/Tests/All
@@ -5,7 +5,10 @@ where-case-null-issue-7429
create-index-query-issue-7430
alloc-overflow-7432
rewrite-count-crash-7433
+exp-bin-crash-7434
+aggr-exp-copy-crash-7435
count-unnest-crash-7436
+add-partition-crash-7437
bind-exps-crash-7438
exps-cards-crash-7439
gc-col-crash-7440
diff --git a/sql/test/BugTracker-2024/Tests/add-partition-crash-7437.test
b/sql/test/BugTracker-2024/Tests/add-partition-crash-7437.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/add-partition-crash-7437.test
@@ -0,0 +1,8 @@
+statement ok
+CREATE MERGE TABLE testagain (a int, b varchar(32)) PARTITION BY VALUES ON (a)
+
+statement ok
+CREATE TABLE sublimits2 (a int, b varchar(32))
+
+statement error 42000!SELECT: no such unary operator 'addtwo'(tinyint)
+ALTER TABLE testagain ADD TABLE sublimits2 AS PARTITION IN (-100 * 2, '-90',
'120', addtwo(55), 11.2)
diff --git a/sql/test/BugTracker-2024/Tests/aggr-exp-copy-crash-7435.test
b/sql/test/BugTracker-2024/Tests/aggr-exp-copy-crash-7435.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/aggr-exp-copy-crash-7435.test
@@ -0,0 +1,5 @@
+statement ok
+CREATE TABLE v0 ( v1 , v2 ) as ( select i , cast ( i as string ) from
generate_series ( 1 , 1000 ) as t ( i ) )
+
+statement ok
+DELETE FROM v0 WHERE NOT ( v1 = ( SELECT 3 WHERE v2 = ( SELECT sum ( v2 ) OVER
( ) ) GROUP BY 7 ))
diff --git a/sql/test/BugTracker-2024/Tests/exp-bin-crash-7434.test
b/sql/test/BugTracker-2024/Tests/exp-bin-crash-7434.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2024/Tests/exp-bin-crash-7434.test
@@ -0,0 +1,5 @@
+statement ok
+CREATE TABLE v0 ( v1 REAL )
+
+statement error conversion of string '<js>null</js>' to type hge failed.
+SELECT ( NULL IN ( ( SELECT median ( 1 ) ) , ntile ( '<js>null</js>' ) OVER (
) ) ) AS new_column FROM v0
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]