Commit 157002b1 authored by unknown's avatar unknown

WL#3270 "Maria - cleanups of inherited MyISAM functionality"

Removing the "external lock" functionality from Maria (as two separate processes wanting to share a table
should not only my_lock() the data and index files but also the log files, and share memory
(as the latest data is in the page cache), it sounds useless to feature this).
Removing the MyISAM logging from Maria (as REDO logging will be done differently).


BitKeeper/deleted/.del-maria_log.c~1fb295a18c3f5d4c:
  Delete: storage/maria/maria_log.c
BitKeeper/deleted/.del-ma_log.c~4a44ec11d547772f:
  Delete: storage/maria/ma_log.c
include/maria.h:
  unneeded
storage/maria/Makefile.am:
  log removed
storage/maria/ma_check.c:
  external locking removed
storage/maria/ma_close.c:
  log removed
storage/maria/ma_delete.c:
  log removed
storage/maria/ma_delete_all.c:
  log removed. Unused var.
storage/maria/ma_dynrec.c:
  external locking removed
storage/maria/ma_extra.c:
  log removed
storage/maria/ma_init.c:
  log removed
storage/maria/ma_locking.c:
  external locking removed, log removed
storage/maria/ma_open.c:
  external locking removed, log removed
storage/maria/ma_static.c:
  log removed
storage/maria/ma_statrec.c:
  external locking removed
storage/maria/ma_test2.c:
  log removed
storage/maria/ma_test3.c:
  log removed
storage/maria/ma_update.c:
  log removed
storage/maria/ma_write.c:
  external locking removed, log removed
storage/maria/maria_chk.c:
  external locking removed
storage/maria/maria_def.h:
  log removed, maria_pid unused.
storage/maria/maria_pack.c:
  fixes for warnings (where pointers are like ulong and so %u is not enough).
