Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into  bodhi.local:/opt/local/work/mysql-5.0-runtime
This commit is contained in:
kostja@bodhi.local 2006-11-29 02:44:12 +03:00
commit 5fea0724bc
315 changed files with 4744 additions and 1655 deletions

View File

@ -1322,3 +1322,4 @@ win/vs71cache.txt
win/vs8cache.txt win/vs8cache.txt
zlib/*.ds? zlib/*.ds?
zlib/*.vcproj zlib/*.vcproj
mysql-test/r/*.warnings

View File

@ -56,9 +56,9 @@ global_warnings="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wch
#debug_extra_warnings="-Wuninitialized" #debug_extra_warnings="-Wuninitialized"
c_warnings="$global_warnings -Wunused" c_warnings="$global_warnings -Wunused"
cxx_warnings="$global_warnings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor" cxx_warnings="$global_warnings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor"
base_max_configs="--with-innodb --with-berkeley-db --with-ndbcluster --with-archive-storage-engine --with-big-tables --with-blackhole-storage-engine --with-federated-storage-engine --with-csv-storage-engine $SSL_LIBRARY" base_max_configs="--with-innodb --with-ndbcluster --with-archive-storage-engine --with-big-tables --with-blackhole-storage-engine --with-federated-storage-engine --with-csv-storage-engine $SSL_LIBRARY"
base_max_no_ndb_configs="--with-innodb --with-berkeley-db --without-ndbcluster --with-archive-storage-engine --with-big-tables --with-blackhole-storage-engine --with-federated-storage-engine --with-csv-storage-engine $SSL_LIBRARY" base_max_no_ndb_configs="--with-innodb --without-ndbcluster --with-archive-storage-engine --with-big-tables --with-blackhole-storage-engine --with-federated-storage-engine --with-csv-storage-engine $SSL_LIBRARY"
max_leave_isam_configs="--with-innodb --with-berkeley-db --with-ndbcluster --with-archive-storage-engine --with-federated-storage-engine --with-blackhole-storage-engine --with-csv-storage-engine $SSL_LIBRARY --with-embedded-server --with-big-tables" max_leave_isam_configs="--with-innodb --with-ndbcluster --with-archive-storage-engine --with-federated-storage-engine --with-blackhole-storage-engine --with-csv-storage-engine $SSL_LIBRARY --with-embedded-server --with-big-tables"
max_configs="$base_max_configs --with-embedded-server" max_configs="$base_max_configs --with-embedded-server"
max_no_ndb_configs="$base_max_no_ndb_configs --with-embedded-server" max_no_ndb_configs="$base_max_no_ndb_configs --with-embedded-server"

View File

@ -15,5 +15,7 @@
45214442pBGT9KuZEGixBH71jTzbOA 45214442pBGT9KuZEGixBH71jTzbOA
45214a07hVsIGwvwa-WrO-jpeaSwVw 45214a07hVsIGwvwa-WrO-jpeaSwVw
452a92d0-31-8wSzSfZi165fcGcXPA 452a92d0-31-8wSzSfZi165fcGcXPA
452c6c6dAjuNghfc1ObZ_UQ5SCl85g
4538a7b0EbDHHkWPbIwxO6ZIDdg6Dg
454a7ef8gdvE_ddMlJyghvOAkKPNOQ 454a7ef8gdvE_ddMlJyghvOAkKPNOQ
454f8960jsVT_kMKJtZ9OCgXoba0xQ 454f8960jsVT_kMKJtZ9OCgXoba0xQ

View File

@ -35,9 +35,17 @@ fi
CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet` CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet`
CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet` CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet`
BUG=`bk -R prs -r+ -h -d':C:' ChangeSet | sed -ne 's/^.*[Bb][Uu][Gg] *# *\([0-9][0-9]*\).*$/\1/p'` #
WL=`bk -R prs -r+ -h -d':C:' ChangeSet | sed -ne 's/^.*[Ww][Ll] *# *\([0-9][0-9]*\).*$/ WL#\1/p'` # composing subject lines of commit mails.
# if a fix targets to a WL and there is a bug referred
# then X-Bug mail header will contain the first found bug's number
#
BUG=`bk -R prs -r+ -h -d':C:' ChangeSet | \
sed -ne 's/[Bb][Uu][Gg] *# *\([0-9][0-9]*\).*$/BUG#\1/
s/.*BUG#\([0-9][0-9]*\)/\1/p'`
WL=`bk -R prs -r+ -h -d':C:' ChangeSet | \
sed -ne 's/[Ww][Ll] *# *\([0-9][0-9]*\).*$/WL#\1/
s/.*\(WL#[0-9][0-9]*\)/ \1/p'`
if [ "$BUG" = "" ] if [ "$BUG" = "" ]
then then
TO=dev-public@mysql.com TO=dev-public@mysql.com

View File

@ -26,7 +26,7 @@ all-local: $(TXT_FILES)
# make sure that "make install" installs the info page, too # make sure that "make install" installs the info page, too
# automake only seems to take care of this automatically, # automake only seems to take care of this automatically,
# if we're building the info page from texi directly. # if we're building the info page from texi directly.
install-data-hook: mysql.info install-data-hook: $(srcdir)/mysql.info
$(mkinstalldirs) $(DESTDIR)$(infodir) $(mkinstalldirs) $(DESTDIR)$(infodir)
$(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir) $(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir)
@ -44,23 +44,23 @@ CLEAN_FILES: $(TXT_FILES)
GT = $(srcdir)/Support/generate-text-files.pl GT = $(srcdir)/Support/generate-text-files.pl
../INSTALL-SOURCE: mysql.info $(GT) ../INSTALL-SOURCE: $(srcdir)/mysql.info $(GT)
perl -w $(GT) mysql.info "installing-source" "windows-source-build" > $@ perl -w $(GT) $(srcdir)/mysql.info "installing-source" "windows-source-build" > $@
../INSTALL-WIN-SOURCE: mysql.info $(GT) ../INSTALL-WIN-SOURCE: $(srcdir)/mysql.info $(GT)
perl -w $(GT) mysql.info "windows-source-build" "post-installation" > $@ perl -w $(GT) $(srcdir)/mysql.info "windows-source-build" "post-installation" > $@
# We put the description for the binary installation here so that # We put the description for the binary installation here so that
# people who download source wont have to see it. It is moved up to # people who download source wont have to see it. It is moved up to
# the toplevel by the script that makes the binary tar files. # the toplevel by the script that makes the binary tar files.
INSTALL-BINARY: mysql.info $(GT) INSTALL-BINARY: $(srcdir)/mysql.info $(GT)
perl -w $(GT) mysql.info "installing-binary" "installing-source" > $@ perl -w $(GT) $(srcdir)/mysql.info "installing-binary" "installing-source" > $@
../EXCEPTIONS-CLIENT: mysql.info $(GT) ../EXCEPTIONS-CLIENT: $(srcdir)/mysql.info $(GT)
perl -w $(GT) mysql.info "mysql-floss-license-exception" "function-index" > $@ perl -w $(GT) $(srcdir)/mysql.info "mysql-floss-license-exception" "function-index" > $@
../support-files/MacOSX/ReadMe.txt: mysql.info $(GT) ../support-files/MacOSX/ReadMe.txt: $(srcdir)/mysql.info $(GT)
perl -w $(GT) mysql.info "mac-os-x-installation" "netware-installation" > $@ perl -w $(GT) $(srcdir)/mysql.info "mac-os-x-installation" "netware-installation" > $@
# Don't update the files from bitkeeper # Don't update the files from bitkeeper
%::SCCS/s.% %::SCCS/s.%

View File

@ -135,6 +135,7 @@ test-force-pl:
./mysql-test-run.pl --force && \ ./mysql-test-run.pl --force && \
./mysql-test-run.pl --ps-protocol --force ./mysql-test-run.pl --ps-protocol --force
#used by autopush.pl to run memory based tests
test-force-pl-mem: test-force-pl-mem:
cd mysql-test; \ cd mysql-test; \
./mysql-test-run.pl --force --mem && \ ./mysql-test-run.pl --force --mem && \

View File

@ -51,5 +51,6 @@ enum options_client
#endif #endif
OPT_TRIGGERS, OPT_TRIGGERS,
OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE, OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE,
OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_SSL_VERIFY_SERVER_CERT OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_SSL_VERIFY_SERVER_CERT,
OPT_DEBUG_INFO
}; };

View File

@ -373,14 +373,17 @@ static int comp_names(struct fileinfo *a, struct fileinfo *b)
} }
static int static int find_file(const char *name, const char *root,
find_file(const char *name, const char *root, uint flags, char *result, size_t len, ...) uint flags, char *result, size_t len, ...)
{ {
int ret; int ret= 1;
va_list va; va_list va;
FILEINFO key= { (char*)name, NULL };
const char *subdir; const char *subdir;
char *cp; char *cp;
FILEINFO key;
/* Init key with name of the file to look for */
key.name= (char*)name;
DBUG_ASSERT(root != NULL); DBUG_ASSERT(root != NULL);
@ -388,7 +391,6 @@ find_file(const char *name, const char *root, uint flags, char *result, size_t l
if (cp[-1] != FN_LIBCHAR) if (cp[-1] != FN_LIBCHAR)
*cp++= FN_LIBCHAR; *cp++= FN_LIBCHAR;
ret= 1;
va_start(va, len); va_start(va, len);
subdir= (!(flags & MY_SEARCH_SELF)) ? va_arg(va, char *) : ""; subdir= (!(flags & MY_SEARCH_SELF)) ? va_arg(va, char *) : "";
while (subdir) while (subdir)

View File

@ -1088,7 +1088,7 @@ could be out of memory");
} }
if (len < 8 && net->read_pos[0] == 254) if (len < 8 && net->read_pos[0] == 254)
break; // end of data break; // end of data
DBUG_PRINT("info",( "len= %u, net->read_pos[5] = %d\n", DBUG_PRINT("info",( "len: %lu, net->read_pos[5]: %d\n",
len, net->read_pos[5])); len, net->read_pos[5]));
if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 , if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 ,
len - 1, &error_msg, len - 1, &error_msg,

View File

@ -30,14 +30,14 @@
** master/autocommit code by Brian Aker <brian@tangent.org> ** master/autocommit code by Brian Aker <brian@tangent.org>
** SSL by ** SSL by
** Andrei Errapart <andreie@no.spam.ee> ** Andrei Errapart <andreie@no.spam.ee>
** µnu Samuel <tonu@please.do.not.remove.this.spam.ee> ** ƒÂµnu Samuel <tonu@please.do.not.remove.this.spam.ee>
** XML by Gary Huntress <ghuntress@mediaone.net> 10/10/01, cleaned up ** XML by Gary Huntress <ghuntress@mediaone.net> 10/10/01, cleaned up
** and adapted to mysqldump 05/11/01 by Jani Tolonen ** and adapted to mysqldump 05/11/01 by Jani Tolonen
** Added --single-transaction option 06/06/2002 by Peter Zaitsev ** Added --single-transaction option 06/06/2002 by Peter Zaitsev
** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov ** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
*/ */
#define DUMP_VERSION "10.10" #define DUMP_VERSION "10.11"
#include <my_global.h> #include <my_global.h>
#include <my_sys.h> #include <my_sys.h>
@ -99,7 +99,7 @@ static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1; opt_dump_triggers= 0, opt_routines=0, opt_tz_utc=1;
static ulong opt_max_allowed_packet, opt_net_buffer_length; static ulong opt_max_allowed_packet, opt_net_buffer_length;
static MYSQL mysql_connection,*mysql=0; static MYSQL mysql_connection,*mysql=0;
static my_bool insert_pat_inited=0; static my_bool insert_pat_inited= 0, info_flag;
static DYNAMIC_STRING insert_pat; static DYNAMIC_STRING insert_pat;
static char *opt_password=0,*current_user=0, static char *opt_password=0,*current_user=0,
*current_host=0,*path=0,*fields_terminated=0, *current_host=0,*path=0,*fields_terminated=0,
@ -107,6 +107,7 @@ static char *opt_password=0,*current_user=0,
*where=0, *order_by=0, *where=0, *order_by=0,
*opt_compatible_mode_str= 0, *opt_compatible_mode_str= 0,
*err_ptr= 0; *err_ptr= 0;
static char **defaults_argv= 0;
static char compatible_mode_normal_str[255]; static char compatible_mode_normal_str[255];
static ulong opt_compatible_mode= 0; static ulong opt_compatible_mode= 0;
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1 #define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
@ -116,7 +117,7 @@ static my_string opt_mysql_unix_port=0;
static int first_error=0; static int first_error=0;
static DYNAMIC_STRING extended_row; static DYNAMIC_STRING extended_row;
#include <sslopt-vars.h> #include <sslopt-vars.h>
FILE *md_result_file; FILE *md_result_file= 0;
#ifdef HAVE_SMEM #ifdef HAVE_SMEM
static char *shared_memory_base_name=0; static char *shared_memory_base_name=0;
#endif #endif
@ -215,6 +216,8 @@ static struct my_option my_long_options[] =
{"debug", '#', "Output debug log", (gptr*) &default_dbug_option, {"debug", '#', "Output debug log", (gptr*) &default_dbug_option,
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, (gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
#endif #endif
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"default-character-set", OPT_DEFAULT_CHARSET, {"default-character-set", OPT_DEFAULT_CHARSET,
"Set the default character set.", (gptr*) &default_charset, "Set the default character set.", (gptr*) &default_charset,
(gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, (gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
@ -628,14 +631,6 @@ byte* get_table_key(const char *entry, uint *length,
} }
void init_table_rule_hash(HASH* h)
{
if (hash_init(h, charset_info, 16, 0, 0,
(hash_get_key) get_table_key,
(hash_free_key) free_table_ent, 0))
exit(EX_EOM);
}
static my_bool static my_bool
get_one_option(int optid, const struct my_option *opt __attribute__((unused)), get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
char *argument) char *argument)
@ -678,6 +673,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break; break;
case '#': case '#':
DBUG_PUSH(argument ? argument : default_dbug_option); DBUG_PUSH(argument ? argument : default_dbug_option);
info_flag= 1;
break; break;
#include <sslopt-case.h> #include <sslopt-case.h>
case 'V': print_version(); exit(0); case 'V': print_version(); exit(0);
@ -718,9 +714,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
fprintf(stderr, "Illegal use of option --ignore-table=<database>.<table>\n"); fprintf(stderr, "Illegal use of option --ignore-table=<database>.<table>\n");
exit(1); exit(1);
} }
if (!hash_inited(&ignore_table))
init_table_rule_hash(&ignore_table);
if (my_hash_insert(&ignore_table, (byte*)my_strdup(argument, MYF(0)))) if (my_hash_insert(&ignore_table, (byte*)my_strdup(argument, MYF(0))))
exit(EX_EOM); exit(EX_EOM);
break; break;
@ -796,9 +789,21 @@ static int get_options(int *argc, char ***argv)
md_result_file= stdout; md_result_file= stdout;
load_defaults("my",load_default_groups,argc,argv); load_defaults("my",load_default_groups,argc,argv);
defaults_argv= *argv;
if (hash_init(&ignore_table, charset_info, 16, 0, 0,
(hash_get_key) get_table_key,
(hash_free_key) free_table_ent, 0))
return(EX_EOM);
/* Don't copy cluster internal log tables */
if (my_hash_insert(&ignore_table,
(byte*) my_strdup("mysql.apply_status", MYF(MY_WME))) ||
my_hash_insert(&ignore_table,
(byte*) my_strdup("mysql.schema", MYF(MY_WME))))
return(EX_EOM);
if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option))) if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
exit(ho_error); return(ho_error);
*mysql_params->p_max_allowed_packet= opt_max_allowed_packet; *mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
*mysql_params->p_net_buffer_length= opt_net_buffer_length; *mysql_params->p_net_buffer_length= opt_net_buffer_length;
@ -810,7 +815,7 @@ static int get_options(int *argc, char ***argv)
{ {
fprintf(stderr, fprintf(stderr,
"%s: You must use option --tab with --fields-...\n", my_progname); "%s: You must use option --tab with --fields-...\n", my_progname);
return(1); return(EX_USAGE);
} }
/* Ensure consistency of the set of binlog & locking options */ /* Ensure consistency of the set of binlog & locking options */
@ -820,7 +825,7 @@ static int get_options(int *argc, char ***argv)
{ {
fprintf(stderr, "%s: You can't use --single-transaction and " fprintf(stderr, "%s: You can't use --single-transaction and "
"--lock-all-tables at the same time.\n", my_progname); "--lock-all-tables at the same time.\n", my_progname);
return(1); return(EX_USAGE);
} }
if (opt_master_data) if (opt_master_data)
opt_lock_all_tables= !opt_single_transaction; opt_lock_all_tables= !opt_single_transaction;
@ -829,14 +834,14 @@ static int get_options(int *argc, char ***argv)
if (enclosed && opt_enclosed) if (enclosed && opt_enclosed)
{ {
fprintf(stderr, "%s: You can't use ..enclosed.. and ..optionally-enclosed.. at the same time.\n", my_progname); fprintf(stderr, "%s: You can't use ..enclosed.. and ..optionally-enclosed.. at the same time.\n", my_progname);
return(1); return(EX_USAGE);
} }
if ((opt_databases || opt_alldbs) && path) if ((opt_databases || opt_alldbs) && path)
{ {
fprintf(stderr, fprintf(stderr,
"%s: --databases or --all-databases can't be used with --tab.\n", "%s: --databases or --all-databases can't be used with --tab.\n",
my_progname); my_progname);
return(1); return(EX_USAGE);
} }
if (strcmp(default_charset, charset_info->csname) && if (strcmp(default_charset, charset_info->csname) &&
!(charset_info= get_charset_by_csname(default_charset, !(charset_info= get_charset_by_csname(default_charset,
@ -845,7 +850,7 @@ static int get_options(int *argc, char ***argv)
if ((*argc < 1 && !opt_alldbs) || (*argc > 0 && opt_alldbs)) if ((*argc < 1 && !opt_alldbs) || (*argc > 0 && opt_alldbs))
{ {
short_usage(); short_usage();
return 1; return EX_USAGE;
} }
if (tty_password) if (tty_password)
opt_password=get_tty_password(NullS); opt_password=get_tty_password(NullS);
@ -920,6 +925,23 @@ static FILE* open_sql_file_for_table(const char* table)
} }
static void free_resources()
{
if (md_result_file && md_result_file != stdout)
my_fclose(md_result_file, MYF(0));
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
if (hash_inited(&ignore_table))
hash_free(&ignore_table);
if (extended_insert)
dynstr_free(&extended_row);
if (insert_pat_inited)
dynstr_free(&insert_pat);
if (defaults_argv)
free_defaults(defaults_argv);
my_end(info_flag ? MY_CHECK_ERROR : 0);
}
static void safe_exit(int error) static void safe_exit(int error)
{ {
if (!first_error) if (!first_error)
@ -928,18 +950,19 @@ static void safe_exit(int error)
return; return;
if (mysql) if (mysql)
mysql_close(mysql); mysql_close(mysql);
free_resources();
exit(error); exit(error);
} }
/* safe_exit */
/* /*
** dbConnect -- connects to the host and selects DB. db_connect -- connects to the host and selects DB.
*/ */
static int dbConnect(char *host, char *user,char *passwd)
static int connect_to_db(char *host, char *user,char *passwd)
{ {
char buff[20+FN_REFLEN]; char buff[20+FN_REFLEN];
DBUG_ENTER("dbConnect"); DBUG_ENTER("connect_to_db");
verbose_msg("-- Connecting to %s...\n", host ? host : "localhost"); verbose_msg("-- Connecting to %s...\n", host ? host : "localhost");
mysql_init(&mysql_connection); mysql_init(&mysql_connection);
@ -964,7 +987,7 @@ static int dbConnect(char *host, char *user,char *passwd)
0))) 0)))
{ {
DB_error(&mysql_connection, "when trying to connect"); DB_error(&mysql_connection, "when trying to connect");
return 1; DBUG_RETURN(1);
} }
/* /*
Don't dump SET NAMES with a pre-4.1 server (bug#7997). Don't dump SET NAMES with a pre-4.1 server (bug#7997).
@ -981,7 +1004,7 @@ static int dbConnect(char *host, char *user,char *passwd)
if (mysql_query_with_error_report(mysql, 0, buff)) if (mysql_query_with_error_report(mysql, 0, buff))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
return 1; DBUG_RETURN(1);
} }
/* /*
set time_zone to UTC to allow dumping date types between servers with set time_zone to UTC to allow dumping date types between servers with
@ -993,11 +1016,11 @@ static int dbConnect(char *host, char *user,char *passwd)
if (mysql_query_with_error_report(mysql, 0, buff)) if (mysql_query_with_error_report(mysql, 0, buff))
{ {
safe_exit(EX_MYSQLERR); safe_exit(EX_MYSQLERR);
return 1; DBUG_RETURN(1);
} }
} }
return 0; DBUG_RETURN(0);
} /* dbConnect */ } /* connect_to_db */
/* /*
@ -1519,7 +1542,11 @@ static uint get_table_structure(char *table, char *db, char *table_type,
{ {
complete_insert= opt_complete_insert; complete_insert= opt_complete_insert;
if (!insert_pat_inited) if (!insert_pat_inited)
insert_pat_inited= init_dynamic_string(&insert_pat, "", 1024, 1024); {
insert_pat_inited= 1;
if (init_dynamic_string(&insert_pat, "", 1024, 1024))
safe_exit(EX_MYSQLERR);
}
else else
dynstr_set(&insert_pat, ""); dynstr_set(&insert_pat, "");
} }
@ -2176,7 +2203,7 @@ static void dump_table(char *table, char *db)
The "table" could be a view. If so, we don't do anything here. The "table" could be a view. If so, we don't do anything here.
*/ */
if (strcmp (table_type, "VIEW") == 0) if (strcmp (table_type, "VIEW") == 0)
return; DBUG_VOID_RETURN;
/* Check --no-data flag */ /* Check --no-data flag */
if (opt_no_data) if (opt_no_data)
@ -2693,6 +2720,8 @@ static int dump_databases(char **db_names)
{ {
int result=0; int result=0;
char **db; char **db;
DBUG_ENTER("dump_databases");
for (db= db_names ; *db ; db++) for (db= db_names ; *db ; db++)
{ {
if (dump_all_tables_in_db(*db)) if (dump_all_tables_in_db(*db))
@ -2706,7 +2735,7 @@ static int dump_databases(char **db_names)
result=1; result=1;
} }
} }
return result; DBUG_RETURN(result);
} /* dump_databases */ } /* dump_databases */
@ -2721,7 +2750,7 @@ RETURN VALUES
0 Success. 0 Success.
1 Failure. 1 Failure.
*/ */
int init_dumping_views(char *qdatabase) int init_dumping_views(char *qdatabase __attribute__((unused)))
{ {
return 0; return 0;
} /* init_dumping_views */ } /* init_dumping_views */
@ -2818,12 +2847,11 @@ static int init_dumping(char *database, int init_func(char*))
} /* init_dumping */ } /* init_dumping */
/* Return 1 if we should copy the table */
my_bool include_table(byte* hash_key, uint len) my_bool include_table(byte* hash_key, uint len)
{ {
if (hash_search(&ignore_table, (byte*) hash_key, len)) return !hash_search(&ignore_table, (byte*) hash_key, len);
return FALSE;
return TRUE;
} }
@ -2832,16 +2860,16 @@ static int dump_all_tables_in_db(char *database)
char *table; char *table;
uint numrows; uint numrows;
char table_buff[NAME_LEN*2+3]; char table_buff[NAME_LEN*2+3];
char hash_key[2*NAME_LEN+2]; /* "db.tablename" */ char hash_key[2*NAME_LEN+2]; /* "db.tablename" */
char *afterdot; char *afterdot;
int using_mysql_db= my_strcasecmp(&my_charset_latin1, database, "mysql"); int using_mysql_db= my_strcasecmp(&my_charset_latin1, database, "mysql");
DBUG_ENTER("dump_all_tables_in_db");
afterdot= strmov(hash_key, database); afterdot= strmov(hash_key, database);
*afterdot++= '.'; *afterdot++= '.';
if (init_dumping(database, init_dumping_tables)) if (init_dumping(database, init_dumping_tables))
return 1; DBUG_RETURN(1);
if (opt_xml) if (opt_xml)
print_xml_tag(md_result_file, "", "\n", "database", "name=", database, NullS); print_xml_tag(md_result_file, "", "\n", "database", "name=", database, NullS);
if (lock_tables) if (lock_tables)
@ -2895,7 +2923,7 @@ static int dump_all_tables_in_db(char *database)
fprintf(md_result_file,"\n--\n-- Flush Grant Tables \n--\n"); fprintf(md_result_file,"\n--\n-- Flush Grant Tables \n--\n");
fprintf(md_result_file,"\n/*! FLUSH PRIVILEGES */;\n"); fprintf(md_result_file,"\n/*! FLUSH PRIVILEGES */;\n");
} }
return 0; DBUG_RETURN(0);
} /* dump_all_tables_in_db */ } /* dump_all_tables_in_db */
@ -3257,7 +3285,6 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
/* /*
SYNOPSIS SYNOPSIS
Check if we the table is one of the table types that should be ignored: Check if we the table is one of the table types that should be ignored:
@ -3297,7 +3324,7 @@ char check_if_ignore_table(const char *table_name, char *table_type)
{ {
if (mysql_errno(mysql) != ER_PARSE_ERROR) if (mysql_errno(mysql) != ER_PARSE_ERROR)
{ /* If old MySQL version */ { /* If old MySQL version */
verbose_msg("-- Warning: Couldn't get status information for " \ verbose_msg("-- Warning: Couldn't get status information for "
"table %s (%s)\n", table_name, mysql_error(mysql)); "table %s (%s)\n", table_name, mysql_error(mysql));
DBUG_RETURN(result); /* assume table is ok */ DBUG_RETURN(result); /* assume table is ok */
} }
@ -3653,19 +3680,24 @@ static my_bool get_view_structure(char *table, char* db)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int exit_code;
MY_INIT("mysqldump"); MY_INIT("mysqldump");
compatible_mode_normal_str[0]= 0; compatible_mode_normal_str[0]= 0;
default_charset= (char *)mysql_universal_client_charset; default_charset= (char *)mysql_universal_client_charset;
bzero((char*) &ignore_table, sizeof(ignore_table)); bzero((char*) &ignore_table, sizeof(ignore_table));
if (get_options(&argc, &argv)) exit_code= get_options(&argc, &argv);
if (exit_code)
{ {
my_end(0); free_resources(0);
exit(EX_USAGE); exit(exit_code);
} }
if (dbConnect(current_host, current_user, opt_password)) if (connect_to_db(current_host, current_user, opt_password))
{
free_resources(0);
exit(EX_MYSQLERR); exit(EX_MYSQLERR);
}
if (!path) if (!path)
write_header(md_result_file, *argv); write_header(md_result_file, *argv);
@ -3712,15 +3744,6 @@ err:
dbDisconnect(current_host); dbDisconnect(current_host);
if (!path) if (!path)
write_footer(md_result_file); write_footer(md_result_file);
if (md_result_file != stdout) free_resources();
my_fclose(md_result_file, MYF(0));
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
if (hash_inited(&ignore_table))
hash_free(&ignore_table);
if (extended_insert)
dynstr_free(&extended_row);
if (insert_pat_inited)
dynstr_free(&insert_pat);
my_end(0);
return(first_error); return(first_error);
} /* main */ } /* main */

View File

@ -29,6 +29,7 @@
Matt Wagner <matt@mysql.com> Matt Wagner <matt@mysql.com>
Monty Monty
Jani Jani
Holyfoot
*/ */
#define MTEST_VERSION "3.0" #define MTEST_VERSION "3.0"
@ -220,6 +221,12 @@ struct st_connection
MYSQL* util_mysql; MYSQL* util_mysql;
char *name; char *name;
MYSQL_STMT* stmt; MYSQL_STMT* stmt;
const char *cur_query;
int cur_query_len;
pthread_mutex_t mutex;
pthread_cond_t cond;
int query_done;
}; };
struct st_connection connections[128]; struct st_connection connections[128];
struct st_connection* cur_con, *next_con, *connections_end; struct st_connection* cur_con, *next_con, *connections_end;
@ -458,7 +465,6 @@ void mysql_disable_rpl_parse(MYSQL* mysql __attribute__((unused))) {}
int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; } int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; }
my_bool mysql_rpl_probe(MYSQL *mysql __attribute__((unused))) { return 1; } my_bool mysql_rpl_probe(MYSQL *mysql __attribute__((unused))) { return 1; }
#endif #endif
void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val, void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val,
int len); int len);
void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val); void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val);
@ -469,7 +475,56 @@ void handle_error(struct st_command*,
const char *err_sqlstate, DYNAMIC_STRING *ds); const char *err_sqlstate, DYNAMIC_STRING *ds);
void handle_no_error(struct st_command*); void handle_no_error(struct st_command*);
#ifdef EMBEDDED_LIBRARY
/*
send_one_query executes query in separate thread what is
necessary in embedded library to run 'send' in proper way.
This implementation doesn't handle errors returned
by mysql_send_query. It's technically possible, though
i don't see where it is needed.
*/
pthread_handler_t send_one_query(void *arg)
{
struct st_connection *cn= (struct st_connection*)arg;
mysql_thread_init();
VOID(mysql_send_query(&cn->mysql, cn->cur_query, cn->cur_query_len));
mysql_thread_end();
pthread_mutex_lock(&cn->mutex);
cn->query_done= 1;
VOID(pthread_cond_signal(&cn->cond));
pthread_mutex_unlock(&cn->mutex);
pthread_exit(0);
return 0;
}
static int do_send_query(struct st_connection *cn, const char *q, int q_len,
int flags)
{
pthread_t tid;
if (flags & QUERY_REAP_FLAG)
return mysql_send_query(&cn->mysql, q, q_len);
if (pthread_mutex_init(&cn->mutex, NULL) ||
pthread_cond_init(&cn->cond, NULL))
die("Error in the thread library");
cn->cur_query= q;
cn->cur_query_len= q_len;
cn->query_done= 0;
if (pthread_create(&tid, NULL, send_one_query, (void*)cn))
die("Cannot start new thread for query");
return 0;
}
#else /*EMBEDDED_LIBRARY*/
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
#endif /*EMBEDDED_LIBRARY*/
void do_eval(DYNAMIC_STRING *query_eval, const char *query, void do_eval(DYNAMIC_STRING *query_eval, const char *query,
const char *query_end, my_bool pass_through_escape_chars) const char *query_end, my_bool pass_through_escape_chars)
@ -4498,7 +4553,6 @@ int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
} }
/* /*
Run query using MySQL C API Run query using MySQL C API
@ -4515,11 +4569,12 @@ int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
error - function will not return error - function will not return
*/ */
void run_query_normal(MYSQL *mysql, struct st_command *command, void run_query_normal(struct st_connection *cn, struct st_command *command,
int flags, char *query, int query_len, int flags, char *query, int query_len,
DYNAMIC_STRING *ds, DYNAMIC_STRING *ds_warnings) DYNAMIC_STRING *ds, DYNAMIC_STRING *ds_warnings)
{ {
MYSQL_RES *res= 0; MYSQL_RES *res= 0;
MYSQL *mysql= &cn->mysql;
int err= 0, counter= 0; int err= 0, counter= 0;
DBUG_ENTER("run_query_normal"); DBUG_ENTER("run_query_normal");
DBUG_PRINT("enter",("flags: %d", flags)); DBUG_PRINT("enter",("flags: %d", flags));
@ -4530,14 +4585,26 @@ void run_query_normal(MYSQL *mysql, struct st_command *command,
/* /*
Send the query Send the query
*/ */
if (mysql_send_query(mysql, query, query_len)) if (do_send_query(cn, query, query_len, flags))
{ {
handle_error(command, mysql_errno(mysql), mysql_error(mysql), handle_error(command, mysql_errno(mysql), mysql_error(mysql),
mysql_sqlstate(mysql), ds); mysql_sqlstate(mysql), ds);
goto end; goto end;
} }
} }
#ifdef EMBEDDED_LIBRARY
/*
Here we handle 'reap' command, so we need to check if the
query's thread was finished and probably wait
*/
else if (flags & QUERY_REAP_FLAG)
{
pthread_mutex_lock(&cn->mutex);
while (!cn->query_done)
pthread_cond_wait(&cn->cond, &cn->mutex);
pthread_mutex_unlock(&cn->mutex);
}
#endif /*EMBEDDED_LIBRARY*/
if (!(flags & QUERY_REAP_FLAG)) if (!(flags & QUERY_REAP_FLAG))
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
@ -5028,8 +5095,9 @@ int util_query(MYSQL* org_mysql, const char* query){
*/ */
void run_query(MYSQL *mysql, struct st_command *command, int flags) void run_query(struct st_connection *cn, struct st_command *command, int flags)
{ {
MYSQL *mysql= &cn->mysql;
DYNAMIC_STRING *ds; DYNAMIC_STRING *ds;
DYNAMIC_STRING ds_result; DYNAMIC_STRING ds_result;
DYNAMIC_STRING ds_warnings; DYNAMIC_STRING ds_warnings;
@ -5186,7 +5254,7 @@ void run_query(MYSQL *mysql, struct st_command *command, int flags)
match_re(&ps_re, query)) match_re(&ps_re, query))
run_query_stmt(mysql, command, query, query_len, ds, &ds_warnings); run_query_stmt(mysql, command, query, query_len, ds, &ds_warnings);
else else
run_query_normal(mysql, command, flags, query, query_len, run_query_normal(cn, command, flags, query, query_len,
ds, &ds_warnings); ds, &ds_warnings);
if (sp_created) if (sp_created)
@ -5651,7 +5719,7 @@ int main(int argc, char **argv)
strmake(command->require_file, save_file, sizeof(save_file)); strmake(command->require_file, save_file, sizeof(save_file));
save_file[0]= 0; save_file[0]= 0;
} }
run_query(&cur_con->mysql, command, QUERY_REAP_FLAG|QUERY_SEND_FLAG); run_query(cur_con, command, QUERY_REAP_FLAG|QUERY_SEND_FLAG);
display_result_vertically= old_display_result_vertically; display_result_vertically= old_display_result_vertically;
command->last_argument= command->end; command->last_argument= command->end;
command_executed++; command_executed++;
@ -5682,7 +5750,7 @@ int main(int argc, char **argv)
strmake(command->require_file, save_file, sizeof(save_file)); strmake(command->require_file, save_file, sizeof(save_file));
save_file[0]= 0; save_file[0]= 0;
} }
run_query(&cur_con->mysql, command, flags); run_query(cur_con, command, flags);
command_executed++; command_executed++;
command->last_argument= command->end; command->last_argument= command->end;
break; break;
@ -5708,7 +5776,7 @@ int main(int argc, char **argv)
the query and read the result some time later when reap instruction the query and read the result some time later when reap instruction
is given on this connection. is given on this connection.
*/ */
run_query(&cur_con->mysql, command, QUERY_SEND_FLAG); run_query(cur_con, command, QUERY_SEND_FLAG);
command_executed++; command_executed++;
command->last_argument= command->end; command->last_argument= command->end;
break; break;

View File

@ -434,7 +434,7 @@ rl_translate_keyseq (seq, array, len)
{ {
register int i, c, l, temp; register int i, c, l, temp;
for (i = l = 0; c = seq[i]; i++) for (i = l = 0; (c = seq[i]); i++)
{ {
if (c == '\\') if (c == '\\')
{ {
@ -765,8 +765,8 @@ _rl_read_file (filename, sizep)
/* Re-read the current keybindings file. */ /* Re-read the current keybindings file. */
int int
rl_re_read_init_file (count, ignore) rl_re_read_init_file (int count __attribute__((unused)),
int count, ignore; int ignore __attribute__((unused)))
{ {
int r; int r;
r = rl_read_init_file ((const char *)NULL); r = rl_read_init_file ((const char *)NULL);
@ -987,8 +987,7 @@ parser_if (args)
/* Invert the current parser state if there is anything on the stack. */ /* Invert the current parser state if there is anything on the stack. */
static int static int
parser_else (args) parser_else (char *args __attribute__((unused)))
char *args;
{ {
register int i; register int i;
@ -1018,8 +1017,7 @@ parser_else (args)
/* Terminate a conditional, popping the value of /* Terminate a conditional, popping the value of
_rl_parsing_conditionalized_out from the stack. */ _rl_parsing_conditionalized_out from the stack. */
static int static int
parser_endif (args) parser_endif (char *args __attribute__((unused)))
char *args;
{ {
if (if_stack_depth) if (if_stack_depth)
_rl_parsing_conditionalized_out = if_stack[--if_stack_depth]; _rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
@ -1142,7 +1140,7 @@ rl_parse_and_bind (string)
{ {
int passc = 0; int passc = 0;
for (i = 1; c = string[i]; i++) for (i = 1; (c = string[i]); i++)
{ {
if (passc) if (passc)
{ {
@ -1218,7 +1216,7 @@ rl_parse_and_bind (string)
{ {
int delimiter = string[i++], passc; int delimiter = string[i++], passc;
for (passc = 0; c = string[i]; i++) for (passc = 0; (c = string[i]); i++)
{ {
if (passc) if (passc)
{ {
@ -1377,7 +1375,7 @@ static struct {
#if defined (VISIBLE_STATS) #if defined (VISIBLE_STATS)
{ "visible-stats", &rl_visible_stats, 0 }, { "visible-stats", &rl_visible_stats, 0 },
#endif /* VISIBLE_STATS */ #endif /* VISIBLE_STATS */
{ (char *)NULL, (int *)NULL } { (char *)NULL, (int *)NULL, 0 }
}; };
static int static int
@ -1446,7 +1444,7 @@ static struct {
{ "editing-mode", V_STRING, sv_editmode }, { "editing-mode", V_STRING, sv_editmode },
{ "isearch-terminators", V_STRING, sv_isrchterm }, { "isearch-terminators", V_STRING, sv_isrchterm },
{ "keymap", V_STRING, sv_keymap }, { "keymap", V_STRING, sv_keymap },
{ (char *)NULL, 0 } { (char *)NULL, 0, 0 }
}; };
static int static int
@ -1466,7 +1464,7 @@ find_string_var (name)
values result in 0 (false). */ values result in 0 (false). */
static int static int
bool_to_int (value) bool_to_int (value)
char *value; const char *value;
{ {
return (value == 0 || *value == '\0' || return (value == 0 || *value == '\0' ||
(_rl_stricmp (value, "on") == 0) || (_rl_stricmp (value, "on") == 0) ||
@ -1725,13 +1723,13 @@ char *
rl_get_keymap_name_from_edit_mode () rl_get_keymap_name_from_edit_mode ()
{ {
if (rl_editing_mode == emacs_mode) if (rl_editing_mode == emacs_mode)
return "emacs"; return (char*) "emacs";
#if defined (VI_MODE) #if defined (VI_MODE)
else if (rl_editing_mode == vi_mode) else if (rl_editing_mode == vi_mode)
return "vi"; return (char*) "vi";
#endif /* VI_MODE */ #endif /* VI_MODE */
else else
return "none"; return (char*) "none";
} }
/* **************************************************************** */ /* **************************************************************** */
@ -1966,7 +1964,7 @@ rl_function_dumper (print_readably)
fprintf (rl_outstream, "\n"); fprintf (rl_outstream, "\n");
for (i = 0; name = names[i]; i++) for (i = 0; (name = names[i]); i++)
{ {
rl_command_func_t *function; rl_command_func_t *function;
char **invokers; char **invokers;
@ -2025,8 +2023,8 @@ rl_function_dumper (print_readably)
rl_outstream. If an explicit argument is given, then print rl_outstream. If an explicit argument is given, then print
the output in such a way that it can be read back in. */ the output in such a way that it can be read back in. */
int int
rl_dump_functions (count, key) rl_dump_functions (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
if (rl_dispatching) if (rl_dispatching)
fprintf (rl_outstream, "\r\n"); fprintf (rl_outstream, "\r\n");
@ -2105,8 +2103,7 @@ rl_macro_dumper (print_readably)
} }
int int
rl_dump_macros (count, key) rl_dump_macros(int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
if (rl_dispatching) if (rl_dispatching)
fprintf (rl_outstream, "\r\n"); fprintf (rl_outstream, "\r\n");
@ -2195,8 +2192,7 @@ rl_variable_dumper (print_readably)
rl_outstream. If an explicit argument is given, then print rl_outstream. If an explicit argument is given, then print
the output in such a way that it can be read back in. */ the output in such a way that it can be read back in. */
int int
rl_dump_variables (count, key) rl_dump_variables(int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
if (rl_dispatching) if (rl_dispatching)
fprintf (rl_outstream, "\r\n"); fprintf (rl_outstream, "\r\n");

View File

@ -59,7 +59,11 @@
#define largest_char 255 /* Largest character value. */ #define largest_char 255 /* Largest character value. */
#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0)) #define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
#if largest_char >= 255
#define META_CHAR(c) ((c) > meta_character_threshold)
#else
#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char) #define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
#endif
#define CTRL(c) ((c) & control_character_mask) #define CTRL(c) ((c) & control_character_mask)
#define META(c) ((c) | meta_character_bit) #define META(c) ((c) | meta_character_bit)

View File

@ -360,15 +360,15 @@ rl_complete (ignore, invoking_key)
/* List the possible completions. See description of rl_complete (). */ /* List the possible completions. See description of rl_complete (). */
int int
rl_possible_completions (ignore, invoking_key) rl_possible_completions (int ignore __attribute__((unused)),
int ignore, invoking_key; int invoking_key __attribute__((unused)))
{ {
return (rl_complete_internal ('?')); return (rl_complete_internal ('?'));
} }
int int
rl_insert_completions (ignore, invoking_key) rl_insert_completions (int ignore __attribute__((unused)),
int ignore, invoking_key; int invoking_key __attribute__((unused)))
{ {
return (rl_complete_internal ('*')); return (rl_complete_internal ('*'));
} }
@ -760,10 +760,7 @@ print_filename (to_print, full_pathname)
} }
static char * static char *
rl_quote_filename (s, rtype, qcp) rl_quote_filename (char *s, int rtype __attribute__((unused)), char *qcp)
char *s;
int rtype;
char *qcp;
{ {
char *r; char *r;
@ -871,7 +868,7 @@ _rl_find_completion_word (fp, dp)
completion, so use the word break characters to find the completion, so use the word break characters to find the
substring on which to complete. */ substring on which to complete. */
#if defined (HANDLE_MULTIBYTE) #if defined (HANDLE_MULTIBYTE)
while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY)) while ((rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY)))
#else #else
while (--rl_point) while (--rl_point)
#endif #endif
@ -1805,7 +1802,7 @@ rl_completion_matches (text, entry_function)
match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *)); match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));
match_list[1] = (char *)NULL; match_list[1] = (char *)NULL;
while (string = (*entry_function) (text, matches)) while ((string = (*entry_function) (text, matches)))
{ {
if (matches + 1 == match_list_size) if (matches + 1 == match_list_size)
match_list = (char **)xrealloc match_list = (char **)xrealloc
@ -1855,7 +1852,7 @@ rl_username_completion_function (text, state)
setpwent (); setpwent ();
} }
while (entry = getpwent ()) while ((entry = getpwent ()))
{ {
/* Null usernames should result in all users as possible completions. */ /* Null usernames should result in all users as possible completions. */
if (namelen == 0 || (STREQN (username, entry->pw_name, namelen))) if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))
@ -2091,8 +2088,7 @@ rl_filename_completion_function (text, state)
hit the end of the match list, we restore the original unmatched text, hit the end of the match list, we restore the original unmatched text,
ring the bell, and reset the counter to zero. */ ring the bell, and reset the counter to zero. */
int int
rl_menu_complete (count, ignore) rl_menu_complete (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
rl_compentry_func_t *our_func; rl_compentry_func_t *our_func;
int matching_filenames, found_quote; int matching_filenames, found_quote;

View File

@ -218,7 +218,7 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
if (niflp) if (niflp)
*niflp = 0; *niflp = 0;
if (vlp) if (vlp)
*vlp = lp ? *lp : strlen (r); *vlp = lp ? *lp : (int) strlen (r);
return r; return r;
} }
@ -435,7 +435,7 @@ rl_redisplay ()
return; return;
if (!rl_display_prompt) if (!rl_display_prompt)
rl_display_prompt = ""; rl_display_prompt = (char*) "";
if (invisible_line == 0) if (invisible_line == 0)
{ {
@ -757,7 +757,7 @@ rl_redisplay ()
c_pos = out; c_pos = out;
lb_linenum = newlines; lb_linenum = newlines;
} }
for (i = in; i < in+wc_bytes; i++) for (i = in; i < (int) (in+wc_bytes); i++)
line[out++] = rl_line_buffer[i]; line[out++] = rl_line_buffer[i];
for (i = 0; i < wc_width; i++) for (i = 0; i < wc_width; i++)
CHECK_LPOS(); CHECK_LPOS();
@ -835,7 +835,7 @@ rl_redisplay ()
#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l])) #define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l]) #define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l])
#define VIS_CHARS(line) (visible_line + vis_lbreaks[line]) #define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line) #define VIS_LINE(line) ((line) > _rl_vis_botlin) ? (char*) "" : VIS_CHARS(line)
#define INV_LINE(line) (invisible_line + inv_lbreaks[line]) #define INV_LINE(line) (invisible_line + inv_lbreaks[line])
/* For each line in the buffer, do the updating display. */ /* For each line in the buffer, do the updating display. */
@ -876,7 +876,7 @@ rl_redisplay ()
_rl_move_vert (linenum); _rl_move_vert (linenum);
_rl_move_cursor_relative (0, tt); _rl_move_cursor_relative (0, tt);
_rl_clear_to_eol _rl_clear_to_eol
((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth); ((linenum == _rl_vis_botlin) ? (int) strlen (tt) : _rl_screenwidth);
} }
} }
_rl_vis_botlin = inv_botlin; _rl_vis_botlin = inv_botlin;
@ -1086,7 +1086,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
int col_lendiff, col_temp; int col_lendiff, col_temp;
#if defined (HANDLE_MULTIBYTE) #if defined (HANDLE_MULTIBYTE)
mbstate_t ps_new, ps_old; mbstate_t ps_new, ps_old;
int new_offset, old_offset, tmp; int new_offset, old_offset;
#endif #endif
/* If we're at the right edge of a terminal that supports xn, we're /* If we're at the right edge of a terminal that supports xn, we're
@ -1837,7 +1837,7 @@ rl_reset_line_state ()
{ {
rl_on_new_line (); rl_on_new_line ();
rl_display_prompt = rl_prompt ? rl_prompt : ""; rl_display_prompt = rl_prompt ? rl_prompt : (char*) "";
forced_display = 1; forced_display = 1;
return 0; return 0;
} }
@ -2212,7 +2212,7 @@ _rl_col_width (str, start, end)
int start, end; int start, end;
{ {
wchar_t wc; wchar_t wc;
mbstate_t ps = {0}; mbstate_t ps;
int tmp, point, width, max; int tmp, point, width, max;
if (end <= start) if (end <= start)
@ -2221,6 +2221,7 @@ _rl_col_width (str, start, end)
point = 0; point = 0;
max = end; max = end;
memset (&ps, 0, sizeof(ps));
while (point < start) while (point < start)
{ {
tmp = mbrlen (str + point, max, &ps); tmp = mbrlen (str + point, max, &ps);

View File

@ -87,14 +87,14 @@ char history_comment_char = '\0';
/* The list of characters which inhibit the expansion of text if found /* The list of characters which inhibit the expansion of text if found
immediately following history_expansion_char. */ immediately following history_expansion_char. */
char *history_no_expand_chars = " \t\n\r="; char *history_no_expand_chars = (char*) " \t\n\r=";
/* If set to a non-zero value, single quotes inhibit history expansion. /* If set to a non-zero value, single quotes inhibit history expansion.
The default is 0. */ The default is 0. */
int history_quotes_inhibit_expansion = 0; int history_quotes_inhibit_expansion = 0;
/* Used to split words by history_tokenize_internal. */ /* Used to split words by history_tokenize_internal. */
char *history_word_delimiters = HISTORY_WORD_DELIMITERS; char *history_word_delimiters = (char*) HISTORY_WORD_DELIMITERS;
/* If set, this points to a function that is called to verify that a /* If set, this points to a function that is called to verify that a
particular history expansion should be performed. */ particular history expansion should be performed. */
@ -203,7 +203,7 @@ get_history_event (string, caller_index, delimiting_quote)
} }
/* Only a closing `?' or a newline delimit a substring search string. */ /* Only a closing `?' or a newline delimit a substring search string. */
for (local_index = i; c = string[i]; i++) for (local_index = i; (c = string[i]); i++)
#if defined (HANDLE_MULTIBYTE) #if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{ {

View File

@ -405,7 +405,7 @@ rl_read_key ()
else else
{ {
/* If input is coming from a macro, then use that. */ /* If input is coming from a macro, then use that. */
if (c = _rl_next_macro_key ()) if ((c= _rl_next_macro_key ()))
return (c); return (c);
/* If the user has an event function, then call it periodically. */ /* If the user has an event function, then call it periodically. */

View File

@ -68,7 +68,7 @@ static char *prev_line_found;
static char *last_isearch_string; static char *last_isearch_string;
static int last_isearch_string_len; static int last_isearch_string_len;
static char *default_isearch_terminators = "\033\012"; static char *default_isearch_terminators = (char*) "\033\012";
/* Search backwards through the history looking for a string which is typed /* Search backwards through the history looking for a string which is typed
interactively. Start with the current line. */ interactively. Start with the current line. */
@ -94,9 +94,8 @@ rl_forward_search_history (sign, key)
WHERE is the history list number of the current line. If it is WHERE is the history list number of the current line. If it is
-1, then this line is the starting one. */ -1, then this line is the starting one. */
static void static void
rl_display_search (search_string, reverse_p, where) rl_display_search (char *search_string, int reverse_p,
char *search_string; int where __attribute__((unused)))
int reverse_p, where;
{ {
char *message; char *message;
int msglen, searchlen; int msglen, searchlen;
@ -143,8 +142,7 @@ rl_display_search (search_string, reverse_p, where)
DIRECTION is which direction to search; >= 0 means forward, < 0 means DIRECTION is which direction to search; >= 0 means forward, < 0 means
backwards. */ backwards. */
static int static int
rl_search_history (direction, invoking_key) rl_search_history (int direction, int invoking_key __attribute__((unused)))
int direction, invoking_key;
{ {
/* The string that the user types in to search for. */ /* The string that the user types in to search for. */
char *search_string; char *search_string;

View File

@ -76,8 +76,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int));
/* How to say that you only want to save a certain amount /* How to say that you only want to save a certain amount
of kill material. */ of kill material. */
int int
rl_set_retained_kills (num) rl_set_retained_kills (int num __attribute__((unused)))
int num;
{ {
return 0; return 0;
} }
@ -293,8 +292,8 @@ rl_backward_kill_line (direction, ignore)
/* Kill the whole line, no matter where point is. */ /* Kill the whole line, no matter where point is. */
int int
rl_kill_full_line (count, ignore) rl_kill_full_line (int count __attribute__((unused)),
int count, ignore; int ignore __attribute__((unused)))
{ {
rl_begin_undo_group (); rl_begin_undo_group ();
rl_point = 0; rl_point = 0;
@ -311,8 +310,7 @@ rl_kill_full_line (count, ignore)
/* This does what C-w does in Unix. We can't prevent people from /* This does what C-w does in Unix. We can't prevent people from
using behaviour that they expect. */ using behaviour that they expect. */
int int
rl_unix_word_rubout (count, key) rl_unix_word_rubout (int count, int key __attribute__((unused)))
int count, key;
{ {
int orig_point; int orig_point;
@ -344,8 +342,7 @@ rl_unix_word_rubout (count, key)
/* This deletes one filename component in a Unix pathname. That is, it /* This deletes one filename component in a Unix pathname. That is, it
deletes backward to directory separator (`/') or whitespace. */ deletes backward to directory separator (`/') or whitespace. */
int int
rl_unix_filename_rubout (count, key) rl_unix_filename_rubout (int count, int key __attribute__((unused)))
int count, key;
{ {
int orig_point, c; int orig_point, c;
@ -388,8 +385,8 @@ rl_unix_filename_rubout (count, key)
into the line at all, and if you aren't, then you know what you are into the line at all, and if you aren't, then you know what you are
doing. */ doing. */
int int
rl_unix_line_discard (count, key) rl_unix_line_discard (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
if (rl_point == 0) if (rl_point == 0)
rl_ding (); rl_ding ();
@ -425,16 +422,16 @@ region_kill_internal (delete)
/* Copy the text in the region to the kill ring. */ /* Copy the text in the region to the kill ring. */
int int
rl_copy_region_to_kill (count, ignore) rl_copy_region_to_kill (int count __attribute__((unused)),
int count, ignore; int key __attribute__((unused)))
{ {
return (region_kill_internal (0)); return (region_kill_internal (0));
} }
/* Kill the text between the point and mark. */ /* Kill the text between the point and mark. */
int int
rl_kill_region (count, ignore) rl_kill_region (int count __attribute__((unused)),
int count, ignore; int ignore __attribute__((unused)))
{ {
int r, npoint; int r, npoint;
@ -498,8 +495,7 @@ rl_copy_backward_word (count, key)
/* Yank back the last killed text. This ignores arguments. */ /* Yank back the last killed text. This ignores arguments. */
int int
rl_yank (count, ignore) rl_yank (int count __attribute__((unused)), int ignore __attribute__((unused)))
int count, ignore;
{ {
if (rl_kill_ring == 0) if (rl_kill_ring == 0)
{ {
@ -517,8 +513,7 @@ rl_yank (count, ignore)
delete that text from the line, rotate the index down, and delete that text from the line, rotate the index down, and
yank back some other text. */ yank back some other text. */
int int
rl_yank_pop (count, key) rl_yank_pop (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
int l, n; int l, n;

View File

@ -189,8 +189,8 @@ _rl_kill_kbd_macro ()
definition to the end of the existing macro, and start by definition to the end of the existing macro, and start by
re-executing the existing macro. */ re-executing the existing macro. */
int int
rl_start_kbd_macro (ignore1, ignore2) rl_start_kbd_macro (int ignore1 __attribute__((unused)),
int ignore1, ignore2; int ignore2 __attribute__((unused)))
{ {
if (RL_ISSTATE (RL_STATE_MACRODEF)) if (RL_ISSTATE (RL_STATE_MACRODEF))
{ {
@ -214,8 +214,7 @@ rl_start_kbd_macro (ignore1, ignore2)
A numeric argument says to execute the macro right now, A numeric argument says to execute the macro right now,
that many times, counting the definition as the first time. */ that many times, counting the definition as the first time. */
int int
rl_end_kbd_macro (count, ignore) rl_end_kbd_macro (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
if (RL_ISSTATE (RL_STATE_MACRODEF) == 0) if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
{ {
@ -234,8 +233,7 @@ rl_end_kbd_macro (count, ignore)
/* Execute the most recently defined keyboard macro. /* Execute the most recently defined keyboard macro.
COUNT says how many times to execute it. */ COUNT says how many times to execute it. */
int int
rl_call_last_kbd_macro (count, ignore) rl_call_last_kbd_macro (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
if (current_macro == 0) if (current_macro == 0)
_rl_abort_internal (); _rl_abort_internal ();

View File

@ -154,8 +154,7 @@ rl_digit_loop ()
/* Add the current digit to the argument in progress. */ /* Add the current digit to the argument in progress. */
int int
rl_digit_argument (ignore, key) rl_digit_argument (int ignore __attribute__((unused)), int key)
int ignore, key;
{ {
rl_execute_next (key); rl_execute_next (key);
return (rl_digit_loop ()); return (rl_digit_loop ());
@ -184,8 +183,8 @@ _rl_init_argument ()
Read a key. If the key has nothing to do with arguments, then Read a key. If the key has nothing to do with arguments, then
dispatch on it. If the key is the abort character then abort. */ dispatch on it. If the key is the abort character then abort. */
int int
rl_universal_argument (count, key) rl_universal_argument (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
rl_numeric_arg *= 4; rl_numeric_arg *= 4;
return (rl_digit_loop ()); return (rl_digit_loop ());
@ -314,9 +313,7 @@ _rl_history_set_point ()
} }
void void
rl_replace_from_history (entry, flags) rl_replace_from_history (HIST_ENTRY *entry, int flags __attribute__((unused)))
HIST_ENTRY *entry;
int flags; /* currently unused */
{ {
/* Can't call with `1' because rl_undo_list might point to an undo list /* Can't call with `1' because rl_undo_list might point to an undo list
from a history entry, just like we're setting up here. */ from a history entry, just like we're setting up here. */
@ -342,16 +339,15 @@ rl_replace_from_history (entry, flags)
/* Meta-< goes to the start of the history. */ /* Meta-< goes to the start of the history. */
int int
rl_beginning_of_history (count, key) rl_beginning_of_history (int count __attribute__((unused)), int key)
int count, key;
{ {
return (rl_get_previous_history (1 + where_history (), key)); return (rl_get_previous_history (1 + where_history (), key));
} }
/* Meta-> goes to the end of the history. (The current line). */ /* Meta-> goes to the end of the history. (The current line). */
int int
rl_end_of_history (count, key) rl_end_of_history (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
rl_maybe_replace_line (); rl_maybe_replace_line ();
using_history (); using_history ();
@ -455,8 +451,7 @@ rl_get_previous_history (count, key)
/* **************************************************************** */ /* **************************************************************** */
/* How to toggle back and forth between editing modes. */ /* How to toggle back and forth between editing modes. */
int int
rl_vi_editing_mode (count, key) rl_vi_editing_mode (int count __attribute__((unused)), int key)
int count, key;
{ {
#if defined (VI_MODE) #if defined (VI_MODE)
_rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */ _rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
@ -468,8 +463,8 @@ rl_vi_editing_mode (count, key)
} }
int int
rl_emacs_editing_mode (count, key) rl_emacs_editing_mode (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
rl_editing_mode = emacs_mode; rl_editing_mode = emacs_mode;
_rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */ _rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
@ -479,8 +474,7 @@ rl_emacs_editing_mode (count, key)
/* Function for the rest of the library to use to set insert/overwrite mode. */ /* Function for the rest of the library to use to set insert/overwrite mode. */
void void
_rl_set_insert_mode (im, force) _rl_set_insert_mode (int im, int force __attribute__((unused)))
int im, force;
{ {
#ifdef CURSOR_MODE #ifdef CURSOR_MODE
_rl_set_cursor (im, force); _rl_set_cursor (im, force);
@ -492,8 +486,7 @@ _rl_set_insert_mode (im, force)
/* Toggle overwrite mode. A positive explicit argument selects overwrite /* Toggle overwrite mode. A positive explicit argument selects overwrite
mode. A negative or zero explicit argument selects insert mode. */ mode. A negative or zero explicit argument selects insert mode. */
int int
rl_overwrite_mode (count, key) rl_overwrite_mode (int count, int key __attribute__((unused)))
int count, key;
{ {
if (rl_explicit_arg == 0) if (rl_explicit_arg == 0)
_rl_set_insert_mode (rl_insert_mode ^ 1, 0); _rl_set_insert_mode (rl_insert_mode ^ 1, 0);

View File

@ -111,7 +111,7 @@ _rl_init_eightbit ()
if (lspec == 0 || *lspec == 0) if (lspec == 0 || *lspec == 0)
lspec = setlocale (LC_CTYPE, (char *)NULL); lspec = setlocale (LC_CTYPE, (char *)NULL);
if (lspec == 0) if (lspec == 0)
lspec = ""; lspec = (char*) "";
t = setlocale (LC_CTYPE, lspec); t = setlocale (LC_CTYPE, lspec);
if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0)) if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))

View File

@ -83,7 +83,9 @@ static void bind_arrow_keys_internal PARAMS((Keymap));
static void bind_arrow_keys PARAMS((void)); static void bind_arrow_keys PARAMS((void));
static void readline_default_bindings PARAMS((void)); static void readline_default_bindings PARAMS((void));
#ifdef NOT_USED
static void reset_default_bindings PARAMS((void)); static void reset_default_bindings PARAMS((void));
#endif
/* **************************************************************** */ /* **************************************************************** */
/* */ /* */
@ -866,12 +868,14 @@ readline_default_bindings ()
/* Reset the default bindings for the terminal special characters we're /* Reset the default bindings for the terminal special characters we're
interested in back to rl_insert and read the new ones. */ interested in back to rl_insert and read the new ones. */
#ifdef NOT_USED
static void static void
reset_default_bindings () reset_default_bindings ()
{ {
rl_tty_unset_default_bindings (_rl_keymap); rl_tty_unset_default_bindings (_rl_keymap);
rl_tty_set_default_bindings (_rl_keymap); rl_tty_set_default_bindings (_rl_keymap);
} }
#endif
/* Bind some common arrow key sequences in MAP. */ /* Bind some common arrow key sequences in MAP. */
static void static void

View File

@ -716,8 +716,7 @@ rl_deprep_terminal ()
/* **************************************************************** */ /* **************************************************************** */
int int
rl_restart_output (count, key) rl_restart_output(int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
int fildes = fileno (rl_outstream); int fildes = fileno (rl_outstream);
#if defined (TIOCSTART) #if defined (TIOCSTART)
@ -749,8 +748,7 @@ rl_restart_output (count, key)
} }
int int
rl_stop_output (count, key) rl_stop_output(int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
int fildes = fileno (rl_instream); int fildes = fileno (rl_instream);
@ -867,7 +865,6 @@ rltty_set_default_bindings (kmap)
{ {
TIOTYPE ttybuff; TIOTYPE ttybuff;
int tty; int tty;
static int called = 0;
tty = fileno (rl_instream); tty = fileno (rl_instream);

View File

@ -303,8 +303,7 @@ noninc_search (dir, pchar)
/* Search forward through the history list for a string. If the vi-mode /* Search forward through the history list for a string. If the vi-mode
code calls this, KEY will be `?'. */ code calls this, KEY will be `?'. */
int int
rl_noninc_forward_search (count, key) rl_noninc_forward_search (int count __attribute__((unused)), int key)
int count, key;
{ {
noninc_search (1, (key == '?') ? '?' : 0); noninc_search (1, (key == '?') ? '?' : 0);
return 0; return 0;
@ -313,8 +312,7 @@ rl_noninc_forward_search (count, key)
/* Reverse search the history list for a string. If the vi-mode code /* Reverse search the history list for a string. If the vi-mode code
calls this, KEY will be `/'. */ calls this, KEY will be `/'. */
int int
rl_noninc_reverse_search (count, key) rl_noninc_reverse_search (int count __attribute__((unused)), int key)
int count, key;
{ {
noninc_search (-1, (key == '/') ? '/' : 0); noninc_search (-1, (key == '/') ? '/' : 0);
return 0; return 0;
@ -323,8 +321,8 @@ rl_noninc_reverse_search (count, key)
/* Search forward through the history list for the last string searched /* Search forward through the history list for the last string searched
for. If there is no saved search string, abort. */ for. If there is no saved search string, abort. */
int int
rl_noninc_forward_search_again (count, key) rl_noninc_forward_search_again (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
if (!noninc_search_string) if (!noninc_search_string)
{ {
@ -338,8 +336,8 @@ rl_noninc_forward_search_again (count, key)
/* Reverse search in the history list for the last string searched /* Reverse search in the history list for the last string searched
for. If there is no saved search string, abort. */ for. If there is no saved search string, abort. */
int int
rl_noninc_reverse_search_again (count, key) rl_noninc_reverse_search_again (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
if (!noninc_search_string) if (!noninc_search_string)
{ {

View File

@ -344,7 +344,7 @@ get_term_capabilities (bp)
#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */ #if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */
register int i; register int i;
for (i = 0; i < NUM_TC_STRINGS; i++) for (i = 0; i < (int) NUM_TC_STRINGS; i++)
*(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp); *(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
#endif #endif
tcap_initialized = 1; tcap_initialized = 1;
@ -410,7 +410,7 @@ _rl_init_terminal_io (terminal_name)
/* Everything below here is used by the redisplay code (tputs). */ /* Everything below here is used by the redisplay code (tputs). */
_rl_screenchars = _rl_screenwidth * _rl_screenheight; _rl_screenchars = _rl_screenwidth * _rl_screenheight;
_rl_term_cr = "\r"; _rl_term_cr = (char*) "\r";
_rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL; _rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
_rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL; _rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
_rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL; _rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
@ -427,7 +427,7 @@ _rl_init_terminal_io (terminal_name)
tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
change that later... */ change that later... */
PC = '\0'; PC = '\0';
BC = _rl_term_backspace = "\b"; BC = _rl_term_backspace = (char*) "\b";
UP = _rl_term_up; UP = _rl_term_up;
return 0; return 0;
@ -442,7 +442,7 @@ _rl_init_terminal_io (terminal_name)
UP = _rl_term_up; UP = _rl_term_up;
if (!_rl_term_cr) if (!_rl_term_cr)
_rl_term_cr = "\r"; _rl_term_cr = (char*) "\r";
_rl_term_autowrap = tgetflag ("am") && tgetflag ("xn"); _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn");
@ -502,7 +502,7 @@ rl_get_termcap (cap)
if (tcap_initialized == 0) if (tcap_initialized == 0)
return ((char *)NULL); return ((char *)NULL);
for (i = 0; i < NUM_TC_STRINGS; i++) for (i = 0; i < (int) NUM_TC_STRINGS; i++)
{ {
if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0) if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0)
return *(tc_strings[i].tc_value); return *(tc_strings[i].tc_value);

View File

@ -402,8 +402,7 @@ rl_backward (count, key)
/* Move to the beginning of the line. */ /* Move to the beginning of the line. */
int int
rl_beg_of_line (count, key) rl_beg_of_line (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
rl_point = 0; rl_point = 0;
return 0; return 0;
@ -411,8 +410,7 @@ rl_beg_of_line (count, key)
/* Move to the end of the line. */ /* Move to the end of the line. */
int int
rl_end_of_line (count, key) rl_end_of_line (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
rl_point = rl_end; rl_point = rl_end;
return 0; return 0;
@ -508,8 +506,7 @@ rl_backward_word (count, key)
/* Clear the current line. Numeric argument to C-l does this. */ /* Clear the current line. Numeric argument to C-l does this. */
int int
rl_refresh_line (ignore1, ignore2) rl_refresh_line (int count __attribute__((unused)), int key __attribute__((unused)))
int ignore1, ignore2;
{ {
int curr_line; int curr_line;
@ -547,8 +544,7 @@ rl_clear_screen (count, key)
} }
int int
rl_arrow_keys (count, c) rl_arrow_keys (int count, int c __attribute__((unused)))
int count, c;
{ {
int ch; int ch;
@ -596,7 +592,7 @@ rl_arrow_keys (count, c)
#ifdef HANDLE_MULTIBYTE #ifdef HANDLE_MULTIBYTE
static char pending_bytes[MB_LEN_MAX]; static char pending_bytes[MB_LEN_MAX];
static int pending_bytes_length = 0; static int pending_bytes_length = 0;
static mbstate_t ps = {0}; static mbstate_t ps;
#endif #endif
/* Insert the character C at the current location, moving point forward. /* Insert the character C at the current location, moving point forward.
@ -832,8 +828,7 @@ rl_insert (count, c)
/* Insert the next typed character verbatim. */ /* Insert the next typed character verbatim. */
int int
rl_quoted_insert (count, key) rl_quoted_insert (int count, int key __attribute__((unused)))
int count, key;
{ {
int c; int c;
@ -854,8 +849,7 @@ rl_quoted_insert (count, key)
/* Insert a tab character. */ /* Insert a tab character. */
int int
rl_tab_insert (count, key) rl_tab_insert (int count, int key __attribute__((unused)))
int count, key;
{ {
return (_rl_insert_char (count, '\t')); return (_rl_insert_char (count, '\t'));
} }
@ -864,8 +858,7 @@ rl_tab_insert (count, key)
KEY is the key that invoked this command. I guess it could have KEY is the key that invoked this command. I guess it could have
meaning in the future. */ meaning in the future. */
int int
rl_newline (count, key) rl_newline (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
rl_done = 1; rl_done = 1;
@ -898,8 +891,8 @@ rl_newline (count, key)
is just a stub, you bind keys to it and the code in _rl_dispatch () is just a stub, you bind keys to it and the code in _rl_dispatch ()
is special cased. */ is special cased. */
int int
rl_do_lowercase_version (ignore1, ignore2) rl_do_lowercase_version (int count __attribute__((unused)),
int ignore1, ignore2; int key __attribute__((unused)))
{ {
return 0; return 0;
} }
@ -1093,8 +1086,8 @@ rl_rubout_or_delete (count, key)
/* Delete all spaces and tabs around point. */ /* Delete all spaces and tabs around point. */
int int
rl_delete_horizontal_space (count, ignore) rl_delete_horizontal_space (int count __attribute__((unused)),
int count, ignore; int key __attribute__((unused)))
{ {
int start = rl_point; int start = rl_point;
@ -1134,14 +1127,13 @@ rl_delete_or_show_completions (count, key)
/* Turn the current line into a comment in shell history. /* Turn the current line into a comment in shell history.
A K*rn shell style function. */ A K*rn shell style function. */
int int
rl_insert_comment (count, key) rl_insert_comment (int count __attribute__((unused)), int key)
int count, key;
{ {
char *rl_comment_text; char *rl_comment_text;
int rl_comment_len; int rl_comment_len;
rl_beg_of_line (1, key); rl_beg_of_line (1, key);
rl_comment_text = _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT; rl_comment_text = _rl_comment_begin ? _rl_comment_begin : (char*) RL_COMMENT_BEGIN_DEFAULT;
if (rl_explicit_arg == 0) if (rl_explicit_arg == 0)
rl_insert_text (rl_comment_text); rl_insert_text (rl_comment_text);
@ -1173,24 +1165,21 @@ rl_insert_comment (count, key)
/* Uppercase the word at point. */ /* Uppercase the word at point. */
int int
rl_upcase_word (count, key) rl_upcase_word (int count, int key __attribute__((unused)))
int count, key;
{ {
return (rl_change_case (count, UpCase)); return (rl_change_case (count, UpCase));
} }
/* Lowercase the word at point. */ /* Lowercase the word at point. */
int int
rl_downcase_word (count, key) rl_downcase_word (int count, int key __attribute__((unused)))
int count, key;
{ {
return (rl_change_case (count, DownCase)); return (rl_change_case (count, DownCase));
} }
/* Upcase the first letter, downcase the rest. */ /* Upcase the first letter, downcase the rest. */
int int
rl_capitalize_word (count, key) rl_capitalize_word (int count, int key __attribute__((unused)))
int count, key;
{ {
return (rl_change_case (count, CapCase)); return (rl_change_case (count, CapCase));
} }
@ -1314,8 +1303,7 @@ rl_transpose_words (count, key)
/* Transpose the characters at point. If point is at the end of the line, /* Transpose the characters at point. If point is at the end of the line,
then transpose the characters before point. */ then transpose the characters before point. */
int int
rl_transpose_chars (count, key) rl_transpose_chars (int count, int key __attribute__((unused)))
int count, key;
{ {
#if defined (HANDLE_MULTIBYTE) #if defined (HANDLE_MULTIBYTE)
char *dummy; char *dummy;
@ -1486,15 +1474,13 @@ _rl_char_search (count, fdir, bdir)
#endif /* !HANDLE_MULTIBYTE */ #endif /* !HANDLE_MULTIBYTE */
int int
rl_char_search (count, key) rl_char_search (int count, int key __attribute__((unused)))
int count, key;
{ {
return (_rl_char_search (count, FFIND, BFIND)); return (_rl_char_search (count, FFIND, BFIND));
} }
int int
rl_backward_char_search (count, key) rl_backward_char_search (int count, int key __attribute__((unused)))
int count, key;
{ {
return (_rl_char_search (count, BFIND, FFIND)); return (_rl_char_search (count, BFIND, FFIND));
} }
@ -1519,16 +1505,15 @@ _rl_set_mark_at_pos (position)
/* A bindable command to set the mark. */ /* A bindable command to set the mark. */
int int
rl_set_mark (count, key) rl_set_mark (int count, int key __attribute__((unused)))
int count, key;
{ {
return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point)); return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
} }
/* Exchange the position of mark and point. */ /* Exchange the position of mark and point. */
int int
rl_exchange_point_and_mark (count, key) rl_exchange_point_and_mark (int count __attribute__((unused)),
int count, key; int key __attribute__((unused)))
{ {
if (rl_mark > rl_end) if (rl_mark > rl_end)
rl_mark = -1; rl_mark = -1;

View File

@ -190,7 +190,7 @@ tilde_expand (string)
int result_size, result_index; int result_size, result_index;
result_index = result_size = 0; result_index = result_size = 0;
if (result = strchr (string, '~')) if ((result = strchr (string, '~')))
result = (char *)xmalloc (result_size = (strlen (string) + 16)); result = (char *)xmalloc (result_size = (strlen (string) + 16));
else else
result = (char *)xmalloc (result_size = (strlen (string) + 1)); result = (char *)xmalloc (result_size = (strlen (string) + 1));

View File

@ -175,7 +175,7 @@ _rl_fix_last_undo_of_type (type, start, end)
for (rl = rl_undo_list; rl; rl = rl->next) for (rl = rl_undo_list; rl; rl = rl->next)
{ {
if (rl->what == type) if (rl->what == (uint) type)
{ {
rl->start = start; rl->start = start;
rl->end = end; rl->end = end;
@ -226,8 +226,7 @@ rl_modifying (start, end)
/* Revert the current line to its previous state. */ /* Revert the current line to its previous state. */
int int
rl_revert_line (count, key) rl_revert_line (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
if (!rl_undo_list) if (!rl_undo_list)
rl_ding (); rl_ding ();
@ -241,8 +240,7 @@ rl_revert_line (count, key)
/* Do some undoing of things that were done. */ /* Do some undoing of things that were done. */
int int
rl_undo_command (count, key) rl_undo_command (int count, int key __attribute__((unused)))
int count, key;
{ {
if (count < 0) if (count < 0)
return 0; /* Nothing to do. */ return 0; /* Nothing to do. */

View File

@ -95,15 +95,13 @@ _rl_abort_internal ()
} }
int int
rl_abort (count, key) rl_abort (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
return (_rl_abort_internal ()); return (_rl_abort_internal ());
} }
int int
rl_tty_status (count, key) rl_tty_status (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
#if defined (TIOCSTAT) #if defined (TIOCSTAT)
ioctl (1, TIOCSTAT, (char *)0); ioctl (1, TIOCSTAT, (char *)0);
@ -152,8 +150,7 @@ rl_extend_line_buffer (len)
/* A function for simple tilde expansion. */ /* A function for simple tilde expansion. */
int int
rl_tilde_expand (ignore, key) rl_tilde_expand (int ignore __attribute__((unused)), int key __attribute__((unused)))
int ignore, key;
{ {
register int start, end; register int start, end;
char *homedir, *temp; char *homedir, *temp;

View File

@ -112,7 +112,7 @@ _rl_vi_initialize_line ()
{ {
register int i; register int i;
for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++) for (i = 0; i < (int) (sizeof (vi_mark_chars) / sizeof (int)); i++)
vi_mark_chars[i] = -1; vi_mark_chars[i] = -1;
} }
@ -166,8 +166,7 @@ _rl_vi_stuff_insert (count)
redo a text modification command. The default for _rl_vi_last_command redo a text modification command. The default for _rl_vi_last_command
puts you back into insert mode. */ puts you back into insert mode. */
int int
rl_vi_redo (count, c) rl_vi_redo (int count, int c __attribute__((unused)))
int count, c;
{ {
int r; int r;
@ -205,8 +204,7 @@ rl_vi_undo (count, key)
/* Yank the nth arg from the previous line into this line at point. */ /* Yank the nth arg from the previous line into this line at point. */
int int
rl_vi_yank_arg (count, key) rl_vi_yank_arg (int count, int key __attribute__((unused)))
int count, key;
{ {
/* Readline thinks that the first word on a line is the 0th, while vi /* Readline thinks that the first word on a line is the 0th, while vi
thinks the first word on a line is the 1st. Compensate. */ thinks the first word on a line is the 1st. Compensate. */
@ -286,8 +284,7 @@ rl_vi_search (count, key)
/* Completion, from vi's point of view. */ /* Completion, from vi's point of view. */
int int
rl_vi_complete (ignore, key) rl_vi_complete (int ignore __attribute__((unused)), int key)
int ignore, key;
{ {
if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point]))) if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
{ {
@ -313,8 +310,7 @@ rl_vi_complete (ignore, key)
/* Tilde expansion for vi mode. */ /* Tilde expansion for vi mode. */
int int
rl_vi_tilde_expand (ignore, key) rl_vi_tilde_expand (int ignore __attribute__((unused)), int key)
int ignore, key;
{ {
rl_tilde_expand (0, key); rl_tilde_expand (0, key);
rl_vi_start_inserting (key, 1, rl_arg_sign); rl_vi_start_inserting (key, 1, rl_arg_sign);
@ -384,8 +380,7 @@ rl_vi_end_word (count, key)
/* Move forward a word the way that 'W' does. */ /* Move forward a word the way that 'W' does. */
int int
rl_vi_fWord (count, ignore) rl_vi_fWord (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
while (count-- && rl_point < (rl_end - 1)) while (count-- && rl_point < (rl_end - 1))
{ {
@ -401,8 +396,7 @@ rl_vi_fWord (count, ignore)
} }
int int
rl_vi_bWord (count, ignore) rl_vi_bWord (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
while (count-- && rl_point > 0) while (count-- && rl_point > 0)
{ {
@ -425,8 +419,7 @@ rl_vi_bWord (count, ignore)
} }
int int
rl_vi_eWord (count, ignore) rl_vi_eWord(int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
while (count-- && rl_point < (rl_end - 1)) while (count-- && rl_point < (rl_end - 1))
{ {
@ -456,8 +449,7 @@ rl_vi_eWord (count, ignore)
} }
int int
rl_vi_fword (count, ignore) rl_vi_fword (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
while (count-- && rl_point < (rl_end - 1)) while (count-- && rl_point < (rl_end - 1))
{ {
@ -482,8 +474,7 @@ rl_vi_fword (count, ignore)
} }
int int
rl_vi_bword (count, ignore) rl_vi_bword (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
while (count-- && rl_point > 0) while (count-- && rl_point > 0)
{ {
@ -521,8 +512,7 @@ rl_vi_bword (count, ignore)
} }
int int
rl_vi_eword (count, ignore) rl_vi_eword (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
while (count-- && rl_point < rl_end - 1) while (count-- && rl_point < rl_end - 1)
{ {
@ -546,8 +536,7 @@ rl_vi_eword (count, ignore)
} }
int int
rl_vi_insert_beg (count, key) rl_vi_insert_beg (int count __attribute__((unused)), int key)
int count, key;
{ {
rl_beg_of_line (1, key); rl_beg_of_line (1, key);
rl_vi_insertion_mode (1, key); rl_vi_insertion_mode (1, key);
@ -555,8 +544,7 @@ rl_vi_insert_beg (count, key)
} }
int int
rl_vi_append_mode (count, key) rl_vi_append_mode (int count __attribute__((unused)), int key)
int count, key;
{ {
if (rl_point < rl_end) if (rl_point < rl_end)
{ {
@ -575,8 +563,7 @@ rl_vi_append_mode (count, key)
} }
int int
rl_vi_append_eol (count, key) rl_vi_append_eol (int count __attribute__((unused)), int key)
int count, key;
{ {
rl_end_of_line (1, key); rl_end_of_line (1, key);
rl_vi_append_mode (1, key); rl_vi_append_mode (1, key);
@ -585,8 +572,7 @@ rl_vi_append_eol (count, key)
/* What to do in the case of C-d. */ /* What to do in the case of C-d. */
int int
rl_vi_eof_maybe (count, c) rl_vi_eof_maybe (int count __attribute__((unused)), int c __attribute__((unused)))
int count, c;
{ {
return (rl_newline (1, '\n')); return (rl_newline (1, '\n'));
} }
@ -596,8 +582,7 @@ rl_vi_eof_maybe (count, c)
/* Switching from one mode to the other really just involves /* Switching from one mode to the other really just involves
switching keymaps. */ switching keymaps. */
int int
rl_vi_insertion_mode (count, key) rl_vi_insertion_mode (int count __attribute__((unused)), int key)
int count, key;
{ {
_rl_keymap = vi_insertion_keymap; _rl_keymap = vi_insertion_keymap;
_rl_vi_last_key_before_insert = key; _rl_vi_last_key_before_insert = key;
@ -659,8 +644,7 @@ _rl_vi_done_inserting ()
} }
int int
rl_vi_movement_mode (count, key) rl_vi_movement_mode (int count __attribute__((unused)), int key)
int count, key;
{ {
if (rl_point > 0) if (rl_point > 0)
rl_backward_char (1, key); rl_backward_char (1, key);
@ -729,8 +713,7 @@ _rl_vi_change_mbchar_case (count)
#endif #endif
int int
rl_vi_change_case (count, ignore) rl_vi_change_case (int count, int ignore __attribute__((unused)))
int count, ignore;
{ {
int c, p; int c, p;
@ -959,8 +942,7 @@ rl_digit_loop1 ()
} }
int int
rl_vi_delete_to (count, key) rl_vi_delete_to (int count __attribute__((unused)), int key)
int count, key;
{ {
int c; int c;
@ -985,8 +967,7 @@ rl_vi_delete_to (count, key)
} }
int int
rl_vi_change_to (count, key) rl_vi_change_to (int count __attribute__((unused)), int key)
int count, key;
{ {
int c, start_pos; int c, start_pos;
@ -1038,8 +1019,7 @@ rl_vi_change_to (count, key)
} }
int int
rl_vi_yank_to (count, key) rl_vi_yank_to (int count __attribute__((unused)), int key)
int count, key;
{ {
int c, save = rl_point; int c, save = rl_point;
@ -1094,8 +1074,7 @@ rl_vi_delete (count, key)
} }
int int
rl_vi_back_to_indent (count, key) rl_vi_back_to_indent (int count __attribute__((unused)), int key)
int count, key;
{ {
rl_beg_of_line (1, key); rl_beg_of_line (1, key);
while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point])) while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
@ -1104,8 +1083,7 @@ rl_vi_back_to_indent (count, key)
} }
int int
rl_vi_first_print (count, key) rl_vi_first_print (int count __attribute__((unused)), int key)
int count, key;
{ {
return (rl_vi_back_to_indent (1, key)); return (rl_vi_back_to_indent (1, key));
} }
@ -1173,8 +1151,7 @@ rl_vi_char_search (count, key)
/* Match brackets */ /* Match brackets */
int int
rl_vi_match (ignore, key) rl_vi_match (int ignore __attribute__((unused)), int key)
int ignore, key;
{ {
int count = 1, brack, pos, tmp, pre; int count = 1, brack, pos, tmp, pre;
@ -1284,8 +1261,7 @@ rl_vi_bracktype (c)
for test against 033 or ^C. Make sure that _rl_read_mbchar does for test against 033 or ^C. Make sure that _rl_read_mbchar does
this right. */ this right. */
int int
rl_vi_change_char (count, key) rl_vi_change_char (int count, int key __attribute__((unused)))
int count, key;
{ {
int c, p; int c, p;
@ -1389,8 +1365,7 @@ rl_vi_overstrike_delete (count, key)
} }
int int
rl_vi_replace (count, key) rl_vi_replace (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
int i; int i;
@ -1450,8 +1425,7 @@ rl_vi_possible_completions()
/* Functions to save and restore marks. */ /* Functions to save and restore marks. */
int int
rl_vi_set_mark (count, key) rl_vi_set_mark (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
int ch; int ch;
@ -1470,8 +1444,7 @@ rl_vi_set_mark (count, key)
} }
int int
rl_vi_goto_mark (count, key) rl_vi_goto_mark (int count __attribute__((unused)), int key __attribute__((unused)))
int count, key;
{ {
int ch; int ch;

View File

@ -243,20 +243,20 @@ bdb_version_ok=yes
]) ])
AC_DEFUN([MYSQL_TOP_BUILDDIR], [ AC_DEFUN([MYSQL_TOP_BUILDDIR], [
# Remove trailing "./" if any
[$1]=`echo $[$1] | sed -e 's,^\./,,'`
case "$[$1]" in case "$[$1]" in
/* ) ;; # don't do anything with an absolute path "bdb" | "$srcdir/bdb" | "$top_srcdir/bdb" | "$abs_top_srcdir/bdb" )
"$srcdir"/* )
# If BDB is under the source directory, we need to look under the # If BDB is under the source directory, we need to look under the
# build directory for bdb/build_unix. # build directory for bdb/build_unix.
# NOTE: I'm being lazy, and assuming the user did not specify [$1]="\$(top_builddir)/bdb"
# something like --with-berkeley-db=bdb (it would be missing "./").
[$1]="\$(top_builddir)/"`echo "$[$1]" | sed -e "s,^$srcdir/,,"`
;; ;;
/* ) ;; # Other absolute path is assume to be external BDB directory
* ) * )
AC_MSG_ERROR([The BDB directory must be directly under the MySQL source directory, or be specified using the full path. ('$srcdir'; '$[$1]')]) AC_MSG_ERROR([The BDB directory must be directly under the MySQL source directory, or be specified using the full path. ('$srcdir'; '$[$1]')])
;; ;;
esac esac
if test X"$[$1]" != "/" if test X"$[$1]" != X"/"
then then
[$1]=`echo $[$1] | sed -e 's,/$,,'` [$1]=`echo $[$1] | sed -e 's,/$,,'`
fi fi

View File

@ -20,7 +20,7 @@ AC_DEFUN([MYSQL_CHECK_INNODB], [
AC_MSG_RESULT([Using Innodb]) AC_MSG_RESULT([Using Innodb])
AC_DEFINE([HAVE_INNOBASE_DB], [1], [Using Innobase DB]) AC_DEFINE([HAVE_INNOBASE_DB], [1], [Using Innobase DB])
have_innodb="yes" have_innodb="yes"
innodb_includes="-I../innobase/include" innodb_includes="-I\$(top_builddir)/innobase/include -I\$(top_srcdir)/innobase/include"
innodb_system_libs="" innodb_system_libs=""
dnl Some libs are listed several times, in order for gcc to sort out dnl Some libs are listed several times, in order for gcc to sort out
dnl circular references. dnl circular references.

View File

@ -140,7 +140,7 @@ AC_DEFUN([MYSQL_CHECK_NDBCLUSTER], [
AC_MSG_RESULT([Using NDB Cluster]) AC_MSG_RESULT([Using NDB Cluster])
AC_DEFINE([HAVE_NDBCLUSTER_DB], [1], [Using Ndb Cluster DB]) AC_DEFINE([HAVE_NDBCLUSTER_DB], [1], [Using Ndb Cluster DB])
have_ndbcluster="yes" have_ndbcluster="yes"
ndbcluster_includes="-I../ndb/include -I../ndb/include/ndbapi -I../ndb/include/mgmapi" ndbcluster_includes="-I\$(top_builddir)/ndb/include -I\$(top_srcdir)/ndb/include -I\$(top_srcdir)/ndb/include/ndbapi -I\$(top_srcdir)/ndb/include/mgmapi"
ndbcluster_libs="\$(top_builddir)/ndb/src/.libs/libndbclient.a" ndbcluster_libs="\$(top_builddir)/ndb/src/.libs/libndbclient.a"
ndbcluster_system_libs="" ndbcluster_system_libs=""
ndb_mgmclient_libs="\$(top_builddir)/ndb/src/mgmclient/libndbmgmclient.la" ndb_mgmclient_libs="\$(top_builddir)/ndb/src/mgmclient/libndbmgmclient.la"

View File

@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
AC_CANONICAL_SYSTEM AC_CANONICAL_SYSTEM
# The Docs Makefile.am parses this line! # The Docs Makefile.am parses this line!
# remember to also change ndb version below and update version.c in ndb # remember to also change ndb version below and update version.c in ndb
AM_INIT_AUTOMAKE(mysql, 5.0.30) AM_INIT_AUTOMAKE(mysql, 5.0.32)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
PROTOCOL_VERSION=10 PROTOCOL_VERSION=10
@ -19,7 +19,7 @@ SHARED_LIB_VERSION=$SHARED_LIB_MAJOR_VERSION:0:0
# ndb version # ndb version
NDB_VERSION_MAJOR=5 NDB_VERSION_MAJOR=5
NDB_VERSION_MINOR=0 NDB_VERSION_MINOR=0
NDB_VERSION_BUILD=30 NDB_VERSION_BUILD=32
NDB_VERSION_STATUS="" NDB_VERSION_STATUS=""
# Set all version vars based on $VERSION. How do we do this more elegant ? # Set all version vars based on $VERSION. How do we do this more elegant ?

View File

@ -169,7 +169,7 @@ register unsigned long *child_time;
*name_pos = temp->pos; *name_pos = temp->pos;
*time_entered = temp->time; *time_entered = temp->time;
*child_time = temp->children; *child_time = temp->children;
DBUG_PRINT ("pop", ("%d %d %d",*name_pos,*time_entered,*child_time)); DBUG_PRINT ("pop", ("%d %lu %lu",*name_pos,*time_entered,*child_time));
rtnval = stacktop--; rtnval = stacktop--;
} }
DBUG_RETURN (rtnval); DBUG_RETURN (rtnval);
@ -334,12 +334,12 @@ FILE *inf;
* function is found on the stack. * function is found on the stack.
*/ */
while (pop (&oldpos, &oldtime, &oldchild)) { while (pop (&oldpos, &oldtime, &oldchild)) {
DBUG_PRINT ("popped", ("%d %d", oldtime, oldchild)); DBUG_PRINT ("popped", ("%lu %lu", oldtime, oldchild));
time = fn_time - oldtime; time = fn_time - oldtime;
t = top (); t = top ();
t -> children += time; t -> children += time;
DBUG_PRINT ("update", ("%s", modules[t -> pos].name)); DBUG_PRINT ("update", ("%s", modules[t -> pos].name));
DBUG_PRINT ("update", ("%d", t -> children)); DBUG_PRINT ("update", ("%lu", t -> children));
time -= oldchild; time -= oldchild;
modules[oldpos].m_time += time; modules[oldpos].m_time += time;
modules[oldpos].m_calls++; modules[oldpos].m_calls++;
@ -520,19 +520,19 @@ register unsigned long int *s_calls, *s_time;
unsigned long int calls, time; unsigned long int calls, time;
DBUG_ENTER ("out_body"); DBUG_ENTER ("out_body");
DBUG_PRINT ("out_body", ("%d,%d",*s_calls,*s_time)); DBUG_PRINT ("out_body", ("%lu,%lu",*s_calls,*s_time));
if (root == MAXPROCS) { if (root == MAXPROCS) {
DBUG_PRINT ("out_body", ("%d,%d",*s_calls,*s_time)); DBUG_PRINT ("out_body", ("%lu,%lu",*s_calls,*s_time));
} else { } else {
while (root != MAXPROCS) { while (root != MAXPROCS) {
out_body (outf, s_table[root].lchild,s_calls,s_time); out_body (outf, s_table[root].lchild,s_calls,s_time);
out_item (outf, &modules[s_table[root].pos],&calls,&time); out_item (outf, &modules[s_table[root].pos],&calls,&time);
DBUG_PRINT ("out_body", ("-- %d -- %d --", calls, time)); DBUG_PRINT ("out_body", ("-- %lu -- %lu --", calls, time));
*s_calls += calls; *s_calls += calls;
*s_time += time; *s_time += time;
root = s_table[root].rchild; root = s_table[root].rchild;
} }
DBUG_PRINT ("out_body", ("%d,%d", *s_calls, *s_time)); DBUG_PRINT ("out_body", ("%lu,%lu", *s_calls, *s_time));
} }
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }

View File

@ -1,4 +1,4 @@
INCLUDES = -I../include -I../taocrypt/include -I../taocrypt/mySTL INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../taocrypt/include -I$(srcdir)/../taocrypt/mySTL
noinst_LTLIBRARIES = libyassl.la noinst_LTLIBRARIES = libyassl.la
libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \ libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \

View File

@ -918,7 +918,7 @@ void ERR_print_errors_fp(FILE* /*fp*/)
char* ERR_error_string(unsigned long errNumber, char* buffer) char* ERR_error_string(unsigned long errNumber, char* buffer)
{ {
static char* msg = "Please supply a buffer for error string"; static char* msg = (char*) "Please supply a buffer for error string";
if (buffer) { if (buffer) {
SetErrorString(YasslError(errNumber), buffer); SetErrorString(YasslError(errNumber), buffer);

View File

@ -1,4 +1,4 @@
INCLUDES = -I../include -I../mySTL INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
bin_PROGRAMS = benchmark bin_PROGRAMS = benchmark
benchmark_SOURCES = benchmark.cpp benchmark_SOURCES = benchmark.cpp
benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la

View File

@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\..\mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
@ -65,7 +65,7 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

View File

@ -1,4 +1,4 @@
INCLUDES = -I../include -I../mySTL INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
noinst_LTLIBRARIES = libtaocrypt.la noinst_LTLIBRARIES = libtaocrypt.la

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "Release" # PROP Intermediate_Dir "Release"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "include" /I "..\mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD CPP /nologo /G6 /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
@ -64,7 +64,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "..\mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# SUBTRACT CPP /Fr # SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"

View File

@ -21,7 +21,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="include,..\mySTL" AdditionalIncludeDirectories="include,mySTL"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB" PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
ExceptionHandling="FALSE" ExceptionHandling="FALSE"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -75,7 +75,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="include,..\mySTL" AdditionalIncludeDirectories="include,mySTL"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB" PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
StringPooling="TRUE" StringPooling="TRUE"
ExceptionHandling="FALSE" ExceptionHandling="FALSE"

View File

@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "../mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c # ADD CPP /nologo /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "../mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

View File

@ -1,4 +1,4 @@
INCLUDES = -I../include -I../mySTL INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
bin_PROGRAMS = test bin_PROGRAMS = test
test_SOURCES = test.cpp test_SOURCES = test.cpp
test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la

View File

@ -1,4 +1,4 @@
INCLUDES = -I../include -I../taocrypt/include -I../taocrypt/mySTL INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../taocrypt/include -I$(srcdir)/../taocrypt/mySTL
bin_PROGRAMS = testsuite bin_PROGRAMS = testsuite
testsuite_SOURCES = testsuite.cpp ../taocrypt/test/test.cpp \ testsuite_SOURCES = testsuite.cpp ../taocrypt/test/test.cpp \
../examples/client/client.cpp ../examples/server/server.cpp \ ../examples/client/client.cpp ../examples/server/server.cpp \

View File

@ -86,8 +86,8 @@ int main(int argc, char** argv)
// input output compare // input output compare
byte input[TaoCrypt::MD5::DIGEST_SIZE]; byte input[TaoCrypt::MD5::DIGEST_SIZE];
byte output[TaoCrypt::MD5::DIGEST_SIZE]; byte output[TaoCrypt::MD5::DIGEST_SIZE];
file_test("input", input); file_test((char*) "input", input);
file_test("output", output); file_test((char*) "output", output);
assert(memcmp(input, output, sizeof(input)) == 0); assert(memcmp(input, output, sizeof(input)) == 0);
printf("\nAll tests passed!\n"); printf("\nAll tests passed!\n");

View File

@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /O2 /I "../taocrypt/include" /I "../include" /I "../mySTL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /YX /FD /c # ADD CPP /nologo /MT /W3 /O2 /I "../taocrypt/include" /I "../include" /I "../taocrypt/mySTL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
@ -67,7 +67,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0 # PROP Ignore_Export_Lib 0
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "../taocrypt/include" /I "../include" /I "../mySTL" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /FR /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "../taocrypt/include" /I "../include" /I "../taocrypt/mySTL" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

View File

@ -41,7 +41,7 @@ RSC=rc.exe
# PROP Intermediate_Dir "Release" # PROP Intermediate_Dir "Release"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "taocrypt\include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c # ADD CPP /nologo /MT /W3 /O2 /I "include" /I "taocrypt\include" /I "taocrypt\mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe
@ -64,7 +64,7 @@ LIB32=link.exe -lib
# PROP Intermediate_Dir "Debug" # PROP Intermediate_Dir "Debug"
# PROP Target_Dir "" # PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /GZ /c # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "taocrypt\include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /FR /YX /FD /GZ /c # ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "taocrypt\include" /I "taocrypt\mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe BSC32=bscmake.exe

View File

@ -21,7 +21,7 @@
<Tool <Tool
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="0" Optimization="0"
AdditionalIncludeDirectories="include,taocrypt\include,mySTL" AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;YASSL_PREFIX" PreprocessorDefinitions="WIN32;_DEBUG;_LIB;YASSL_PREFIX"
ExceptionHandling="FALSE" ExceptionHandling="FALSE"
BasicRuntimeChecks="3" BasicRuntimeChecks="3"
@ -75,7 +75,7 @@
Name="VCCLCompilerTool" Name="VCCLCompilerTool"
Optimization="2" Optimization="2"
InlineFunctionExpansion="1" InlineFunctionExpansion="1"
AdditionalIncludeDirectories="include,taocrypt\include,mySTL" AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;YASSL_PREFIX" PreprocessorDefinitions="WIN32;NDEBUG;_LIB;YASSL_PREFIX"
StringPooling="TRUE" StringPooling="TRUE"
ExceptionHandling="FALSE" ExceptionHandling="FALSE"

View File

@ -88,7 +88,8 @@ int heap_check_heap(HP_INFO *info, my_bool print_status)
if (records != share->records || deleted != share->deleted) if (records != share->records || deleted != share->deleted)
{ {
DBUG_PRINT("error",("Found rows: %lu (%lu) deleted %lu (%lu)", DBUG_PRINT("error",("Found rows: %lu (%lu) deleted %lu (%lu)",
records, share->records, deleted, share->deleted)); records, (ulong) share->records,
deleted, (ulong) share->deleted));
error= 1; error= 1;
} }
*info= save_info; *info= save_info;
@ -100,9 +101,9 @@ static int check_one_key(HP_KEYDEF *keydef, uint keynr, ulong records,
ulong blength, my_bool print_status) ulong blength, my_bool print_status)
{ {
int error; int error;
uint i,found,max_links,seek,links; ulong i,found,max_links,seek,links;
uint rec_link; /* Only used with debugging */ ulong rec_link; /* Only used with debugging */
uint hash_buckets_found; ulong hash_buckets_found;
HASH_INFO *hash_info; HASH_INFO *hash_info;
error=0; error=0;
@ -123,7 +124,9 @@ static int check_one_key(HP_KEYDEF *keydef, uint keynr, ulong records,
blength, records)) blength, records))
!= i) != i)
{ {
DBUG_PRINT("error",("Record in wrong link: Link %d Record: 0x%lx Record-link %d", i,hash_info->ptr_to_rec,rec_link)); DBUG_PRINT("error",
("Record in wrong link: Link %lu Record: 0x%lx Record-link %lu",
i, (long) hash_info->ptr_to_rec, rec_link));
error=1; error=1;
} }
else else
@ -141,18 +144,18 @@ static int check_one_key(HP_KEYDEF *keydef, uint keynr, ulong records,
if (keydef->hash_buckets != hash_buckets_found) if (keydef->hash_buckets != hash_buckets_found)
{ {
DBUG_PRINT("error",("Found %ld buckets, stats shows %ld buckets", DBUG_PRINT("error",("Found %ld buckets, stats shows %ld buckets",
hash_buckets_found, keydef->hash_buckets)); hash_buckets_found, (long) keydef->hash_buckets));
error=1; error=1;
} }
DBUG_PRINT("info", DBUG_PRINT("info",
("records: %ld seeks: %d max links: %d hitrate: %.2f " ("records: %ld seeks: %lu max links: %lu hitrate: %.2f "
"buckets: %d", "buckets: %lu",
records,seek,max_links, records,seek,max_links,
(float) seek / (float) (records ? records : 1), (float) seek / (float) (records ? records : 1),
hash_buckets_found)); hash_buckets_found));
if (print_status) if (print_status)
printf("Key: %d records: %ld seeks: %d max links: %d " printf("Key: %d records: %ld seeks: %lu max links: %lu "
"hitrate: %.2f buckets: %d\n", "hitrate: %.2f buckets: %lu\n",
keynr, records, seek, max_links, keynr, records, seek, max_links,
(float) seek / (float) (records ? records : 1), (float) seek / (float) (records ? records : 1),
hash_buckets_found); hash_buckets_found);
@ -180,8 +183,8 @@ static int check_one_rb_key(HP_INFO *info, uint keynr, ulong records,
key_length, SEARCH_FIND | SEARCH_SAME, not_used)) key_length, SEARCH_FIND | SEARCH_SAME, not_used))
{ {
error= 1; error= 1;
DBUG_PRINT("error",("Record in wrong link: key: %d Record: 0x%lx\n", DBUG_PRINT("error",("Record in wrong link: key: %u Record: 0x%lx\n",
keynr, recpos)); keynr, (long) recpos));
} }
else else
found++; found++;

View File

@ -24,7 +24,7 @@ int heap_delete(HP_INFO *info, const byte *record)
HP_SHARE *share=info->s; HP_SHARE *share=info->s;
HP_KEYDEF *keydef, *end, *p_lastinx; HP_KEYDEF *keydef, *end, *p_lastinx;
DBUG_ENTER("heap_delete"); DBUG_ENTER("heap_delete");
DBUG_PRINT("enter",("info: %lx record: 0x%lx",info,record)); DBUG_PRINT("enter",("info: 0x%lx record: 0x%lx", (long) info, (long) record));
test_active(info); test_active(info);
@ -144,7 +144,7 @@ int hp_delete_key(HP_INFO *info, register HP_KEYDEF *keyinfo,
info->current_hash_ptr=last_ptr; info->current_hash_ptr=last_ptr;
info->current_ptr = last_ptr ? last_ptr->ptr_to_rec : 0; info->current_ptr = last_ptr ? last_ptr->ptr_to_rec : 0;
DBUG_PRINT("info",("Corrected current_ptr to point at: 0x%lx", DBUG_PRINT("info",("Corrected current_ptr to point at: 0x%lx",
info->current_ptr)); (long) info->current_ptr));
} }
empty=pos; empty=pos;
if (gpos) if (gpos)

View File

@ -120,7 +120,7 @@ byte *hp_search(HP_INFO *info, HP_KEYDEF *keyinfo, const byte *key,
{ {
switch (nextflag) { switch (nextflag) {
case 0: /* Search after key */ case 0: /* Search after key */
DBUG_PRINT("exit",("found key at %d",pos->ptr_to_rec)); DBUG_PRINT("exit", ("found key at 0x%lx", (long) pos->ptr_to_rec));
info->current_hash_ptr=pos; info->current_hash_ptr=pos;
DBUG_RETURN(info->current_ptr= pos->ptr_to_rec); DBUG_RETURN(info->current_ptr= pos->ptr_to_rec);
case 1: /* Search next */ case 1: /* Search next */

View File

@ -64,7 +64,8 @@ HP_INFO *heap_open(const char *name, int mode)
info->opt_flag= READ_CHECK_USED; /* Check when changing */ info->opt_flag= READ_CHECK_USED; /* Check when changing */
#endif #endif
DBUG_PRINT("exit",("heap: 0x%lx reclength: %d records_in_block: %d", DBUG_PRINT("exit",("heap: 0x%lx reclength: %d records_in_block: %d",
info,share->reclength,share->block.records_in_block)); (long) info, share->reclength,
share->block.records_in_block));
DBUG_RETURN(info); DBUG_RETURN(info);
} }
@ -82,7 +83,7 @@ HP_SHARE *hp_find_named_heap(const char *name)
info= (HP_SHARE*) pos->data; info= (HP_SHARE*) pos->data;
if (!strcmp(name, info->name)) if (!strcmp(name, info->name))
{ {
DBUG_PRINT("exit", ("Old heap_database: 0x%lx",info)); DBUG_PRINT("exit", ("Old heap_database: 0x%lx", (long) info));
DBUG_RETURN(info); DBUG_RETURN(info);
} }
} }

View File

@ -23,7 +23,7 @@ int heap_rkey(HP_INFO *info, byte *record, int inx, const byte *key,
HP_SHARE *share= info->s; HP_SHARE *share= info->s;
HP_KEYDEF *keyinfo= share->keydef + inx; HP_KEYDEF *keyinfo= share->keydef + inx;
DBUG_ENTER("heap_rkey"); DBUG_ENTER("heap_rkey");
DBUG_PRINT("enter",("base: 0x%lx inx: %d",info,inx)); DBUG_PRINT("enter",("info: 0x%lx inx: %d", (long) info, inx));
if ((uint) inx >= share->keys) if ((uint) inx >= share->keys)
{ {

View File

@ -29,7 +29,7 @@ int heap_rrnd(register HP_INFO *info, byte *record, byte *pos)
{ {
HP_SHARE *share=info->s; HP_SHARE *share=info->s;
DBUG_ENTER("heap_rrnd"); DBUG_ENTER("heap_rrnd");
DBUG_PRINT("enter",("info: 0x%lx pos: %lx",info,pos)); DBUG_PRINT("enter",("info: 0x%lx pos: %lx",(long) info, (long) pos));
info->lastinx= -1; info->lastinx= -1;
if (!(info->current_ptr= pos)) if (!(info->current_ptr= pos))
@ -44,7 +44,7 @@ int heap_rrnd(register HP_INFO *info, byte *record, byte *pos)
} }
info->update=HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND | HA_STATE_AKTIV; info->update=HA_STATE_PREV_FOUND | HA_STATE_NEXT_FOUND | HA_STATE_AKTIV;
memcpy(record,info->current_ptr,(size_t) share->reclength); memcpy(record,info->current_ptr,(size_t) share->reclength);
DBUG_PRINT("exit",("found record at 0x%lx",info->current_ptr)); DBUG_PRINT("exit", ("found record at 0x%lx", (long) info->current_ptr));
info->current_hash_ptr=0; /* Can't use rnext */ info->current_hash_ptr=0; /* Can't use rnext */
DBUG_RETURN(0); DBUG_RETURN(0);
} /* heap_rrnd */ } /* heap_rrnd */

View File

@ -138,7 +138,7 @@ static byte *next_free_record_pos(HP_SHARE *info)
pos=info->del_link; pos=info->del_link;
info->del_link= *((byte**) pos); info->del_link= *((byte**) pos);
info->deleted--; info->deleted--;
DBUG_PRINT("exit",("Used old position: 0x%lx",pos)); DBUG_PRINT("exit",("Used old position: 0x%lx",(long) pos));
DBUG_RETURN(pos); DBUG_RETURN(pos);
} }
if (!(block_pos=(info->records % info->block.records_in_block))) if (!(block_pos=(info->records % info->block.records_in_block)))
@ -153,9 +153,9 @@ static byte *next_free_record_pos(HP_SHARE *info)
DBUG_RETURN(NULL); DBUG_RETURN(NULL);
info->data_length+=length; info->data_length+=length;
} }
DBUG_PRINT("exit",("Used new position: %lx", DBUG_PRINT("exit",("Used new position: 0x%lx",
(byte*) info->block.level_info[0].last_blocks+block_pos* (long) ((byte*) info->block.level_info[0].last_blocks+
info->block.recbuffer)); block_pos * info->block.recbuffer)));
DBUG_RETURN((byte*) info->block.level_info[0].last_blocks+ DBUG_RETURN((byte*) info->block.level_info[0].last_blocks+
block_pos*info->block.recbuffer); block_pos*info->block.recbuffer);
} }

View File

@ -97,6 +97,7 @@ extern const char *client_errors[]; /* Error messages */
#define CR_NO_STMT_METADATA 2052 #define CR_NO_STMT_METADATA 2052
#define CR_NO_RESULT_SET 2053 #define CR_NO_RESULT_SET 2053
#define CR_NOT_IMPLEMENTED 2054 #define CR_NOT_IMPLEMENTED 2054
#define CR_ERROR_LAST /*Copy last error nr:*/ 2054 #define CR_SERVER_LOST_EXTENDED 2055
#define CR_ERROR_LAST /*Copy last error nr:*/ 2055
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */ /* Add error numbers before CR_ERROR_LAST and change it accordingly. */

View File

@ -178,8 +178,8 @@ typedef struct my_charset_handler_st
unsigned char *s,unsigned char *e); unsigned char *s,unsigned char *e);
/* Functions for case and sort convertion */ /* Functions for case and sort convertion */
void (*caseup_str)(struct charset_info_st *, char *); uint (*caseup_str)(struct charset_info_st *, char *);
void (*casedn_str)(struct charset_info_st *, char *); uint (*casedn_str)(struct charset_info_st *, char *);
uint (*caseup)(struct charset_info_st *, char *src, uint srclen, uint (*caseup)(struct charset_info_st *, char *src, uint srclen,
char *dst, uint dstlen); char *dst, uint dstlen);
uint (*casedn)(struct charset_info_st *, char *src, uint srclen, uint (*casedn)(struct charset_info_st *, char *src, uint srclen,
@ -311,8 +311,8 @@ extern uint my_instr_simple(struct charset_info_st *,
/* Functions for 8bit */ /* Functions for 8bit */
extern void my_caseup_str_8bit(CHARSET_INFO *, char *); extern uint my_caseup_str_8bit(CHARSET_INFO *, char *);
extern void my_casedn_str_8bit(CHARSET_INFO *, char *); extern uint my_casedn_str_8bit(CHARSET_INFO *, char *);
extern uint my_caseup_8bit(CHARSET_INFO *, char *src, uint srclen, extern uint my_caseup_8bit(CHARSET_INFO *, char *src, uint srclen,
char *dst, uint dstlen); char *dst, uint dstlen);
extern uint my_casedn_8bit(CHARSET_INFO *, char *src, uint srclen, extern uint my_casedn_8bit(CHARSET_INFO *, char *src, uint srclen,
@ -399,8 +399,8 @@ int my_mbcharlen_8bit(CHARSET_INFO *, uint c);
/* Functions for multibyte charsets */ /* Functions for multibyte charsets */
extern void my_caseup_str_mb(CHARSET_INFO *, char *); extern uint my_caseup_str_mb(CHARSET_INFO *, char *);
extern void my_casedn_str_mb(CHARSET_INFO *, char *); extern uint my_casedn_str_mb(CHARSET_INFO *, char *);
extern uint my_caseup_mb(CHARSET_INFO *, char *src, uint srclen, extern uint my_caseup_mb(CHARSET_INFO *, char *src, uint srclen,
char *dst, uint dstlen); char *dst, uint dstlen);
extern uint my_casedn_mb(CHARSET_INFO *, char *src, uint srclen, extern uint my_casedn_mb(CHARSET_INFO *, char *src, uint srclen,

View File

@ -863,7 +863,12 @@ my_bool my_gethwaddr(uchar *to);
#define HAVE_MMAP #define HAVE_MMAP
#endif #endif
#ifndef __NETWARE__
int my_getpagesize(void); int my_getpagesize(void);
#else
#define my_getpagesize() 8192
#endif
void *my_mmap(void *, size_t, int, int, int, my_off_t); void *my_mmap(void *, size_t, int, int, int, my_off_t);
int my_munmap(void *, size_t); int my_munmap(void *, size_t);
#endif #endif

View File

@ -67,6 +67,8 @@ typedef long my_time_t;
#define TIME_MAX_VALUE (TIME_MAX_HOUR*10000 + TIME_MAX_MINUTE*100 + \ #define TIME_MAX_VALUE (TIME_MAX_HOUR*10000 + TIME_MAX_MINUTE*100 + \
TIME_MAX_SECOND) TIME_MAX_SECOND)
my_bool check_date(const MYSQL_TIME *ltime, my_bool not_zero_date,
ulong flags, int *was_cut);
enum enum_mysql_timestamp_type enum enum_mysql_timestamp_type
str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time, str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
uint flags, int *was_cut); uint flags, int *was_cut);

View File

@ -2,6 +2,43 @@
#SET(CMAKE_C_FLAGS_DEBUG "-DSAFEMALLOC -DSAFE_MUTEX") #SET(CMAKE_C_FLAGS_DEBUG "-DSAFEMALLOC -DSAFE_MUTEX")
ADD_DEFINITIONS(-DMYSQL_SERVER -D_WIN32 -DWIN32 -D_LIB) ADD_DEFINITIONS(-DMYSQL_SERVER -D_WIN32 -DWIN32 -D_LIB)
# Bug#19424 - InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C)
# Removing Win64 compiler optimizations for all innodb files.
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
SET_SOURCE_FILES_PROPERTIES(btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
data/data0data.c data/data0type.c
dict/dict0boot.c dict/dict0crea.c dict/dict0dict.c dict/dict0load.c dict/dict0mem.c
dyn/dyn0dyn.c
eval/eval0eval.c eval/eval0proc.c
fil/fil0fil.c
fsp/fsp0fsp.c
fut/fut0fut.c fut/fut0lst.c
ha/ha0ha.c ha/hash0hash.c
ibuf/ibuf0ibuf.c
pars/lexyy.c pars/pars0grm.c pars/pars0opt.c pars/pars0pars.c pars/pars0sym.c
lock/lock0lock.c
log/log0log.c log/log0recv.c
mach/mach0data.c
mem/mem0mem.c mem/mem0pool.c
mtr/mtr0log.c mtr/mtr0mtr.c
os/os0file.c os/os0proc.c os/os0sync.c os/os0thread.c
page/page0cur.c page/page0page.c
que/que0que.c
read/read0read.c
rem/rem0cmp.c rem/rem0rec.c
row/row0ins.c row/row0mysql.c row/row0purge.c row/row0row.c row/row0sel.c row/row0uins.c
row/row0umod.c row/row0undo.c row/row0upd.c row/row0vers.c
srv/srv0que.c srv/srv0srv.c srv/srv0start.c
sync/sync0arr.c sync/sync0rw.c sync/sync0sync.c
thr/thr0loc.c
trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c
trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
usr/usr0sess.c
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c
PROPERTIES COMPILE_FLAGS -Od)
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include include) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include include)
ADD_LIBRARY(innobase btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c ADD_LIBRARY(innobase btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c buf/buf0buf.c buf/buf0flu.c buf/buf0lru.c buf/buf0rea.c
@ -33,3 +70,8 @@ ADD_LIBRARY(innobase btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c trx/trx0purge.c trx/trx0rec.c trx/trx0roll.c trx/trx0rseg.c trx/trx0sys.c trx/trx0trx.c trx/trx0undo.c
usr/usr0sess.c usr/usr0sess.c
ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c ) ut/ut0byte.c ut/ut0dbg.c ut/ut0mem.c ut/ut0rnd.c ut/ut0ut.c )
# (Bug#19424) Removing Win64 compiler optimizations innobase project.
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
SET_TARGET_PROPERTIES(innobase PROPERTIES COMPILE_FLAGS "/Od")
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")

View File

@ -89,8 +89,8 @@ DEFS = -DDEFAULT_CHARSET_HOME="\"$(MYSQLBASEdir)\"" \
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" $(target_defs) -DSHAREDIR="\"$(MYSQLSHAREdir)\"" $(target_defs)
if HAVE_YASSL if HAVE_YASSL
yassl_las = $(top_srcdir)/extra/yassl/src/libyassl.la \ yassl_las = $(top_builddir)/extra/yassl/src/libyassl.la \
$(top_srcdir)/extra/yassl/taocrypt/src/libtaocrypt.la $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
endif endif
# The automatic dependencies miss this # The automatic dependencies miss this

View File

@ -82,6 +82,7 @@ const char *client_errors[]=
"Prepared statement contains no metadata", "Prepared statement contains no metadata",
"Attempt to read a row while there is no result set associated with the statement", "Attempt to read a row while there is no result set associated with the statement",
"This feature is not implemented yet", "This feature is not implemented yet",
"Lost connection to MySQL server at '%s', system error: %d",
"" ""
}; };
@ -145,6 +146,7 @@ const char *client_errors[]=
"Prepared statement contains no metadata", "Prepared statement contains no metadata",
"Attempt to read a row while there is no result set associated with the statement", "Attempt to read a row while there is no result set associated with the statement",
"This feature is not implemented yet", "This feature is not implemented yet",
"Lost connection to MySQL server at '%s', system error: %d",
"" ""
}; };
@ -206,6 +208,7 @@ const char *client_errors[]=
"Prepared statement contains no metadata", "Prepared statement contains no metadata",
"Attempt to read a row while there is no result set associated with the statement", "Attempt to read a row while there is no result set associated with the statement",
"This feature is not implemented yet", "This feature is not implemented yet",
"Lost connection to MySQL server at '%s', system error: %d",
"" ""
}; };
#endif #endif

View File

@ -2100,7 +2100,7 @@ mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length)
} }
stmt->bind= stmt->params + stmt->param_count; stmt->bind= stmt->params + stmt->param_count;
stmt->state= MYSQL_STMT_PREPARE_DONE; stmt->state= MYSQL_STMT_PREPARE_DONE;
DBUG_PRINT("info", ("Parameter count: %ld", stmt->param_count)); DBUG_PRINT("info", ("Parameter count: %u", stmt->param_count));
DBUG_RETURN(0); DBUG_RETURN(0);
} }
@ -2443,10 +2443,10 @@ static my_bool store_param(MYSQL_STMT *stmt, MYSQL_BIND *param)
{ {
NET *net= &stmt->mysql->net; NET *net= &stmt->mysql->net;
DBUG_ENTER("store_param"); DBUG_ENTER("store_param");
DBUG_PRINT("enter",("type: %d, buffer:%lx, length: %lu is_null: %d", DBUG_PRINT("enter",("type: %d buffer: 0x%lx length: %lu is_null: %d",
param->buffer_type, param->buffer_type,
param->buffer ? param->buffer : "0", *param->length, (long) (param->buffer ? param->buffer : NullS),
*param->is_null)); *param->length, *param->is_null));
if (*param->is_null) if (*param->is_null)
store_param_null(net, param); store_param_null(net, param);
@ -3329,8 +3329,8 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
MYSQL_BIND *param; MYSQL_BIND *param;
DBUG_ENTER("mysql_stmt_send_long_data"); DBUG_ENTER("mysql_stmt_send_long_data");
DBUG_ASSERT(stmt != 0); DBUG_ASSERT(stmt != 0);
DBUG_PRINT("enter",("param no : %d, data : %lx, length : %ld", DBUG_PRINT("enter",("param no: %d data: 0x%lx, length : %ld",
param_number, data, length)); param_number, (long) data, length));
/* /*
We only need to check for stmt->param_count, if it's not null We only need to check for stmt->param_count, if it's not null
@ -4413,7 +4413,7 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
ulong bind_count= stmt->field_count; ulong bind_count= stmt->field_count;
uint param_count= 0; uint param_count= 0;
DBUG_ENTER("mysql_stmt_bind_result"); DBUG_ENTER("mysql_stmt_bind_result");
DBUG_PRINT("enter",("field_count: %d", bind_count)); DBUG_PRINT("enter",("field_count: %lu", bind_count));
if (!bind_count) if (!bind_count)
{ {
@ -4773,14 +4773,6 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
DBUG_RETURN(1); DBUG_RETURN(1);
} }
if (result->data)
{
free_root(&result->alloc, MYF(MY_KEEP_PREALLOC));
result->data= NULL;
result->rows= 0;
stmt->data_cursor= NULL;
}
if (stmt->update_max_length && !stmt->bind_result_done) if (stmt->update_max_length && !stmt->bind_result_done)
{ {
/* /*

View File

@ -29,8 +29,6 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
## automake barfs if you don't use $(srcdir) or $(top_srcdir) in include ## automake barfs if you don't use $(srcdir) or $(top_srcdir) in include
include $(top_srcdir)/libmysql/Makefile.shared include $(top_srcdir)/libmysql/Makefile.shared
libmysql_dir = $(top_srcdir)/libmysql
libmysqlclient_r_la_SOURCES = $(target_sources) libmysqlclient_r_la_SOURCES = $(target_sources)
libmysqlclient_r_la_LIBADD = $(target_libadd) $(yassl_las) libmysqlclient_r_la_LIBADD = $(target_libadd) $(yassl_las)
libmysqlclient_r_la_LDFLAGS = $(target_ldflags) libmysqlclient_r_la_LDFLAGS = $(target_ldflags)
@ -38,7 +36,9 @@ libmysqlclient_r_la_LDFLAGS = $(target_ldflags)
# This is called from the toplevel makefile # This is called from the toplevel makefile
link_sources: link_sources:
set -x; \ set -x; \
for f in `cd $(libmysql_dir) && echo *.[ch]`; do \ for d in $(top_srcdir)/libmysql $(top_builddir)/libmysql; do \
for f in `cd $$d && echo *.[ch]`; do \
rm -f $$f; \ rm -f $$f; \
@LN_CP_F@ $(libmysql_dir)/$$f $$f; \ @LN_CP_F@ $$d/$$f $$f; \
done; \
done done

View File

@ -25,9 +25,10 @@ DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \ -DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
-DDATADIR="\"$(MYSQLDATAdir)\"" \ -DDATADIR="\"$(MYSQLDATAdir)\"" \
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" -DSHAREDIR="\"$(MYSQLSHAREdir)\""
INCLUDES= @bdb_includes@ \ INCLUDES= @bdb_includes@ @innodb_includes@ @ndbcluster_includes@ \
-I$(top_builddir)/include -I$(top_srcdir)/include \ -I$(top_builddir)/include -I$(top_srcdir)/include \
-I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples \ -I$(top_builddir)/sql -I$(top_srcdir)/sql \
-I$(top_srcdir)/sql/examples \
-I$(top_srcdir)/regex \ -I$(top_srcdir)/regex \
$(openssl_includes) @ZLIB_INCLUDES@ $(openssl_includes) @ZLIB_INCLUDES@
@ -118,16 +119,28 @@ endif
#libmysqld_la_LDFLAGS = -version-info @SHARED_LIB_VERSION@ #libmysqld_la_LDFLAGS = -version-info @SHARED_LIB_VERSION@
#CLEANFILES = $(libmysqld_la_LIBADD) libmysqld.la #CLEANFILES = $(libmysqld_la_LIBADD) libmysqld.la
# This is called from the toplevel makefile # This is called from the toplevel makefile. If we can link now
# to an existing file in source, we do that, else we assume it
# will show up in the build tree eventually (generated file).
link_sources: link_sources:
set -x; \ set -x; \
for f in $(sqlsources); do \ for f in $(sqlsources); do \
rm -f $$f; \ rm -f $$f; \
if test -e $(top_srcdir)/sql/$$f ; \
then \
@LN_CP_F@ $(top_srcdir)/sql/$$f $$f; \ @LN_CP_F@ $(top_srcdir)/sql/$$f $$f; \
else \
@LN_CP_F@ $(top_builddir)/sql/$$f $$f; \
fi ; \
done; \ done; \
for f in $(libmysqlsources); do \ for f in $(libmysqlsources); do \
rm -f $$f; \ rm -f $$f; \
if test -e $(top_srcdir)/libmysql/$$f ; \
then \
@LN_CP_F@ $(top_srcdir)/libmysql/$$f $$f; \ @LN_CP_F@ $(top_srcdir)/libmysql/$$f $$f; \
else \
@LN_CP_F@ $(top_builddir)/libmysql/$$f $$f; \
fi ; \
done; \ done; \
for f in $(sqlexamplessources); do \ for f in $(sqlexamplessources); do \
rm -f $$f; \ rm -f $$f; \

View File

@ -100,6 +100,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
mysql->affected_rows= ~(my_ulonglong) 0; mysql->affected_rows= ~(my_ulonglong) 0;
mysql->field_count= 0; mysql->field_count= 0;
net->last_errno= 0; net->last_errno= 0;
thd->current_stmt= stmt;
thd->store_globals(); // Fix if more than one connect thd->store_globals(); // Fix if more than one connect
/* /*

View File

@ -206,7 +206,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
} }
} }
DBUG_PRINT("exit",("Mysql handler: %lx",mysql)); DBUG_PRINT("exit",("Mysql handler: 0x%lx", (long) mysql));
DBUG_RETURN(mysql); DBUG_RETURN(mysql);
error: error:

View File

@ -28,8 +28,9 @@ int mi_close(register MI_INFO *info)
int error=0,flag; int error=0,flag;
MYISAM_SHARE *share=info->s; MYISAM_SHARE *share=info->s;
DBUG_ENTER("mi_close"); DBUG_ENTER("mi_close");
DBUG_PRINT("enter",("base: %lx reopen: %u locks: %u", DBUG_PRINT("enter",("base: 0x%lx reopen: %u locks: %u",
info,(uint) share->reopen, (uint) share->tot_locks)); (long) info, (uint) share->reopen,
(uint) share->tot_locks));
pthread_mutex_lock(&THR_LOCK_myisam); pthread_mutex_lock(&THR_LOCK_myisam);
if (info->lock_type == F_EXTRA_LCK) if (info->lock_type == F_EXTRA_LCK)

View File

@ -165,7 +165,7 @@ static int _mi_ck_real_delete(register MI_INFO *info, MI_KEYDEF *keyinfo,
DBUG_PRINT("error",("Couldn't allocate memory")); DBUG_PRINT("error",("Couldn't allocate memory"));
DBUG_RETURN(my_errno=ENOMEM); DBUG_RETURN(my_errno=ENOMEM);
} }
DBUG_PRINT("info",("root_page: %ld",old_root)); DBUG_PRINT("info",("root_page: %ld", (long) old_root));
if (!_mi_fetch_keypage(info,keyinfo,old_root,DFLT_INIT_HITS,root_buff,0)) if (!_mi_fetch_keypage(info,keyinfo,old_root,DFLT_INIT_HITS,root_buff,0))
{ {
error= -1; error= -1;
@ -410,7 +410,7 @@ static int del(register MI_INFO *info, register MI_KEYDEF *keyinfo, uchar *key,
MYISAM_SHARE *share=info->s; MYISAM_SHARE *share=info->s;
MI_KEY_PARAM s_temp; MI_KEY_PARAM s_temp;
DBUG_ENTER("del"); DBUG_ENTER("del");
DBUG_PRINT("enter",("leaf_page: %ld keypos: 0x%lx", leaf_page, DBUG_PRINT("enter",("leaf_page: %ld keypos: 0x%lx", (long) leaf_page,
(ulong) keypos)); (ulong) keypos));
DBUG_DUMP("leaf_buff",(byte*) leaf_buff,mi_getint(leaf_buff)); DBUG_DUMP("leaf_buff",(byte*) leaf_buff,mi_getint(leaf_buff));
@ -597,7 +597,8 @@ static int underflow(register MI_INFO *info, register MI_KEYDEF *keyinfo,
else else
{ /* Page is full */ { /* Page is full */
endpos=anc_buff+anc_length; endpos=anc_buff+anc_length;
DBUG_PRINT("test",("anc_buff: %lx endpos: %lx",anc_buff,endpos)); DBUG_PRINT("test",("anc_buff: 0x%lx endpos: 0x%lx",
(long) anc_buff, (long) endpos));
if (keypos != anc_buff+2+key_reflength && if (keypos != anc_buff+2+key_reflength &&
!_mi_get_last_key(info,keyinfo,anc_buff,anc_key,keypos,&length)) !_mi_get_last_key(info,keyinfo,anc_buff,anc_key,keypos,&length))
goto err; goto err;
@ -775,7 +776,7 @@ static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag,
int s_length; int s_length;
uchar *start; uchar *start;
DBUG_ENTER("remove_key"); DBUG_ENTER("remove_key");
DBUG_PRINT("enter",("keypos: %lx page_end: %lx",keypos,page_end)); DBUG_PRINT("enter",("keypos: 0x%lx page_end: 0x%lx",(long) keypos, (long) page_end));
start=keypos; start=keypos;
if (!(keyinfo->flag & if (!(keyinfo->flag &

View File

@ -1066,8 +1066,8 @@ ulong _mi_rec_unpack(register MI_INFO *info, register byte *to, byte *from,
err: err:
my_errno= HA_ERR_WRONG_IN_RECORD; my_errno= HA_ERR_WRONG_IN_RECORD;
DBUG_PRINT("error",("to_end: %lx -> %lx from_end: %lx -> %lx", DBUG_PRINT("error",("to_end: 0x%lx -> 0x%lx from_end: 0x%lx -> 0x%lx",
to,to_end,from,from_end)); (long) to, (long) to_end, (long) from, (long) from_end));
DBUG_DUMP("from",(byte*) info->rec_buff,info->s->base.min_pack_length); DBUG_DUMP("from",(byte*) info->rec_buff,info->s->base.min_pack_length);
DBUG_RETURN(MY_FILE_ERROR); DBUG_RETURN(MY_FILE_ERROR);
} /* _mi_rec_unpack */ } /* _mi_rec_unpack */

View File

@ -52,7 +52,7 @@ static int _mi_put_key_in_record(MI_INFO *info,uint keynr,byte *record);
uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key, uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
const byte *record, my_off_t filepos) const byte *record, my_off_t filepos)
{ {
byte *pos,*end; byte *pos;
uchar *start; uchar *start;
reg1 HA_KEYSEG *keyseg; reg1 HA_KEYSEG *keyseg;
my_bool is_ft= info->s->keyinfo[keynr].flag & HA_FULLTEXT; my_bool is_ft= info->s->keyinfo[keynr].flag & HA_FULLTEXT;
@ -107,18 +107,17 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
} }
if (keyseg->flag & HA_SPACE_PACK) if (keyseg->flag & HA_SPACE_PACK)
{ {
end= pos + length;
if (type != HA_KEYTYPE_NUM) if (type != HA_KEYTYPE_NUM)
{ {
while (end > pos && end[-1] == ' ') length= cs->cset->lengthsp(cs, pos, length);
end--;
} }
else else
{ {
byte *end= pos + length;
while (pos < end && pos[0] == ' ') while (pos < end && pos[0] == ' ')
pos++; pos++;
}
length=(uint) (end-pos); length=(uint) (end-pos);
}
FIX_LENGTH(cs, pos, length, char_length); FIX_LENGTH(cs, pos, length, char_length);
store_key_length_inc(key,char_length); store_key_length_inc(key,char_length);
memcpy((byte*) key,(byte*) pos,(size_t) char_length); memcpy((byte*) key,(byte*) pos,(size_t) char_length);
@ -404,7 +403,9 @@ static int _mi_put_key_in_record(register MI_INFO *info, uint keynr,
if (keyseg->type != (int) HA_KEYTYPE_NUM) if (keyseg->type != (int) HA_KEYTYPE_NUM)
{ {
memcpy(pos,key,(size_t) length); memcpy(pos,key,(size_t) length);
bfill(pos+length,keyseg->length-length,' '); keyseg->charset->cset->fill(keyseg->charset,
pos + length, keyseg->length - length,
' ');
} }
else else
{ {

View File

@ -54,8 +54,8 @@ int mi_assign_to_key_cache(MI_INFO *info,
int error= 0; int error= 0;
MYISAM_SHARE* share= info->s; MYISAM_SHARE* share= info->s;
DBUG_ENTER("mi_assign_to_key_cache"); DBUG_ENTER("mi_assign_to_key_cache");
DBUG_PRINT("enter",("old_key_cache_handle: %lx new_key_cache_handle: %lx", DBUG_PRINT("enter",("old_key_cache_handle: 0x%lx new_key_cache_handle: 0x%lx",
share->key_cache, key_cache)); (long) share->key_cache, (long) key_cache));
/* /*
Skip operation if we didn't change key cache. This can happen if we Skip operation if we didn't change key cache. This can happen if we

View File

@ -336,6 +336,8 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
goto err; goto err;
} }
} }
else if (pos->type == HA_KEYTYPE_BINARY)
pos->charset= &my_charset_bin;
} }
if (share->keyinfo[i].flag & HA_SPATIAL) if (share->keyinfo[i].flag & HA_SPATIAL)
{ {

View File

@ -27,7 +27,7 @@ uchar *_mi_fetch_keypage(register MI_INFO *info, MI_KEYDEF *keyinfo,
uchar *tmp; uchar *tmp;
uint page_size; uint page_size;
DBUG_ENTER("_mi_fetch_keypage"); DBUG_ENTER("_mi_fetch_keypage");
DBUG_PRINT("enter",("page: %ld",page)); DBUG_PRINT("enter",("page: %ld", (long) page));
tmp=(uchar*) key_cache_read(info->s->key_cache, tmp=(uchar*) key_cache_read(info->s->key_cache,
info->s->kfile, page, level, (byte*) buff, info->s->kfile, page, level, (byte*) buff,
@ -80,7 +80,7 @@ int _mi_write_keypage(register MI_INFO *info, register MI_KEYDEF *keyinfo,
my_errno=EINVAL; my_errno=EINVAL;
DBUG_RETURN((-1)); DBUG_RETURN((-1));
} }
DBUG_PRINT("page",("write page at: %lu",(long) page,buff)); DBUG_PRINT("page",("write page at: %lu",(long) page));
DBUG_DUMP("buff",(byte*) buff,mi_getint(buff)); DBUG_DUMP("buff",(byte*) buff,mi_getint(buff));
#endif #endif

View File

@ -255,8 +255,8 @@ int _mi_read_rnd_static_record(MI_INFO *info, byte *buf,
if (filepos >= info->state->data_file_length) if (filepos >= info->state->data_file_length)
{ {
DBUG_PRINT("test",("filepos: %ld (%ld) records: %ld del: %ld", DBUG_PRINT("test",("filepos: %ld (%ld) records: %ld del: %ld",
filepos/share->base.reclength,filepos, (long) filepos/share->base.reclength, (long) filepos,
info->state->records, info->state->del)); (long) info->state->records, (long) info->state->del));
fast_mi_writeinfo(info); fast_mi_writeinfo(info);
DBUG_RETURN(my_errno=HA_ERR_END_OF_FILE); DBUG_RETURN(my_errno=HA_ERR_END_OF_FILE);
} }

View File

@ -813,7 +813,7 @@ end:
printf("Write records: %d\nUpdate records: %d\nSame-key-read: %d\nDelete records: %d\n", write_count,update,dupp_keys,opt_delete); printf("Write records: %d\nUpdate records: %d\nSame-key-read: %d\nDelete records: %d\n", write_count,update,dupp_keys,opt_delete);
if (rec_pointer_size) if (rec_pointer_size)
printf("Record pointer size: %d\n",rec_pointer_size); printf("Record pointer size: %d\n",rec_pointer_size);
printf("myisam_block_size: %u\n", myisam_block_size); printf("myisam_block_size: %lu\n", myisam_block_size);
if (key_cacheing) if (key_cacheing)
{ {
puts("Key cache used"); puts("Key cache used");

View File

@ -339,7 +339,7 @@ static int w_search(register MI_INFO *info, register MI_KEYDEF *keyinfo,
my_bool was_last_key; my_bool was_last_key;
my_off_t next_page, dupp_key_pos; my_off_t next_page, dupp_key_pos;
DBUG_ENTER("w_search"); DBUG_ENTER("w_search");
DBUG_PRINT("enter",("page: %ld",page)); DBUG_PRINT("enter",("page: %ld", (long) page));
search_key_length= (comp_flag & SEARCH_FIND) ? key_length : USE_WHOLE_KEY; search_key_length= (comp_flag & SEARCH_FIND) ? key_length : USE_WHOLE_KEY;
if (!(temp_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ if (!(temp_buff= (uchar*) my_alloca((uint) keyinfo->block_length+
@ -462,7 +462,7 @@ int _mi_insert(register MI_INFO *info, register MI_KEYDEF *keyinfo,
uchar *endpos, *prev_key; uchar *endpos, *prev_key;
MI_KEY_PARAM s_temp; MI_KEY_PARAM s_temp;
DBUG_ENTER("_mi_insert"); DBUG_ENTER("_mi_insert");
DBUG_PRINT("enter",("key_pos: %lx",key_pos)); DBUG_PRINT("enter",("key_pos: 0x%lx", (long) key_pos));
DBUG_EXECUTE("key",_mi_print_key(DBUG_FILE,keyinfo->seg,key,USE_WHOLE_KEY);); DBUG_EXECUTE("key",_mi_print_key(DBUG_FILE,keyinfo->seg,key,USE_WHOLE_KEY););
nod_flag=mi_test_if_nod(anc_buff); nod_flag=mi_test_if_nod(anc_buff);
@ -483,8 +483,8 @@ int _mi_insert(register MI_INFO *info, register MI_KEYDEF *keyinfo,
{ {
DBUG_PRINT("test",("t_length: %d ref_len: %d", DBUG_PRINT("test",("t_length: %d ref_len: %d",
t_length,s_temp.ref_length)); t_length,s_temp.ref_length));
DBUG_PRINT("test",("n_ref_len: %d n_length: %d key_pos: %lx", DBUG_PRINT("test",("n_ref_len: %d n_length: %d key_pos: 0x%lx",
s_temp.n_ref_length,s_temp.n_length,s_temp.key)); s_temp.n_ref_length,s_temp.n_length, (long) s_temp.key));
} }
#endif #endif
if (t_length > 0) if (t_length > 0)
@ -677,7 +677,8 @@ uchar *_mi_find_half_pos(uint nod_flag, MI_KEYDEF *keyinfo, uchar *page,
} while (page < end); } while (page < end);
*return_key_length=length; *return_key_length=length;
*after_key=page; *after_key=page;
DBUG_PRINT("exit",("returns: %lx page: %lx half: %lx",lastpos,page,end)); DBUG_PRINT("exit",("returns: 0x%lx page: 0x%lx half: 0x%lx",
(long) lastpos, (long) page, (long) end));
DBUG_RETURN(lastpos); DBUG_RETURN(lastpos);
} /* _mi_find_half_pos */ } /* _mi_find_half_pos */
@ -732,7 +733,8 @@ static uchar *_mi_find_last_pos(MI_KEYDEF *keyinfo, uchar *page,
} }
*return_key_length=last_length; *return_key_length=last_length;
*after_key=lastpos; *after_key=lastpos;
DBUG_PRINT("exit",("returns: %lx page: %lx end: %lx",prevpos,page,end)); DBUG_PRINT("exit",("returns: 0x%lx page: 0x%lx end: 0x%lx",
(long) prevpos,(long) page,(long) end));
DBUG_RETURN(prevpos); DBUG_RETURN(prevpos);
} /* _mi_find_last_pos */ } /* _mi_find_last_pos */
@ -768,7 +770,7 @@ static int _mi_balance_page(register MI_INFO *info, MI_KEYDEF *keyinfo,
next_page= _mi_kpos(info->s->base.key_reflength, next_page= _mi_kpos(info->s->base.key_reflength,
father_key_pos+father_keylength); father_key_pos+father_keylength);
buff=info->buff; buff=info->buff;
DBUG_PRINT("test",("use right page: %lu",next_page)); DBUG_PRINT("test",("use right page: %lu", (ulong) next_page));
} }
else else
{ {
@ -777,7 +779,7 @@ static int _mi_balance_page(register MI_INFO *info, MI_KEYDEF *keyinfo,
next_page= _mi_kpos(info->s->base.key_reflength,father_key_pos); next_page= _mi_kpos(info->s->base.key_reflength,father_key_pos);
/* Fix that curr_buff is to left */ /* Fix that curr_buff is to left */
buff=curr_buff; curr_buff=info->buff; buff=curr_buff; curr_buff=info->buff;
DBUG_PRINT("test",("use left page: %lu",next_page)); DBUG_PRINT("test",("use left page: %lu", (ulong) next_page));
} /* father_key_pos ptr to parting key */ } /* father_key_pos ptr to parting key */
if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,info->buff,0)) if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,info->buff,0))

View File

@ -2726,6 +2726,7 @@ static int compress_isam_file(PACK_MRG_INFO *mrg, HUFF_COUNTS *huff_counts)
break; break;
} }
case FIELD_LAST: case FIELD_LAST:
case FIELD_enum_val_count:
abort(); /* Impossible */ abort(); /* Impossible */
} }
start_pos+=count->max_zero_fill; start_pos+=count->max_zero_fill;

View File

@ -28,7 +28,7 @@ int myrg_extra(MYRG_INFO *info,enum ha_extra_function function,
int error,save_error=0; int error,save_error=0;
MYRG_TABLE *file; MYRG_TABLE *file;
DBUG_ENTER("myrg_extra"); DBUG_ENTER("myrg_extra");
DBUG_PRINT("info",("function: %d",(ulong) function)); DBUG_PRINT("info",("function: %lu", (ulong) function));
if (function == HA_EXTRA_CACHE) if (function == HA_EXTRA_CACHE)
{ {

View File

@ -58,6 +58,7 @@ dist-hook:
$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t $(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t
$(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include $(INSTALL_DATA) $(srcdir)/include/*.inc $(distdir)/include
$(INSTALL_DATA) $(srcdir)/include/*.test $(distdir)/include
$(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r $(INSTALL_DATA) $(srcdir)/r/*.result $(srcdir)/r/*.require $(distdir)/r
$(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/Moscow_leap $(distdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.dat $(srcdir)/std_data/*.000001 $(distdir)/std_data
@ -87,6 +88,7 @@ install-data-local:
$(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r $(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r
$(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r $(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r
$(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include $(INSTALL_DATA) $(srcdir)/include/*.inc $(DESTDIR)$(testdir)/include
$(INSTALL_DATA) $(srcdir)/include/*.test $(DESTDIR)$(testdir)/include
$(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.dat $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.*001 $(DESTDIR)$(testdir)/std_data
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data

View File

@ -5,7 +5,7 @@ source ./include/master-slave.inc;
# remote table creation # remote table creation
connection slave; connection slave;
--replicate-ignore-db=federated #--replicate-ignore-db=federated
stop slave; stop slave;
--disable_warnings --disable_warnings

View File

@ -1,6 +1,6 @@
delimiter |; delimiter |;
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE PROCEDURE sp_vars_check_dflt() CREATE PROCEDURE sp_vars_check_dflt()
BEGIN BEGIN
@ -40,7 +40,7 @@ BEGIN
SELECT v17, v18, v19, v20; SELECT v17, v18, v19, v20;
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE PROCEDURE sp_vars_check_assignment() CREATE PROCEDURE sp_vars_check_assignment()
BEGIN BEGIN
@ -89,35 +89,35 @@ BEGIN
SELECT d1, d2, d3; SELECT d1, d2, d3;
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
BEGIN BEGIN
RETURN 1e200; RETURN 1e200;
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
BEGIN BEGIN
RETURN 10 * 10 * 10; RETURN 10 * 10 * 10;
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
BEGIN BEGIN
RETURN 'Hello, world'; RETURN 'Hello, world';
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2) CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
BEGIN BEGIN
RETURN 12 * 10 + 34 + 0.1234; RETURN 12 * 10 + 34 + 0.1234;
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
BEGIN BEGIN
@ -126,6 +126,6 @@ BEGIN
RETURN div_zero; RETURN div_zero;
END| END|
--------------------------------------------------------------------------- # --------------------------------------------------------------------------
delimiter ;| delimiter ;|

View File

@ -2,6 +2,10 @@
# Test for strict-mode autoincrement # Test for strict-mode autoincrement
# #
--disable_warnings
drop table if exists t1;
--enable_warnings
set @org_mode=@@sql_mode; set @org_mode=@@sql_mode;
eval create table t1 eval create table t1
( (

View File

@ -89,10 +89,14 @@ sub mtr_report_test_skipped ($) {
{ {
print "[ disabled ] $tinfo->{'comment'}\n"; print "[ disabled ] $tinfo->{'comment'}\n";
} }
else elsif ( $tinfo->{'comment'} )
{ {
print "[ skipped ] $tinfo->{'comment'}\n"; print "[ skipped ] $tinfo->{'comment'}\n";
} }
else
{
print "[ skipped ]\n";
}
} }
sub mtr_report_tests_not_skipped_though_disabled ($) { sub mtr_report_tests_not_skipped_though_disabled ($) {

View File

@ -0,0 +1,156 @@
#
# This file is used from mysql-test-run.pl when choosing
# port numbers and directories to use for running mysqld.
#
use strict;
use Fcntl ':flock';
#
# Requested IDs are stored in a hash and released upon END.
#
my %mtr_unique_assigned_ids = ();
END {
while(my ($id,$file) = each(%mtr_unique_assigned_ids)) {
print "Autoreleasing $file:$id\n";
mtr_release_unique_id($file, $id);
}
}
#
# Require a unique, numerical ID, given a file name (where all
# requested IDs are stored), a minimum and a maximum value.
#
# We use flock to implement locking for the ID file and ignore
# possible problems arising from lack of support for it on
# some platforms (it should work on most, and the possible
# race condition would occur rarely). The proper solution for
# this is a daemon that manages IDs, of course.
#
# If no unique ID within the specified parameters can be
# obtained, return undef.
#
sub mtr_require_unique_id($$$) {
my $file = shift;
my $min = shift;
my $max = shift;
my $ret = undef;
my $changed = 0;
my $can_use_ps = `ps -e | grep '^[ ]*$$ '`;
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
die 'lock file is a symbolic link';
}
chmod 0777, "$file.sem";
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
flock SEM, LOCK_EX or die "can't lock $file.sem";
if(! -e $file) {
open FILE, ">", $file or die "can't create $file";
close FILE;
}
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
die 'lock file is a symbolic link';
}
chmod 0777, $file;
open FILE, "+<", $file or die "can't open $file";
select undef,undef,undef,0.2;
seek FILE, 0, 0;
my %taken = ();
while(<FILE>) {
chomp;
my ($id, $pid) = split / /;
$taken{$id} = $pid;
if($can_use_ps) {
my $res = `ps -e | grep '^[ ]*$pid '`;
if(!$res) {
print "Ignoring slot $id used by missing process $pid.\n";
delete $taken{$id};
++$changed;
}
}
}
for(my $i=$min; $i<=$max; ++$i) {
if(! exists $taken{$i}) {
$ret = $i;
$taken{$i} = $$;
++$changed;
last;
}
}
if($changed) {
seek FILE, 0, 0;
truncate FILE, 0 or die "can't truncate $file";
for my $k (keys %taken) {
print FILE $k . ' ' . $taken{$k} . "\n";
}
}
close FILE;
flock SEM, LOCK_UN or warn "can't unlock $file.sem";
close SEM;
$mtr_unique_assigned_ids{$ret} = $file if defined $ret;
return $ret;
}
#
# Require a unique ID like above, but sleep if no ID can be
# obtained immediately.
#
sub mtr_require_unique_id_and_wait($$$) {
my $ret = mtr_require_unique_id($_[0],$_[1],$_[2]);
while(! defined $ret) {
sleep 30;
$ret = mtr_require_unique_id($_[0],$_[1],$_[2]);
print "Waiting for unique id to become available...\n" unless $ret;
}
return $ret;
}
#
# Release a unique ID.
#
sub mtr_release_unique_id($$) {
my $file = shift;
my $myid = shift;
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
die 'lock file is a symbolic link';
}
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
flock SEM, LOCK_EX or die "can't lock $file.sem";
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
die 'lock file is a symbolic link';
}
if(! -e $file) {
open FILE, ">", $file or die "can't create $file";
close FILE;
}
open FILE, "+<", $file or die "can't open $file";
select undef,undef,undef,0.2;
seek FILE, 0, 0;
my %taken = ();
while(<FILE>) {
chomp;
my ($id, $pid) = split / /;
$taken{$id} = $pid;
}
delete $taken{$myid};
seek FILE, 0, 0;
truncate FILE, 0 or die "can't truncate $file";
for my $k (keys %taken) {
print FILE $k . ' ' . $taken{$k} . "\n";
}
close FILE;
flock SEM, LOCK_UN or warn "can't unlock $file.sem";
close SEM;
delete $mtr_unique_assigned_ids{$myid};
}
1;

View File

@ -66,7 +66,6 @@ use IO::Socket::INET;
use Data::Dumper; use Data::Dumper;
use strict; use strict;
use warnings; use warnings;
use diagnostics;
select(STDOUT); select(STDOUT);
$| = 1; # Automatically flush STDOUT $| = 1; # Automatically flush STDOUT
@ -88,6 +87,7 @@ require "lib/mtr_diff.pl";
require "lib/mtr_match.pl"; require "lib/mtr_match.pl";
require "lib/mtr_misc.pl"; require "lib/mtr_misc.pl";
require "lib/mtr_stress.pl"; require "lib/mtr_stress.pl";
require "lib/mtr_unique.pl";
$Devel::Trace::TRACE= 1; $Devel::Trace::TRACE= 1;
@ -199,6 +199,7 @@ our $opt_client_ddd;
our $opt_manual_gdb; our $opt_manual_gdb;
our $opt_manual_ddd; our $opt_manual_ddd;
our $opt_manual_debug; our $opt_manual_debug;
our $opt_mtr_build_thread=0;
our $opt_debugger; our $opt_debugger;
our $opt_client_debugger; our $opt_client_debugger;
@ -213,6 +214,11 @@ our $clusters;
our $instance_manager; our $instance_manager;
our $opt_master_myport;
our $opt_slave_myport;
our $im_port;
our $im_mysqld1_port;
our $im_mysqld2_port;
our $opt_ndbcluster_port; our $opt_ndbcluster_port;
our $opt_ndbconnectstring; our $opt_ndbconnectstring;
our $opt_ndbcluster_port_slave; our $opt_ndbcluster_port_slave;
@ -313,6 +319,7 @@ our %mysqld_variables;
sub main (); sub main ();
sub initial_setup (); sub initial_setup ();
sub command_line_setup (); sub command_line_setup ();
sub set_mtr_build_thread_ports($);
sub datadir_setup (); sub datadir_setup ();
sub executable_setup (); sub executable_setup ();
sub environment_setup (); sub environment_setup ();
@ -441,7 +448,6 @@ sub main () {
mtr_exit(0); mtr_exit(0);
} }
############################################################################## ##############################################################################
# #
# Default settings # Default settings
@ -455,45 +461,17 @@ sub command_line_setup () {
$opt_suite= "main"; # Special default suite $opt_suite= "main"; # Special default suite
my $opt_comment; my $opt_comment;
my $opt_master_myport= 9306; $opt_master_myport= 9306;
my $opt_slave_myport= 9308; $opt_slave_myport= 9308;
$opt_ndbcluster_port= 9310; $opt_ndbcluster_port= 9310;
$opt_ndbcluster_port_slave= 9311; $opt_ndbcluster_port_slave= 9311;
my $im_port= 9312; $im_port= 9312;
my $im_mysqld1_port= 9313; $im_mysqld1_port= 9313;
my $im_mysqld2_port= 9314; $im_mysqld2_port= 9314;
#
# To make it easier for different devs to work on the same host,
# an environment variable can be used to control all ports. A small
# number is to be used, 0 - 16 or similar.
#
# Note the MASTER_MYPORT has to be set the same in all 4.x and 5.x
# versions of this script, else a 4.0 test run might conflict with a
# 5.1 test run, even if different MTR_BUILD_THREAD is used. This means
# all port numbers might not be used in this version of the script.
#
# Also note the limiteation of ports we are allowed to hand out. This
# differs between operating systems and configuration, see
# http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html
# But a fairly safe range seems to be 5001 - 32767
if ( $ENV{'MTR_BUILD_THREAD'} ) if ( $ENV{'MTR_BUILD_THREAD'} )
{ {
# Up to two masters, up to three slaves set_mtr_build_thread_ports($ENV{'MTR_BUILD_THREAD'});
$opt_master_myport= $ENV{'MTR_BUILD_THREAD'} * 10 + 10000; # and 1
$opt_slave_myport= $opt_master_myport + 2; # and 3 4
$opt_ndbcluster_port= $opt_master_myport + 5;
$opt_ndbcluster_port_slave= $opt_master_myport + 6;
$im_port= $opt_master_myport + 7;
$im_mysqld1_port= $opt_master_myport + 8;
$im_mysqld2_port= $opt_master_myport + 9;
}
if ( $opt_master_myport < 5001 or $opt_master_myport + 10 >= 32767 )
{
mtr_error("MTR_BUILD_THREAD number results in a port",
"outside 5001 - 32767",
"($opt_master_myport - $opt_master_myport + 10)");
} }
# This is needed for test log evaluation in "gen-build-status-page" # This is needed for test log evaluation in "gen-build-status-page"
@ -545,6 +523,7 @@ sub command_line_setup () {
'im-port=i' => \$im_port, # Instance Manager port. 'im-port=i' => \$im_port, # Instance Manager port.
'im-mysqld1-port=i' => \$im_mysqld1_port, # Port of mysqld, controlled by IM 'im-mysqld1-port=i' => \$im_mysqld1_port, # Port of mysqld, controlled by IM
'im-mysqld2-port=i' => \$im_mysqld2_port, # Port of mysqld, controlled by IM 'im-mysqld2-port=i' => \$im_mysqld2_port, # Port of mysqld, controlled by IM
'mtr-build-thread=i' => \$opt_mtr_build_thread,
# Test case authoring # Test case authoring
'record' => \$opt_record, 'record' => \$opt_record,
@ -627,6 +606,15 @@ sub command_line_setup () {
$glob_scriptname= basename($0); $glob_scriptname= basename($0);
if ($opt_mtr_build_thread != 0)
{
set_mtr_build_thread_ports($opt_mtr_build_thread)
}
elsif ($ENV{'MTR_BUILD_THREAD'})
{
$opt_mtr_build_thread= $ENV{'MTR_BUILD_THREAD'};
}
# We require that we are in the "mysql-test" directory # We require that we are in the "mysql-test" directory
# to run mysql-test-run # to run mysql-test-run
if (! -f $glob_scriptname) if (! -f $glob_scriptname)
@ -775,7 +763,7 @@ sub command_line_setup () {
{ {
mtr_report("Using tmpfs in $fs"); mtr_report("Using tmpfs in $fs");
$opt_mem= "$fs/var"; $opt_mem= "$fs/var";
$opt_mem .= $ENV{'MTR_BUILD_THREAD'} if $ENV{'MTR_BUILD_THREAD'}; $opt_mem .= $opt_mtr_build_thread if $opt_mtr_build_thread;
last; last;
} }
} }
@ -1230,6 +1218,43 @@ sub command_line_setup () {
$path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/"; $path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/";
} }
#
# To make it easier for different devs to work on the same host,
# an environment variable can be used to control all ports. A small
# number is to be used, 0 - 16 or similar.
#
# Note the MASTER_MYPORT has to be set the same in all 4.x and 5.x
# versions of this script, else a 4.0 test run might conflict with a
# 5.1 test run, even if different MTR_BUILD_THREAD is used. This means
# all port numbers might not be used in this version of the script.
#
# Also note the limitation of ports we are allowed to hand out. This
# differs between operating systems and configuration, see
# http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html
# But a fairly safe range seems to be 5001 - 32767
#
sub set_mtr_build_thread_ports() {
my $mtr_build_thread= shift;
# Up to two masters, up to three slaves
$opt_master_myport= $mtr_build_thread * 10 + 10000; # and 1
$opt_slave_myport= $opt_master_myport + 2; # and 3 4
$opt_ndbcluster_port= $opt_master_myport + 5;
$opt_ndbcluster_port_slave= $opt_master_myport + 6;
$im_port= $opt_master_myport + 7;
$im_mysqld1_port= $opt_master_myport + 8;
$im_mysqld2_port= $opt_master_myport + 9;
if ( $opt_master_myport < 5001 or $opt_master_myport + 10 >= 32767 )
{
mtr_error("MTR_BUILD_THREAD number results in a port",
"outside 5001 - 32767",
"($opt_master_myport - $opt_master_myport + 10)");
}
}
sub datadir_setup () { sub datadir_setup () {
# Make a list of all data_dirs # Make a list of all data_dirs
@ -1499,7 +1524,7 @@ sub executable_setup () {
$exe_mysql_client_test= $exe_mysql_client_test=
mtr_exe_maybe_exists(vs_config_dirs('tests', 'mysql_client_test'), mtr_exe_maybe_exists(vs_config_dirs('tests', 'mysql_client_test'),
"$glob_basedir/tests/mysql_client_test", "$glob_basedir/tests/mysql_client_test",
"$glob_basedir/bin"); "$glob_basedir/bin/mysql_client_test");
} }
} }
@ -1576,7 +1601,8 @@ sub environment_setup () {
if ( $opt_source_dist ) if ( $opt_source_dist )
{ {
push(@ld_library_paths, "$glob_basedir/libmysql/.libs/", push(@ld_library_paths, "$glob_basedir/libmysql/.libs/",
"$glob_basedir/libmysql_r/.libs/"); "$glob_basedir/libmysql_r/.libs/",
"$glob_basedir/zlib.libs/");
} }
else else
{ {
@ -1647,7 +1673,7 @@ sub environment_setup () {
$ENV{'IM_PATH_SOCK'}= $instance_manager->{path_sock}; $ENV{'IM_PATH_SOCK'}= $instance_manager->{path_sock};
$ENV{'IM_USERNAME'}= $instance_manager->{admin_login}; $ENV{'IM_USERNAME'}= $instance_manager->{admin_login};
$ENV{'IM_PASSWORD'}= $instance_manager->{admin_password}; $ENV{'IM_PASSWORD'}= $instance_manager->{admin_password};
$ENV{MTR_BUILD_THREAD}= 0 unless $ENV{MTR_BUILD_THREAD}; # Set if not set $ENV{MTR_BUILD_THREAD}= $opt_mtr_build_thread;
$ENV{'EXE_MYSQL'}= $exe_mysql; $ENV{'EXE_MYSQL'}= $exe_mysql;
@ -2045,6 +2071,12 @@ sub cleanup_stale_files () {
} }
closedir(DIR); closedir(DIR);
} }
# Remove old log files
foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
{
unlink($name);
}
} }
@ -2425,8 +2457,8 @@ sub ndbcluster_start ($$) {
sub rm_ndbcluster_tables ($) { sub rm_ndbcluster_tables ($) {
my $dir= shift; my $dir= shift;
foreach my $bin ( glob("$dir/cluster/apply_status*"), foreach my $bin ( glob("$dir/mysql/apply_status*"),
glob("$dir/cluster/schema*") ) glob("$dir/mysql/schema*"))
{ {
unlink($bin); unlink($bin);
} }
@ -2989,14 +3021,14 @@ sub find_testcase_skipped_reason($)
{ {
my ($tinfo)= @_; my ($tinfo)= @_;
# Open mysqltest.log # Open mysqltest-time
my $F= IO::File->new($path_timefile) or my $F= IO::File->new($path_timefile) or
mtr_error("can't open file \"$path_timefile\": $!"); mtr_error("can't open file \"$path_timefile\": $!");
my $reason; my $reason;
while ( my $line= <$F> ) while ( my $line= <$F> )
{ {
# Look for "reason: <reason fo skiping test>" # Look for "reason: <reason for skipping test>"
if ( $line =~ /reason: (.*)/ ) if ( $line =~ /reason: (.*)/ )
{ {
$reason= $1; $reason= $1;
@ -4089,12 +4121,12 @@ sub run_testcase_start_servers($) {
# tables ok FIXME This is a workaround so that only one mysqld # tables ok FIXME This is a workaround so that only one mysqld
# create the tables # create the tables
if ( ! sleep_until_file_created( if ( ! sleep_until_file_created(
"$master->[0]->{'path_myddir'}/cluster/apply_status.ndb", "$master->[0]->{'path_myddir'}/mysql/apply_status.ndb",
$master->[0]->{'start_timeout'}, $master->[0]->{'start_timeout'},
$master->[0]->{'pid'})) $master->[0]->{'pid'}))
{ {
$tinfo->{'comment'}= "Failed to create 'cluster/apply_status' table"; $tinfo->{'comment'}= "Failed to create 'mysql/apply_status' table";
return 1; return 1;
} }
} }
@ -4748,6 +4780,8 @@ Options that specify ports
slave_port=PORT Specify the port number used by the first slave slave_port=PORT Specify the port number used by the first slave
ndbcluster-port=PORT Specify the port number used by cluster ndbcluster-port=PORT Specify the port number used by cluster
ndbcluster-port-slave=PORT Specify the port number used by slave cluster ndbcluster-port-slave=PORT Specify the port number used by slave cluster
mtr-build-thread=# Specify unique collection of ports. Can also be set by
setting the environment variable MTR_BUILD_THREAD.
Options for test case authoring Options for test case authoring

View File

@ -123,7 +123,7 @@ find_valgrind()
fi fi
# >=2.1.2 requires the --tool option, some versions write to stdout, some to stderr # >=2.1.2 requires the --tool option, some versions write to stdout, some to stderr
valgrind --help 2>&1 | grep "\-\-tool" > /dev/null && FIND_VALGRIND="$FIND_VALGRIND --tool=memcheck" valgrind --help 2>&1 | grep "\-\-tool" > /dev/null && FIND_VALGRIND="$FIND_VALGRIND --tool=memcheck"
FIND_VALGRIND="$FIND_VALGRIND --alignment=8 --leak-check=yes --num-callers=16 --suppressions=$CWD/valgrind.supp" FIND_VALGRIND="$FIND_VALGRIND --alignment=8 --leak-check=yes --num-callers=16 --suppressions=$MYSQL_TEST_DIR/valgrind.supp"
} }
# No paths below as we can't be sure where the program is! # No paths below as we can't be sure where the program is!
@ -182,19 +182,14 @@ if [ -d ./sql ] ; then
SOURCE_DIST=1 SOURCE_DIST=1
else else
BINARY_DIST=1 BINARY_DIST=1
fi
# ... one level for tar.gz, two levels for a RPM installation # ... one level for tar.gz, two levels for a RPM installation
if [ -d ./bin ] ; then if [ ! -f ./bin/mysql_upgrade ] ; then
# this is not perfect: we have # Has to be RPM installation
# /usr/share/mysql/ # mysql-test-run is here, so this is "$MYSQL_TEST_DIR"
# /usr/bin/ # with MySQL client programs
# so the existence of "/usr/share/bin/" would make this test fail.
BASEDIR=`pwd`
else
cd .. cd ..
BASEDIR=`pwd`
fi fi
fi
BASEDIR=`pwd`
cd $MYSQL_TEST_DIR cd $MYSQL_TEST_DIR
MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR
@ -2092,12 +2087,15 @@ then
# Remove files that can cause problems # Remove files that can cause problems
$RM -rf $MYSQL_TEST_DIR/var/ndbcluster $RM -rf $MYSQL_TEST_DIR/var/ndbcluster
$RM -f $MYSQL_TEST_DIR/var/run/* $MYSQL_TEST_DIR/var/tmp/* $RM -rf $MYSQL_TEST_DIR/var/run/* $MYSQL_TEST_DIR/var/tmp/*
# Remove old berkeley db log files that can confuse the server # Remove old berkeley db log files that can confuse the server
$RM -f $MASTER_MYDDIR/log.* $RM -f $MASTER_MYDDIR/log.*
$RM -f $MASTER_MYDDIR"1"/log.* $RM -f $MASTER_MYDDIR"1"/log.*
# Remove old log and reject files
$RM -f r/*.reject r/*.progress r/*.log r/*.warnings
wait_for_master=$SLEEP_TIME_FOR_FIRST_MASTER wait_for_master=$SLEEP_TIME_FOR_FIRST_MASTER
wait_for_slave=$SLEEP_TIME_FOR_FIRST_SLAVE wait_for_slave=$SLEEP_TIME_FOR_FIRST_SLAVE
$ECHO "Installing Test Databases" $ECHO "Installing Test Databases"

View File

@ -1,3 +1,4 @@
DROP TABLE IF EXISTS t1;
SHOW COLLATION LIKE 'cp1250_czech_cs'; SHOW COLLATION LIKE 'cp1250_czech_cs';
Collation Charset Id Default Compiled Sortlen Collation Charset Id Default Compiled Sortlen
cp1250_czech_cs cp1250 34 Yes 2 cp1250_czech_cs cp1250 34 Yes 2

View File

@ -171,8 +171,8 @@ create table t1 (a char(10) character set koi8r, b text character set koi8r);
insert into t1 values ('test','test'); insert into t1 values ('test','test');
insert into t1 values ('ÊÃÕË','ÊÃÕË'); insert into t1 values ('ÊÃÕË','ÊÃÕË');
Warnings: Warnings:
Warning 1265 Data truncated for column 'a' at row 1 Warning 1366 Incorrect string value: '\xCA\xC3\xD5\xCB' for column 'a' at row 1
Warning 1265 Data truncated for column 'b' at row 1 Warning 1366 Incorrect string value: '\xCA\xC3\xD5\xCB' for column 'b' at row 1
drop table t1; drop table t1;
set names koi8r; set names koi8r;
create table t1 (a char(10) character set cp1251); create table t1 (a char(10) character set cp1251);

View File

@ -723,6 +723,28 @@ lily
river river
drop table t1; drop table t1;
deallocate prepare stmt; deallocate prepare stmt;
create table t1 (
a char(10) unicode not null,
index a (a)
) engine=myisam;
insert into t1 values (repeat(0x201f, 10));
insert into t1 values (repeat(0x2020, 10));
insert into t1 values (repeat(0x2021, 10));
explain select hex(a) from t1 order by a;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index NULL a 20 NULL 3 Using index
select hex(a) from t1 order by a;
hex(a)
201F201F201F201F201F201F201F201F201F201F
2020202020202020202020202020202020202020
2021202120212021202120212021202120212021
alter table t1 drop index a;
select hex(a) from t1 order by a;
hex(a)
201F201F201F201F201F201F201F201F201F201F
2020202020202020202020202020202020202020
2021202120212021202120212021202120212021
drop table t1;
CREATE TABLE t1 (id int, s char(5) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci); CREATE TABLE t1 (id int, s char(5) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci);
INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ'); INSERT INTO t1 VALUES (1, 'ZZZZZ'), (1, 'ZZZ'), (2, 'ZZZ'), (2, 'ZZZZZ');
SELECT id, MIN(s) FROM t1 GROUP BY id; SELECT id, MIN(s) FROM t1 GROUP BY id;

View File

@ -197,7 +197,7 @@ drop table t1;
create table t1 (s1 char(10) character set utf8); create table t1 (s1 char(10) character set utf8);
insert into t1 values (0x41FF); insert into t1 values (0x41FF);
Warnings: Warnings:
Warning 1265 Data truncated for column 's1' at row 1 Warning 1366 Incorrect string value: '\xFF' for column 's1' at row 1
select hex(s1) from t1; select hex(s1) from t1;
hex(s1) hex(s1)
41 41
@ -205,7 +205,7 @@ drop table t1;
create table t1 (s1 varchar(10) character set utf8); create table t1 (s1 varchar(10) character set utf8);
insert into t1 values (0x41FF); insert into t1 values (0x41FF);
Warnings: Warnings:
Warning 1265 Data truncated for column 's1' at row 1 Warning 1366 Incorrect string value: '\xFF' for column 's1' at row 1
select hex(s1) from t1; select hex(s1) from t1;
hex(s1) hex(s1)
41 41
@ -213,7 +213,7 @@ drop table t1;
create table t1 (s1 text character set utf8); create table t1 (s1 text character set utf8);
insert into t1 values (0x41FF); insert into t1 values (0x41FF);
Warnings: Warnings:
Warning 1265 Data truncated for column 's1' at row 1 Warning 1366 Incorrect string value: '\xFF' for column 's1' at row 1
select hex(s1) from t1; select hex(s1) from t1;
hex(s1) hex(s1)
41 41
@ -1536,6 +1536,32 @@ set @a:=null;
execute my_stmt using @a; execute my_stmt using @a;
a b a b
drop table if exists t1; drop table if exists t1;
drop table if exists t1;
drop view if exists v1, v2;
set names utf8;
create table t1(col1 varchar(12) character set utf8 collate utf8_unicode_ci);
insert into t1 values('t1_val');
create view v1 as select 'v1_val' as col1;
select coercibility(col1), collation(col1) from v1;
coercibility(col1) collation(col1)
4 utf8_general_ci
create view v2 as select col1 from v1 union select col1 from t1;
select coercibility(col1), collation(col1)from v2;
coercibility(col1) collation(col1)
2 utf8_unicode_ci
2 utf8_unicode_ci
drop view v1, v2;
create view v1 as select 'v1_val' collate utf8_swedish_ci as col1;
select coercibility(col1), collation(col1) from v1;
coercibility(col1) collation(col1)
0 utf8_swedish_ci
create view v2 as select col1 from v1 union select col1 from t1;
select coercibility(col1), collation(col1) from v2;
coercibility(col1) collation(col1)
0 utf8_swedish_ci
0 utf8_swedish_ci
drop view v1, v2;
drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
colA int(11) NOT NULL, colA int(11) NOT NULL,
colB varchar(255) character set utf8 NOT NULL, colB varchar(255) character set utf8 NOT NULL,

View File

@ -372,10 +372,10 @@ t collation(t) FORMAT(MATCH t AGAINST ('Osnabruck'),6)
aus Osnabrück utf8_general_ci 1.591140 aus Osnabrück utf8_general_ci 1.591140
alter table t1 modify t varchar(200) collate latin1_german2_ci not null; alter table t1 modify t varchar(200) collate latin1_german2_ci not null;
Warnings: Warnings:
Warning 1265 Data truncated for column 't' at row 3 Warning 1366 Incorrect string value: '\xD0\xAD\xD1\x82\xD0\xBE...' for column 't' at row 3
Warning 1265 Data truncated for column 't' at row 4 Warning 1366 Incorrect string value: '\xD0\x9E\xD1\x82\xD0\xBB...' for column 't' at row 4
Warning 1265 Data truncated for column 't' at row 5 Warning 1366 Incorrect string value: '\xD0\x9D\xD0\xB5 \xD0...' for column 't' at row 5
Warning 1265 Data truncated for column 't' at row 6 Warning 1366 Incorrect string value: '\xD0\xB8 \xD0\xB1\xD1...' for column 't' at row 6
SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrück'); SELECT t, collation(t) FROM t1 WHERE MATCH t AGAINST ('Osnabrück');
t collation(t) t collation(t)
aus Osnabrück latin1_german2_ci aus Osnabrück latin1_german2_ci

View File

@ -658,3 +658,73 @@ GROUP_CONCAT(a) x
2 1,2 2 1,2
1 2,3 1 2,3
DROP TABLE t1; DROP TABLE t1;
set names utf8;
create table t1
(
x text character set utf8 not null,
y integer not null
);
insert into t1 values (repeat('a', 1022), 0), (repeat(_utf8 0xc3b7, 4), 0);
set group_concat_max_len= 1022 + 10;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1032 1031 1027 aaaaaaa,÷÷÷÷ C3B7C3B7C3B7
set group_concat_max_len= 1022 + 9;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1031 1031 1027 aaaaaaa,÷÷÷÷ C3B7C3B7C3B7
set group_concat_max_len= 1022 + 8;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1030 1029 1026 aaaaaaaa,÷÷÷ C3B7C3B7C3B7
set group_concat_max_len= 1022 + 7;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1029 1029 1026 aaaaaaaa,÷÷÷ C3B7C3B7C3B7
set group_concat_max_len= 1022 + 6;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1028 1027 1025 aaaaaaaaa,÷÷ 612CC3B7C3B7
set group_concat_max_len= 1022 + 5;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1027 1027 1025 aaaaaaaaa,÷÷ 612CC3B7C3B7
set group_concat_max_len= 1022 + 4;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1026 1025 1024 aaaaaaaaaa,÷ 6161612CC3B7
set group_concat_max_len= 1022 + 3;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1025 1025 1024 aaaaaaaaaa,÷ 6161612CC3B7
set group_concat_max_len= 1022 + 2;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1024 1023 1023 aaaaaaaaaaa, 61616161612C
set group_concat_max_len= 1022 + 1;
select @x:=group_concat(x) from t1 group by y;
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
@@group_concat_max_len length(@x) char_length(@x) right(@x,12) right(HEX(@x),12)
1023 1023 1023 aaaaaaaaaaa, 61616161612C
drop table t1;
set group_concat_max_len=1024;
set names latin1;
create table t1 (f1 int unsigned, f2 varchar(255));
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
select f2,group_concat(f1) from t1 group by f2;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 t1 f2 f2 253 255 255 Y 0 0 8
def group_concat(f1) 252 1024 1 Y 128 0 63
f2 group_concat(f1)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 2
drop table t1;

View File

@ -1029,3 +1029,29 @@ t1 CREATE TABLE `t1` (
`stddev(0)` double(8,4) default NULL `stddev(0)` double(8,4) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1; drop table t1;
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8);
INSERT INTO t1 SELECT a, b+8 FROM t1;
INSERT INTO t1 SELECT a, b+16 FROM t1;
INSERT INTO t1 SELECT a, b+32 FROM t1;
INSERT INTO t1 SELECT a, b+64 FROM t1;
INSERT INTO t1 SELECT a, b+128 FROM t1;
INSERT INTO t1 SELECT a, b+256 FROM t1;
INSERT INTO t1 SELECT a, b+512 FROM t1;
INSERT INTO t1 SELECT a, b+1024 FROM t1;
INSERT INTO t1 SELECT a, b+2048 FROM t1;
INSERT INTO t1 SELECT a, b+4096 FROM t1;
INSERT INTO t1 SELECT a, b+8192 FROM t1;
INSERT INTO t1 SELECT a, b+16384 FROM t1;
INSERT INTO t1 SELECT a, b+32768 FROM t1;
SELECT a,COUNT(DISTINCT b) AS cnt FROM t1 GROUP BY a HAVING cnt > 50;
a cnt
1 65536
SELECT a,SUM(DISTINCT b) AS sumation FROM t1 GROUP BY a HAVING sumation > 50;
a sumation
1 2147516416
SELECT a,AVG(DISTINCT b) AS average FROM t1 GROUP BY a HAVING average > 50;
a average
1 32768.5000
DROP TABLE t1;
End of 5.0 tests

View File

@ -873,3 +873,11 @@ SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
1 1
1 1
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
INSERT INTO t1(foo) VALUES (NULL);
ERROR 23000: Column 'foo' cannot be null
INSERT INTO t1() VALUES ();
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
INSERT INTO t1(foo) VALUES ('');
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
DROP TABLE t1;

View File

@ -1254,3 +1254,18 @@ COLUMN_NAME MD5(COLUMN_DEFAULT) LENGTH(COLUMN_DEFAULT) COLUMN_DEFAULT=get_value(
fld1 7cf7a6782be951a1f2464a350da926a5 65532 1 fld1 7cf7a6782be951a1f2464a350da926a5 65532 1
DROP TABLE bug23037; DROP TABLE bug23037;
DROP FUNCTION get_value; DROP FUNCTION get_value;
create view v1 as
select table_schema as object_schema,
table_name as object_name,
table_type as object_type
from information_schema.tables
order by object_schema;
explain select * from v1;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
2 DERIVED tables ALL NULL NULL NULL NULL 2 Using filesort
explain select * from (select table_name from information_schema.tables) as a;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
2 DERIVED tables ALL NULL NULL NULL NULL 2
drop view v1;

View File

@ -84,3 +84,27 @@ create table t2 like T1;
drop table t1, t2; drop table t1, t2;
show tables; show tables;
Tables_in_test Tables_in_test
set names utf8;
drop table if exists İ,İİ;
create table İ (s1 int);
show create table İ;
Table Create Table
İ CREATE TABLE `i` (
`s1` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
show tables;
Tables_in_test
i
drop table İ;
create table İİ (s1 int);
show create table İİ;
Table Create Table
İİ CREATE TABLE `ii` (
`s1` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
show tables;
Tables_in_test
ii
drop table İİ;
set names latin1;
End of 5.0 tests

View File

@ -96,3 +96,37 @@ i
2 2
affected rows: 1 affected rows: 1
affected rows: 0 affected rows: 0
create table t1 (id int(10));
insert into t1 values (1);
CREATE VIEW v1 AS select t1.id as id from t1;
CREATE VIEW v2 AS select t1.id as renamed from t1;
CREATE VIEW v3 AS select t1.id + 12 as renamed from t1;
select * from v1 group by id limit 1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 id id 3 10 1 Y 32768 0 63
id
1
select * from v1 group by id limit 0;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 id id 3 10 0 Y 32768 0 63
id
select * from v1 where id=1000 group by id;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 id id 3 10 0 Y 32768 0 63
id
select * from v1 where id=1 group by id;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v1 id id 3 10 1 Y 32768 0 63
id
1
select * from v2 where renamed=1 group by renamed;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def test t1 v2 id renamed 3 10 1 Y 32768 0 63
renamed
1
select * from v3 where renamed=1 group by renamed;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def v3 renamed 8 12 0 Y 32896 0 63
renamed
drop table t1;
drop view v1,v2,v3;

Some files were not shown because too many files have changed in this diff Show More