merge from mysql-next-mr-bugfixing
This commit is contained in:
commit
8a5956c928
@ -278,6 +278,7 @@ ENDIF()
|
||||
SET(MYSQL_DOCS_LOCATION "" CACHE PATH "Location from where documentation is copied")
|
||||
MARK_AS_ADVANCED(MYSQL_DOCS_LOCATION)
|
||||
INSTALL(DIRECTORY Docs/ DESTINATION ${INSTALL_DOCDIR}
|
||||
PATTERN "INSTALL-BINARY" EXCLUDE
|
||||
PATTERN "Makefile.*" EXCLUDE
|
||||
PATTERN "myisam.txt" EXCLUDE
|
||||
PATTERN "glibc*" EXCLUDE
|
||||
|
@ -4460,12 +4460,13 @@ typedef struct
|
||||
{
|
||||
const char *name;
|
||||
uint code;
|
||||
const char *text;
|
||||
} st_error;
|
||||
|
||||
static st_error global_error_names[] =
|
||||
{
|
||||
#include <mysqld_ername.h>
|
||||
{ 0, 0 }
|
||||
{ 0, 0, 0 }
|
||||
};
|
||||
|
||||
uint get_errcode_from_name(char *error_name, char *error_end)
|
||||
|
@ -1,5 +1,6 @@
|
||||
EXTRA_DIST = \
|
||||
cmake_parse_arguments.cmake \
|
||||
cpack_source_ignore_files.cmake \
|
||||
package_name.cmake \
|
||||
configurable_file_content.in \
|
||||
check_minimal_version.cmake \
|
||||
|
@ -80,6 +80,8 @@ IF(FEATURE_SET)
|
||||
ENDFOREACH()
|
||||
ENDIF()
|
||||
|
||||
SET(WITHOUT_AUDIT_NULL ON CACHE BOOL "")
|
||||
SET(WITHOUT_DAEMON_EXAMPLE ON CACHE BOOL "")
|
||||
|
||||
OPTION(ENABLE_LOCAL_INFILE "" ON)
|
||||
SET(WITH_SSL bundled CACHE STRING "")
|
||||
|
@ -130,12 +130,12 @@ foreach my $option (@ARGV)
|
||||
}
|
||||
if($option =~ /with-ssl=/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_SSL=bundled";
|
||||
$cmakeargs = $cmakeargs." -DWITH_SSL=yes";
|
||||
next;
|
||||
}
|
||||
if($option =~ /with-ssl/)
|
||||
{
|
||||
$cmakeargs = $cmakeargs." -DWITH_SSL=yes";
|
||||
$cmakeargs = $cmakeargs." -DWITH_SSL=bundled";
|
||||
next;
|
||||
}
|
||||
if($option =~ /prefix=/)
|
||||
|
40
cmake/cpack_source_ignore_files.cmake
Normal file
40
cmake/cpack_source_ignore_files.cmake
Normal file
@ -0,0 +1,40 @@
|
||||
SET(CPACK_SOURCE_IGNORE_FILES
|
||||
\\\\.bzr/
|
||||
\\\\.bzr-mysql
|
||||
\\\\.bzrignore
|
||||
CMakeCache\\\\.txt
|
||||
cmake_dist\\\\.cmake
|
||||
CPackSourceConfig\\\\.cmake
|
||||
CPackConfig.cmake
|
||||
/cmake_install\\\\.cmake
|
||||
/CTestTestfile\\\\.cmake
|
||||
/CMakeFiles/
|
||||
/version_resources/
|
||||
/_CPack_Packages/
|
||||
$\\\\.gz
|
||||
$\\\\.zip
|
||||
/CMakeFiles/
|
||||
/version_resources/
|
||||
/_CPack_Packages/
|
||||
scripts/make_binary_distribution$
|
||||
scripts/msql2mysql$
|
||||
scripts/mysql_config$
|
||||
scripts/mysql_convert_table_format$
|
||||
scripts/mysql_find_rows$
|
||||
scripts/mysql_fix_extensions$
|
||||
scripts/mysql_install_db$
|
||||
scripts/mysql_secure_installation$
|
||||
scripts/mysql_setpermission$
|
||||
scripts/mysql_zap$
|
||||
scripts/mysqlaccess$
|
||||
scripts/mysqld_multi$
|
||||
scripts/mysqld_safe$
|
||||
scripts/mysqldumpslow$
|
||||
scripts/mysqlhotcopy$
|
||||
Makefile$
|
||||
include/config\\\\.h$
|
||||
include/my_config\\\\.h$
|
||||
/autom4te\\\\.cache/
|
||||
errmsg\\\\.sys$
|
||||
#
|
||||
)
|
@ -80,7 +80,7 @@ ENDIF()
|
||||
SET(INSTALL_LIBDIR_STANDALONE "lib")
|
||||
SET(INSTALL_INCLUDEDIR_STANDALONE "include")
|
||||
SET(INSTALL_PLUGINDIR_STANDALONE "lib/plugin")
|
||||
SET(INSTALL_DOCDIR_STANDALONE "doc")
|
||||
SET(INSTALL_DOCDIR_STANDALONE "docs")
|
||||
SET(INSTALL_MANDIR_STANDALONE "man")
|
||||
SET(INSTALL_MYSQLSHAREDIR_STANDALONE "share")
|
||||
SET(INSTALL_SHAREDIR_STANDALONE "share")
|
||||
|
@ -108,17 +108,7 @@ IF(NOT CPACK_SOURCE_PACKAGE_FILE_NAME)
|
||||
ENDIF()
|
||||
SET(CPACK_PACKAGE_VENDOR "Sun Microsystems, Inc")
|
||||
SET(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
SET(CPACK_SOURCE_IGNORE_FILES
|
||||
\\\\.bzr/
|
||||
\\\\.bzr-mysql
|
||||
.bzrignore
|
||||
CMakeCache.txt
|
||||
/CMakeFiles/
|
||||
/version_resources/
|
||||
/_CPack_Packages/
|
||||
$.gz
|
||||
$.zip
|
||||
)
|
||||
INCLUDE(cpack_source_ignore_files)
|
||||
|
||||
# Defintions for windows version resources
|
||||
SET(PRODUCTNAME "MySQL Server")
|
||||
|
@ -30,7 +30,7 @@ SET(LIBM m)
|
||||
|
||||
# CMake defined -lthread as thread flag. This crashes in dlopen
|
||||
# when trying to load plugins workaround with -lpthread
|
||||
SET(CMAKE_THREADS_LIBS_INIT -lpthread CACHE INTERNAL "")
|
||||
SET(CMAKE_THREADS_LIBS_INIT -lpthread CACHE INTERNAL "" FORCE)
|
||||
|
||||
# Solaris specific large page support
|
||||
CHECK_SYMBOL_EXISTS(MHA_MAPSIZE_VA sys/mman.h HAVE_DECL_MHA_MAPSIZE_VA)
|
||||
|
@ -199,11 +199,34 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
static void print_escaped_string(FILE *f, const char *str)
|
||||
{
|
||||
const char *tmp = str;
|
||||
|
||||
while (tmp[0] != 0)
|
||||
{
|
||||
switch (tmp[0])
|
||||
{
|
||||
case '\\': fprintf(f, "\\\\"); break;
|
||||
case '\'': fprintf(f, "\\\'"); break;
|
||||
case '\"': fprintf(f, "\\\""); break;
|
||||
case '\n': fprintf(f, "\\n"); break;
|
||||
case '\r': fprintf(f, "\\r"); break;
|
||||
default: fprintf(f, "%c", tmp[0]);
|
||||
}
|
||||
tmp++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static int create_header_files(struct errors *error_head)
|
||||
{
|
||||
uint er_last;
|
||||
FILE *er_definef, *sql_statef, *er_namef;
|
||||
struct errors *tmp_error;
|
||||
struct message *er_msg;
|
||||
const char *er_text;
|
||||
|
||||
DBUG_ENTER("create_header_files");
|
||||
LINT_INIT(er_last);
|
||||
|
||||
@ -245,9 +268,12 @@ static int create_header_files(struct errors *error_head)
|
||||
"{ %-40s,\"%s\", \"%s\" },\n", tmp_error->er_name,
|
||||
tmp_error->sql_code1, tmp_error->sql_code2);
|
||||
/*generating er_name file */
|
||||
fprintf(er_namef, "{ \"%s\", %d },\n", tmp_error->er_name,
|
||||
tmp_error->d_code);
|
||||
|
||||
er_msg= find_message(tmp_error, default_language, 0);
|
||||
er_text = (er_msg ? er_msg->text : "");
|
||||
fprintf(er_namef, "{ \"%s\", %d, \"", tmp_error->er_name,
|
||||
tmp_error->d_code);
|
||||
print_escaped_string(er_namef, er_text);
|
||||
fprintf(er_namef, "\" },\n");
|
||||
}
|
||||
/* finishing off with mysqld_error.h */
|
||||
fprintf(er_definef, "#define ER_ERROR_LAST %d\n", er_last);
|
||||
|
@ -184,6 +184,45 @@ static const char *get_ha_error_msg(int code)
|
||||
return NullS;
|
||||
}
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *name;
|
||||
uint code;
|
||||
const char *text;
|
||||
} st_error;
|
||||
|
||||
static st_error global_error_names[] =
|
||||
{
|
||||
#include <mysqld_ername.h>
|
||||
{ 0, 0, 0 }
|
||||
};
|
||||
|
||||
/**
|
||||
Lookup an error by code in the global_error_names array.
|
||||
@param code the code to lookup
|
||||
@param [out] name_ptr the error name, when found
|
||||
@param [out] msg_ptr the error text, when found
|
||||
@return 1 when found, otherwise 0
|
||||
*/
|
||||
int get_ER_error_msg(uint code, const char **name_ptr, const char **msg_ptr)
|
||||
{
|
||||
st_error *tmp_error;
|
||||
|
||||
tmp_error= & global_error_names[0];
|
||||
|
||||
while (tmp_error->name != NULL)
|
||||
{
|
||||
if (tmp_error->code == code)
|
||||
{
|
||||
*name_ptr= tmp_error->name;
|
||||
*msg_ptr= tmp_error->text;
|
||||
return 1;
|
||||
}
|
||||
tmp_error++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(__WIN__)
|
||||
static my_bool print_win_error_msg(DWORD error, my_bool verbose)
|
||||
@ -211,6 +250,7 @@ int main(int argc,char *argv[])
|
||||
{
|
||||
int error,code,found;
|
||||
const char *msg;
|
||||
const char *name;
|
||||
char *unknown_error = 0;
|
||||
#if defined(__WIN__)
|
||||
my_bool skip_win_message= 0;
|
||||
@ -316,6 +356,14 @@ int main(int argc,char *argv[])
|
||||
else
|
||||
puts(msg);
|
||||
}
|
||||
if (get_ER_error_msg(code, & name, & msg))
|
||||
{
|
||||
found= 1;
|
||||
if (verbose)
|
||||
printf("MySQL error code %3d (%s): %s\n", code, name, msg);
|
||||
else
|
||||
puts(msg);
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
#if defined(__WIN__)
|
||||
|
@ -118,6 +118,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
|
||||
net_clear_error(net);
|
||||
thd->current_stmt= stmt;
|
||||
|
||||
thd->thread_stack= (char*) &thd;
|
||||
thd->store_globals(); // Fix if more than one connect
|
||||
/*
|
||||
We have to call free_old_query before we start to fill mysql->fields
|
||||
|
@ -23,6 +23,7 @@ INSTALL(
|
||||
PATTERN "mtr.out*" EXCLUDE
|
||||
PATTERN ".cvsignore" EXCLUDE
|
||||
PATTERN "*.am" EXCLUDE
|
||||
PATTERN "*.in" EXCLUDE
|
||||
)
|
||||
|
||||
|
||||
|
@ -61,10 +61,10 @@ create table t1 (a int unique);
|
||||
create table t2 (a int);
|
||||
drop function if exists f1;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION f1 does not exist
|
||||
Note 1305 FUNCTION test.f1 does not exist
|
||||
drop function if exists f2;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION f2 does not exist
|
||||
Note 1305 FUNCTION test.f2 does not exist
|
||||
create function f1() returns int
|
||||
begin
|
||||
insert into t1 (a) values (1);
|
||||
|
@ -1231,7 +1231,7 @@ Warnings:
|
||||
Note 1051 Unknown table 'test'
|
||||
drop function if exists test_function;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test_function does not exist
|
||||
Note 1305 FUNCTION test.test_function does not exist
|
||||
drop view if exists v1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 'test.v1'
|
||||
|
@ -2,5 +2,6 @@ MySQL error code 150: Foreign key constraint is incorrectly formed
|
||||
Win32 error code 150: System trace information was not specified in your CONFIG.SYS file, or tracing is disallowed.
|
||||
OS error code 23: Too many open files in system
|
||||
Win32 error code 23: Data error (cyclic redundancy check).
|
||||
MySQL error code 1062 (ER_DUP_ENTRY): Duplicate entry '%-.192s' for key %d
|
||||
Win32 error code 1062: The service has not been started.
|
||||
Illegal error code: 30000
|
||||
|
@ -1 +1,6 @@
|
||||
Illegal error code: 10000
|
||||
MySQL error code 1062 (ER_DUP_ENTRY): Duplicate entry '%-.192s' for key %d
|
||||
MySQL error code 1076 (ER_READY): %s: ready for connections.
|
||||
Version: '%s' socket: '%s' port: %d
|
||||
MySQL error code 1459 (ER_TABLE_NEEDS_UPGRADE): Table upgrade required. Please do "REPAIR TABLE `%-.32s`" or dump/reload to fix it!
|
||||
MySQL error code 1461 (ER_MAX_PREPARED_STMT_COUNT_REACHED): Can't create more than max_prepared_stmt_count statements (current value: %lu)
|
||||
|
@ -2181,7 +2181,7 @@ drop procedure peter_p1 $$
|
||||
drop procedure peter_p2 $$
|
||||
drop procedure if exists peter_p3 $$
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE peter_p3 does not exist
|
||||
Note 1305 PROCEDURE test.peter_p3 does not exist
|
||||
create procedure peter_p3()
|
||||
begin
|
||||
declare continue handler for sqlexception
|
||||
|
@ -46,7 +46,7 @@ call foo()|
|
||||
ERROR 42000: PROCEDURE test.foo does not exist
|
||||
drop procedure if exists foo|
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE foo does not exist
|
||||
Note 1305 PROCEDURE test.foo does not exist
|
||||
show create procedure foo|
|
||||
ERROR 42000: PROCEDURE foo does not exist
|
||||
show create function foo|
|
||||
@ -1028,7 +1028,7 @@ drop table t1|
|
||||
drop function bug_13627_f|
|
||||
drop function if exists bug12329;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION bug12329 does not exist
|
||||
Note 1305 FUNCTION test.bug12329 does not exist
|
||||
create table t1 as select 1 a;
|
||||
create table t2 as select 1 a;
|
||||
create function bug12329() returns int return (select a from t1);
|
||||
|
@ -394,10 +394,10 @@ CASE expression tests.
|
||||
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE p1 does not exist
|
||||
Note 1305 PROCEDURE test.p1 does not exist
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE p2 does not exist
|
||||
Note 1305 PROCEDURE test.p2 does not exist
|
||||
DROP TABLE IF EXISTS t1;
|
||||
Warnings:
|
||||
Note 1051 Unknown table 't1'
|
||||
|
@ -2695,10 +2695,10 @@ delete from t3|
|
||||
insert into t3 values(1)|
|
||||
drop procedure if exists bug7992_1|
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE bug7992_1 does not exist
|
||||
Note 1305 PROCEDURE test.bug7992_1 does not exist
|
||||
drop procedure if exists bug7992_2|
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE bug7992_2 does not exist
|
||||
Note 1305 PROCEDURE test.bug7992_2 does not exist
|
||||
create procedure bug7992_1()
|
||||
begin
|
||||
declare i int;
|
||||
|
@ -21,11 +21,11 @@ end|
|
||||
call bug4902_2()|
|
||||
show warnings|
|
||||
Level Code Message
|
||||
Note 1305 PROCEDURE bug4902_2 does not exist
|
||||
Note 1305 PROCEDURE test.bug4902_2 does not exist
|
||||
call bug4902_2()|
|
||||
show warnings|
|
||||
Level Code Message
|
||||
Note 1305 PROCEDURE bug4902_2 does not exist
|
||||
Note 1305 PROCEDURE test.bug4902_2 does not exist
|
||||
drop procedure bug4902_2|
|
||||
drop table if exists t1|
|
||||
create table t1 (
|
||||
|
@ -1183,7 +1183,7 @@ drop table t1;
|
||||
create table t1 (col1 tinyint);
|
||||
drop procedure if exists t1;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE t1 does not exist
|
||||
Note 1305 PROCEDURE test.t1 does not exist
|
||||
create procedure t1 () begin declare exit handler for sqlexception
|
||||
select'a'; insert into t1 values (200); end;|
|
||||
call t1();
|
||||
|
@ -392,6 +392,52 @@ a
|
||||
4
|
||||
DROP FUNCTION sequence;
|
||||
DROP TABLE t1,t2;
|
||||
drop function if exists test.metaphon;
|
||||
drop function if exists metaphon;
|
||||
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
|
||||
select metaphon("Hello");
|
||||
metaphon("Hello")
|
||||
HL
|
||||
drop function if exists test.metaphon;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.metaphon does not exist
|
||||
select metaphon("Hello");
|
||||
metaphon("Hello")
|
||||
HL
|
||||
drop function metaphon;
|
||||
CREATE FUNCTION test.metaphon(a TEXT) RETURNS TEXT return "This is a SF";
|
||||
create database db_31767;
|
||||
use db_31767;
|
||||
CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB";
|
||||
use test;
|
||||
select metaphon("Hello");
|
||||
metaphon("Hello")
|
||||
HL
|
||||
select test.metaphon("Hello");
|
||||
test.metaphon("Hello")
|
||||
This is a SF
|
||||
drop function metaphon;
|
||||
select metaphon("Hello");
|
||||
metaphon("Hello")
|
||||
This is a SF
|
||||
drop function metaphon;
|
||||
use db_31767;
|
||||
drop database db_31767;
|
||||
drop function if exists no_such_func;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION (UDF) no_such_func does not exist
|
||||
drop function no_such_func;
|
||||
ERROR 42000: FUNCTION (UDF) no_such_func does not exist
|
||||
drop function if exists test.no_such_func;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION test.no_such_func does not exist
|
||||
drop function test.no_such_func;
|
||||
ERROR 42000: FUNCTION test.no_such_func does not exist
|
||||
drop procedure if exists no_such_proc;
|
||||
ERROR 3D000: No database selected
|
||||
drop procedure no_such_proc;
|
||||
ERROR 3D000: No database selected
|
||||
use test;
|
||||
#
|
||||
# Bug#46259: 5.0.83 -> 5.1.36, query doesn't work
|
||||
#
|
||||
|
@ -2086,7 +2086,7 @@ CREATE TABLE t1 ( bug_table_seq INTEGER NOT NULL);
|
||||
CREATE OR REPLACE VIEW v1 AS SELECT * from t1;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE p1 does not exist
|
||||
Note 1305 PROCEDURE test.p1 does not exist
|
||||
CREATE PROCEDURE p1 ( )
|
||||
BEGIN
|
||||
DO (SELECT @next := IFNULL(max(bug_table_seq),0) + 1 FROM v1);
|
||||
|
@ -228,13 +228,13 @@ INSERT INTO t2 VALUES ( 'a`', 'a`' );
|
||||
INSERT INTO t3 VALUES ( 'a`', 'a`', '1000-01-1' );
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE sp1 does not exist
|
||||
Note 1305 PROCEDURE test.sp1 does not exist
|
||||
DROP PROCEDURE IF EXISTS sp2;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE sp2 does not exist
|
||||
Note 1305 PROCEDURE test.sp2 does not exist
|
||||
DROP PROCEDURE IF EXISTS sp3;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE sp3 does not exist
|
||||
Note 1305 PROCEDURE test.sp3 does not exist
|
||||
CREATE PROCEDURE sp1()
|
||||
BEGIN
|
||||
DECLARE x NUMERIC ZEROFILL;
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -787,6 +787,7 @@ f1 f2 f3
|
||||
222222 bbbbbb 2
|
||||
drop table t1;
|
||||
Illegal ndb error code: 1186
|
||||
MySQL error code 1186 (ER_FLUSH_MASTER_BINLOG_CLOSED): Binlog closed, cannot RESET MASTER
|
||||
CREATE TABLE t1 (
|
||||
a VARBINARY(40) NOT NULL,
|
||||
b VARCHAR (256) CHARACTER SET UTF8 NOT NULL,
|
||||
|
@ -66,7 +66,7 @@ SET GLOBAL max_prepared_stmt_count=3;
|
||||
** Creating procedure **
|
||||
DROP PROCEDURE IF EXISTS sp_checkstmts;
|
||||
Warnings:
|
||||
Note 1305 PROCEDURE sp_checkstmts does not exist
|
||||
Note 1305 PROCEDURE test.sp_checkstmts does not exist
|
||||
CREATE PROCEDURE sp_checkstmts ()
|
||||
BEGIN
|
||||
PREPARE newstmt from "SELECT * FROM information_schema.CHARACTER_SETS C";
|
||||
|
@ -1,3 +1,4 @@
|
||||
--source include/not_windows.inc
|
||||
#
|
||||
# Check if the variable MY_PERROR is set
|
||||
#
|
||||
@ -17,3 +18,17 @@ enable_query_log;
|
||||
# As there is no error code defined for 10000, expect error
|
||||
--error 1
|
||||
--exec $MY_PERROR 10000 2>&1
|
||||
|
||||
#
|
||||
# Bug#10143 (Perror not showing error description)
|
||||
#
|
||||
|
||||
# test reported case
|
||||
--exec $MY_PERROR 1062 2>&1
|
||||
|
||||
# test errors that contain characters to escape in the text.
|
||||
--exec $MY_PERROR 1076 2>&1
|
||||
--exec $MY_PERROR 1459 2>&1
|
||||
--exec $MY_PERROR 1461 2>&1
|
||||
|
||||
|
||||
|
@ -436,6 +436,75 @@ SELECT * FROM t2 WHERE a = sequence();
|
||||
DROP FUNCTION sequence;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# Bug#31767 (DROP FUNCTION name resolution)
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop function if exists test.metaphon;
|
||||
drop function if exists metaphon;
|
||||
--enable_warnings
|
||||
|
||||
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
||||
eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
|
||||
|
||||
select metaphon("Hello");
|
||||
|
||||
# The UDF should not be dropped
|
||||
drop function if exists test.metaphon;
|
||||
|
||||
select metaphon("Hello");
|
||||
|
||||
drop function metaphon;
|
||||
|
||||
CREATE FUNCTION test.metaphon(a TEXT) RETURNS TEXT return "This is a SF";
|
||||
|
||||
create database db_31767;
|
||||
use db_31767;
|
||||
|
||||
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
||||
eval CREATE FUNCTION metaphon RETURNS STRING SONAME "$UDF_EXAMPLE_LIB";
|
||||
|
||||
use test;
|
||||
|
||||
# Uses the UDF
|
||||
select metaphon("Hello");
|
||||
|
||||
# Uses the SF
|
||||
select test.metaphon("Hello");
|
||||
|
||||
# Should drop the UDF, resolving the name the same way select does.
|
||||
drop function metaphon;
|
||||
|
||||
# Should call the SF
|
||||
select metaphon("Hello");
|
||||
|
||||
# Drop the SF
|
||||
drop function metaphon;
|
||||
|
||||
# Change the current database to none.
|
||||
use db_31767;
|
||||
drop database db_31767;
|
||||
|
||||
drop function if exists no_such_func;
|
||||
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
drop function no_such_func;
|
||||
|
||||
drop function if exists test.no_such_func;
|
||||
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
drop function test.no_such_func;
|
||||
|
||||
--error ER_NO_DB_ERROR
|
||||
drop procedure if exists no_such_proc;
|
||||
|
||||
--error ER_NO_DB_ERROR
|
||||
drop procedure no_such_proc;
|
||||
|
||||
use test;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#46259: 5.0.83 -> 5.1.36, query doesn't work
|
||||
--echo #
|
||||
|
@ -191,7 +191,14 @@ ADD_CUSTOM_COMMAND(
|
||||
COMMAND ${CMAKE_COMMAND} -E remove -f lex_hash.h.tmp
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gen_lex_hash.cc)
|
||||
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysql_tzinfo_to_sql tztime.cc)
|
||||
SET_TARGET_PROPERTIES(mysql_tzinfo_to_sql PROPERTIES COMPILE_FLAGS "-DTZINFO2SQL")
|
||||
TARGET_LINK_LIBRARIES(mysql_tzinfo_to_sql ${MYSQLD_STATIC_PLUGIN_LIBS}
|
||||
mysys dbug strings vio regex
|
||||
${LIBWRAP} ${LIBCRYPT} ${LIBDL}
|
||||
${SSL_LIBRARIES})
|
||||
|
||||
ADD_CUSTOM_TARGET(
|
||||
GenServerSource
|
||||
DEPENDS ${GEN_SOURCES}
|
||||
|
@ -47,6 +47,8 @@ FOREACH (dir ${dirs})
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}
|
||||
DESTINATION ${INSTALL_MYSQLSHAREDIR})
|
||||
ENDFOREACH()
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR})
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/charsets DESTINATION ${INSTALL_MYSQLSHAREDIR}
|
||||
PATTERN "languages.html" EXCLUDE
|
||||
)
|
||||
|
||||
INSTALL(FILES ${files} DESTINATION ${INSTALL_MYSQLSHAREDIR})
|
||||
|
@ -4132,6 +4132,47 @@ create_sp_error:
|
||||
case SQLCOM_DROP_PROCEDURE:
|
||||
case SQLCOM_DROP_FUNCTION:
|
||||
{
|
||||
#ifdef HAVE_DLOPEN
|
||||
if (lex->sql_command == SQLCOM_DROP_FUNCTION &&
|
||||
! lex->spname->m_explicit_name)
|
||||
{
|
||||
/* DROP FUNCTION <non qualified name> */
|
||||
udf_func *udf = find_udf(lex->spname->m_name.str,
|
||||
lex->spname->m_name.length);
|
||||
if (udf)
|
||||
{
|
||||
if (check_access(thd, DELETE_ACL, "mysql", NULL, NULL, 1, 0))
|
||||
goto error;
|
||||
|
||||
if (!(res = mysql_drop_function(thd, &lex->spname->m_name)))
|
||||
{
|
||||
my_ok(thd);
|
||||
break;
|
||||
}
|
||||
my_error(ER_SP_DROP_FAILED, MYF(0),
|
||||
"FUNCTION (UDF)", lex->spname->m_name.str);
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (lex->spname->m_db.str == NULL)
|
||||
{
|
||||
if (lex->drop_if_exists)
|
||||
{
|
||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
|
||||
ER_SP_DOES_NOT_EXIST, ER(ER_SP_DOES_NOT_EXIST),
|
||||
"FUNCTION (UDF)", lex->spname->m_name.str);
|
||||
res= FALSE;
|
||||
my_ok(thd);
|
||||
break;
|
||||
}
|
||||
my_error(ER_SP_DOES_NOT_EXIST, MYF(0),
|
||||
"FUNCTION (UDF)", lex->spname->m_name.str);
|
||||
goto error;
|
||||
}
|
||||
/* Fall thought to test for a stored function */
|
||||
}
|
||||
#endif
|
||||
|
||||
int sp_result;
|
||||
int type= (lex->sql_command == SQLCOM_DROP_PROCEDURE ?
|
||||
TYPE_ENUM_PROCEDURE : TYPE_ENUM_FUNCTION);
|
||||
@ -4178,34 +4219,6 @@ create_sp_error:
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_DLOPEN
|
||||
if (lex->sql_command == SQLCOM_DROP_FUNCTION)
|
||||
{
|
||||
udf_func *udf = find_udf(lex->spname->m_name.str,
|
||||
lex->spname->m_name.length);
|
||||
if (udf)
|
||||
{
|
||||
if (check_access(thd, DELETE_ACL, "mysql", NULL, NULL, 1, 0))
|
||||
goto error;
|
||||
|
||||
if (!(res = mysql_drop_function(thd, &lex->spname->m_name)))
|
||||
{
|
||||
my_ok(thd);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (lex->spname->m_db.str)
|
||||
sp_result= SP_KEY_NOT_FOUND;
|
||||
else
|
||||
{
|
||||
my_message(ER_NO_DB_ERROR, ER(ER_NO_DB_ERROR), MYF(0));
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
res= sp_result;
|
||||
switch (sp_result) {
|
||||
case SP_OK:
|
||||
@ -4217,7 +4230,7 @@ create_sp_error:
|
||||
res= write_bin_log(thd, TRUE, thd->query(), thd->query_length());
|
||||
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
|
||||
ER_SP_DOES_NOT_EXIST, ER(ER_SP_DOES_NOT_EXIST),
|
||||
SP_COM_STRING(lex), lex->spname->m_name.str);
|
||||
SP_COM_STRING(lex), lex->spname->m_qname.str);
|
||||
if (!res)
|
||||
my_ok(thd);
|
||||
break;
|
||||
|
@ -78,8 +78,8 @@ IF(NOT CMAKE_CROSSCOMPILING)
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(HAVE_IBGCC_ATOMIC_BUILTINS)
|
||||
ADD_DEFINITIONS(-DHAVE_IBGCCC_ATOMIC_BUILTINS=1)
|
||||
IF(HAVE_IB_GCC_ATOMIC_BUILTINS)
|
||||
ADD_DEFINITIONS(-DHAVE_IB_GCC_ATOMIC_BUILTINS=1)
|
||||
ENDIF()
|
||||
|
||||
# either define HAVE_IB_ATOMIC_PTHREAD_T_GCC or not
|
||||
|
Loading…
x
Reference in New Issue
Block a user