Commit 89bd09fe authored by konstantin@mysql.com's avatar konstantin@mysql.com

Manual merge (again)

parents 3ff39b37 6c981c0b
...@@ -57,6 +57,7 @@ case "$cpu_family--$model_name" in ...@@ -57,6 +57,7 @@ case "$cpu_family--$model_name" in
;; ;;
*Pentium*M*pro*) *Pentium*M*pro*)
cpu_flag="pentium-m"; cpu_flag="pentium-m";
cpu_flag_old="pentium";
;; ;;
*Athlon*64*) *Athlon*64*)
cpu_flag="athlon64"; cpu_flag="athlon64";
......
...@@ -1014,7 +1014,7 @@ vi_histedit(EditLine *el, int c) ...@@ -1014,7 +1014,7 @@ vi_histedit(EditLine *el, int c)
return CC_ERROR; return CC_ERROR;
case 0: case 0:
close(fd); close(fd);
execlp("vi", "vi", tempfile, 0); execlp("vi", "vi", tempfile, (char *) NULL);
exit(0); exit(0);
/*NOTREACHED*/ /*NOTREACHED*/
default: default:
......
...@@ -141,8 +141,11 @@ AC_ARG_WITH(darwin-mwcc, ...@@ -141,8 +141,11 @@ AC_ARG_WITH(darwin-mwcc,
export CC CXX LD AR RANLIB export CC CXX LD AR RANLIB
AC_SUBST(AR) AC_SUBST(AR)
AC_SUBST(RANLIB) AC_SUBST(RANLIB)
with_darwin_mwcc=yes
]) ])
AM_CONDITIONAL(DARWIN_MWCC, test x$with_darwin_mwcc = xyes)
if test "x${CFLAGS-}" = x ; then if test "x${CFLAGS-}" = x ; then
cflags_is_set=no cflags_is_set=no
else else
......
...@@ -384,6 +384,7 @@ unsigned int STDCALL mysql_warning_count(MYSQL *mysql); ...@@ -384,6 +384,7 @@ unsigned int STDCALL mysql_warning_count(MYSQL *mysql);
const char * STDCALL mysql_info(MYSQL *mysql); const char * STDCALL mysql_info(MYSQL *mysql);
unsigned long STDCALL mysql_thread_id(MYSQL *mysql); unsigned long STDCALL mysql_thread_id(MYSQL *mysql);
const char * STDCALL mysql_character_set_name(MYSQL *mysql); const char * STDCALL mysql_character_set_name(MYSQL *mysql);
int STDCALL mysql_set_character_set(MYSQL *mysql, char *csname);
MYSQL * STDCALL mysql_init(MYSQL *mysql); MYSQL * STDCALL mysql_init(MYSQL *mysql);
my_bool STDCALL mysql_ssl_set(MYSQL *mysql, const char *key, my_bool STDCALL mysql_ssl_set(MYSQL *mysql, const char *key,
......
...@@ -1885,10 +1885,18 @@ row_create_table_for_mysql( ...@@ -1885,10 +1885,18 @@ row_create_table_for_mysql(
trx_general_rollback_for_mysql(trx, FALSE, NULL); trx_general_rollback_for_mysql(trx, FALSE, NULL);
if (err == DB_OUT_OF_FILE_SPACE) { if (err == DB_OUT_OF_FILE_SPACE) {
fputs("InnoDB: Warning: cannot create table ", stderr); ut_print_timestamp(stderr);
fputs(" InnoDB: Warning: cannot create table ",
stderr);
ut_print_name(stderr, trx, table->name); ut_print_name(stderr, trx, table->name);
fputs(" because tablespace full\n", stderr); fputs(" because tablespace full\n", stderr);
row_drop_table_for_mysql(table->name, trx, FALSE);
if (dict_table_get_low(table->name)) {
row_drop_table_for_mysql(table->name, trx,
FALSE);
}
} else if (err == DB_DUPLICATE_KEY) { } else if (err == DB_DUPLICATE_KEY) {
ut_print_timestamp(stderr); ut_print_timestamp(stderr);
......
...@@ -1495,6 +1495,36 @@ const char * STDCALL mysql_character_set_name(MYSQL *mysql) ...@@ -1495,6 +1495,36 @@ const char * STDCALL mysql_character_set_name(MYSQL *mysql)
return mysql->charset->csname; return mysql->charset->csname;
} }
int STDCALL mysql_set_character_set(MYSQL *mysql, char *cs_name)
{
struct charset_info_st *cs;
const char *save_csdir = charsets_dir;
if (mysql->options.charset_dir)
charsets_dir = mysql->options.charset_dir;
if ( (cs = get_charset_by_csname(cs_name, MY_CS_PRIMARY, MYF(0))) )
{
char buff[MY_CS_NAME_SIZE + 10];
charsets_dir = save_csdir;
sprintf(buff, "SET NAMES %s", cs_name);
if (!mysql_query(mysql, buff)) {
mysql->charset = cs;
}
} else {
char cs_dir_name[FN_REFLEN];
get_charsets_dir(cs_dir_name);
mysql->net.last_errno=CR_CANT_READ_CHARSET;
strmov(mysql->net.sqlstate, unknown_sqlstate);
my_snprintf(mysql->net.last_error, sizeof(mysql->net.last_error)-1,
ER(mysql->net.last_errno),
cs_name,
cs_dir_name);
}
charsets_dir = save_csdir;
return mysql->net.last_errno;
}
uint STDCALL mysql_thread_safe(void) uint STDCALL mysql_thread_safe(void)
{ {
...@@ -4375,8 +4405,11 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind) ...@@ -4375,8 +4405,11 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
/* /*
We only need to check that stmt->field_count - if it is not null We only need to check that stmt->field_count - if it is not null
stmt->bind was initialized in mysql_stmt_prepare stmt->bind was initialized in mysql_stmt_prepare
stmt->bind overlaps with bind if mysql_stmt_bind_param
is called from mysql_stmt_store_result.
*/ */
if (stmt->bind != bind)
memcpy((char*) stmt->bind, (char*) bind, sizeof(MYSQL_BIND) * bind_count); memcpy((char*) stmt->bind, (char*) bind, sizeof(MYSQL_BIND) * bind_count);
for (param= stmt->bind, end= param + bind_count, field= stmt->fields ; for (param= stmt->bind, end= param + bind_count, field= stmt->fields ;
......
...@@ -148,6 +148,7 @@ EXPORTS ...@@ -148,6 +148,7 @@ EXPORTS
mysql_embedded mysql_embedded
mysql_server_init mysql_server_init
mysql_server_end mysql_server_end
mysql_set_character_set
get_defaults_files get_defaults_files
get_charset_by_csname get_charset_by_csname
get_charsets_dir get_charsets_dir
......
...@@ -87,6 +87,9 @@ INC_LIB= $(top_builddir)/regex/libregex.a \ ...@@ -87,6 +87,9 @@ INC_LIB= $(top_builddir)/regex/libregex.a \
# generate a total libmysqld.a from all library files, # generate a total libmysqld.a from all library files,
libmysqld.a: libmysqld_int.a $(INC_LIB) libmysqld.a: libmysqld_int.a $(INC_LIB)
if DARWIN_MWCC
mwld -lib -o $@ libmysqld_int.a `ls -1 $(INC_LIB) | sort -u`
else
if test "$(host_os)" = "netware" ; \ if test "$(host_os)" = "netware" ; \
then \ then \
$(libmysqld_a_AR) libmysqld.a libmysqld_int.a $(INC_LIB) ; \ $(libmysqld_a_AR) libmysqld.a libmysqld_int.a $(INC_LIB) ; \
...@@ -108,7 +111,7 @@ libmysqld.a: libmysqld_int.a $(INC_LIB) ...@@ -108,7 +111,7 @@ libmysqld.a: libmysqld_int.a $(INC_LIB)
rm -f tmp/* ; \ rm -f tmp/* ; \
$(RANLIB) libmysqld.a ; \ $(RANLIB) libmysqld.a ; \
fi fi
endif
## XXX: any time the client interface changes, we'll need to bump ## XXX: any time the client interface changes, we'll need to bump
## the version info for libmysqld; however, it's possible for the ## the version info for libmysqld; however, it's possible for the
......
...@@ -606,6 +606,24 @@ ucs2_bin 00610009 ...@@ -606,6 +606,24 @@ ucs2_bin 00610009
ucs2_bin 0061 ucs2_bin 0061
ucs2_bin 00610020 ucs2_bin 00610020
drop table t1; drop table t1;
select hex(substr(_ucs2 0x00e400e50068,1));
hex(substr(_ucs2 0x00e400e50068,1))
00E400E50068
select hex(substr(_ucs2 0x00e400e50068,2));
hex(substr(_ucs2 0x00e400e50068,2))
00E50068
select hex(substr(_ucs2 0x00e400e50068,3));
hex(substr(_ucs2 0x00e400e50068,3))
0068
select hex(substr(_ucs2 0x00e400e50068,-1));
hex(substr(_ucs2 0x00e400e50068,-1))
0068
select hex(substr(_ucs2 0x00e400e50068,-2));
hex(substr(_ucs2 0x00e400e50068,-2))
00E50068
select hex(substr(_ucs2 0x00e400e50068,-3));
hex(substr(_ucs2 0x00e400e50068,-3))
00E400E50068
SET NAMES latin1; SET NAMES latin1;
SET collation_connection='ucs2_swedish_ci'; SET collation_connection='ucs2_swedish_ci';
CREATE TABLE t1 (Field1 int(10) default '0'); CREATE TABLE t1 (Field1 int(10) default '0');
......
...@@ -376,6 +376,16 @@ SET NAMES latin1; ...@@ -376,6 +376,16 @@ SET NAMES latin1;
SET collation_connection='ucs2_bin'; SET collation_connection='ucs2_bin';
-- source include/ctype_filesort.inc -- source include/ctype_filesort.inc
#
# Bug#10344 Some string functions fail for UCS2
#
select hex(substr(_ucs2 0x00e400e50068,1));
select hex(substr(_ucs2 0x00e400e50068,2));
select hex(substr(_ucs2 0x00e400e50068,3));
select hex(substr(_ucs2 0x00e400e50068,-1));
select hex(substr(_ucs2 0x00e400e50068,-2));
select hex(substr(_ucs2 0x00e400e50068,-3));
SET NAMES latin1; SET NAMES latin1;
# #
# Bug#8235 # Bug#8235
......
# Can't test grants with embedded server # Can't test grants with embedded server
-- source include/not_embedded.inc -- source include/not_embedded.inc
# Tested here simply so it is not tested with embedded server
prepare stmt4 from ' show full processlist ';
--replace_column 1 number 6 time 3 localhost
execute stmt4;
let $type= 'MYISAM' ; let $type= 'MYISAM' ;
...@@ -116,6 +112,11 @@ show grants for second_user@localhost ; ...@@ -116,6 +112,11 @@ show grants for second_user@localhost ;
drop database mysqltest; drop database mysqltest;
# Tested here simply so it is not tested with embedded server
prepare stmt4 from ' show full processlist ';
--replace_column 1 number 6 time 3 localhost
execute stmt4;
## grant/revoke + drop user ## grant/revoke + drop user
--error 1295 --error 1295
prepare stmt3 from ' grant all on test.t1 to drop_user@localhost prepare stmt3 from ' grant all on test.t1 to drop_user@localhost
......
...@@ -132,8 +132,9 @@ THR_LOCK_DATA **ha_blackhole::store_lock(THD *thd, ...@@ -132,8 +132,9 @@ THR_LOCK_DATA **ha_blackhole::store_lock(THD *thd,
THR_LOCK_DATA **to, THR_LOCK_DATA **to,
enum thr_lock_type lock_type) enum thr_lock_type lock_type)
{ {
if (lock_type != TL_IGNORE && lock.type == TL_UNLOCK)
lock.type=lock_type;
*to++= &lock; *to++= &lock;
return to; return to;
} }
......
...@@ -3307,7 +3307,7 @@ bool get_key_map_from_key_list(key_map *map, TABLE *table, ...@@ -3307,7 +3307,7 @@ bool get_key_map_from_key_list(key_map *map, TABLE *table,
0) 0)
{ {
my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0),
name->c_ptr(), table->s->table_name); name->c_ptr_safe(), table->s->table_name);
map->set_all(); map->set_all();
return 1; return 1;
} }
......
...@@ -6301,7 +6301,7 @@ uint my_well_formed_len_big5(CHARSET_INFO *cs __attribute__((unused)), ...@@ -6301,7 +6301,7 @@ uint my_well_formed_len_big5(CHARSET_INFO *cs __attribute__((unused)),
const char *emb= e - 1; /* Last possible end of an MB character */ const char *emb= e - 1; /* Last possible end of an MB character */
*error= 0; *error= 0;
while (pos && b < e) while (pos-- && b < e)
{ {
if ((uchar) b[0] < 128) if ((uchar) b[0] < 128)
{ {
......
...@@ -1267,7 +1267,7 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)), ...@@ -1267,7 +1267,7 @@ uint my_charpos_ucs2(CHARSET_INFO *cs __attribute__((unused)),
const char *e __attribute__((unused)), const char *e __attribute__((unused)),
uint pos) uint pos)
{ {
return pos*2; return pos > e - b ? e - b + 2 : pos * 2;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment