diff options
author | unknown <mhansson/martin@linux-st28.site> | 2007-02-22 14:11:01 +0100 |
---|---|---|
committer | unknown <mhansson/martin@linux-st28.site> | 2007-02-22 14:11:01 +0100 |
commit | ddb5a5636cfac14560d4a15c608b0c6f0e3477cd (patch) | |
tree | 2702c1d1b9e4693cf93c05e0fc1494da118112c9 /myisam/mi_packrec.c | |
parent | 4c2bc81ae762072973528e306c8fa80031b076b2 (diff) | |
download | mariadb-git-ddb5a5636cfac14560d4a15c608b0c6f0e3477cd.tar.gz |
Bug #24010: INSERT INTO ... SELECT fails on unique constraint with data
it doesn't select.
This bug was fixed along with bug #16861: User defined variable can
have a wrong value if a tmp table was used.
There the fix consisted of Item_func_set_user_var overloading the method
Item::save_in_field. Consider the query from the test case:
INSERT INTO foo( bar, baz )
SELECT
bar,
@newBaz := 1 + baz
FROM
foo
WHERE
quux <= 0.1;
Here the assignment expression '@newBaz := 1 + baz' is represented by an
Item_func_set_user_var. Its member method save_in_field, which writes the
value of this assignment into the result field, writes the val_xxx() value,
which is not updated at this point. In the fix introduced by the patch,
the save_in_field method reads the actual variable value instead.
See also comment for
ChangeSet@1.2368.1.3, 2007-01-09 23:24:56+03:00, evgen@moonbone.local +4 -0
and comment for
Item_func_set_user_var::save_in_field (item_func.cc)
mysql-test/r/update.result:
BUG#24010
The correct, and expected, result
mysql-test/t/update.test:
BUG#24010
The test case for this bug. When the bug is active, the INSERT ... SELECT
statement will try to insert the values <1, 2> which gives an error
Diffstat (limited to 'myisam/mi_packrec.c')
0 files changed, 0 insertions, 0 deletions