parent 34dba480
...@@ -372,8 +372,6 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info, ...@@ -372,8 +372,6 @@ int maria_repair_parallel(HA_CHECK *param, register MARIA_HA *info,
const char *name, int rep_quick); const char *name, int rep_quick);
int maria_change_to_newfile(const char *filename, const char *old_ext, int maria_change_to_newfile(const char *filename, const char *old_ext,
const char *new_ext, uint raid_chunks, myf myflags); const char *new_ext, uint raid_chunks, myf myflags);
int maria_lock_file(HA_CHECK *param, File file, my_off_t start, int lock_type,
const char *filetype, const char *filename);
void maria_lock_memory(HA_CHECK *param); void maria_lock_memory(HA_CHECK *param);
int maria_update_state_info(HA_CHECK *param, MARIA_HA *info, uint update); int maria_update_state_info(HA_CHECK *param, MARIA_HA *info, uint update);
void maria_update_key_parts(MARIA_KEYDEF *keyinfo, ulong *rec_per_key_part, void maria_update_key_parts(MARIA_KEYDEF *keyinfo, ulong *rec_per_key_part,
......
...@@ -24,9 +24,8 @@ LDADD = @CLIENT_EXTRA_LDFLAGS@ libmaria.a \ ...@@ -24,9 +24,8 @@ LDADD = @CLIENT_EXTRA_LDFLAGS@ libmaria.a \
$(top_builddir)/dbug/libdbug.a \ $(top_builddir)/dbug/libdbug.a \
$(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@ $(top_builddir)/strings/libmystrings.a @ZLIB_LIBS@
pkglib_LIBRARIES = libmaria.a pkglib_LIBRARIES = libmaria.a
bin_PROGRAMS = maria_chk maria_log maria_pack maria_ftdump bin_PROGRAMS = maria_chk maria_pack maria_ftdump
maria_chk_DEPENDENCIES= $(LIBRARIES) maria_chk_DEPENDENCIES= $(LIBRARIES)
maria_log_DEPENDENCIES= $(LIBRARIES)
maria_pack_DEPENDENCIES=$(LIBRARIES) maria_pack_DEPENDENCIES=$(LIBRARIES)
noinst_PROGRAMS = ma_test1 ma_test2 ma_test3 ma_rt_test ma_sp_test noinst_PROGRAMS = ma_test1 ma_test2 ma_test3 ma_rt_test ma_sp_test
noinst_HEADERS = maria_def.h ma_rt_index.h ma_rt_key.h ma_rt_mbr.h ma_sp_defs.h ma_fulltext.h ma_ftdefs.h ma_ft_test1.h ma_ft_eval.h noinst_HEADERS = maria_def.h ma_rt_index.h ma_rt_key.h ma_rt_mbr.h ma_sp_defs.h ma_fulltext.h ma_ftdefs.h ma_ft_test1.h ma_ft_eval.h
...@@ -47,7 +46,7 @@ libmaria_a_SOURCES = ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c \ ...@@ -47,7 +46,7 @@ libmaria_a_SOURCES = ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c \
ma_delete.c \ ma_delete.c \
ma_rprev.c ma_rfirst.c ma_rlast.c ma_rsame.c \ ma_rprev.c ma_rfirst.c ma_rlast.c ma_rsame.c \
ma_rsamepos.c ma_panic.c ma_close.c ma_create.c\ ma_rsamepos.c ma_panic.c ma_close.c ma_create.c\
ma_range.c ma_dbug.c ma_checksum.c ma_log.c \ ma_range.c ma_dbug.c ma_checksum.c \
ma_changed.c ma_static.c ma_delete_all.c \ ma_changed.c ma_static.c ma_delete_all.c \
ma_delete_table.c ma_rename.c ma_check.c \ ma_delete_table.c ma_rename.c ma_check.c \
ma_keycache.c ma_preload.c ma_ft_parser.c \ ma_keycache.c ma_preload.c ma_ft_parser.c \
......
...@@ -1928,25 +1928,7 @@ int maria_change_to_newfile(const char * filename, const char * old_ext, ...@@ -1928,25 +1928,7 @@ int maria_change_to_newfile(const char * filename, const char * old_ext,
} /* maria_change_to_newfile */ } /* maria_change_to_newfile */
/* Locks a whole file */ /* Copy a block between two files */
/* Gives an error-message if file can't be locked */
int maria_lock_file(HA_CHECK *param, File file, my_off_t start, int lock_type,
const char *filetype, const char *filename)
{
if (my_lock(file,lock_type,start,F_TO_EOF,
param->testflag & T_WAIT_FOREVER ? MYF(MY_SEEK_NOT_DONE) :
MYF(MY_SEEK_NOT_DONE | MY_DONT_WAIT)))
{
_ma_check_print_error(param," %d when locking %s '%s'",my_errno,filetype,filename);
param->error_printed=2; /* Don't give that data is crashed */
return 1;
}
return 0;
} /* maria_lock_file */
/* Copy a block between two files */
int maria_filecopy(HA_CHECK *param, File to,File from,my_off_t start, int maria_filecopy(HA_CHECK *param, File to,File from,my_off_t start,
my_off_t length, const char *type) my_off_t length, const char *type)
......
...@@ -113,7 +113,6 @@ int maria_close(register MARIA_HA *info) ...@@ -113,7 +113,6 @@ int maria_close(register MARIA_HA *info)
if (info->dfile >= 0 && my_close(info->dfile,MYF(0))) if (info->dfile >= 0 && my_close(info->dfile,MYF(0)))
error = my_errno; error = my_errno;
maria_log_command(MARIA_LOG_CLOSE,info,NULL,0,error);
my_free((gptr) info,MYF(0)); my_free((gptr) info,MYF(0));
if (error) if (error)
......
...@@ -101,7 +101,6 @@ int maria_delete(MARIA_HA *info,const byte *record) ...@@ -101,7 +101,6 @@ int maria_delete(MARIA_HA *info,const byte *record)
info->state->records--; info->state->records--;
mi_sizestore(lastpos,info->lastpos); mi_sizestore(lastpos,info->lastpos);
maria_log_command(MARIA_LOG_DELETE,info,(byte*) lastpos,sizeof(lastpos),0);
VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE)); VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE));
allow_break(); /* Allow SIGHUP & SIGINT */ allow_break(); /* Allow SIGHUP & SIGINT */
if (info->invalidator != 0) if (info->invalidator != 0)
...@@ -115,7 +114,6 @@ int maria_delete(MARIA_HA *info,const byte *record) ...@@ -115,7 +114,6 @@ int maria_delete(MARIA_HA *info,const byte *record)
err: err:
save_errno=my_errno; save_errno=my_errno;
mi_sizestore(lastpos,info->lastpos); mi_sizestore(lastpos,info->lastpos);
maria_log_command(MARIA_LOG_DELETE,info,(byte*) lastpos, sizeof(lastpos),0);
if (save_errno != HA_ERR_RECORD_CHANGED) if (save_errno != HA_ERR_RECORD_CHANGED)
{ {
maria_print_error(info->s, HA_ERR_CRASHED); maria_print_error(info->s, HA_ERR_CRASHED);
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
int maria_delete_all_rows(MARIA_HA *info) int maria_delete_all_rows(MARIA_HA *info)
{ {
uint i; uint i;
char buf[22];
MARIA_SHARE *share=info->s; MARIA_SHARE *share=info->s;
MARIA_STATE_INFO *state=&share->state; MARIA_STATE_INFO *state=&share->state;
DBUG_ENTER("maria_delete_all_rows"); DBUG_ENTER("maria_delete_all_rows");
...@@ -49,7 +48,6 @@ int maria_delete_all_rows(MARIA_HA *info) ...@@ -49,7 +48,6 @@ int maria_delete_all_rows(MARIA_HA *info)
for (i=0 ; i < share->base.keys ; i++) for (i=0 ; i < share->base.keys ; i++)
state->key_root[i]= HA_OFFSET_ERROR; state->key_root[i]= HA_OFFSET_ERROR;
maria_log_command(MARIA_LOG_DELETE_ALL,info,(byte*) 0,0,0);
/* /*
If we are using delayed keys or if the user has done changes to the tables If we are using delayed keys or if the user has done changes to the tables
since it was locked then there may be key blocks in the key cache since it was locked then there may be key blocks in the key cache
......
...@@ -1529,12 +1529,6 @@ int _ma_read_rnd_dynamic_record(MARIA_HA *info, byte *buf, ...@@ -1529,12 +1529,6 @@ int _ma_read_rnd_dynamic_record(MARIA_HA *info, byte *buf,
if (info->lock_type == F_UNLCK) if (info->lock_type == F_UNLCK)
{ {
#ifndef UNSAFE_LOCKING #ifndef UNSAFE_LOCKING
if (share->tot_locks == 0)
{
if (my_lock(share->kfile,F_RDLCK,0L,F_TO_EOF,
MYF(MY_SEEK_NOT_DONE) | info->lock_wait))
DBUG_RETURN(my_errno);
}
#else #else
info->tmp_lock_type=F_RDLCK; info->tmp_lock_type=F_RDLCK;
#endif #endif
......
...@@ -397,7 +397,6 @@ int maria_extra(MARIA_HA *info, enum ha_extra_function function, void *extra_arg ...@@ -397,7 +397,6 @@ int maria_extra(MARIA_HA *info, enum ha_extra_function function, void *extra_arg
{ {
char tmp[1]; char tmp[1];
tmp[0]=function; tmp[0]=function;
maria_log_command(MARIA_LOG_EXTRA,info,(byte*) tmp,1,error);
} }
DBUG_RETURN(error); DBUG_RETURN(error);
} /* maria_extra */ } /* maria_extra */
......
...@@ -52,7 +52,6 @@ void maria_end(void) ...@@ -52,7 +52,6 @@ void maria_end(void)
if (maria_inited) if (maria_inited)
{ {
maria_inited= 0; maria_inited= 0;
VOID(maria_logging(0)); /* Close log if neaded */
ft_free_stopwords(); ft_free_stopwords();
pthread_mutex_destroy(&THR_LOCK_maria); pthread_mutex_destroy(&THR_LOCK_maria);
} }
......
...@@ -30,7 +30,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -30,7 +30,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
int error; int error;
uint count; uint count;
MARIA_SHARE *share=info->s; MARIA_SHARE *share=info->s;
uint flag;
DBUG_ENTER("maria_lock_database"); DBUG_ENTER("maria_lock_database");
DBUG_PRINT("enter",("lock_type: %d old lock %d r_locks: %u w_locks: %u " DBUG_PRINT("enter",("lock_type: %d old lock %d r_locks: %u w_locks: %u "
"global_changed: %d open_count: %u name: '%s'", "global_changed: %d open_count: %u name: '%s'",
...@@ -49,7 +48,7 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -49,7 +48,7 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
DBUG_RETURN(0); DBUG_RETURN(0);
} }
flag=error=0; 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 */
{ {
...@@ -117,23 +116,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -117,23 +116,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
maria_mark_crashed(info); maria_mark_crashed(info);
} }
} }
if (info->lock_type != F_EXTRA_LCK)
{
if (share->r_locks)
{ /* Only read locks left */
flag=1;
if (my_lock(share->kfile,F_RDLCK,0L,F_TO_EOF,
MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error)
error=my_errno;
}
else if (!share->w_locks)
{ /* No more locks */
flag=1;
if (my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,
MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error)
error=my_errno;
}
}
} }
info->opt_flag&= ~(READ_CACHE_USED | WRITE_CACHE_USED); info->opt_flag&= ~(READ_CACHE_USED | WRITE_CACHE_USED);
info->lock_type= F_UNLCK; info->lock_type= F_UNLCK;
...@@ -147,16 +129,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -147,16 +129,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
mysqld does not turn write locks to read locks, mysqld does not turn write locks to read locks,
so we're never here in mysqld. so we're never here in mysqld.
*/ */
if (share->w_locks == 1)
{
flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
MYF(MY_SEEK_NOT_DONE)))
{
error=my_errno;
break;
}
}
share->w_locks--; share->w_locks--;
share->r_locks++; share->r_locks++;
info->lock_type=lock_type; info->lock_type=lock_type;
...@@ -164,18 +136,9 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -164,18 +136,9 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
} }
if (!share->r_locks && !share->w_locks) if (!share->r_locks && !share->w_locks)
{ {
flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
info->lock_wait | MY_SEEK_NOT_DONE))
{
error=my_errno;
break;
}
if (_ma_state_info_read_dsk(share->kfile, &share->state, 1)) if (_ma_state_info_read_dsk(share->kfile, &share->state, 1))
{ {
error=my_errno; error=my_errno;
VOID(my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE)));
my_errno=error;
break; break;
} }
} }
...@@ -189,13 +152,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -189,13 +152,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
{ /* Change READONLY to RW */ { /* Change READONLY to RW */
if (share->r_locks == 1) if (share->r_locks == 1)
{ {
flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
MYF(info->lock_wait | MY_SEEK_NOT_DONE)))
{
error=my_errno;
break;
}
share->r_locks--; share->r_locks--;
share->w_locks++; share->w_locks++;
info->lock_type=lock_type; info->lock_type=lock_type;
...@@ -206,21 +162,11 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -206,21 +162,11 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
{ {
if (!share->w_locks) if (!share->w_locks)
{ {
flag=1;
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
info->lock_wait | MY_SEEK_NOT_DONE))
{
error=my_errno;
break;
}
if (!share->r_locks) if (!share->r_locks)
{ {
if (_ma_state_info_read_dsk(share->kfile, &share->state, 1)) if (_ma_state_info_read_dsk(share->kfile, &share->state, 1))
{ {
error=my_errno; error=my_errno;
VOID(my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,
info->lock_wait | MY_SEEK_NOT_DONE));
my_errno=error;
break; break;
} }
} }
...@@ -238,11 +184,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type) ...@@ -238,11 +184,6 @@ int maria_lock_database(MARIA_HA *info, int lock_type)
} }
} }
pthread_mutex_unlock(&share->intern_lock); pthread_mutex_unlock(&share->intern_lock);
#if defined(FULL_LOG) || defined(_lint)
lock_type|=(int) (flag << 8); /* Set bit to set if real lock */
maria_log_command(MARIA_LOG_LOCK,info,(byte*) &lock_type,sizeof(lock_type),
error);
#endif
DBUG_RETURN(error); DBUG_RETURN(error);
} /* maria_lock_database */ } /* maria_lock_database */
...@@ -381,14 +322,9 @@ int _ma_readinfo(register MARIA_HA *info, int lock_type, int check_keybuffer) ...@@ -381,14 +322,9 @@ int _ma_readinfo(register MARIA_HA *info, int lock_type, int check_keybuffer)
MARIA_SHARE *share=info->s; MARIA_SHARE *share=info->s;
if (!share->tot_locks) if (!share->tot_locks)
{ {
if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,
info->lock_wait | MY_SEEK_NOT_DONE))
DBUG_RETURN(1);
if (_ma_state_info_read_dsk(share->kfile, &share->state, 1)) if (_ma_state_info_read_dsk(share->kfile, &share->state, 1))
{ {
int error=my_errno ? my_errno : -1; int error=my_errno ? my_errno : -1;
VOID(my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,
MYF(MY_SEEK_NOT_DONE)));
my_errno=error; my_errno=error;
DBUG_RETURN(1); DBUG_RETURN(1);
} }
...@@ -438,10 +374,6 @@ int _ma_writeinfo(register MARIA_HA *info, uint operation) ...@@ -438,10 +374,6 @@ int _ma_writeinfo(register MARIA_HA *info, uint operation)
} }
#endif #endif
} }
if (!(operation & WRITEINFO_NO_UNLOCK) &&
my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,
MYF(MY_WME | MY_SEEK_NOT_DONE)) && !error)
DBUG_RETURN(1);
my_errno=olderror; my_errno=olderror;
} }
else if (operation) else if (operation)
......
/* Copyright (C) 2006 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*
Logging of MARIA commands and records on logfile for debugging
The log can be examined with help of the marialog command.
*/
#include "maria_def.h"
#if defined(MSDOS) || defined(__WIN__)
#include <fcntl.h>
#ifndef __WIN__
#include <process.h>
#endif
#endif
#ifdef VMS
#include <processes.h>
#endif
#undef GETPID /* For HPUX */
#ifdef THREAD
#define GETPID() (log_type == 1 ? (long) maria_pid : (long) my_thread_id());
#else
#define GETPID() maria_pid
#endif
/* Activate logging if flag is 1 and reset logging if flag is 0 */
static int log_type=0;
ulong maria_pid=0;
int maria_logging(int activate_log)
{
int error=0;
char buff[FN_REFLEN];
DBUG_ENTER("maria_logging");
log_type=activate_log;
if (activate_log)
{
if (!maria_pid)
maria_pid=(ulong) getpid();
if (maria_log_file < 0)
{
if ((maria_log_file = my_create(fn_format(buff,maria_log_filename,
"",".log",4),
0,(O_RDWR | O_BINARY | O_APPEND),MYF(0)))
< 0)
DBUG_RETURN(my_errno);
}
}
else if (maria_log_file >= 0)
{
error=my_close(maria_log_file,MYF(0)) ? my_errno : 0 ;
maria_log_file= -1;
}
DBUG_RETURN(error);
}
/* Logging of records and commands on logfile */
/* All logs starts with command(1) dfile(2) process(4) result(2) */
void _ma_log(enum maria_log_commands command, MARIA_HA *info,
const byte *buffert, uint length)
{
char buff[11];
int error,old_errno;
ulong pid=(ulong) GETPID();
old_errno=my_errno;
bzero(buff,sizeof(buff));
buff[0]=(char) command;
mi_int2store(buff+1,info->dfile);
mi_int4store(buff+3,pid);
mi_int2store(buff+9,length);
pthread_mutex_lock(&THR_LOCK_maria);
error=my_lock(maria_log_file,F_WRLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE));
VOID(my_write(maria_log_file,buff,sizeof(buff),MYF(0)));
VOID(my_write(maria_log_file,buffert,length,MYF(0)));
if (!error)
error=my_lock(maria_log_file,F_UNLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE));
pthread_mutex_unlock(&THR_LOCK_maria);
my_errno=old_errno;
}
void _ma_log_command(enum maria_log_commands command, MARIA_HA *info,
const byte *buffert, uint length, int result)
{
char buff[9];
int error,old_errno;
ulong pid=(ulong) GETPID();
old_errno=my_errno;
buff[0]=(char) command;
mi_int2store(buff+1,info->dfile);
mi_int4store(buff+3,pid);
mi_int2store(buff+7,result);
pthread_mutex_lock(&THR_LOCK_maria);
error=my_lock(maria_log_file,F_WRLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE));
VOID(my_write(maria_log_file,buff,sizeof(buff),MYF(0)));
if (buffert)
VOID(my_write(maria_log_file,buffert,length,MYF(0)));
if (!error)
error=my_lock(maria_log_file,F_UNLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE));
pthread_mutex_unlock(&THR_LOCK_maria);
my_errno=old_errno;
}
void _ma_log_record(enum maria_log_commands command, MARIA_HA *info,
const byte *record, my_off_t filepos, int result)
{
char buff[21],*pos;
int error,old_errno;
uint length;
ulong pid=(ulong) GETPID();
old_errno=my_errno;
if (!info->s->base.blobs)
length=info->s->base.reclength;
else
length=info->s->base.reclength+ _ma_calc_total_blob_length(info,record);
buff[0]=(char) command;
mi_int2store(buff+1,info->dfile);
mi_int4store(buff+3,pid);
mi_int2store(buff+7,result);
mi_sizestore(buff+9,filepos);
mi_int4store(buff+17,length);
pthread_mutex_lock(&THR_LOCK_maria);
error=my_lock(maria_log_file,F_WRLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE));
VOID(my_write(maria_log_file,buff,sizeof(buff),MYF(0)));
VOID(my_write(maria_log_file,(byte*) record,info->s->base.reclength,MYF(0)));
if (info->s->base.blobs)
{
MARIA_BLOB *blob,*end;
for (end=info->blobs+info->s->base.blobs, blob= info->blobs;
blob != end ;
blob++)
{
memcpy_fixed(&pos,record+blob->offset+blob->pack_length,sizeof(char*));
VOID(my_write(maria_log_file,pos,blob->length,MYF(0)));
}
}
if (!error)
error=my_lock(maria_log_file,F_UNLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE));
pthread_mutex_unlock(&THR_LOCK_maria);
my_errno=old_errno;
}
...@@ -75,7 +75,7 @@ MARIA_HA *_ma_test_if_reopen(char *filename) ...@@ -75,7 +75,7 @@ MARIA_HA *_ma_test_if_reopen(char *filename)
MARIA_HA *maria_open(const char *name, int mode, uint open_flags) MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
{ {
int lock_error,kfile,open_mode,save_errno,have_rtree=0; int kfile,open_mode,save_errno,have_rtree=0;
uint i,j,len,errpos,head_length,base_pos,offset,info_length,keys, uint i,j,len,errpos,head_length,base_pos,offset,info_length,keys,
key_parts,unique_key_parts,fulltext_keys,uniques; key_parts,unique_key_parts,fulltext_keys,uniques;
char name_buff[FN_REFLEN], org_name[FN_REFLEN], index_name[FN_REFLEN], char name_buff[FN_REFLEN], org_name[FN_REFLEN], index_name[FN_REFLEN],
...@@ -90,7 +90,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) ...@@ -90,7 +90,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
LINT_INIT(m_info); LINT_INIT(m_info);
kfile= -1; kfile= -1;
lock_error=1;
errpos=0; errpos=0;
head_length=sizeof(share_buff.state.header); head_length=sizeof(share_buff.state.header);
bzero((byte*) &info,sizeof(info)); bzero((byte*) &info,sizeof(info));
...@@ -176,14 +175,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) ...@@ -176,14 +175,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
errpos=2; errpos=2;
VOID(my_seek(kfile,0L,MY_SEEK_SET,MYF(0))); VOID(my_seek(kfile,0L,MY_SEEK_SET,MYF(0)));
if (!(open_flags & HA_OPEN_TMP_TABLE))
{
if ((lock_error=my_lock(kfile,F_RDLCK,0L,F_TO_EOF,
MYF(open_flags & HA_OPEN_WAIT_IF_LOCKED ?
0 : MY_DONT_WAIT))) &&
!(open_flags & HA_OPEN_IGNORE_IF_LOCKED))
goto err;
}
errpos=3; errpos=3;
if (my_read(kfile,disk_cache,info_length,MYF(MY_NABP))) if (my_read(kfile,disk_cache,info_length,MYF(MY_NABP)))
{ {
...@@ -451,12 +442,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) ...@@ -451,12 +442,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
} }
share->rec[i].type=(int) FIELD_LAST; /* End marker */ share->rec[i].type=(int) FIELD_LAST; /* End marker */
if (! lock_error)
{
VOID(my_lock(kfile,F_UNLCK,0L,F_TO_EOF,MYF(MY_SEEK_NOT_DONE)));
lock_error=1; /* Database unlocked */
}
if (_ma_open_datafile(&info, share, -1)) if (_ma_open_datafile(&info, share, -1))
goto err; goto err;
errpos=5; errpos=5;
...@@ -613,11 +598,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) ...@@ -613,11 +598,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
maria_open_list=list_add(maria_open_list,&m_info->open_list); maria_open_list=list_add(maria_open_list,&m_info->open_list);
pthread_mutex_unlock(&THR_LOCK_maria); pthread_mutex_unlock(&THR_LOCK_maria);
if (maria_log_file >= 0)
{
intern_filename(name_buff,share->index_file_name);
_ma_log(MARIA_LOG_OPEN,m_info,name_buff,(uint) strlen(name_buff));
}
DBUG_RETURN(m_info); DBUG_RETURN(m_info);
err: err:
...@@ -639,8 +619,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags) ...@@ -639,8 +619,6 @@ MARIA_HA *maria_open(const char *name, int mode, uint open_flags)
my_free((gptr) share,MYF(0)); my_free((gptr) share,MYF(0));
/* fall through */ /* fall through */
case 3: case 3:
if (! lock_error)
VOID(my_lock(kfile, F_UNLCK, 0L, F_TO_EOF, MYF(MY_SEEK_NOT_DONE)));
/* fall through */ /* fall through */
case 2: case 2:
my_afree((gptr) disk_cache); my_afree((gptr) disk_cache);
......
...@@ -28,8 +28,6 @@ uchar NEAR maria_file_magic[]= ...@@ -28,8 +28,6 @@ uchar NEAR maria_file_magic[]=
{ (uchar) 254, (uchar) 254,'\007', '\001', }; { (uchar) 254, (uchar) 254,'\007', '\001', };
uchar NEAR maria_pack_file_magic[]= uchar NEAR maria_pack_file_magic[]=
{ (uchar) 254, (uchar) 254,'\010', '\002', }; { (uchar) 254, (uchar) 254,'\010', '\002', };
my_string maria_log_filename=(char*) "maria.log";
File maria_log_file= -1;
uint maria_quick_table_bits=9; uint maria_quick_table_bits=9;
ulong maria_block_size= MARIA_KEY_BLOCK_LENGTH; ulong maria_block_size= MARIA_KEY_BLOCK_LENGTH;
my_bool maria_flush=0, maria_delay_key_write=0, maria_single_user=0; my_bool maria_flush=0, maria_delay_key_write=0, maria_single_user=0;
......
...@@ -241,9 +241,6 @@ int _ma_read_rnd_static_record(MARIA_HA *info, byte *buf, ...@@ -241,9 +241,6 @@ int _ma_read_rnd_static_record(MARIA_HA *info, byte *buf,
if ((! cache_read || share->base.reclength > cache_length) && if ((! cache_read || share->base.reclength > cache_length) &&
share->tot_locks == 0) share->tot_locks == 0)
{ /* record not in cache */ { /* record not in cache */
if (my_lock(share->kfile,F_RDLCK,0L,F_TO_EOF,
MYF(MY_SEEK_NOT_DONE) | info->lock_wait))
DBUG_RETURN(my_errno);
locked=1; locked=1;
} }
#else #else
......
...@@ -44,7 +44,7 @@ static void copy_key(struct st_maria_info *info,uint inx, ...@@ -44,7 +44,7 @@ static void copy_key(struct st_maria_info *info,uint inx,
static int verbose=0,testflag=0, static int verbose=0,testflag=0,
first_key=0,async_io=0,key_cacheing=0,write_cacheing=0,locking=0, first_key=0,async_io=0,key_cacheing=0,write_cacheing=0,locking=0,
rec_pointer_size=0,pack_fields=1,use_log=0,silent=0, rec_pointer_size=0,pack_fields=1,silent=0,
opt_quick_mode=0; opt_quick_mode=0;
static int pack_seg=HA_SPACE_PACK,pack_type=HA_PACK_KEY,remove_count=-1, static int pack_seg=HA_SPACE_PACK,pack_type=HA_PACK_KEY,remove_count=-1,
create_flag=0; create_flag=0;
...@@ -209,8 +209,6 @@ int main(int argc, char *argv[]) ...@@ -209,8 +209,6 @@ int main(int argc, char *argv[])
0,(MARIA_UNIQUEDEF*) 0, 0,(MARIA_UNIQUEDEF*) 0,
&create_info,create_flag)) &create_info,create_flag))
goto err; goto err;
if (use_log)
maria_logging(1);
if (!(file=maria_open(filename,2,HA_OPEN_ABORT_IF_LOCKED))) if (!(file=maria_open(filename,2,HA_OPEN_ABORT_IF_LOCKED)))
goto err; goto err;
if (!silent) if (!silent)
...@@ -894,9 +892,6 @@ static void get_options(int argc, char **argv) ...@@ -894,9 +892,6 @@ static void get_options(int argc, char **argv)
if (*++pos) if (*++pos)
srand(atoi(pos)); srand(atoi(pos));
break; break;
case 'l':
use_log=1;
break;
case 'L': case 'L':
locking=1; locking=1;
break; break;
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
const char *filename= "test3"; const char *filename= "test3";
uint tests=10,forks=10,key_cacheing=0,use_log=0; uint tests=10,forks=10,key_cacheing=0;
static void get_options(int argc, char *argv[]); static void get_options(int argc, char *argv[]);
void start_test(int id); void start_test(int id);
...@@ -127,9 +127,6 @@ static void get_options(int argc, char **argv) ...@@ -127,9 +127,6 @@ static void get_options(int argc, char **argv)
while (--argc >0 && *(pos = *(++argv)) == '-' ) { while (--argc >0 && *(pos = *(++argv)) == '-' ) {
switch(*++pos) { switch(*++pos) {
case 'l':
use_log=1;
break;
case 'f': case 'f':
forks=atoi(++pos); forks=atoi(++pos);
break; break;
...@@ -140,7 +137,7 @@ static void get_options(int argc, char **argv) ...@@ -140,7 +137,7 @@ static void get_options(int argc, char **argv)
key_cacheing=1; key_cacheing=1;
break; break;
case 'A': /* All flags */ case 'A': /* All flags */
use_log=key_cacheing=1; key_cacheing=1;
break; break;
case '?': case '?':
case 'I': case 'I':
...@@ -169,8 +166,6 @@ void start_test(int id) ...@@ -169,8 +166,6 @@ void start_test(int id)
MARIA_INFO isam_info; MARIA_INFO isam_info;
MARIA_HA *file,*file1,*file2=0,*lock; MARIA_HA *file,*file1,*file2=0,*lock;
if (use_log)
maria_logging(1);
if (!(file1=maria_open(filename,O_RDWR,HA_OPEN_WAIT_IF_LOCKED)) || if (!(file1=maria_open(filename,O_RDWR,HA_OPEN_WAIT_IF_LOCKED)) ||
!(file2=maria_open(filename,O_RDWR,HA_OPEN_WAIT_IF_LOCKED))) !(file2=maria_open(filename,O_RDWR,HA_OPEN_WAIT_IF_LOCKED)))
{ {
...@@ -214,8 +209,6 @@ void start_test(int id) ...@@ -214,8 +209,6 @@ void start_test(int id)
maria_close(file1); maria_close(file1);
maria_close(file2); maria_close(file2);
if (use_log)
maria_logging(0);
if (error) if (error)
{ {
printf("%2d: Aborted\n",id); fflush(stdout); printf("%2d: Aborted\n",id); fflush(stdout);
......
...@@ -170,7 +170,6 @@ int maria_update(register MARIA_HA *info, const byte *oldrec, byte *newrec) ...@@ -170,7 +170,6 @@ int maria_update(register MARIA_HA *info, const byte *oldrec, byte *newrec)
info->update= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED | HA_STATE_AKTIV | info->update= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED | HA_STATE_AKTIV |
key_changed); key_changed);
maria_log_record(MARIA_LOG_UPDATE,info,newrec,info->lastpos,0);
VOID(_ma_writeinfo(info,key_changed ? WRITEINFO_UPDATE_KEYFILE : 0)); VOID(_ma_writeinfo(info,key_changed ? WRITEINFO_UPDATE_KEYFILE : 0));
allow_break(); /* Allow SIGHUP & SIGINT */ allow_break(); /* Allow SIGHUP & SIGINT */
if (info->invalidator != 0) if (info->invalidator != 0)
...@@ -220,7 +219,6 @@ int maria_update(register MARIA_HA *info, const byte *oldrec, byte *newrec) ...@@ -220,7 +219,6 @@ int maria_update(register MARIA_HA *info, const byte *oldrec, byte *newrec)
key_changed); key_changed);
err_end: err_end:
maria_log_record(MARIA_LOG_UPDATE,info,newrec,info->lastpos,my_errno);
VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE)); VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE));
allow_break(); /* Allow SIGHUP & SIGINT */ allow_break(); /* Allow SIGHUP & SIGINT */
if (save_errno == HA_ERR_KEY_NOT_FOUND) if (save_errno == HA_ERR_KEY_NOT_FOUND)
......
...@@ -62,11 +62,6 @@ int maria_write(MARIA_HA *info, byte *record) ...@@ -62,11 +62,6 @@ int maria_write(MARIA_HA *info, byte *record)
if (_ma_readinfo(info,F_WRLCK,1)) if (_ma_readinfo(info,F_WRLCK,1))
DBUG_RETURN(my_errno); DBUG_RETURN(my_errno);
dont_break(); /* Dont allow SIGHUP or SIGINT */ dont_break(); /* Dont allow SIGHUP or SIGINT */
#if !defined(NO_LOCKING) && defined(USE_RECORD_LOCK)
if (!info->locked && my_lock(info->dfile,F_WRLCK,0L,F_TO_EOF,
MYF(MY_SEEK_NOT_DONE) | info->lock_wait))
goto err;
#endif
filepos= ((share->state.dellink != HA_OFFSET_ERROR && filepos= ((share->state.dellink != HA_OFFSET_ERROR &&
!info->append_insert_at_end) ? !info->append_insert_at_end) ?
share->state.dellink : share->state.dellink :
...@@ -155,7 +150,6 @@ int maria_write(MARIA_HA *info, byte *record) ...@@ -155,7 +150,6 @@ int maria_write(MARIA_HA *info, byte *record)
HA_STATE_ROW_CHANGED); HA_STATE_ROW_CHANGED);
info->state->records++; info->state->records++;
info->lastpos=filepos; info->lastpos=filepos;
maria_log_record(MARIA_LOG_WRITE,info,record,filepos,0);
VOID(_ma_writeinfo(info, WRITEINFO_UPDATE_KEYFILE)); VOID(_ma_writeinfo(info, WRITEINFO_UPDATE_KEYFILE));
if (info->invalidator != 0) if (info->invalidator != 0)
{ {
...@@ -220,7 +214,6 @@ int maria_write(MARIA_HA *info, byte *record) ...@@ -220,7 +214,6 @@ int maria_write(MARIA_HA *info, byte *record)
my_errno=save_errno; my_errno=save_errno;
err2: err2:
save_errno=my_errno; save_errno=my_errno;
maria_log_record(MARIA_LOG_WRITE,info,record,filepos,my_errno);
VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE)); VOID(_ma_writeinfo(info,WRITEINFO_UPDATE_KEYFILE));
allow_break(); /* Allow SIGHUP & SIGINT */ allow_break(); /* Allow SIGHUP & SIGINT */
DBUG_RETURN(my_errno=save_errno); DBUG_RETURN(my_errno=save_errno);
......
...@@ -1158,7 +1158,6 @@ static int mariachk(HA_CHECK *param, my_string filename) ...@@ -1158,7 +1158,6 @@ static int mariachk(HA_CHECK *param, my_string filename)
(state_updated ? UPDATE_STAT : 0) | (state_updated ? UPDATE_STAT : 0) |
((param->testflag & T_SORT_RECORDS) ? ((param->testflag & T_SORT_RECORDS) ?
UPDATE_SORT : 0))); UPDATE_SORT : 0)));
VOID(maria_lock_file(param, share->kfile,0L,F_UNLCK,"indexfile",filename));
info->update&= ~HA_STATE_CHANGED; info->update&= ~HA_STATE_CHANGED;
} }
maria_lock_database(info, F_UNLCK); maria_lock_database(info, F_UNLCK);
......
...@@ -427,8 +427,6 @@ extern LIST *maria_open_list; ...@@ -427,8 +427,6 @@ extern LIST *maria_open_list;
extern uchar NEAR maria_file_magic[], NEAR maria_pack_file_magic[]; extern uchar NEAR maria_file_magic[], NEAR maria_pack_file_magic[];
extern uint NEAR maria_read_vec[], NEAR maria_readnext_vec[]; extern uint NEAR maria_read_vec[], NEAR maria_readnext_vec[];
extern uint maria_quick_table_bits; extern uint maria_quick_table_bits;
extern File maria_log_file;
extern ulong maria_pid;
/* This is used by _ma_calc_xxx_key_length och _ma_store_key */ /* This is used by _ma_calc_xxx_key_length och _ma_store_key */
...@@ -648,16 +646,6 @@ typedef struct st_maria_block_info ...@@ -648,16 +646,6 @@ typedef struct st_maria_block_info
#define SORT_BUFFER_INIT (2048L*1024L-MALLOC_OVERHEAD) #define SORT_BUFFER_INIT (2048L*1024L-MALLOC_OVERHEAD)
#define MIN_SORT_BUFFER (4096-MALLOC_OVERHEAD) #define MIN_SORT_BUFFER (4096-MALLOC_OVERHEAD)
enum maria_log_commands
{
MARIA_LOG_OPEN, MARIA_LOG_WRITE, MARIA_LOG_UPDATE, MARIA_LOG_DELETE,
MARIA_LOG_CLOSE, MARIA_LOG_EXTRA, MARIA_LOG_LOCK, MARIA_LOG_DELETE_ALL
};
#define maria_log(a,b,c,d) if (maria_log_file >= 0) _ma_log(a,b,c,d)
#define maria_log_command(a,b,c,d,e) if (maria_log_file >= 0) _ma_log_command(a,b,c,d,e)
#define maria_log_record(a,b,c,d,e) if (maria_log_file >= 0) _ma_log_record(a,b,c,d,e)
#define fast_ma_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _ma_writeinfo((INFO),0) #define fast_ma_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _ma_writeinfo((INFO),0)
#define fast_ma_readinfo(INFO) ((INFO)->lock_type == F_UNLCK) && _ma_readinfo((INFO),F_RDLCK,1) #define fast_ma_readinfo(INFO) ((INFO)->lock_type == F_UNLCK) && _ma_readinfo((INFO),F_RDLCK,1)
...@@ -666,14 +654,6 @@ extern uint _ma_rec_pack(MARIA_HA *info, byte *to, const byte *from); ...@@ -666,14 +654,6 @@ extern uint _ma_rec_pack(MARIA_HA *info, byte *to, const byte *from);
extern uint _ma_pack_get_block_info(MARIA_HA *, MARIA_BLOCK_INFO *, File, extern uint _ma_pack_get_block_info(MARIA_HA *, MARIA_BLOCK_INFO *, File,
my_off_t); my_off_t);
extern void _ma_store_blob_length(byte *pos, uint pack_length, uint length); extern void _ma_store_blob_length(byte *pos, uint pack_length, uint length);
extern void _ma_log(enum maria_log_commands command, MARIA_HA *info,
const byte *buffert, uint length);
extern void _ma_log_command(enum maria_log_commands command,
MARIA_HA *info, const byte *buffert,
uint length, int result);
extern void _ma_log_record(enum maria_log_commands command, MARIA_HA *info,
const byte *record, my_off_t filepos,
int result);
extern void _ma_report_error(int errcode, const char *file_name); extern void _ma_report_error(int errcode, const char *file_name);
extern my_bool _ma_memmap_file(MARIA_HA *info); extern my_bool _ma_memmap_file(MARIA_HA *info);
extern void _ma_unmap_file(MARIA_HA *info); extern void _ma_unmap_file(MARIA_HA *info);
......
This diff is collapsed.
...@@ -1107,16 +1107,16 @@ static int get_statistic(PACK_MRG_INFO *mrg,HUFF_COUNTS *huff_counts) ...@@ -1107,16 +1107,16 @@ static int get_statistic(PACK_MRG_INFO *mrg,HUFF_COUNTS *huff_counts)
my_off_t total_count; my_off_t total_count;
char llbuf[32]; char llbuf[32];
DBUG_PRINT("info", ("column: %3u", count - huff_counts + 1)); DBUG_PRINT("info", ("column: %3lu", count - huff_counts + 1));
if (verbose >= 2) if (verbose >= 2)
VOID(printf("column: %3u\n", count - huff_counts + 1)); VOID(printf("column: %3lu\n", count - huff_counts + 1));
if (count->tree_buff) if (count->tree_buff)
{ {
DBUG_PRINT("info", ("number of distinct values: %u", DBUG_PRINT("info", ("number of distinct values: %lu",
(count->tree_pos - count->tree_buff) / (count->tree_pos - count->tree_buff) /
count->field_length)); count->field_length));
if (verbose >= 2) if (verbose >= 2)
VOID(printf("number of distinct values: %u\n", VOID(printf("number of distinct values: %lu\n",
(count->tree_pos - count->tree_buff) / (count->tree_pos - count->tree_buff) /
count->field_length)); count->field_length));
} }
...@@ -2281,7 +2281,7 @@ static my_off_t write_huff_tree(HUFF_TREE *huff_tree, uint trees) ...@@ -2281,7 +2281,7 @@ static my_off_t write_huff_tree(HUFF_TREE *huff_tree, uint trees)
if (bits > 8 * sizeof(code)) if (bits > 8 * sizeof(code))
{ {
VOID(fflush(stdout)); VOID(fflush(stdout));
VOID(fprintf(stderr, "error: Huffman code too long: %u/%u\n", VOID(fprintf(stderr, "error: Huffman code too long: %u/%lu\n",
bits, 8 * sizeof(code))); bits, 8 * sizeof(code)));
errors++; errors++;
break; break;
......
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