Commit cdb60578 authored by unknown's avatar unknown
Browse files

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.


BitKeeper/deleted/.del-item_uniq.cc:
  Rename: sql/item_uniq.cc -> BitKeeper/deleted/.del-item_uniq.cc
BitKeeper/deleted/.del-item_uniq.h:
  Rename: sql/item_uniq.h -> BitKeeper/deleted/.del-item_uniq.h
libmysqld/Makefile.am:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
mysql-test/r/parser.result:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
mysql-test/t/parser.test:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
sql/Makefile.am:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
sql/item.h:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
sql/item_sum.h:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
sql/lex.h:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
sql/mysql_priv.h:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
sql/sql_yacc.yy:
  Remove native functions UNIQUE_USERS() and GROUP_UNIQUE_USERS().
parent 552d4ced
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
	hostname.cc init.cc password.c \
	item.cc item_buff.cc item_cmpfunc.cc item_create.cc \
	item_func.cc item_strfunc.cc item_sum.cc item_timefunc.cc \
	item_geofunc.cc item_uniq.cc item_subselect.cc item_row.cc\
	item_geofunc.cc item_subselect.cc item_row.cc\
	item_xmlfunc.cc \
	key.cc lock.cc log.cc log_event.cc sql_state.c \
	protocol.cc net_serv.cc opt_range.cc \
+6 −6
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
create table GROUP_CONCAT (a int);
drop table GROUP_CONCAT;
create table GROUP_UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_UNIQUE_USERS(a int)' at line 1
drop table GROUP_UNIQUE_USERS;
create table GROUP_UNIQUE_USERS (a int);
drop table GROUP_UNIQUE_USERS;
create table MAX(a int);
@@ -121,7 +121,7 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
create table TRIM (a int);
drop table TRIM;
create table UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE_USERS(a int)' at line 1
drop table UNIQUE_USERS;
create table UNIQUE_USERS (a int);
drop table UNIQUE_USERS;
create table VARIANCE(a int);
@@ -186,9 +186,9 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
create table GROUP_CONCAT (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_CONCAT (a int)' at line 1
create table GROUP_UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_UNIQUE_USERS(a int)' at line 1
drop table GROUP_UNIQUE_USERS;
create table GROUP_UNIQUE_USERS (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP_UNIQUE_USERS (a int)' at line 1
drop table GROUP_UNIQUE_USERS;
create table MAX(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX(a int)' at line 1
create table MAX (a int);
@@ -258,9 +258,9 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp
create table TRIM (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIM (a int)' at line 1
create table UNIQUE_USERS(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE_USERS(a int)' at line 1
drop table UNIQUE_USERS;
create table UNIQUE_USERS (a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNIQUE_USERS (a int)' at line 1
drop table UNIQUE_USERS;
create table VARIANCE(a int);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARIANCE(a int)' at line 1
create table VARIANCE (a int);
+10 −6
Original line number Diff line number Diff line
@@ -77,8 +77,9 @@ create table GROUP_CONCAT(a int);
create table GROUP_CONCAT (a int);
drop table GROUP_CONCAT;

--error ER_PARSE_ERROR
# Limitation removed in 5.1
create table GROUP_UNIQUE_USERS(a int);
drop table GROUP_UNIQUE_USERS;
create table GROUP_UNIQUE_USERS (a int);
drop table GROUP_UNIQUE_USERS;

@@ -167,8 +168,9 @@ create table TRIM(a int);
create table TRIM (a int);
drop table TRIM;

--error ER_PARSE_ERROR
# Limitation removed in 5.1
create table UNIQUE_USERS(a int);
drop table UNIQUE_USERS;
create table UNIQUE_USERS (a int);
drop table UNIQUE_USERS;

@@ -249,10 +251,11 @@ create table GROUP_CONCAT(a int);
--error ER_PARSE_ERROR
create table GROUP_CONCAT (a int);

--error ER_PARSE_ERROR
# Limitation removed in 5.1
create table GROUP_UNIQUE_USERS(a int);
--error ER_PARSE_ERROR
drop table GROUP_UNIQUE_USERS;
create table GROUP_UNIQUE_USERS (a int);
drop table GROUP_UNIQUE_USERS;

--error ER_PARSE_ERROR
create table MAX(a int);
@@ -339,10 +342,11 @@ create table TRIM(a int);
--error ER_PARSE_ERROR
create table TRIM (a int);

--error ER_PARSE_ERROR
# Limitation removed in 5.1
create table UNIQUE_USERS(a int);
--error ER_PARSE_ERROR
drop table UNIQUE_USERS;
create table UNIQUE_USERS (a int);
drop table UNIQUE_USERS;

--error ER_PARSE_ERROR
create table VARIANCE(a int);
+2 −2
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ mysqld_LDADD = @MYSQLD_EXTRA_LDFLAGS@ \
			$(LDADD)  $(CXXLDFLAGS) $(WRAPLIBS) @LIBDL@ \
                        @yassl_libs@ @openssl_libs@
noinst_HEADERS =	item.h item_func.h item_sum.h item_cmpfunc.h \
			item_strfunc.h item_timefunc.h item_uniq.h \
			item_strfunc.h item_timefunc.h \
			item_xmlfunc.h \
			item_create.h item_subselect.h item_row.h \
			mysql_priv.h item_geofunc.h sql_bitmap.h \
@@ -83,7 +83,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc sql_partition.cc \
			sql_base.cc table.cc sql_select.cc sql_insert.cc \
			sql_prepare.cc sql_error.cc sql_locale.cc \
			sql_update.cc sql_delete.cc uniques.cc sql_do.cc \
			procedure.cc item_uniq.cc sql_test.cc \
			procedure.cc sql_test.cc \
			log.cc log_event.cc init.cc derror.cc sql_acl.cc \
			unireg.cc des_key_file.cc \
			discover.cc time.cc opt_range.cc opt_sum.cc \
+0 −1
Original line number Diff line number Diff line
@@ -2135,7 +2135,6 @@ class Item_int_with_ref :public Item_int
#include "item_strfunc.h"
#include "item_geofunc.h"
#include "item_timefunc.h"
#include "item_uniq.h"
#include "item_subselect.h"
#include "item_xmlfunc.h"
#endif
Loading