Commit aa0d0d20 authored by unknown's avatar unknown

Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0

into sinisa.nasamreza.org:/mnt/work/mysql-4.0

parents d289accb 9dce7500
...@@ -709,20 +709,37 @@ AC_DEFUN(MYSQL_CHECK_VIO, [ ...@@ -709,20 +709,37 @@ AC_DEFUN(MYSQL_CHECK_VIO, [
]) ])
AC_DEFUN(MYSQL_FIND_OPENSSL, [ AC_DEFUN(MYSQL_FIND_OPENSSL, [
for d in /usr/ssl/include /usr/local/ssl/include /usr/include \ incs="$1"
libs="$2"
case "$incs---$libs" in
---)
for d in /usr/ssl/include /usr/local/ssl/include /usr/include \
/usr/include/ssl /opt/ssl/include /opt/openssl/include \ /usr/include/ssl /opt/ssl/include /opt/openssl/include \
/usr/local/ssl/include /usr/local/include ; do /usr/local/ssl/include /usr/local/include ; do
if test -f $d/openssl/ssl.h ; then if test -f $d/openssl/ssl.h ; then
OPENSSL_INCLUDE=-I$d OPENSSL_INCLUDE=-I$d
fi fi
done done
for d in /usr/ssl/lib /usr/local/ssl/lib /usr/lib/openssl \ for d in /usr/ssl/lib /usr/local/ssl/lib /usr/lib/openssl \
/usr/lib /usr/lib64 /opt/ssl/lib /opt/openssl/lib /usr/local/lib/ ; do /usr/lib /usr/lib64 /opt/ssl/lib /opt/openssl/lib /usr/local/lib/ ; do
if test -f $d/libssl.a ; then if test -f $d/libssl.a ; then
OPENSSL_LIB=$d OPENSSL_LIB=$d
fi fi
done done
;;
---* | *---)
AC_MSG_ERROR([if either 'includes' or 'libs' is specified, both must be specified])
;;
* )
if test -f $incs/openssl/ssl.h ; then
OPENSSL_INCLUDE=-I$incs
fi
if test -f $libs/libssl.a ; then
OPENSSL_LIB=$libs
fi
;;
esac
# On RedHat 9 we need kerberos to compile openssl # On RedHat 9 we need kerberos to compile openssl
for d in /usr/kerberos/include for d in /usr/kerberos/include
...@@ -752,11 +769,23 @@ AC_MSG_CHECKING(for OpenSSL) ...@@ -752,11 +769,23 @@ AC_MSG_CHECKING(for OpenSSL)
[openssl="$withval"], [openssl="$withval"],
[openssl=no]) [openssl=no])
openssl_libs="" AC_ARG_WITH([openssl-includes],
openssl_includes="" [
--with-openssl-includes=DIR
Find OpenSSL headers in DIR],
[openssl_includes="$withval"],
[openssl_includes=""])
AC_ARG_WITH([openssl-libs],
[
--with-openssl-libs=DIR
Find OpenSSL libraries in DIR],
[openssl_libs="$withval"],
[openssl_libs=""])
if test "$openssl" = "yes" if test "$openssl" = "yes"
then then
MYSQL_FIND_OPENSSL MYSQL_FIND_OPENSSL([$openssl_includes], [$openssl_libs])
#force VIO use #force VIO use
vio_dir="vio" vio_dir="vio"
vio_libs="../vio/libvio.la" vio_libs="../vio/libvio.la"
......
...@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script. ...@@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_INIT(sql/mysqld.cc) 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!
AM_INIT_AUTOMAKE(mysql, 4.0.14) AM_INIT_AUTOMAKE(mysql, 4.0.15)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
PROTOCOL_VERSION=10 PROTOCOL_VERSION=10
......
...@@ -1107,6 +1107,10 @@ btr_cur_pessimistic_insert( ...@@ -1107,6 +1107,10 @@ btr_cur_pessimistic_insert(
if (big_rec_vec == NULL) { if (big_rec_vec == NULL) {
if (n_extents > 0) {
fil_space_release_free_extents(index->space,
n_extents);
}
return(DB_TOO_BIG_RECORD); return(DB_TOO_BIG_RECORD);
} }
} }
...@@ -1784,21 +1788,6 @@ btr_cur_pessimistic_update( ...@@ -1784,21 +1788,6 @@ btr_cur_pessimistic_update(
trx->id); trx->id);
} }
page_cursor = btr_cur_get_page_cur(cursor);
/* Store state of explicit locks on rec on the page infimum record,
before deleting rec. The page infimum acts as a dummy carrier of the
locks, taking care also of lock releases, before we can move the locks
back on the actual record. There is a special case: if we are
inserting on the root page and the insert causes a call of
btr_root_raise_and_insert. Therefore we cannot in the lock system
delete the lock structs set on the root page even if the root
page carries just node pointers. */
lock_rec_store_on_page_infimum(rec);
btr_search_update_hash_on_delete(cursor);
if (flags & BTR_NO_UNDO_LOG_FLAG) { if (flags & BTR_NO_UNDO_LOG_FLAG) {
/* We are in a transaction rollback undoing a row /* We are in a transaction rollback undoing a row
update: we must free possible externally stored fields update: we must free possible externally stored fields
...@@ -1819,10 +1808,6 @@ btr_cur_pessimistic_update( ...@@ -1819,10 +1808,6 @@ btr_cur_pessimistic_update(
ext_vect = mem_heap_alloc(heap, sizeof(ulint) * rec_get_n_fields(rec)); ext_vect = mem_heap_alloc(heap, sizeof(ulint) * rec_get_n_fields(rec));
n_ext_vect = btr_push_update_extern_fields(ext_vect, rec, update); n_ext_vect = btr_push_update_extern_fields(ext_vect, rec, update);
page_cur_delete_rec(page_cursor, mtr);
page_cur_move_to_prev(page_cursor);
if ((rec_get_converted_size(new_entry) >= if ((rec_get_converted_size(new_entry) >=
page_get_free_space_of_empty() / 2) page_get_free_space_of_empty() / 2)
|| (rec_get_converted_size(new_entry) >= REC_MAX_DATA_SIZE)) { || (rec_get_converted_size(new_entry) >= REC_MAX_DATA_SIZE)) {
...@@ -1833,10 +1818,31 @@ btr_cur_pessimistic_update( ...@@ -1833,10 +1818,31 @@ btr_cur_pessimistic_update(
mem_heap_free(heap); mem_heap_free(heap);
err = DB_TOO_BIG_RECORD;
goto return_after_reservations; goto return_after_reservations;
} }
} }
page_cursor = btr_cur_get_page_cur(cursor);
/* Store state of explicit locks on rec on the page infimum record,
before deleting rec. The page infimum acts as a dummy carrier of the
locks, taking care also of lock releases, before we can move the locks
back on the actual record. There is a special case: if we are
inserting on the root page and the insert causes a call of
btr_root_raise_and_insert. Therefore we cannot in the lock system
delete the lock structs set on the root page even if the root
page carries just node pointers. */
lock_rec_store_on_page_infimum(rec);
btr_search_update_hash_on_delete(cursor);
page_cur_delete_rec(page_cursor, mtr);
page_cur_move_to_prev(page_cursor);
rec = btr_cur_insert_if_possible(cursor, new_entry, rec = btr_cur_insert_if_possible(cursor, new_entry,
&dummy_reorganized, mtr); &dummy_reorganized, mtr);
ut_a(rec || optim_err != DB_UNDERFLOW); ut_a(rec || optim_err != DB_UNDERFLOW);
......
...@@ -39,6 +39,14 @@ int mi_lock_database(MI_INFO *info, int lock_type) ...@@ -39,6 +39,14 @@ int mi_lock_database(MI_INFO *info, int lock_type)
if (share->options & HA_OPTION_READ_ONLY_DATA || if (share->options & HA_OPTION_READ_ONLY_DATA ||
info->lock_type == lock_type) info->lock_type == lock_type)
DBUG_RETURN(0); DBUG_RETURN(0);
if (lock_type == F_EXTRA_LCK)
{
++share->w_locks;
++share->tot_locks;
info->lock_type= lock_type;
DBUG_RETURN(0);
}
flag=error=0; flag=error=0;
pthread_mutex_lock(&share->intern_lock); pthread_mutex_lock(&share->intern_lock);
if (share->kfile >= 0) /* May only be false on windows */ if (share->kfile >= 0) /* May only be false on windows */
......
...@@ -878,10 +878,7 @@ static int myisamchk(MI_CHECK *param, my_string filename) ...@@ -878,10 +878,7 @@ static int myisamchk(MI_CHECK *param, my_string filename)
param->error_printed=0; param->error_printed=0;
goto end2; goto end2;
} }
share->w_locks++; /* Mark for writeinfo */ mi_lock_database(info, F_EXTRA_LCK);
share->tot_locks++;
info->lock_type= F_EXTRA_LCK; /* Simulate as locked */
info->tmp_lock_type=lock_type;
datafile=info->dfile; datafile=info->dfile;
if (param->testflag & (T_REP_ANY | T_SORT_RECORDS | T_SORT_INDEX)) if (param->testflag & (T_REP_ANY | T_SORT_RECORDS | T_SORT_INDEX))
...@@ -1057,8 +1054,7 @@ static int myisamchk(MI_CHECK *param, my_string filename) ...@@ -1057,8 +1054,7 @@ static int myisamchk(MI_CHECK *param, my_string filename)
VOID(lock_file(param, share->kfile,0L,F_UNLCK,"indexfile",filename)); VOID(lock_file(param, share->kfile,0L,F_UNLCK,"indexfile",filename));
info->update&= ~HA_STATE_CHANGED; info->update&= ~HA_STATE_CHANGED;
} }
share->w_locks--; mi_lock_database(info, F_UNLCK);
share->tot_locks--;
end2: end2:
if (mi_close(info)) if (mi_close(info))
{ {
...@@ -1412,6 +1408,12 @@ static int mi_sort_records(MI_CHECK *param, ...@@ -1412,6 +1408,12 @@ static int mi_sort_records(MI_CHECK *param,
param->error_printed=0; param->error_printed=0;
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
if (share->data_file_type == COMPRESSED_RECORD)
{
mi_check_print_error(param,"Can't sort read-only table '%s'", name);
param->error_printed=0;
DBUG_RETURN(-1);
}
if (!(param->testflag & T_SILENT)) if (!(param->testflag & T_SILENT))
{ {
printf("- Sorting records for MyISAM-table '%s'\n",name); printf("- Sorting records for MyISAM-table '%s'\n",name);
......
...@@ -559,7 +559,8 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize) ...@@ -559,7 +559,8 @@ int ha_myisam::repair(THD *thd, MI_CHECK &param, bool optimize)
strmov(fixed_name,file->filename); strmov(fixed_name,file->filename);
// Don't lock tables if we have used LOCK TABLE // Don't lock tables if we have used LOCK TABLE
if (!thd->locked_tables && mi_lock_database(file,F_WRLCK)) if (!thd->locked_tables &&
mi_lock_database(file, table->tmp_table ? F_EXTRA_LCK : F_WRLCK))
{ {
mi_check_print_error(&param,ER(ER_CANT_LOCK),my_errno); mi_check_print_error(&param,ER(ER_CANT_LOCK),my_errno);
DBUG_RETURN(HA_ADMIN_FAILED); DBUG_RETURN(HA_ADMIN_FAILED);
...@@ -999,9 +1000,9 @@ int ha_myisam::delete_table(const char *name) ...@@ -999,9 +1000,9 @@ int ha_myisam::delete_table(const char *name)
int ha_myisam::external_lock(THD *thd, int lock_type) int ha_myisam::external_lock(THD *thd, int lock_type)
{ {
if (!table->tmp_table) return mi_lock_database(file, !table->tmp_table ?
return mi_lock_database(file,lock_type); lock_type : ((lock_type == F_UNLCK) ?
return 0; F_UNLCK : F_EXTRA_LCK));
} }
......
...@@ -725,7 +725,7 @@ static void acl_insert_user(const char *user, const char *host, ...@@ -725,7 +725,7 @@ static void acl_insert_user(const char *user, const char *host,
ulong privileges) ulong privileges)
{ {
ACL_USER acl_user; ACL_USER acl_user;
acl_user.user=strdup_root(&mem,user); acl_user.user=*user ? strdup_root(&mem,user) : 0;
update_hostname(&acl_user.host,strdup_root(&mem,host)); update_hostname(&acl_user.host,strdup_root(&mem,host));
acl_user.password=0; acl_user.password=0;
acl_user.access=privileges; acl_user.access=privileges;
......
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