Description:
UDFs in the Version Tokens service do not trim whitespace consistently:
version_tokens_set() trims whitespace around names and values
version_tokens_delete() does not trim whitespace around names; it should
How to repeat:
mysql> select version_tokens_set(' * = a ; y = b ');
+---------------------------------------+
| version_tokens_set(' * = a ; y = b ') |
+---------------------------------------+
| 2 version tokens set. |
+---------------------------------------+
1 row in set (0.00 sec)
mysql> select version_tokens_show();
+-----------------------+
| version_tokens_show() |
+-----------------------+
| y=b;*=a; |
+-----------------------+
1 row in set (0.00 sec)
That shows whitespace trimming around names and values, which is per the spec.
mysql> select version_tokens_delete('* ');
+-----------------------------+
| version_tokens_delete('* ') |
+-----------------------------+
| 0 version tokens deleted. |
+-----------------------------+
1 row in set (0.00 sec)
mysql> select version_tokens_show();
+-----------------------+
| version_tokens_show() |
+-----------------------+
| y=b;*=a; |
+-----------------------+
1 row in set (0.00 sec)
That shows '* ' was not treated as '*' (a special case meaning "delete all tokens").
mysql> select version_tokens_delete('y ');
+-----------------------------+
| version_tokens_delete('y ') |
+-----------------------------+
| 0 version tokens deleted. |
+-----------------------------+
1 row in set (0.00 sec)
mysql> select version_tokens_show();
+-----------------------+
| version_tokens_show() |
+-----------------------+
| y=b;*=a; |
+-----------------------+
1 row in set (0.01 sec)
That shows 'y ' was not treated as 'y' (delete token named 'y').
Suggested fix:
All Version Tokens UDFs that take names or name=value pairs as arguments should trim whitespace using the same rules.