Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
nexedi
MariaDB
Commits
4a4590cd
Commit
4a4590cd
authored
17 years ago
by
tsmith@siva.hindu.god
Browse files
Options
Download
Plain Diff
Merge siva.hindu.god:/home/tsmith/m/bk/51
into siva.hindu.god:/home/tsmith/m/bk/maint/51
parents
8406164e
37843864
Changes
274
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
464 additions
and
52 deletions
+464
-52
.bzrignore
.bzrignore
+1
-0
client/Makefile.am
client/Makefile.am
+7
-7
client/mysql.cc
client/mysql.cc
+1
-1
client/mysqltest.c
client/mysqltest.c
+21
-25
cmd-line-utils/readline/rltty.c
cmd-line-utils/readline/rltty.c
+1
-2
config/ac-macros/ha_ndbcluster.m4
config/ac-macros/ha_ndbcluster.m4
+0
-1
config/ac-macros/misc.m4
config/ac-macros/misc.m4
+2
-2
configure.in
configure.in
+1
-1
extra/comp_err.c
extra/comp_err.c
+1
-1
include/hash.h
include/hash.h
+3
-0
include/my_getopt.h
include/my_getopt.h
+7
-2
include/my_global.h
include/my_global.h
+12
-0
include/my_sys.h
include/my_sys.h
+9
-2
include/mysql.h
include/mysql.h
+2
-1
include/mysql/plugin.h
include/mysql/plugin.h
+316
-3
include/mysys_err.h
include/mysys_err.h
+1
-0
include/typelib.h
include/typelib.h
+1
-0
libmysqld/Makefile.am
libmysqld/Makefile.am
+3
-3
mysql-test/include/mix1.inc
mysql-test/include/mix1.inc
+74
-0
mysql-test/lib/mtr_cases.pl
mysql-test/lib/mtr_cases.pl
+1
-1
No files found.
.bzrignore
View file @
4a4590cd
...
...
@@ -2989,3 +2989,4 @@ win/vs71cache.txt
win/vs8cache.txt
zlib/*.ds?
zlib/*.vcproj
libmysqld/ha_ndbcluster_cond.cc
This diff is collapsed.
Click to expand it.
client/Makefile.am
View file @
4a4590cd
...
...
@@ -109,13 +109,13 @@ link_sources:
for
f
in
$(sql_src)
;
do
\
rm
-f
$$
f
;
\
@LN_CP_F@
$(top_srcdir)
/sql/
$$
f
$$
f
;
\
done
;
\
for
f
in
$(strings_src)
;
do
\
rm
-f
$(srcdir)
/
$$
f
;
\
@LN_CP_F@
$(top_srcdir)
/strings/
$$
f
$$
f
;
\
done
;
\
rm
-f
$(srcdir)
/my_user.c
;
\
@LN_CP_F@
$(top_srcdir)
/sql-common/my_user.c my_user.c
;
done
;
\
for
f
in
$(strings_src)
;
do
\
rm
-f
$(srcdir)
/
$$
f
;
\
@LN_CP_F@
$(top_srcdir)
/strings/
$$
f
$$
f
;
\
done
;
\
rm
-f
$(srcdir)
/my_user.c
;
\
@LN_CP_F@
$(top_srcdir)
/sql-common/my_user.c my_user.c
;
echo
timestamp
>
link_sources
;
# Don't update the files from bitkeeper
...
...
This diff is collapsed.
Click to expand it.
client/mysql.cc
View file @
4a4590cd
...
...
@@ -739,7 +739,7 @@ static struct my_option my_long_options[] =
"Number of seconds before connection timeout."
,
(
gptr
*
)
&
opt_connect_timeout
,
(
gptr
*
)
&
opt_connect_timeout
,
0
,
GET_ULONG
,
REQUIRED_ARG
,
0
,
0
,
3600
*
12
,
0
,
0
,
1
},
0
,
0
},
{
"max_allowed_packet"
,
OPT_MAX_ALLOWED_PACKET
,
"Max packet length to send to, or receive from server"
,
(
gptr
*
)
&
opt_max_allowed_packet
,
(
gptr
*
)
&
opt_max_allowed_packet
,
0
,
GET_ULONG
,
...
...
This diff is collapsed.
Click to expand it.
client/mysqltest.c
View file @
4a4590cd
...
...
@@ -1546,7 +1546,7 @@ void do_source(struct st_command *command)
{
static
DYNAMIC_STRING
ds_filename
;
const
struct
command_arg
source_args
[]
=
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to source"
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to source"
}
};
DBUG_ENTER
(
"do_source"
);
...
...
@@ -1932,7 +1932,7 @@ void do_remove_file(struct st_command *command)
int
error
;
static
DYNAMIC_STRING
ds_filename
;
const
struct
command_arg
rm_args
[]
=
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to delete"
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to delete"
}
};
DBUG_ENTER
(
"do_remove_file"
);
...
...
@@ -1966,8 +1966,8 @@ void do_copy_file(struct st_command *command)
static
DYNAMIC_STRING
ds_from_file
;
static
DYNAMIC_STRING
ds_to_file
;
const
struct
command_arg
copy_file_args
[]
=
{
"from_file"
,
ARG_STRING
,
TRUE
,
&
ds_from_file
,
"Filename to copy from"
,
"to_file"
,
ARG_STRING
,
TRUE
,
&
ds_to_file
,
"Filename to copy to"
{
"from_file"
,
ARG_STRING
,
TRUE
,
&
ds_from_file
,
"Filename to copy from"
}
,
{
"to_file"
,
ARG_STRING
,
TRUE
,
&
ds_to_file
,
"Filename to copy to"
}
};
DBUG_ENTER
(
"do_copy_file"
);
...
...
@@ -2003,8 +2003,8 @@ void do_chmod_file(struct st_command *command)
static
DYNAMIC_STRING
ds_mode
;
static
DYNAMIC_STRING
ds_file
;
const
struct
command_arg
chmod_file_args
[]
=
{
"mode"
,
ARG_STRING
,
TRUE
,
&
ds_mode
,
"Mode of file"
,
"file"
,
ARG_STRING
,
TRUE
,
&
ds_file
,
"Filename of file to modify"
{
"mode"
,
ARG_STRING
,
TRUE
,
&
ds_mode
,
"Mode of file"
}
,
{
"file"
,
ARG_STRING
,
TRUE
,
&
ds_file
,
"Filename of file to modify"
}
};
DBUG_ENTER
(
"do_chmod_file"
);
...
...
@@ -2041,7 +2041,7 @@ void do_file_exist(struct st_command *command)
int
error
;
static
DYNAMIC_STRING
ds_filename
;
const
struct
command_arg
file_exist_args
[]
=
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to check if it exist"
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to check if it exist"
}
};
DBUG_ENTER
(
"do_file_exist"
);
...
...
@@ -2123,8 +2123,8 @@ void do_write_file_command(struct st_command *command, my_bool append)
static
DYNAMIC_STRING
ds_filename
;
static
DYNAMIC_STRING
ds_delimiter
;
const
struct
command_arg
write_file_args
[]
=
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to write to"
,
"delimiter"
,
ARG_STRING
,
FALSE
,
&
ds_delimiter
,
"Delimiter to read until"
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to write to"
}
,
{
"delimiter"
,
ARG_STRING
,
FALSE
,
&
ds_delimiter
,
"Delimiter to read until"
}
};
DBUG_ENTER
(
"do_write_file"
);
...
...
@@ -2232,7 +2232,7 @@ void do_cat_file(struct st_command *command)
char
buff
[
512
];
static
DYNAMIC_STRING
ds_filename
;
const
struct
command_arg
cat_file_args
[]
=
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to read from"
{
"filename"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"File to read from"
}
};
DBUG_ENTER
(
"do_cat_file"
);
...
...
@@ -2296,8 +2296,8 @@ void do_diff_files(struct st_command *command)
static
DYNAMIC_STRING
ds_filename
;
static
DYNAMIC_STRING
ds_filename2
;
const
struct
command_arg
diff_file_args
[]
=
{
"file1"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"First file to diff"
,
"file2"
,
ARG_STRING
,
TRUE
,
&
ds_filename2
,
"Second file to diff"
{
"file1"
,
ARG_STRING
,
TRUE
,
&
ds_filename
,
"First file to diff"
}
,
{
"file2"
,
ARG_STRING
,
TRUE
,
&
ds_filename2
,
"Second file to diff"
}
};
DBUG_ENTER
(
"do_diff_files"
);
...
...
@@ -2373,7 +2373,7 @@ void do_perl(struct st_command *command)
static
DYNAMIC_STRING
ds_script
;
static
DYNAMIC_STRING
ds_delimiter
;
const
struct
command_arg
perl_args
[]
=
{
"delimiter"
,
ARG_STRING
,
FALSE
,
&
ds_delimiter
,
"Delimiter to read until"
{
"delimiter"
,
ARG_STRING
,
FALSE
,
&
ds_delimiter
,
"Delimiter to read until"
}
};
DBUG_ENTER
(
"do_perl"
);
...
...
@@ -3452,18 +3452,14 @@ void do_connect(struct st_command *command)
static
DYNAMIC_STRING
ds_sock
;
static
DYNAMIC_STRING
ds_options
;
const
struct
command_arg
connect_args
[]
=
{
"connection name"
,
ARG_STRING
,
TRUE
,
&
ds_connection_name
,
"Name of the connection"
,
"host"
,
ARG_STRING
,
TRUE
,
&
ds_host
,
"Host to connect to"
,
"user"
,
ARG_STRING
,
FALSE
,
&
ds_user
,
"User to connect as"
,
"passsword"
,
ARG_STRING
,
FALSE
,
&
ds_password
,
"Password used when connecting"
,
"database"
,
ARG_STRING
,
FALSE
,
&
ds_database
,
"Dtabase to select after connect"
,
"port"
,
ARG_STRING
,
FALSE
,
&
ds_port
,
"Port to connect to"
,
"socket"
,
ARG_STRING
,
FALSE
,
&
ds_sock
,
"Socket to connect with"
,
"options"
,
ARG_STRING
,
FALSE
,
&
ds_options
,
"Options to use while connecting"
{
"connection name"
,
ARG_STRING
,
TRUE
,
&
ds_connection_name
,
"Name of the connection"
},
{
"host"
,
ARG_STRING
,
TRUE
,
&
ds_host
,
"Host to connect to"
},
{
"user"
,
ARG_STRING
,
FALSE
,
&
ds_user
,
"User to connect as"
},
{
"passsword"
,
ARG_STRING
,
FALSE
,
&
ds_password
,
"Password used when connecting"
},
{
"database"
,
ARG_STRING
,
FALSE
,
&
ds_database
,
"Database to select after connect"
},
{
"port"
,
ARG_STRING
,
FALSE
,
&
ds_port
,
"Port to connect to"
},
{
"socket"
,
ARG_STRING
,
FALSE
,
&
ds_sock
,
"Socket to connect with"
},
{
"options"
,
ARG_STRING
,
FALSE
,
&
ds_options
,
"Options to use while connecting"
}
};
DBUG_ENTER
(
"do_connect"
);
...
...
This diff is collapsed.
Click to expand it.
cmd-line-utils/readline/rltty.c
View file @
4a4590cd
...
...
@@ -139,8 +139,7 @@ static int ksrflow;
/* Dummy call to force a backgrounded readline to stop before it tries
to get the tty settings. */
static
void
set_winsize
(
tty
)
int
tty
;
set_winsize
(
int
tty
__attribute__
((
unused
)))
{
#if defined (TIOCGWINSZ)
struct
winsize
w
;
...
...
This diff is collapsed.
Click to expand it.
config/ac-macros/ha_ndbcluster.m4
View file @
4a4590cd
...
...
@@ -197,7 +197,6 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
MAKE_BINARY_DISTRIBUTION_OPTIONS="$MAKE_BINARY_DISTRIBUTION_OPTIONS --with-ndbcluster"
CXXFLAGS="$CXXFLAGS \$(NDB_CXXFLAGS)"
if test "$have_ndb_debug" = "default"
then
have_ndb_debug=$with_debug
...
...
This diff is collapsed.
Click to expand it.
config/ac-macros/misc.m4
View file @
4a4590cd
...
...
@@ -479,7 +479,7 @@ AC_MSG_CHECKING(if conversion of longlong to float works)
AC_CACHE_VAL(ac_cv_conv_longlong_to_float,
[AC_TRY_RUN([#include <stdio.h>
typedef long long longlong;
main()
int
main()
{
longlong ll=1;
float f;
...
...
@@ -487,7 +487,7 @@ main()
f = (float) ll;
fprintf(file,"%g\n",f);
fclose(file);
exit
(0);
return
(0);
}], ac_cv_conv_longlong_to_float=`cat conftestval`, ac_cv_conv_longlong_to_float=0, ifelse([$2], , , ac_cv_conv_longlong_to_float=$2))])dnl
if test "$ac_cv_conv_longlong_to_float" = "1" -o "$ac_cv_conv_longlong_to_float" = "yes"
then
...
...
This diff is collapsed.
Click to expand it.
configure.in
View file @
4a4590cd
...
...
@@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
#
# When changing major version number please also check switch statement
# in mysqlbinlog::check_master_version().
AM_INIT_AUTOMAKE
(
mysql, 5.1.1
8
-beta
)
AM_INIT_AUTOMAKE
(
mysql, 5.1.1
9
-beta
)
AM_CONFIG_HEADER
(
config.h
)
PROTOCOL_VERSION
=
10
...
...
This diff is collapsed.
Click to expand it.
extra/comp_err.c
View file @
4a4590cd
...
...
@@ -241,7 +241,7 @@ static int create_header_files(struct errors *error_head)
/* generating sql_state.h file */
if
(
tmp_error
->
sql_code1
[
0
]
||
tmp_error
->
sql_code2
[
0
])
fprintf
(
sql_statef
,
"%-40s,
\"
%s
\"
,
\"
%s
\"
,
\n
"
,
tmp_error
->
er_name
,
"
{
%-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
,
...
...
This diff is collapsed.
Click to expand it.
include/hash.h
View file @
4a4590cd
...
...
@@ -27,6 +27,9 @@ extern "C" {
*/
#define HASH_OVERHEAD (sizeof(char*)*2)
/* flags for hash_init */
#define HASH_UNIQUE 1
/* hash_insert fails on duplicate key */
typedef
byte
*
(
*
hash_get_key
)(
const
byte
*
,
uint
*
,
my_bool
);
typedef
void
(
*
hash_free_key
)(
void
*
);
...
...
This diff is collapsed.
Click to expand it.
include/my_getopt.h
View file @
4a4590cd
...
...
@@ -29,12 +29,16 @@ C_MODE_START
#define GET_STR 9
#define GET_STR_ALLOC 10
#define GET_DISABLED 11
#define GET_ENUM 12
#define GET_SET 13
#define GET_ASK_ADDR 128
#define GET_TYPE_MASK 127
enum
get_opt_arg_type
{
NO_ARG
,
OPT_ARG
,
REQUIRED_ARG
};
struct
st_typelib
;
struct
my_option
{
const
char
*
name
;
/* Name of the option */
...
...
@@ -42,7 +46,7 @@ struct my_option
const
char
*
comment
;
/* option comment, for autom. --help */
gptr
*
value
;
/* The variable value */
gptr
*
u_max_value
;
/* The user def. max variable value */
const
char
**
str_values
;
/* Pointer to possible values */
struct
st_typelib
*
typelib
;
/* Pointer to possible values */
ulong
var_type
;
enum
get_opt_arg_type
arg_type
;
longlong
def_value
;
/* Default value */
...
...
@@ -50,7 +54,7 @@ struct my_option
longlong
max_value
;
/* Max allowed value */
longlong
sub_size
;
/* Subtract this from given value */
long
block_size
;
/* Value should be a mult. of this */
int
app_type
;
/* To be used by an application */
void
*
app_type
;
/* To be used by an application */
};
typedef
my_bool
(
*
my_get_one_option
)
(
int
,
const
struct
my_option
*
,
char
*
);
...
...
@@ -58,6 +62,7 @@ typedef void (* my_error_reporter) (enum loglevel level, const char *format, ...
extern
char
*
disabled_my_option
;
extern
my_bool
my_getopt_print_errors
;
extern
my_bool
my_getopt_skip_unknown
;
extern
my_error_reporter
my_getopt_error_reporter
;
extern
int
handle_options
(
int
*
argc
,
char
***
argv
,
...
...
This diff is collapsed.
Click to expand it.
include/my_global.h
View file @
4a4590cd
...
...
@@ -465,6 +465,18 @@ C_MODE_END
*/
#include <assert.h>
/* an assert that works at compile-time. only for constant expression */
#ifndef __GNUC__
#define compile_time_assert(X) do { } while(0)
#else
#define compile_time_assert(X) \
do \
{ \
char compile_time_assert[(X) ? 1 : -1] \
__attribute__ ((unused)); \
} while(0)
#endif
/* Go around some bugs in different OS and compilers */
#if defined (HPUX11) && defined(_LARGEFILE_SOURCE)
#define _LARGEFILE64_SOURCE
...
...
This diff is collapsed.
Click to expand it.
include/my_sys.h
View file @
4a4590cd
...
...
@@ -756,8 +756,15 @@ extern my_bool real_open_cached_file(IO_CACHE *cache);
extern
void
close_cached_file
(
IO_CACHE
*
cache
);
File
create_temp_file
(
char
*
to
,
const
char
*
dir
,
const
char
*
pfx
,
int
mode
,
myf
MyFlags
);
#define my_init_dynamic_array(A,B,C,D) init_dynamic_array(A,B,C,D CALLER_INFO)
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array(A,B,C,D ORIG_CALLER_INFO)
#define my_init_dynamic_array(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D CALLER_INFO)
#define my_init_dynamic_array_ci(A,B,C,D) init_dynamic_array2(A,B,NULL,C,D ORIG_CALLER_INFO)
#define my_init_dynamic_array2(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E CALLER_INFO)
#define my_init_dynamic_array2_ci(A,B,C,D,E) init_dynamic_array2(A,B,C,D,E ORIG_CALLER_INFO)
extern
my_bool
init_dynamic_array2
(
DYNAMIC_ARRAY
*
array
,
uint
element_size
,
void
*
init_buffer
,
uint
init_alloc
,
uint
alloc_increment
CALLER_INFO_PROTO
);
/* init_dynamic_array() function is deprecated */
extern
my_bool
init_dynamic_array
(
DYNAMIC_ARRAY
*
array
,
uint
element_size
,
uint
init_alloc
,
uint
alloc_increment
CALLER_INFO_PROTO
);
...
...
This diff is collapsed.
Click to expand it.
include/mysql.h
View file @
4a4590cd
...
...
@@ -67,7 +67,6 @@ typedef int my_socket;
#include "mysql_version.h"
#include "mysql_com.h"
#include "mysql_time.h"
#include "typelib.h"
#include "my_list.h"
/* for LISTs used in 'MYSQL' and 'MYSQL_STMT' */
...
...
@@ -126,6 +125,8 @@ typedef unsigned long long my_ulonglong;
#endif
#endif
#include "typelib.h"
#define MYSQL_COUNT_ERROR (~(my_ulonglong) 0)
/* backward compatibility define - to be removed eventually */
...
...
This diff is collapsed.
Click to expand it.
include/mysql/plugin.h
View file @
4a4590cd
...
...
@@ -16,6 +16,15 @@
#ifndef _my_plugin_h
#define _my_plugin_h
#ifdef __cplusplus
class
THD
;
class
Item
;
#define MYSQL_THD THD*
#else
#define MYSQL_THD void*
#endif
/*************************************************************************
Plugin API. Common for all plugin types.
*/
...
...
@@ -85,7 +94,262 @@ struct st_mysql_show_var {
};
#define SHOW_VAR_FUNC_BUFF_SIZE 1024
typedef
int
(
*
mysql_show_var_func
)(
void
*
,
struct
st_mysql_show_var
*
,
char
*
);
typedef
int
(
*
mysql_show_var_func
)(
MYSQL_THD
,
struct
st_mysql_show_var
*
,
char
*
);
/*
declarations for server variables and command line options
*/
#define PLUGIN_VAR_BOOL 0x0001
#define PLUGIN_VAR_INT 0x0002
#define PLUGIN_VAR_LONG 0x0003
#define PLUGIN_VAR_LONGLONG 0x0004
#define PLUGIN_VAR_STR 0x0005
#define PLUGIN_VAR_ENUM 0x0006
#define PLUGIN_VAR_SET 0x0007
#define PLUGIN_VAR_UNSIGNED 0x0080
#define PLUGIN_VAR_THDLOCAL 0x0100
/* Variable is per-connection */
#define PLUGIN_VAR_READONLY 0x0200
/* Server variable is read only */
#define PLUGIN_VAR_NOSYSVAR 0x0400
/* Not a server variable */
#define PLUGIN_VAR_NOCMDOPT 0x0800
/* Not a command line option */
#define PLUGIN_VAR_NOCMDARG 0x1000
/* No argument for cmd line */
#define PLUGIN_VAR_RQCMDARG 0x0000
/* Argument required for cmd line */
#define PLUGIN_VAR_OPCMDARG 0x2000
/* Argument optional for cmd line */
#define PLUGIN_VAR_MEMALLOC 0x8000
/* String needs memory allocated */
struct
st_mysql_sys_var
;
struct
st_mysql_value
;
/*
SYNOPSIS
(*mysql_var_check_func)()
thd thread handle
var dynamic variable being altered
save pointer to temporary storage
value user provided value
RETURN
0 user provided value is OK and the update func may be called.
any other value indicates error.
This function should parse the user provided value and store in the
provided temporary storage any data as required by the update func.
There is sufficient space in the temporary storage to store a double.
Note that the update func may not be called if any other error occurs
so any memory allocated should be thread-local so that it may be freed
automatically at the end of the statement.
*/
typedef
int
(
*
mysql_var_check_func
)(
MYSQL_THD
thd
,
struct
st_mysql_sys_var
*
var
,
void
*
save
,
struct
st_mysql_value
*
value
);
/*
SYNOPSIS
(*mysql_var_update_func)()
thd thread handle
var dynamic variable being altered
var_ptr pointer to dynamic variable
save pointer to temporary storage
RETURN
NONE
This function should use the validated value stored in the temporary store
and persist it in the provided pointer to the dynamic variable.
For example, strings may require memory to be allocated.
*/
typedef
void
(
*
mysql_var_update_func
)(
MYSQL_THD
thd
,
struct
st_mysql_sys_var
*
var
,
void
*
var_ptr
,
void
*
save
);
/* the following declarations are for internal use only */
#define PLUGIN_VAR_MASK \
(PLUGIN_VAR_READONLY | PLUGIN_VAR_NOSYSVAR | \
PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_NOCMDARG | \
PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC)
#define MYSQL_PLUGIN_VAR_HEADER \
int flags; \
const char *name; \
const char *comment; \
mysql_var_check_func check; \
mysql_var_update_func update
#define MYSQL_SYSVAR_NAME(name) mysql_sysvar_ ## name
#define MYSQL_SYSVAR(name) \
((struct st_mysql_sys_var *)&(MYSQL_SYSVAR_NAME(name)))
/*
for global variables, the value pointer is the first
element after the header, the default value is the second.
for thread variables, the value offset is the first
element after the header, the default value is the second.
*/
#define DECLARE_MYSQL_SYSVAR_BASIC(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
type *value; \
const type def_val; \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_MYSQL_SYSVAR_SIMPLE(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
type *value; type def_val; \
type min_val; type max_val; \
type blk_sz; \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_MYSQL_SYSVAR_TYPELIB(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
type *value; type def_val; \
TYPELIB *typelib; \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_THDVAR_FUNC(type) \
type *(*resolve)(MYSQL_THD thd, int offset)
#define DECLARE_MYSQL_THDVAR_BASIC(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
int offset; \
const type def_val; \
DECLARE_THDVAR_FUNC(type); \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_MYSQL_THDVAR_SIMPLE(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
int offset; \
type def_val; type min_val; \
type max_val; type blk_sz; \
DECLARE_THDVAR_FUNC(type); \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_MYSQL_THDVAR_TYPELIB(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
int offset; \
type def_val; \
DECLARE_THDVAR_FUNC(type); \
TYPELIB *typelib; \
} MYSQL_SYSVAR_NAME(name)
/*
the following declarations are for use by plugin implementors
*/
#define MYSQL_SYSVAR_BOOL(name, varname, opt, comment, check, update, def) \
DECLARE_MYSQL_SYSVAR_BASIC(name, char) = { \
PLUGIN_VAR_BOOL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def}
#define MYSQL_SYSVAR_STR(name, varname, opt, comment, check, update, def) \
DECLARE_MYSQL_SYSVAR_BASIC(name, char *) = { \
PLUGIN_VAR_STR | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def}
#define MYSQL_SYSVAR_INT(name, varname, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_SYSVAR_SIMPLE(name, int) = { \
PLUGIN_VAR_INT | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_UINT(name, varname, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned int) = { \
PLUGIN_VAR_INT | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_LONG(name, varname, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_SYSVAR_SIMPLE(name, long) = { \
PLUGIN_VAR_LONG | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_ULONG(name, varname, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned long) = { \
PLUGIN_VAR_LONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_LONGLONG(name, varname, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_SYSVAR_SIMPLE(name, long long) = { \
PLUGIN_VAR_LONGLONG | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_ULONGLONG(name, varname, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned long long) = { \
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, min, max, blk }
#define MYSQL_SYSVAR_ENUM(name, varname, opt, comment, check, update, def, typelib) \
DECLARE_MYSQL_SYSVAR_TYPELIB(name, unsigned long) = { \
PLUGIN_VAR_ENUM | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, typelib }
#define MYSQL_SYSVAR_SET(name, varname, opt, comment, check, update, def, typelib) \
DECLARE_MYSQL_SYSVAR_TYPELIB(name, unsigned long long) = { \
PLUGIN_VAR_SET | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, &varname, def, typelib }
#define MYSQL_THDVAR_BOOL(name, opt, comment, check, update, def) \
DECLARE_MYSQL_THDVAR_BASIC(name, char) = { \
PLUGIN_VAR_BOOL | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, NULL}
#define MYSQL_THDVAR_STR(name, opt, comment, check, update, def) \
DECLARE_MYSQL_THDVAR_BASIC(name, char *) = { \
PLUGIN_VAR_STR | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, NULL}
#define MYSQL_THDVAR_INT(name, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_THDVAR_SIMPLE(name, int) = { \
PLUGIN_VAR_INT | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, min, max, blk, NULL }
#define MYSQL_THDVAR_UINT(name, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_THDVAR_SIMPLE(name, unsigned int) = { \
PLUGIN_VAR_INT | PLUGIN_VAR_THDLOCAL | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, min, max, blk, NULL }
#define MYSQL_THDVAR_LONG(name, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_THDVAR_SIMPLE(name, long) = { \
PLUGIN_VAR_LONG | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, min, max, blk, NULL }
#define MYSQL_THDVAR_ULONG(name, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_THDVAR_SIMPLE(name, unsigned long) = { \
PLUGIN_VAR_LONG | PLUGIN_VAR_THDLOCAL | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, min, max, blk, NULL }
#define MYSQL_THDVAR_LONGLONG(name, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_THDVAR_SIMPLE(name, long long) = { \
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, min, max, blk, NULL }
#define MYSQL_THDVAR_ULONGLONG(name, opt, comment, check, update, def, min, max, blk) \
DECLARE_MYSQL_THDVAR_SIMPLE(name, unsigned long long) = { \
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_THDLOCAL | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, min, max, blk, NULL }
#define MYSQL_THDVAR_ENUM(name, opt, comment, check, update, def, typelib) \
DECLARE_MYSQL_THDVAR_TYPELIB(name, unsigned long) = { \
PLUGIN_VAR_ENUM | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, NULL, typelib }
#define MYSQL_THDVAR_SET(name, opt, comment, check, update, def, typelib) \
DECLARE_MYSQL_THDVAR_TYPELIB(name, unsigned long long) = { \
PLUGIN_VAR_SET | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
#name, comment, check, update, -1, def, NULL, typelib }
/* accessor macros */
#define SYSVAR(name) \
(*(MYSQL_SYSVAR_NAME(name).value))
/* when thd == null, result points to global value */
#define THDVAR(thd, name) \
(*(MYSQL_SYSVAR_NAME(name).resolve(thd, MYSQL_SYSVAR_NAME(name).offset)))
/*
Plugin description structure.
...
...
@@ -103,8 +367,8 @@ struct st_mysql_plugin
int
(
*
deinit
)(
void
*
);
/* the function to invoke when plugin is unloaded */
unsigned
int
version
;
/* plugin version (for SHOW PLUGINS) */
struct
st_mysql_show_var
*
status_vars
;
void
*
__reserved1
;
/* placeholder for
system
var
iables */
void
*
__reserved
2
;
/*
placeholder for config options
*/
struct
st_mysql_sys_var
**
system
_
var
s
;
void
*
__reserved
1
;
/*
reserved for dependency checking
*/
};
/*************************************************************************
...
...
@@ -328,6 +592,8 @@ struct st_mysql_storage_engine
int
interface_version
;
};
struct
handlerton
;
/*
Here we define only the descriptor structure, that is referred from
st_mysql_plugin.
...
...
@@ -348,5 +614,52 @@ struct st_mysql_information_schema
int
interface_version
;
};
/*
st_mysql_value struct for reading values from mysqld.
Used by server variables framework to parse user-provided values.
Will be used for arguments when implementing UDFs.
Note that val_str() returns a string in temporary memory
that will be freed at the end of statement. Copy the string
if you need it to persist.
*/
#define MYSQL_VALUE_TYPE_STRING 0
#define MYSQL_VALUE_TYPE_REAL 1
#define MYSQL_VALUE_TYPE_INT 2
struct
st_mysql_value
{
int
(
*
value_type
)(
struct
st_mysql_value
*
);
const
char
*
(
*
val_str
)(
struct
st_mysql_value
*
,
char
*
buffer
,
int
*
length
);
int
(
*
val_real
)(
struct
st_mysql_value
*
,
double
*
realbuf
);
int
(
*
val_int
)(
struct
st_mysql_value
*
,
long
long
*
intbuf
);
};
/*************************************************************************
Miscellaneous functions for plugin implementors
*/
#ifdef __cplusplus
extern
"C"
{
#endif
int
thd_in_lock_tables
(
const
MYSQL_THD
thd
);
int
thd_tablespace_op
(
const
MYSQL_THD
thd
);
long
long
thd_test_options
(
const
MYSQL_THD
thd
,
long
long
test_options
);
int
thd_sql_command
(
const
MYSQL_THD
thd
);
const
char
*
thd_proc_info
(
MYSQL_THD
thd
,
const
char
*
info
);
void
**
thd_ha_data
(
const
MYSQL_THD
thd
,
const
struct
handlerton
*
hton
);
int
thd_tx_isolation
(
const
MYSQL_THD
thd
);
char
*
thd_security_context
(
MYSQL_THD
thd
,
char
*
buffer
,
unsigned
int
length
,
unsigned
int
max_query_len
);
#ifdef __cplusplus
}
#endif
#endif
This diff is collapsed.
Click to expand it.
include/mysys_err.h
View file @
4a4590cd
...
...
@@ -79,6 +79,7 @@ extern const char * NEAR globerrs[]; /* my_error_messages is here */
#define EXIT_NO_PTR_TO_VARIABLE 10
#define EXIT_CANNOT_CONNECT_TO_SERVICE 11
#define EXIT_OPTION_DISABLED 12
#define EXIT_ARGUMENT_INVALID 13
#ifdef __cplusplus
...
...
This diff is collapsed.
Click to expand it.
include/typelib.h
View file @
4a4590cd
...
...
@@ -26,6 +26,7 @@ typedef struct st_typelib { /* Different types saved here */
unsigned
int
*
type_lengths
;
}
TYPELIB
;
extern
my_ulonglong
find_typeset
(
char
*
x
,
TYPELIB
*
typelib
,
int
*
error_position
);
extern
int
find_type_or_exit
(
const
char
*
x
,
TYPELIB
*
typelib
,
const
char
*
option
);
extern
int
find_type
(
char
*
x
,
const
TYPELIB
*
typelib
,
unsigned
int
full_name
);
...
...
This diff is collapsed.
Click to expand it.
libmysqld/Makefile.am
View file @
4a4590cd
...
...
@@ -190,11 +190,11 @@ link_sources:
for
f
in
$(sqlsources)
;
do
\
rm
-f
$$
f
;
\
if
test
-e
$(top_srcdir)
/sql/
$$
f
;
\
then
\
then
\
@LN_CP_F@
$(top_srcdir)
/sql/
$$
f
$$
f
;
\
else
\
else
\
@LN_CP_F@
$(top_builddir)
/sql/
$$
f
$$
f
;
\
fi
;
\
fi
;
\
done
;
\
for
f
in
$(libmysqlsources)
;
do
\
rm
-f
$$
f
;
\
...
...
This diff is collapsed.
Click to expand it.
mysql-test/include/mix1.inc
View file @
4a4590cd
...
...
@@ -554,6 +554,60 @@ select * from t1;
drop
table
t1
;
#
# Bug #28189: optimizer erroniously prefers ref access to range access
# for an InnoDB table
#
CREATE
TABLE
t1
(
id
int
AUTO_INCREMENT
PRIMARY
KEY
,
stat_id
int
NOT
NULL
,
acct_id
int
DEFAULT
NULL
,
INDEX
idx1
(
stat_id
,
acct_id
),
INDEX
idx2
(
acct_id
)
)
ENGINE
=
MyISAM
;
CREATE
TABLE
t2
(
id
int
AUTO_INCREMENT
PRIMARY
KEY
,
stat_id
int
NOT
NULL
,
acct_id
int
DEFAULT
NULL
,
INDEX
idx1
(
stat_id
,
acct_id
),
INDEX
idx2
(
acct_id
)
)
ENGINE
=
InnoDB
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
VALUES
(
1
,
759
),
(
2
,
831
),
(
3
,
785
),
(
4
,
854
),
(
1
,
921
),
(
1
,
553
),
(
2
,
589
),
(
3
,
743
),
(
2
,
827
),
(
2
,
545
),
(
4
,
779
),
(
4
,
783
),
(
1
,
597
),
(
1
,
785
),
(
4
,
832
),
(
1
,
741
),
(
1
,
833
),
(
3
,
788
),
(
2
,
973
),
(
1
,
907
);
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
INSERT
INTO
t1
(
stat_id
,
acct_id
)
SELECT
stat_id
,
mod
(
id
+
100000
,
acct_id
)
FROM
t1
;
UPDATE
t1
SET
acct_id
=
785
WHERE
MOD
(
stat_id
,
2
)
=
0
AND
MOD
(
id
,
stat_id
)
=
MOD
(
acct_id
,
stat_id
);
OPTIMIZE
TABLE
t1
;
SELECT
COUNT
(
*
)
FROM
t1
;
SELECT
COUNT
(
*
)
FROM
t1
WHERE
acct_id
=
785
;
EXPLAIN
SELECT
COUNT
(
*
)
FROM
t1
WHERE
stat_id
IN
(
1
,
3
)
AND
acct_id
=
785
;
INSERT
INTO
t2
SELECT
*
FROM
t1
;
OPTIMIZE
TABLE
t2
;
EXPLAIN
SELECT
COUNT
(
*
)
FROM
t2
WHERE
stat_id
IN
(
1
,
3
)
AND
acct_id
=
785
;
DROP
TABLE
t1
,
t2
;
--
echo
End
of
5.0
tests
#
...
...
@@ -688,4 +742,24 @@ select * from t2;
drop
table
t2
;
#
# Tests for bug #28415 "Some ALTER TABLE statements no longer work
# under LOCK TABLES" and some aspects of fast ALTER TABLE behaviour
# for transactional tables.
#
--
disable_warnings
drop
table
if
exists
t1
,
t2
;
--
enable_warnings
create
table
t1
(
i
int
);
alter
table
t1
modify
i
int
default
1
;
alter
table
t1
modify
i
int
default
2
,
rename
t2
;
lock
table
t2
write
;
alter
table
t2
modify
i
int
default
3
;
unlock
tables
;
lock
table
t2
write
;
alter
table
t2
modify
i
int
default
4
,
rename
t1
;
unlock
tables
;
drop
table
t1
;
--
echo
End
of
5.1
tests
This diff is collapsed.
Click to expand it.
mysql-test/lib/mtr_cases.pl
View file @
4a4590cd
...
...
@@ -587,7 +587,7 @@ sub collect_one_test_case($$$$$$$) {
if
(
$tinfo
->
{'
innodb_test
'}
)
{
# This is a test that need innodb
if
(
$
::
mysqld_variables
{'
innodb
'}
eq
"
FALS
E
"
)
if
(
$
::
mysqld_variables
{'
innodb
'}
ne
"
TRU
E
"
)
{
# innodb is not supported, skip it
$tinfo
->
{'
skip
'}
=
1
;
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
3
4
5
…
14
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment