merged
This commit is contained in:
commit
b962da9aab
@ -29,6 +29,7 @@ jorge@linux.jorge.mysql.com
|
|||||||
kaj@work.mysql.com
|
kaj@work.mysql.com
|
||||||
lenz@kallisto.mysql.com
|
lenz@kallisto.mysql.com
|
||||||
lenz@mysql.com
|
lenz@mysql.com
|
||||||
|
miguel@hegel.br
|
||||||
miguel@hegel.local
|
miguel@hegel.local
|
||||||
miguel@light.local
|
miguel@light.local
|
||||||
monty@bitch.mysql.fi
|
monty@bitch.mysql.fi
|
||||||
@ -43,6 +44,7 @@ monty@tramp.mysql.fi
|
|||||||
monty@work.mysql.com
|
monty@work.mysql.com
|
||||||
mwagner@cash.mwagner.org
|
mwagner@cash.mwagner.org
|
||||||
mwagner@evoq.mwagner.org
|
mwagner@evoq.mwagner.org
|
||||||
|
nick@mysql.com
|
||||||
nick@nick.leippe.com
|
nick@nick.leippe.com
|
||||||
paul@central.snake.net
|
paul@central.snake.net
|
||||||
paul@teton.kitebird.com
|
paul@teton.kitebird.com
|
||||||
@ -75,5 +77,3 @@ worm@altair.is.lan
|
|||||||
zak@balfor.local
|
zak@balfor.local
|
||||||
zak@linux.local
|
zak@linux.local
|
||||||
zgreant@mysql.com
|
zgreant@mysql.com
|
||||||
miguel@hegel.br
|
|
||||||
nick@mysql.com
|
|
||||||
|
@ -51057,11 +51057,14 @@ not yet 100% confident in this code.
|
|||||||
@appendixsubsec Changes in release 3.23.53
|
@appendixsubsec Changes in release 3.23.53
|
||||||
@itemize @bullet
|
@itemize @bullet
|
||||||
@item
|
@item
|
||||||
|
Fixed a @code{BDB}-related @code{ALTER TABLE} bug with dropping a column
|
||||||
|
and shutting down immediately thereafter.
|
||||||
|
@item
|
||||||
Fixed problem with @code{configure ... --localstatedir=...}.
|
Fixed problem with @code{configure ... --localstatedir=...}.
|
||||||
@item
|
@item
|
||||||
Fixed problem with @code{UNSIGNED BIGINT} on AIX (again).
|
Fixed problem with @code{UNSIGNED BIGINT} on AIX (again).
|
||||||
@item
|
@item
|
||||||
Fixed bug in pthread_mutex_trylock() on HPUX 11.0
|
Fixed bug in pthread_mutex_trylock() on HPUX 11.0.
|
||||||
@item
|
@item
|
||||||
Multithreaded stress tests for InnoDB.
|
Multithreaded stress tests for InnoDB.
|
||||||
@end itemize
|
@end itemize
|
||||||
|
@ -90,6 +90,8 @@ case "$target_os" in
|
|||||||
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX -DUNIV_HPUX10";;
|
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX -DUNIV_HPUX10";;
|
||||||
hp*)
|
hp*)
|
||||||
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX";;
|
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE -DUNIV_HPUX";;
|
||||||
|
aix*)
|
||||||
|
CFLAGS="$CFLAGS -DUNIV_AIX";;
|
||||||
irix*)
|
irix*)
|
||||||
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
|
CFLAGS="$CFLAGS -DUNIV_MUST_NOT_INLINE";;
|
||||||
osf*)
|
osf*)
|
||||||
|
@ -11,6 +11,7 @@ Created 10/21/1995 Heikki Tuuri
|
|||||||
#include "ut0mem.h"
|
#include "ut0mem.h"
|
||||||
#include "srv0srv.h"
|
#include "srv0srv.h"
|
||||||
#include "fil0fil.h"
|
#include "fil0fil.h"
|
||||||
|
#include "buf0buf.h"
|
||||||
|
|
||||||
#undef HAVE_FDATASYNC
|
#undef HAVE_FDATASYNC
|
||||||
|
|
||||||
@ -2105,6 +2106,7 @@ os_aio_simulated_handle(
|
|||||||
ibool ret;
|
ibool ret;
|
||||||
ulint n;
|
ulint n;
|
||||||
ulint i;
|
ulint i;
|
||||||
|
ulint len2;
|
||||||
|
|
||||||
segment = os_aio_get_array_and_local_segment(&array, global_segment);
|
segment = os_aio_get_array_and_local_segment(&array, global_segment);
|
||||||
|
|
||||||
@ -2260,6 +2262,29 @@ consecutive_loop:
|
|||||||
|
|
||||||
/* Do the i/o with ordinary, synchronous i/o functions: */
|
/* Do the i/o with ordinary, synchronous i/o functions: */
|
||||||
if (slot->type == OS_FILE_WRITE) {
|
if (slot->type == OS_FILE_WRITE) {
|
||||||
|
if (array == os_aio_write_array) {
|
||||||
|
|
||||||
|
/* Do a 'last millisecond' check that the page end
|
||||||
|
is sensible; reported page checksum errors from
|
||||||
|
Linux seem to wipe over the page end */
|
||||||
|
|
||||||
|
for (len2 = 0; len2 + UNIV_PAGE_SIZE <= total_len;
|
||||||
|
len2 += UNIV_PAGE_SIZE) {
|
||||||
|
if (mach_read_from_4(combined_buf + len2
|
||||||
|
+ FIL_PAGE_LSN + 4)
|
||||||
|
!= mach_read_from_4(combined_buf + len2
|
||||||
|
+ UNIV_PAGE_SIZE
|
||||||
|
- FIL_PAGE_END_LSN + 4)) {
|
||||||
|
ut_print_timestamp(stderr);
|
||||||
|
fprintf(stderr,
|
||||||
|
" InnoDB: ERROR: The page to be written seems corrupt!\n");
|
||||||
|
page_print(combined_buf + len2);
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: ERROR: The page to be written seems corrupt!\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret = os_file_write(slot->name, slot->file, combined_buf,
|
ret = os_file_write(slot->name, slot->file, combined_buf,
|
||||||
slot->offset, slot->offset_high, total_len);
|
slot->offset, slot->offset_high, total_len);
|
||||||
} else {
|
} else {
|
||||||
|
@ -128,8 +128,28 @@ os_thread_create(
|
|||||||
|
|
||||||
pthread_attr_init(&attr);
|
pthread_attr_init(&attr);
|
||||||
|
|
||||||
|
#ifdef UNIV_AIX
|
||||||
|
/* We must make sure a thread stack is at least 32 kB, otherwise
|
||||||
|
InnoDB might crash; we do not know if the default stack size on
|
||||||
|
AIX is always big enough. An empirical test on AIX-4.3 suggested
|
||||||
|
the size was 96 kB, though. */
|
||||||
|
|
||||||
|
ret = pthread_attr_setstacksize(&attr,
|
||||||
|
(size_t)(PTHREAD_STACK_MIN + 32 * 1024));
|
||||||
|
if (ret) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Error: pthread_attr_setstacksize returned %d\n", ret);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
ret = pthread_create(&pthread, &attr, start_f, arg);
|
ret = pthread_create(&pthread, &attr, start_f, arg);
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Error: pthread_create returned %d\n", ret);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
pthread_attr_destroy(&attr);
|
pthread_attr_destroy(&attr);
|
||||||
|
|
||||||
if (srv_set_thread_priorities) {
|
if (srv_set_thread_priorities) {
|
||||||
|
@ -1350,7 +1350,9 @@ row_create_table_for_mysql(
|
|||||||
"InnoDB: creating an InnoDB table with the same name in another\n"
|
"InnoDB: creating an InnoDB table with the same name in another\n"
|
||||||
"InnoDB: database and moving the .frm file to the current database.\n"
|
"InnoDB: database and moving the .frm file to the current database.\n"
|
||||||
"InnoDB: Then MySQL thinks the table exists, and DROP TABLE will\n"
|
"InnoDB: Then MySQL thinks the table exists, and DROP TABLE will\n"
|
||||||
"InnoDB: succeed.\n");
|
"InnoDB: succeed.\n"
|
||||||
|
"InnoDB: You can look further help from section 15.1 of\n"
|
||||||
|
"InnoDB: http://www.innodb.com/ibman.html\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
trx->error_state = DB_SUCCESS;
|
trx->error_state = DB_SUCCESS;
|
||||||
@ -1872,7 +1874,9 @@ row_drop_table_for_mysql(
|
|||||||
" InnoDB: Error: table %s does not exist in the InnoDB internal\n"
|
" InnoDB: Error: table %s does not exist in the InnoDB internal\n"
|
||||||
"InnoDB: data dictionary though MySQL is trying to drop it.\n"
|
"InnoDB: data dictionary though MySQL is trying to drop it.\n"
|
||||||
"InnoDB: Have you copied the .frm file of the table to the\n"
|
"InnoDB: Have you copied the .frm file of the table to the\n"
|
||||||
"InnoDB: MySQL database directory from another database?\n",
|
"InnoDB: MySQL database directory from another database?\n"
|
||||||
|
"InnoDB: You can look further help from section 15.1 of\n"
|
||||||
|
"InnoDB: http://www.innodb.com/ibman.html\n",
|
||||||
name);
|
name);
|
||||||
goto funct_exit;
|
goto funct_exit;
|
||||||
}
|
}
|
||||||
@ -2194,7 +2198,9 @@ row_rename_table_for_mysql(
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
" InnoDB: Error: table %s exists in the InnoDB internal data\n"
|
" InnoDB: Error: table %s exists in the InnoDB internal data\n"
|
||||||
"InnoDB: dictionary though MySQL is trying rename table %s to it.\n"
|
"InnoDB: dictionary though MySQL is trying rename table %s to it.\n"
|
||||||
"InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n",
|
"InnoDB: Have you deleted the .frm file and not used DROP TABLE?\n"
|
||||||
|
"InnoDB: You can look further help from section 15.1 of\n"
|
||||||
|
"InnoDB: http://www.innodb.com/ibman.html\n",
|
||||||
new_name, old_name);
|
new_name, old_name);
|
||||||
|
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
4
mysql-test/r/bdb-alter-table-1.result
Normal file
4
mysql-test/r/bdb-alter-table-1.result
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
objid tablename oid test
|
||||||
|
1 t1 4 9
|
||||||
|
2 metatable 1 9
|
||||||
|
3 metaindex 1 9
|
4
mysql-test/r/bdb-alter-table-2.result
Normal file
4
mysql-test/r/bdb-alter-table-2.result
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
objid tablename oid
|
||||||
|
1 t1 4
|
||||||
|
2 metatable 1
|
||||||
|
3 metaindex 1
|
12
mysql-test/t/bdb-alter-table-1.test
Normal file
12
mysql-test/t/bdb-alter-table-1.test
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
-- source include/have_bdb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Small basic test for ALTER TABLE bug ..
|
||||||
|
#
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1(objid BIGINT not null, tablename varchar(64), oid BIGINT not null, test BIGINT, PRIMARY KEY (objid), UNIQUE(tablename)) type=BDB;
|
||||||
|
insert into t1 values(1, 't1',4,9);
|
||||||
|
insert into t1 values(2, 'metatable',1,9);
|
||||||
|
insert into t1 values(3, 'metaindex',1,9 );
|
||||||
|
select * from t1;
|
||||||
|
alter table t1 drop column test;
|
3
mysql-test/t/bdb-alter-table-2.test
Normal file
3
mysql-test/t/bdb-alter-table-2.test
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
-- source include/have_bdb.inc
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
@ -975,7 +975,9 @@ Cannot find table %s from the internal data dictionary\n\
|
|||||||
of InnoDB though the .frm file for the table exists. Maybe you\n\
|
of InnoDB though the .frm file for the table exists. Maybe you\n\
|
||||||
have deleted and recreated InnoDB data files but have forgotten\n\
|
have deleted and recreated InnoDB data files but have forgotten\n\
|
||||||
to delete the corresponding .frm files of InnoDB tables, or you\n\
|
to delete the corresponding .frm files of InnoDB tables, or you\n\
|
||||||
have moved .frm files to another database?",
|
have moved .frm files to another database?\n\
|
||||||
|
Look from section 15.1 of http://www.innodb.com/ibman.html\n\
|
||||||
|
how you can resolve the problem.\n",
|
||||||
norm_name);
|
norm_name);
|
||||||
|
|
||||||
free_share(share);
|
free_share(share);
|
||||||
|
@ -1871,11 +1871,6 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
|||||||
VOID(pthread_cond_broadcast(&COND_refresh));
|
VOID(pthread_cond_broadcast(&COND_refresh));
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
#ifdef HAVE_BERKELEY_DB
|
|
||||||
extern bool berkeley_flush_logs(void);
|
|
||||||
if (old_db_type == DB_TYPE_BERKELEY_DB && berkeley_flush_logs())
|
|
||||||
goto err;
|
|
||||||
#endif
|
|
||||||
thd->proc_info="end";
|
thd->proc_info="end";
|
||||||
mysql_update_log.write(thd, thd->query,thd->query_length);
|
mysql_update_log.write(thd, thd->query,thd->query_length);
|
||||||
if (mysql_bin_log.is_open())
|
if (mysql_bin_log.is_open())
|
||||||
@ -1885,6 +1880,14 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
|||||||
}
|
}
|
||||||
VOID(pthread_cond_broadcast(&COND_refresh));
|
VOID(pthread_cond_broadcast(&COND_refresh));
|
||||||
VOID(pthread_mutex_unlock(&LOCK_open));
|
VOID(pthread_mutex_unlock(&LOCK_open));
|
||||||
|
#ifdef HAVE_BERKELEY_DB
|
||||||
|
if (old_db_type == DB_TYPE_BERKELEY_DB)
|
||||||
|
{
|
||||||
|
extern bool berkeley_flush_logs(void);
|
||||||
|
(void)berkeley_flush_logs();
|
||||||
|
table=open_ltable(thd,table_list,TL_READ);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
table_list->table=0; // For query cache
|
table_list->table=0; // For query cache
|
||||||
query_cache_invalidate3(thd, table_list, 0);
|
query_cache_invalidate3(thd, table_list, 0);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user