Bug #78111 version_tokens_delete() UDF doesn't trim whitespace
Submitted: 17 Aug 2015 16:25 Modified: 26 Aug 2015 13:25
Reporter: Paul DuBois Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: User-defined functions ( UDF ) Severity:S3 (Non-critical)
Version:5.7.9 OS:Any
Assigned to: CPU Architecture:Any

[17 Aug 2015 16:25] Paul DuBois
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.
[26 Aug 2015 13:25] Paul DuBois
Noted in 5.7.9, 5.8.0 changelogs.

version_tokens_delete() now strips whitespace surrounding token names
in its argument, similar to version_tokens_set() and
version_tokens_edit().