mirror of
https://github.com/MariaDB/server.git
synced 2025-07-23 00:55:06 +00:00
MDEV-35468 UUID primary key filtering return incorrect results
UUID::cmp() correctly compared: - two swapped v1 UUIDs - two non-swapped v6 UIDs but v1 vs v6 were not compared correctly. Adding a new method cmp_swap_noswap() and using it in UUID::cmp() to compare two value of different swapness.
This commit is contained in:
101
plugin/type_uuid/mysql-test/type_uuid/type_uuid_in.result
Normal file
101
plugin/type_uuid/mysql-test/type_uuid/type_uuid_in.result
Normal file
@ -0,0 +1,101 @@
|
||||
CREATE TABLE t1 (id UUID NOT NULL);
|
||||
INSERT INTO t1 (`id`) VALUES ('e8748eee-fabe-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('036d4fc5-fabf-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('2acf42cc-fabf-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('594a8970-fabf-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('4238a6e5-fac1-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('6d001a4d-fac1-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('e4e67615-fad5-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('1ec69927-30f3-62ca-a0a0-4b98bb6957f8');
|
||||
INSERT INTO t1 (`id`) VALUES ('1ec6992e-5c9e-6b2a-a21b-fbc054a2075e');
|
||||
INSERT INTO t1 (`id`) VALUES ('1ec6992e-e5be-6342-8293-e107448b2cd5');
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8',
|
||||
'1ec6992e-5c9e-6b2a-a21b-fbc054a2075e',
|
||||
'1ec6992e-e5be-6342-8293-e107448b2cd5'
|
||||
) ORDER BY id;
|
||||
id
|
||||
e8748eee-fabe-11eb-af18-005056bc575d
|
||||
036d4fc5-fabf-11eb-af18-005056bc575d
|
||||
2acf42cc-fabf-11eb-af18-005056bc575d
|
||||
594a8970-fabf-11eb-af18-005056bc575d
|
||||
4238a6e5-fac1-11eb-af18-005056bc575d
|
||||
6d001a4d-fac1-11eb-af18-005056bc575d
|
||||
e4e67615-fad5-11eb-af18-005056bc575d
|
||||
1ec69927-30f3-62ca-a0a0-4b98bb6957f8
|
||||
1ec6992e-5c9e-6b2a-a21b-fbc054a2075e
|
||||
1ec6992e-e5be-6342-8293-e107448b2cd5
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8',
|
||||
'1ec6992e-5c9e-6b2a-a21b-fbc054a2075e',
|
||||
'1ec6992e-e5be-6342-8293-e107448b2cd5'
|
||||
) ORDER BY id;
|
||||
id
|
||||
e8748eee-fabe-11eb-af18-005056bc575d
|
||||
036d4fc5-fabf-11eb-af18-005056bc575d
|
||||
2acf42cc-fabf-11eb-af18-005056bc575d
|
||||
594a8970-fabf-11eb-af18-005056bc575d
|
||||
4238a6e5-fac1-11eb-af18-005056bc575d
|
||||
6d001a4d-fac1-11eb-af18-005056bc575d
|
||||
e4e67615-fad5-11eb-af18-005056bc575d
|
||||
1ec69927-30f3-62ca-a0a0-4b98bb6957f8
|
||||
1ec6992e-5c9e-6b2a-a21b-fbc054a2075e
|
||||
1ec6992e-e5be-6342-8293-e107448b2cd5
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (id uuid);
|
||||
INSERT INTO t1 (id) VALUES
|
||||
('e8748eee-fabe-11eb-af18-005056bc575d'),
|
||||
('036d4fc5-fabf-11eb-af18-005056bc575d');
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8'
|
||||
) ORDER BY id;
|
||||
id
|
||||
e8748eee-fabe-11eb-af18-005056bc575d
|
||||
036d4fc5-fabf-11eb-af18-005056bc575d
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d'
|
||||
) ORDER BY id;
|
||||
id
|
||||
e8748eee-fabe-11eb-af18-005056bc575d
|
||||
036d4fc5-fabf-11eb-af18-005056bc575d
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d'
|
||||
) ORDER BY id;
|
||||
id
|
||||
e8748eee-fabe-11eb-af18-005056bc575d
|
||||
036d4fc5-fabf-11eb-af18-005056bc575d
|
||||
DROP TABLE t1;
|
82
plugin/type_uuid/mysql-test/type_uuid/type_uuid_in.test
Normal file
82
plugin/type_uuid/mysql-test/type_uuid/type_uuid_in.test
Normal file
@ -0,0 +1,82 @@
|
||||
# Start of 10.11 tests
|
||||
|
||||
#
|
||||
# MDEV-35468 UUID primary key filtering return incorrect results
|
||||
#
|
||||
CREATE TABLE t1 (id UUID NOT NULL);
|
||||
|
||||
INSERT INTO t1 (`id`) VALUES ('e8748eee-fabe-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('036d4fc5-fabf-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('2acf42cc-fabf-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('594a8970-fabf-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('4238a6e5-fac1-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('6d001a4d-fac1-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('e4e67615-fad5-11eb-af18-005056bc575d');
|
||||
INSERT INTO t1 (`id`) VALUES ('1ec69927-30f3-62ca-a0a0-4b98bb6957f8');
|
||||
INSERT INTO t1 (`id`) VALUES ('1ec6992e-5c9e-6b2a-a21b-fbc054a2075e');
|
||||
INSERT INTO t1 (`id`) VALUES ('1ec6992e-e5be-6342-8293-e107448b2cd5');
|
||||
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8',
|
||||
'1ec6992e-5c9e-6b2a-a21b-fbc054a2075e',
|
||||
'1ec6992e-e5be-6342-8293-e107448b2cd5'
|
||||
) ORDER BY id;
|
||||
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8',
|
||||
'1ec6992e-5c9e-6b2a-a21b-fbc054a2075e',
|
||||
'1ec6992e-e5be-6342-8293-e107448b2cd5'
|
||||
) ORDER BY id;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (id uuid);
|
||||
INSERT INTO t1 (id) VALUES
|
||||
('e8748eee-fabe-11eb-af18-005056bc575d'),
|
||||
('036d4fc5-fabf-11eb-af18-005056bc575d');
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8'
|
||||
) ORDER BY id;
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d'
|
||||
) ORDER BY id;
|
||||
SELECT * FROM t1 WHERE id IN (
|
||||
'1ec69927-30f3-62ca-a0a0-4b98bb6957f8',
|
||||
'036d4fc5-fabf-11eb-af18-005056bc575d',
|
||||
'2acf42cc-fabf-11eb-af18-005056bc575d',
|
||||
'594a8970-fabf-11eb-af18-005056bc575d',
|
||||
'4238a6e5-fac1-11eb-af18-005056bc575d',
|
||||
'6d001a4d-fac1-11eb-af18-005056bc575d',
|
||||
'e4e67615-fad5-11eb-af18-005056bc575d',
|
||||
'e8748eee-fabe-11eb-af18-005056bc575d'
|
||||
) ORDER BY id;
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 10.11 tests
|
@ -154,6 +154,10 @@ public:
|
||||
{
|
||||
return memcmp(a + m_memory_pos, b + m_memory_pos, m_length);
|
||||
}
|
||||
int cmp_swap_noswap(const char *a, const char *b) const
|
||||
{
|
||||
return memcmp(a + m_memory_pos, b + m_record_pos, m_length);
|
||||
}
|
||||
void hash_record(const uchar *ptr, Hasher *hasher) const
|
||||
{
|
||||
hasher->add(&my_charset_bin, ptr + m_record_pos, m_length);
|
||||
@ -236,6 +240,18 @@ public:
|
||||
segment(4).hash_record(ptr, hasher);
|
||||
}
|
||||
|
||||
static int cmp_swap_noswap(const LEX_CSTRING &a, const LEX_CSTRING &b)
|
||||
{
|
||||
int res;
|
||||
if ((res= segment(4).cmp_swap_noswap(a.str, b.str)) ||
|
||||
(res= segment(3).cmp_swap_noswap(a.str, b.str)) ||
|
||||
(res= segment(2).cmp_swap_noswap(a.str, b.str)) ||
|
||||
(res= segment(1).cmp_swap_noswap(a.str, b.str)) ||
|
||||
(res= segment(0).cmp_swap_noswap(a.str, b.str)))
|
||||
return res;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Compare two in-memory values
|
||||
static int cmp(const LEX_CSTRING &a, const LEX_CSTRING &b)
|
||||
{
|
||||
@ -254,6 +270,10 @@ public:
|
||||
return res;
|
||||
return 0;
|
||||
}
|
||||
else if (swap_a && !swap_b)
|
||||
return cmp_swap_noswap(a, b);
|
||||
else if (!swap_a && swap_b)
|
||||
return -cmp_swap_noswap(b, a);
|
||||
return memcmp(a.str, b.str, binary_length());
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user