Bug #22687 | Functions UNIQUE_USERS, GROUP_UNIQUE_USERS | ||
---|---|---|---|
Submitted: | 25 Sep 2006 22:07 | Modified: | 16 Jan 2007 20:40 |
Reporter: | Marc ALFF | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server | Severity: | S3 (Non-critical) |
Version: | 5.1 BK | OS: | Linux (Linux) |
Assigned to: | Marc ALFF | CPU Architecture: | Any |
Tags: | rt_q1_2007 |
[25 Sep 2006 22:07]
Marc ALFF
[25 Sep 2006 22:10]
Marc ALFF
Description: There appear to be several issues with these functions. 1) They are not documented 2) They are not covered by the test suite 3) The implementation, using hard-coded litterals for parameters, has limitations explained in Bug#22684 4) Having a different name for the aggregate / non aggregate function is inconsistent with other functions. Expected result: Either complete the implementation, including review, tests, and documentation, or remove from the code base. How to repeat: select UNIQUE_USERS(?, ?, ?, ?) from T group by GROUP_UNIQUE_USERS(?, ?, ?, ?); Suggested fix: See expected result
[26 Sep 2006 8:15]
Sveta Smirnova
Thank you for the report. Could you please provide working test case for this bug?
[26 Sep 2006 14:36]
Marc ALFF
Sorry for the double submission, I tried to edit the submission to fix the bug referenced, but a new post was done instead. Tests cases below mysql> select version(); +-----------------------+ | version() | +-----------------------+ | 5.1.12-beta-debug-log | +-----------------------+ 1 row in set (0.00 sec) mysql> select UNIQUE_USERS("foo", 2, 3, 4); +------------------------------+ | UNIQUE_USERS("foo", 2, 3, 4) | +------------------------------+ | 0 | +------------------------------+ 1 row in set (0.00 sec) mysql> select UNIQUE_USERS("foo", 2, 3, 4, 5, 6); +------------------------------------+ | UNIQUE_USERS("foo", 2, 3, 4, 5, 6) | +------------------------------------+ | 0 | +------------------------------------+ 1 row in set (0.00 sec) mysql> select GROUP_UNIQUE_USERS("foo", 2, 3, 4); +------------------------------------+ | GROUP_UNIQUE_USERS("foo", 2, 3, 4) | +------------------------------------+ | 0 | +------------------------------------+ 1 row in set (0.00 sec)
[26 Sep 2006 18:28]
Sveta Smirnova
Verified as described on Linux.
[21 Dec 2006 20:19]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/17279 ChangeSet@1.2361, 2006-12-21 13:18:43-07:00, malff@weblab.(none) +11 -0 Bug#22687 (Functions UNIQUE_USERS, GROUP_UNIQUE_USERS) The native functions UNIQUE_USERS and GROUP_UNIQUE_USERS are basically dead code: - they are not documented - they are not tested - they are not properly implemented (input arguments are not expressions) - they have no functional use (arguments are ignored, the result is always 0) - they pollute the parser, by making the two names reserved keywords This fix removes the implementation from the code base, to improve the general code health.
[11 Jan 2007 17:44]
Peter Gulutzan
I can't find references to these functions in the manuals for Oracle, SQL Server, or DB2. They're certainly not standard. I approve of removing support for them.
[11 Jan 2007 19:08]
Tomash Brechko
Reviewed by e-mail.
[11 Jan 2007 21:59]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/17998 ChangeSet@1.2361, 2007-01-11 14:58:05-07:00, malff@weblab.(none) +11 -0 Bug#22687 (Functions UNIQUE_USERS, GROUP_UNIQUE_USERS) According to some internal communication, these two functions are place holders for future enhancements. Because they use a variable number of parameters, the implementation defined a reserved keyword for them in the parser grammar. Unfortunately, doing so creates a bug similar to Bug 21114 reported for the function FORMAT. In the 5.1 code base, due to improvements in the code implemented with bug 21114, having a reserved keyword for functions with a variable number of arguments is not needed any more by the implementation. As a result, this fix removes the place-holder implementation, and removes the unnecessary reserved keywords. Should the functions UNIQUE_USERS and GROUP_UNIQUE_USERS be finally implemented in a later release, the implementation should sub class Create_native_func in sql/item_create.cc. For example, see the class Create_func_concat.
[16 Jan 2007 20:40]
Paul DuBois
Noted in 5.1.15 changelog. The (undocumented) UNIQUE_USERS() and and GROUP_UNIQUE_USERS() functions were removed.