Commit 6c5e60f1 authored by Igor Babaev's avatar Igor Babaev

MDEV-16038 Assertion `map->n_bits > 0' failed (my_bitmap.c:386: bitmap_is_clear_all)

Rows with no elements are not allowed in a table value constructor
unless it is used in an INSERT statement.
parent 99fa7c6c
...@@ -2072,7 +2072,7 @@ select * from (values (1), (t1.b), (2)) as new_tvc; ...@@ -2072,7 +2072,7 @@ select * from (values (1), (t1.b), (2)) as new_tvc;
ERROR HY000: Field reference 't1.b' can't be used in table value constructor ERROR HY000: Field reference 't1.b' can't be used in table value constructor
drop table t1; drop table t1;
# #
# MDEV-MDEV-15940: cursor over TVC # MDEV-15940: cursor over TVC
# #
BEGIN NOT ATOMIC BEGIN NOT ATOMIC
DECLARE v INT; DECLARE v INT;
...@@ -2092,3 +2092,8 @@ END; ...@@ -2092,3 +2092,8 @@ END;
| |
v v
1 1
#
# MDEV-16038: empty row in TVC
#
with t as (values (),()) select 1 from t;
ERROR HY000: Row with no elements is not allowed in table value constructor in this context
...@@ -1046,7 +1046,7 @@ select * from (values (1), (t1.b), (2)) as new_tvc; ...@@ -1046,7 +1046,7 @@ select * from (values (1), (t1.b), (2)) as new_tvc;
drop table t1; drop table t1;
--echo # --echo #
--echo # MDEV-MDEV-15940: cursor over TVC --echo # MDEV-15940: cursor over TVC
--echo # --echo #
DELIMITER |; DELIMITER |;
...@@ -1068,3 +1068,10 @@ END; ...@@ -1068,3 +1068,10 @@ END;
| |
DELIMITER ;| DELIMITER ;|
--echo #
--echo # MDEV-16038: empty row in TVC
--echo #
--error ER_EMPTY_ROW_IN_TVC
with t as (values (),()) select 1 from t;
...@@ -7913,3 +7913,5 @@ ER_INDEX_FILE_FULL ...@@ -7913,3 +7913,5 @@ ER_INDEX_FILE_FULL
eng "The index file for table '%-.192s' is full" eng "The index file for table '%-.192s' is full"
ER_UPDATED_COLUMN_ONLY_ONCE ER_UPDATED_COLUMN_ONLY_ONCE
eng "The column %`s.%`s cannot be changed more than once in a single UPDATE statement" eng "The column %`s.%`s cannot be changed more than once in a single UPDATE statement"
ER_EMPTY_ROW_IN_TVC
eng "Row with no elements is not allowed in table value constructor in this context"
...@@ -221,6 +221,12 @@ bool table_value_constr::prepare(THD *thd, SELECT_LEX *sl, ...@@ -221,6 +221,12 @@ bool table_value_constr::prepare(THD *thd, SELECT_LEX *sl,
uint cnt= first_elem->elements; uint cnt= first_elem->elements;
Type_holder *holders; Type_holder *holders;
if (cnt == 0)
{
my_error(ER_EMPTY_ROW_IN_TVC, MYF(0));
DBUG_RETURN(true);
}
if (fix_fields_for_tvc(thd, li)) if (fix_fields_for_tvc(thd, li))
DBUG_RETURN(true); DBUG_RETURN(true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment