Skip to content

Commit 477776b

Browse files
committed
MDEV-28491 Uuid. "UPDATE/DELETE" not working "WHERE id IN (SELECT id FROM ..)"
This is a 10.7 version of the patch.
1 parent 712b443 commit 477776b

File tree

5 files changed

+76
-2
lines changed

5 files changed

+76
-2
lines changed

plugin/type_inet/mysql-test/type_inet/type_inet6.result

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,3 +2194,22 @@ SELECT IF(1, '::', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '::1';
21942194
f
21952195
::
21962196
DROP TABLE t1;
2197+
#
2198+
# MDEV-28491 Uuid. "UPDATE/DELETE" not working "WHERE id IN (SELECT id FROM ..)"
2199+
#
2200+
CREATE TABLE companies (id INET6, name varchar(10));
2201+
INSERT INTO companies (id) values ('00::01');
2202+
CREATE TABLE divisions (company_id INET6);
2203+
INSERT INTO divisions (company_id) values ('00::01');
2204+
SELECT * FROM companies WHERE id IN (SELECT company_id FROM divisions);
2205+
id name
2206+
::1 NULL
2207+
UPDATE companies SET name = 'value' WHERE id IN (SELECT company_id FROM divisions);
2208+
SELECT * FROM companies;
2209+
id name
2210+
::1 value
2211+
DELETE FROM companies WHERE id IN (SELECT company_id FROM divisions);
2212+
SELECT * FROM companies;
2213+
id name
2214+
DROP TABLE divisions;
2215+
DROP TABLE companies;

plugin/type_inet/mysql-test/type_inet/type_inet6.test

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1612,3 +1612,20 @@ SELECT IF(1, '::', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '';
16121612
SELECT IF(1, '::', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '::';
16131613
SELECT IF(1, '::', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '::1';
16141614
DROP TABLE t1;
1615+
1616+
--echo #
1617+
--echo # MDEV-28491 Uuid. "UPDATE/DELETE" not working "WHERE id IN (SELECT id FROM ..)"
1618+
--echo #
1619+
1620+
CREATE TABLE companies (id INET6, name varchar(10));
1621+
INSERT INTO companies (id) values ('00::01');
1622+
1623+
CREATE TABLE divisions (company_id INET6);
1624+
INSERT INTO divisions (company_id) values ('00::01');
1625+
SELECT * FROM companies WHERE id IN (SELECT company_id FROM divisions);
1626+
UPDATE companies SET name = 'value' WHERE id IN (SELECT company_id FROM divisions);
1627+
SELECT * FROM companies;
1628+
DELETE FROM companies WHERE id IN (SELECT company_id FROM divisions);
1629+
SELECT * FROM companies;
1630+
DROP TABLE divisions;
1631+
DROP TABLE companies;

plugin/type_uuid/mysql-test/type_uuid/type_uuid.result

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3152,3 +3152,22 @@ f var_pop('x')
31523152
Warnings:
31533153
Warning 1292 Truncated incorrect DOUBLE value: 'x'
31543154
Warning 1292 Incorrect uuid value: ''
3155+
#
3156+
# MDEV-28491 Uuid. "UPDATE/DELETE" not working "WHERE id IN (SELECT id FROM ..)"
3157+
#
3158+
CREATE TABLE companies (id uuid, name varchar(10));
3159+
INSERT INTO companies (id) values ('7bc95b06-cc6c-11ec-96c5-0242ac130002');
3160+
CREATE TABLE divisions (company_id uuid);
3161+
INSERT INTO divisions (company_id) values ('7bc95b06-cc6c-11ec-96c5-0242ac130002');
3162+
SELECT * FROM companies WHERE id IN (SELECT company_id FROM divisions);
3163+
id name
3164+
7bc95b06-cc6c-11ec-96c5-0242ac130002 NULL
3165+
UPDATE companies SET name = 'value' WHERE id IN (SELECT company_id FROM divisions);
3166+
SELECT * FROM companies;
3167+
id name
3168+
7bc95b06-cc6c-11ec-96c5-0242ac130002 value
3169+
DELETE FROM companies WHERE id IN (SELECT company_id FROM divisions);
3170+
SELECT * FROM companies;
3171+
id name
3172+
DROP TABLE divisions;
3173+
DROP TABLE companies;

plugin/type_uuid/mysql-test/type_uuid/type_uuid.test

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1652,3 +1652,21 @@ DROP TABLE t1;
16521652
--echo #
16531653

16541654
SELECT uuid() AS f, var_pop('x') FROM dual HAVING f > '';
1655+
1656+
1657+
--echo #
1658+
--echo # MDEV-28491 Uuid. "UPDATE/DELETE" not working "WHERE id IN (SELECT id FROM ..)"
1659+
--echo #
1660+
1661+
CREATE TABLE companies (id uuid, name varchar(10));
1662+
INSERT INTO companies (id) values ('7bc95b06-cc6c-11ec-96c5-0242ac130002');
1663+
1664+
CREATE TABLE divisions (company_id uuid);
1665+
INSERT INTO divisions (company_id) values ('7bc95b06-cc6c-11ec-96c5-0242ac130002');
1666+
SELECT * FROM companies WHERE id IN (SELECT company_id FROM divisions);
1667+
UPDATE companies SET name = 'value' WHERE id IN (SELECT company_id FROM divisions);
1668+
SELECT * FROM companies;
1669+
DELETE FROM companies WHERE id IN (SELECT company_id FROM divisions);
1670+
SELECT * FROM companies;
1671+
DROP TABLE divisions;
1672+
DROP TABLE companies;

sql/sql_type_fixedbin.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,8 +1589,9 @@ class FixedBinTypeBundle
15891589
if (!example)
15901590
return false;
15911591
value_cached= true;
1592-
null_value= example->val_native_with_conversion_result(current_thd,
1593-
&m_value, type_handler());
1592+
null_value_inside= null_value=
1593+
example->val_native_with_conversion_result(current_thd,
1594+
&m_value, type_handler());
15941595
return true;
15951596
}
15961597
String* val_str(String *to)

0 commit comments

Comments
 (0)