Portability fixes for OPENBSD, OS2 and Windows
Docs/manual.texi: Changed TCX -> MySQL AB configure.in: New version include/my_sys.h: Fixes for OS2 ltconfig: Fixes for OS2 ltmain.sh: Fixes for OS2 mit-pthreads/net/net_internal.h: Fixes for OPENBSD mit-pthreads/net/proto_internal.h: Fixes for OPENBSD mit-pthreads/net/res_internal.h: Fixes for OPENBSD mit-pthreads/net/serv_internal.h: Fixes for OPENBSD myisammrg/myrg_open.c: MERGE didn't work on Windows mysys/my_getwd.c: Fixes for OS2 sql/field.cc: cleanup sql/field.h: Fix for new SCO compiler sql/ha_berkeley.cc: Cleanup sql/ha_berkeley.h: Portability fix sql/item_sum.h: Fix for new SCO compiler sql/log.cc: Fixes for OS2 sql/log_event.h: Fixes for OS2 sql/mysqld.cc: Fixes for OS2 sql/net_serv.cc: Fixes for OS2 sql/sql_analyse.h: Fix for new SCO compiler sql/sql_class.h: Fix for new SCO compiler sql/sql_map.h: Fix for new SCO compiler sql/sql_repl.cc: cleanup sql/sql_string.h: Fix for new SCO compiler sql/sql_table.cc: cleanup strings/longlong2str-x86.s: Fixes for openbsd
This commit is contained in:
parent
002b51000f
commit
52a4c5a100
@ -2222,6 +2222,9 @@ Apart from the following links, you can find and download a lot of
|
|||||||
@item @uref{http://www.4t2.com/mysql}@*
|
@item @uref{http://www.4t2.com/mysql}@*
|
||||||
Information about the German MySQL mailing list.
|
Information about the German MySQL mailing list.
|
||||||
|
|
||||||
|
@item @uref{http://www2.rent-a-database.de/mysql/}
|
||||||
|
@strong{MySQL} manual in German.
|
||||||
|
|
||||||
@item @uref{http://www.bitmover.com:8888//home/bk/mysql}@*
|
@item @uref{http://www.bitmover.com:8888//home/bk/mysql}@*
|
||||||
Web access to the @strong{MySQL} BitKeeper repository.
|
Web access to the @strong{MySQL} BitKeeper repository.
|
||||||
|
|
||||||
@ -3612,7 +3615,7 @@ Payment should be made to:
|
|||||||
Postgirot Bank AB
|
Postgirot Bank AB
|
||||||
105 06 STOCKHOLM, SWEDEN
|
105 06 STOCKHOLM, SWEDEN
|
||||||
|
|
||||||
TCX DataKonsult AB
|
MySQL AB
|
||||||
BOX 6434
|
BOX 6434
|
||||||
11382 STOCKHOLM, SWEDEN
|
11382 STOCKHOLM, SWEDEN
|
||||||
|
|
||||||
@ -3629,7 +3632,7 @@ If you want to pay by check, make it payable to ``MySQL Finland AB'' and
|
|||||||
mail it to the address below:
|
mail it to the address below:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
TCX DataKonsult AB
|
MySQL AB
|
||||||
BOX 6434, Torsgatan 21
|
BOX 6434, Torsgatan 21
|
||||||
11382 STOCKHOLM, SWEDEN
|
11382 STOCKHOLM, SWEDEN
|
||||||
@end example
|
@end example
|
||||||
@ -8903,17 +8906,19 @@ below:
|
|||||||
|
|
||||||
@example
|
@example
|
||||||
shell> BINDIR/mysqladmin version
|
shell> BINDIR/mysqladmin version
|
||||||
mysqladmin Ver 6.3 Distrib 3.22.9-beta, for pc-linux-gnu on i686
|
mysqladmin Ver 8.14 Distrib 3.23.32, for linux on i586
|
||||||
TCX Datakonsult AB, by Monty
|
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
||||||
|
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
|
||||||
|
and you are welcome to modify and redistribute it under the GPL license
|
||||||
|
|
||||||
Server version 3.22.9-beta
|
Server version 3.23.32-debug
|
||||||
Protocol version 10
|
Protocol version 10
|
||||||
Connection Localhost via Unix socket
|
Connection Localhost via Unix socket
|
||||||
TCP port 3306
|
TCP port 3306
|
||||||
UNIX socket /tmp/mysql.sock
|
UNIX socket /tmp/mysql.sock
|
||||||
Uptime: 16 sec
|
Uptime: 16 sec
|
||||||
|
|
||||||
Running threads: 1 Questions: 20 Reloads: 2 Open tables: 3
|
Threads: 1 Questions: 9 Slow queries: 0 Opens: 7 Flush tables: 2 Open tables: 0 Queries per second avg: 0.000 Memory in use: 132K Max memory used: 16773K
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
To get a feeling for what else you can do with @code{BINDIR/mysqladmin},
|
To get a feeling for what else you can do with @code{BINDIR/mysqladmin},
|
||||||
@ -18528,7 +18533,7 @@ CHECK TABLE tbl_name[,tbl_name...] [option [option...]]
|
|||||||
option = QUICK | FAST | MEDIUM | EXTEND | CHANGED
|
option = QUICK | FAST | MEDIUM | EXTEND | CHANGED
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@code{CHECK TABLE} only works on @code{MyISAM} and @code{BDB} tables. On
|
@code{CHECK TABLE} only works on @code{MyISAM} tables. On
|
||||||
@code{MyISAM} tables it's the same thing as running @code{myisamchk -m
|
@code{MyISAM} tables it's the same thing as running @code{myisamchk -m
|
||||||
table_name} on the table.
|
table_name} on the table.
|
||||||
|
|
||||||
@ -18567,9 +18572,6 @@ For dynamic sized @code{MyISAM} tables a started check will always
|
|||||||
do a @code{MEDIUM} check. For static size rows we skip the row scan
|
do a @code{MEDIUM} check. For static size rows we skip the row scan
|
||||||
for @code{QUICK} and @code{FAST} as the rows are very seldom corrupted.
|
for @code{QUICK} and @code{FAST} as the rows are very seldom corrupted.
|
||||||
|
|
||||||
Note that for BDB tables the different check options doesn't affect the
|
|
||||||
check in any way!
|
|
||||||
|
|
||||||
You can combine check options as in:
|
You can combine check options as in:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
|
@ -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, 3.23.32)
|
AM_INIT_AUTOMAKE(mysql, 3.23.33)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
@ -129,6 +129,7 @@ fi
|
|||||||
# Still need ranlib for readline; local static use only so no libtool.
|
# Still need ranlib for readline; local static use only so no libtool.
|
||||||
AC_PROG_RANLIB
|
AC_PROG_RANLIB
|
||||||
# We use libtool
|
# We use libtool
|
||||||
|
#AC_LIBTOOL_WIN32_DLL
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
#AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC
|
#AC_LIBTOOL_DLOPEN AC_LIBTOOL_WIN32_DLL AC_DISABLE_FAST_INSTALL AC_DISABLE_SHARED AC_DISABLE_STATIC
|
||||||
|
@ -41,13 +41,6 @@ extern int NEAR my_errno; /* Last error in mysys */
|
|||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#ifdef __EMX__
|
|
||||||
/* record loging flags (F_GETLK, F_SETLK, F_SETLKW) */
|
|
||||||
#define F_RDLCK 1 /* FreeBSD: shared or read lock */
|
|
||||||
#define F_UNLCK 2 /* FreeBSD: unlock */
|
|
||||||
#define F_WRLCK 3 /* FreeBSD: exclusive or write lock */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MYSYS_PROGRAM_USES_CURSES() { error_handler_hook = my_message_curses; mysys_uses_curses=1; }
|
#define MYSYS_PROGRAM_USES_CURSES() { error_handler_hook = my_message_curses; mysys_uses_curses=1; }
|
||||||
#define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;}
|
#define MYSYS_PROGRAM_DONT_USE_CURSES() { error_handler_hook = my_message_no_curses; mysys_uses_curses=0;}
|
||||||
#define MY_INIT(name); { my_progname= name; my_init(); }
|
#define MY_INIT(name); { my_progname= name; my_init(); }
|
||||||
|
5
ltconfig
5
ltconfig
@ -1411,8 +1411,8 @@ else
|
|||||||
os2*)
|
os2*)
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
hardcode_minus_L=yes
|
hardcode_minus_L=yes
|
||||||
allow_undefined_flag=unsupported
|
allow_undefined_flag=" "
|
||||||
archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
|
archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll $linkflags -o $lib $libobjs $deplibs $objdir/$libname.def'
|
||||||
old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
|
old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -2036,6 +2036,7 @@ os2*)
|
|||||||
need_lib_prefix=no
|
need_lib_prefix=no
|
||||||
library_names_spec='$libname.dll $libname.a'
|
library_names_spec='$libname.dll $libname.a'
|
||||||
dynamic_linker='OS/2 ld.exe'
|
dynamic_linker='OS/2 ld.exe'
|
||||||
|
deplibs_check_method=pass_all
|
||||||
shlibpath_var=LIBPATH
|
shlibpath_var=LIBPATH
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -819,6 +819,7 @@ compiler."
|
|||||||
old_convenience=
|
old_convenience=
|
||||||
deplibs=
|
deplibs=
|
||||||
linkopts=
|
linkopts=
|
||||||
|
linkflags=
|
||||||
|
|
||||||
if test -n "$shlibpath_var"; then
|
if test -n "$shlibpath_var"; then
|
||||||
# get the directories listed in $shlibpath_var
|
# get the directories listed in $shlibpath_var
|
||||||
@ -1159,6 +1160,7 @@ compiler."
|
|||||||
# Unknown arguments in both finalize_command and compile_command need
|
# Unknown arguments in both finalize_command and compile_command need
|
||||||
# to be aesthetically quoted because they are evaled later.
|
# to be aesthetically quoted because they are evaled later.
|
||||||
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
|
arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
|
||||||
|
linkflags="$linkflags $arg"
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
|
*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
|
||||||
arg="\"$arg\""
|
arg="\"$arg\""
|
||||||
|
@ -44,6 +44,7 @@ static char *rcsid = "$Id$";
|
|||||||
#include <resolv.h>
|
#include <resolv.h>
|
||||||
|
|
||||||
#define NET_BUFSIZE 4096
|
#define NET_BUFSIZE 4096
|
||||||
|
#undef ALIGN
|
||||||
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
||||||
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ static char *rcsid = "$Id$";
|
|||||||
#include <resolv.h>
|
#include <resolv.h>
|
||||||
|
|
||||||
#define PROTO_BUFSIZE 4096
|
#define PROTO_BUFSIZE 4096
|
||||||
|
#undef ALIGN
|
||||||
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
||||||
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ static char *rcsid = "$Id$";
|
|||||||
#include <resolv.h>
|
#include <resolv.h>
|
||||||
|
|
||||||
#define HOST_BUFSIZE 4096
|
#define HOST_BUFSIZE 4096
|
||||||
|
#undef ALIGN
|
||||||
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
||||||
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ static char *rcsid = "$Id$";
|
|||||||
#include <resolv.h>
|
#include <resolv.h>
|
||||||
|
|
||||||
#define SERV_BUFSIZE 4096
|
#define SERV_BUFSIZE 4096
|
||||||
|
#undef ALIGN
|
||||||
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
#define ALIGN(p, t) ((char *)(((((long)(p) - 1) / sizeof(t)) + 1) * sizeof(t)))
|
||||||
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
#define SP(p, t, n) (ALIGN(p, t) + (n) * sizeof(t))
|
||||||
|
|
||||||
|
@ -36,11 +36,12 @@ int mode;
|
|||||||
int handle_locking;
|
int handle_locking;
|
||||||
{
|
{
|
||||||
int save_errno,i,errpos;
|
int save_errno,i,errpos;
|
||||||
uint files,dir_length;
|
uint files,dir_length,length;
|
||||||
ulonglong file_offset;
|
ulonglong file_offset;
|
||||||
char name_buff[FN_REFLEN*2],buff[FN_REFLEN],*end;
|
char name_buff[FN_REFLEN*2],buff[FN_REFLEN],*end;
|
||||||
MYRG_INFO info,*m_info;
|
MYRG_INFO info,*m_info;
|
||||||
FILE *file;
|
File fd;
|
||||||
|
IO_CACHE file;
|
||||||
MI_INFO *isam,*last_isam;
|
MI_INFO *isam,*last_isam;
|
||||||
DBUG_ENTER("myrg_open");
|
DBUG_ENTER("myrg_open");
|
||||||
|
|
||||||
@ -49,15 +50,18 @@ int handle_locking;
|
|||||||
isam=0;
|
isam=0;
|
||||||
errpos=files=0;
|
errpos=files=0;
|
||||||
bzero((gptr) &info,sizeof(info));
|
bzero((gptr) &info,sizeof(info));
|
||||||
if (!(file=my_fopen(fn_format(name_buff,name,"",MYRG_NAME_EXT,4),
|
bzero((char*) &file,sizeof(file));
|
||||||
O_RDONLY | O_SHARE,MYF(0))))
|
if ((fd=my_open(fn_format(name_buff,name,"",MYRG_NAME_EXT,4),
|
||||||
|
O_RDONLY | O_SHARE,MYF(0))) < 0 ||
|
||||||
|
init_io_cache(&file, fd, IO_SIZE, READ_CACHE, 0, 0,
|
||||||
|
MYF(MY_WME | MY_NABP)))
|
||||||
goto err;
|
goto err;
|
||||||
errpos=1;
|
errpos=1;
|
||||||
dir_length=dirname_part(name_buff,name);
|
dir_length=dirname_part(name_buff,name);
|
||||||
info.reclength=0;
|
info.reclength=0;
|
||||||
while (fgets(buff,FN_REFLEN-1,file))
|
while ((length=my_b_gets(&file,buff,FN_REFLEN-1)))
|
||||||
{
|
{
|
||||||
if ((end=strend(buff))[-1] == '\n')
|
if ((end=buff+length)[-1] == '\n')
|
||||||
end[-1]='\0';
|
end[-1]='\0';
|
||||||
if (buff[0] && buff[0] != '#') /* Skipp empty lines and comments */
|
if (buff[0] && buff[0] != '#') /* Skipp empty lines and comments */
|
||||||
{
|
{
|
||||||
@ -118,7 +122,8 @@ int handle_locking;
|
|||||||
m_info->end_table=m_info->open_tables+files;
|
m_info->end_table=m_info->open_tables+files;
|
||||||
m_info->last_used_table=m_info->open_tables;
|
m_info->last_used_table=m_info->open_tables;
|
||||||
|
|
||||||
VOID(my_fclose(file,MYF(0)));
|
VOID(my_close(fd,MYF(0)));
|
||||||
|
end_io_cache(&file);
|
||||||
m_info->open_list.data=(void*) m_info;
|
m_info->open_list.data=(void*) m_info;
|
||||||
pthread_mutex_lock(&THR_LOCK_open);
|
pthread_mutex_lock(&THR_LOCK_open);
|
||||||
myrg_open_list=list_add(myrg_open_list,&m_info->open_list);
|
myrg_open_list=list_add(myrg_open_list,&m_info->open_list);
|
||||||
@ -132,7 +137,8 @@ err:
|
|||||||
my_free((char*) m_info,MYF(0));
|
my_free((char*) m_info,MYF(0));
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
case 1:
|
case 1:
|
||||||
VOID(my_fclose(file,MYF(0)));
|
VOID(my_close(fd,MYF(0)));
|
||||||
|
end_io_cache(&file);
|
||||||
for (i=files ; i-- > 0 ; )
|
for (i=files ; i-- > 0 ; )
|
||||||
{
|
{
|
||||||
isam=last_isam;
|
isam=last_isam;
|
||||||
|
@ -29,6 +29,10 @@
|
|||||||
#include <direct.h>
|
#include <direct.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __EMX__
|
||||||
|
// chdir2 support also drive change
|
||||||
|
#define chdir _chdir2
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Gets current working directory in buff. Directory is allways ended
|
/* Gets current working directory in buff. Directory is allways ended
|
||||||
with FN_LIBCHAR */
|
with FN_LIBCHAR */
|
||||||
|
@ -4710,13 +4710,13 @@ create_field::create_field(Field *old_field,Field *orig_field)
|
|||||||
orig_field)
|
orig_field)
|
||||||
{
|
{
|
||||||
char buff[MAX_FIELD_WIDTH],*pos;
|
char buff[MAX_FIELD_WIDTH],*pos;
|
||||||
String tmp(buff,sizeof(buff)),*res;
|
String tmp(buff,sizeof(buff));
|
||||||
|
|
||||||
/* Get the value from record[2] (the default value row) */
|
/* Get the value from record[2] (the default value row) */
|
||||||
my_ptrdiff_t diff= (my_ptrdiff_t) (orig_field->table->rec_buff_length*2);
|
my_ptrdiff_t diff= (my_ptrdiff_t) (orig_field->table->rec_buff_length*2);
|
||||||
orig_field->move_field(diff); // Points now at record[2]
|
orig_field->move_field(diff); // Points now at record[2]
|
||||||
bool is_null=orig_field->is_real_null();
|
bool is_null=orig_field->is_real_null();
|
||||||
res=orig_field->val_str(&tmp,&tmp);
|
orig_field->val_str(&tmp,&tmp);
|
||||||
orig_field->move_field(-diff); // Back to record[0]
|
orig_field->move_field(-diff); // Back to record[0]
|
||||||
if (!is_null)
|
if (!is_null)
|
||||||
{
|
{
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
class Send_field;
|
class Send_field;
|
||||||
struct st_cache_field;
|
struct st_cache_field;
|
||||||
|
void field_conv(Field *to,Field *from);
|
||||||
|
|
||||||
class Field {
|
class Field {
|
||||||
Field(const Item &); /* Prevent use of theese */
|
Field(const Item &); /* Prevent use of theese */
|
||||||
|
@ -110,8 +110,6 @@ static void berkeley_noticecall(DB_ENV *db_env, db_notices notice);
|
|||||||
|
|
||||||
bool berkeley_init(void)
|
bool berkeley_init(void)
|
||||||
{
|
{
|
||||||
char buff[1024],*config[10], **conf_pos, *str_pos;
|
|
||||||
conf_pos=config; str_pos=buff;
|
|
||||||
DBUG_ENTER("berkeley_init");
|
DBUG_ENTER("berkeley_init");
|
||||||
|
|
||||||
if (!berkeley_tmpdir)
|
if (!berkeley_tmpdir)
|
||||||
@ -387,6 +385,7 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
|
|||||||
|
|
||||||
/* The following is not yet used; Should be used for fixed length keys */
|
/* The following is not yet used; Should be used for fixed length keys */
|
||||||
|
|
||||||
|
#ifdef NOT_YET
|
||||||
static int
|
static int
|
||||||
berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key)
|
berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key)
|
||||||
{
|
{
|
||||||
@ -407,7 +406,7 @@ berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key)
|
|||||||
}
|
}
|
||||||
return key->handler.bdb_return_if_eq;
|
return key->handler.bdb_return_if_eq;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Compare key against row */
|
/* Compare key against row */
|
||||||
|
|
||||||
@ -1901,7 +1900,6 @@ longlong ha_berkeley::get_auto_increment()
|
|||||||
{
|
{
|
||||||
DBT row,old_key;
|
DBT row,old_key;
|
||||||
bzero((char*) &row,sizeof(row));
|
bzero((char*) &row,sizeof(row));
|
||||||
uint key_len;
|
|
||||||
KEY *key_info= &table->key_info[active_index];
|
KEY *key_info= &table->key_info[active_index];
|
||||||
|
|
||||||
/* Reading next available number for a sub key */
|
/* Reading next available number for a sub key */
|
||||||
@ -1947,6 +1945,7 @@ longlong ha_berkeley::get_auto_increment()
|
|||||||
Analyzing, checking, and optimizing tables
|
Analyzing, checking, and optimizing tables
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef NOT_YET
|
||||||
static void print_msg(THD *thd, const char *table_name, const char *op_name,
|
static void print_msg(THD *thd, const char *table_name, const char *op_name,
|
||||||
const char *msg_type, const char *fmt, ...)
|
const char *msg_type, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
@ -1970,7 +1969,7 @@ static void print_msg(THD *thd, const char *table_name, const char *op_name,
|
|||||||
thd->packet.length()))
|
thd->packet.length()))
|
||||||
thd->killed=1;
|
thd->killed=1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
|
int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
|
||||||
{
|
{
|
||||||
@ -2025,14 +2024,14 @@ int ha_berkeley::optimize(THD* thd, HA_CHECK_OPT* check_opt)
|
|||||||
|
|
||||||
int ha_berkeley::check(THD* thd, HA_CHECK_OPT* check_opt)
|
int ha_berkeley::check(THD* thd, HA_CHECK_OPT* check_opt)
|
||||||
{
|
{
|
||||||
char name_buff[FN_REFLEN];
|
|
||||||
int error;
|
|
||||||
DB *tmp_file;
|
|
||||||
DBUG_ENTER("ha_berkeley::check");
|
DBUG_ENTER("ha_berkeley::check");
|
||||||
|
|
||||||
DBUG_RETURN(HA_ADMIN_NOT_IMPLEMENTED);
|
DBUG_RETURN(HA_ADMIN_NOT_IMPLEMENTED);
|
||||||
|
|
||||||
#ifdef NOT_YET
|
#ifdef NOT_YET
|
||||||
|
char name_buff[FN_REFLEN];
|
||||||
|
int error;
|
||||||
|
DB *tmp_file;
|
||||||
/*
|
/*
|
||||||
To get this to work we need to ensure that no running transaction is
|
To get this to work we need to ensure that no running transaction is
|
||||||
using the table. We also need to create a new environment without
|
using the table. We also need to create a new environment without
|
||||||
@ -2242,7 +2241,6 @@ void ha_berkeley::get_status()
|
|||||||
|
|
||||||
static int write_status(DB *status_block, char *buff, uint length)
|
static int write_status(DB *status_block, char *buff, uint length)
|
||||||
{
|
{
|
||||||
DB_TXN *trans;
|
|
||||||
DBT row,key;
|
DBT row,key;
|
||||||
int error;
|
int error;
|
||||||
const char *key_buff="status";
|
const char *key_buff="status";
|
||||||
@ -2285,7 +2283,6 @@ static void update_status(BDB_SHARE *share, TABLE *table)
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
char rec_buff[4+MAX_KEY*4], *pos=rec_buff;
|
char rec_buff[4+MAX_KEY*4], *pos=rec_buff;
|
||||||
const char *key_buff="status";
|
|
||||||
int4store(pos,share->rows); pos+=4;
|
int4store(pos,share->rows); pos+=4;
|
||||||
for (uint i=0 ; i < table->keys ; i++)
|
for (uint i=0 ; i < table->keys ; i++)
|
||||||
{
|
{
|
||||||
|
@ -64,7 +64,7 @@ class ha_berkeley: public handler
|
|||||||
ulong max_row_length(const byte *buf);
|
ulong max_row_length(const byte *buf);
|
||||||
int pack_row(DBT *row,const byte *record, bool new_row);
|
int pack_row(DBT *row,const byte *record, bool new_row);
|
||||||
void unpack_row(char *record, DBT *row);
|
void unpack_row(char *record, DBT *row);
|
||||||
void ha_berkeley::unpack_key(char *record, DBT *key, uint index);
|
void unpack_key(char *record, DBT *key, uint index);
|
||||||
DBT *create_key(DBT *key, uint keynr, char *buff, const byte *record,
|
DBT *create_key(DBT *key, uint keynr, char *buff, const byte *record,
|
||||||
int key_length = MAX_KEY_LENGTH);
|
int key_length = MAX_KEY_LENGTH);
|
||||||
DBT *pack_key(DBT *key, uint keynr, char *buff, const byte *key_ptr,
|
DBT *pack_key(DBT *key, uint keynr, char *buff, const byte *key_ptr,
|
||||||
@ -156,13 +156,12 @@ class ha_berkeley: public handler
|
|||||||
void get_status();
|
void get_status();
|
||||||
inline void get_auto_primary_key(byte *to)
|
inline void get_auto_primary_key(byte *to)
|
||||||
{
|
{
|
||||||
ulonglong tmp;
|
|
||||||
pthread_mutex_lock(&share->mutex);
|
pthread_mutex_lock(&share->mutex);
|
||||||
share->auto_ident++;
|
share->auto_ident++;
|
||||||
int5store(to,share->auto_ident);
|
int5store(to,share->auto_ident);
|
||||||
pthread_mutex_unlock(&share->mutex);
|
pthread_mutex_unlock(&share->mutex);
|
||||||
}
|
}
|
||||||
longlong ha_berkeley::get_auto_increment();
|
longlong get_auto_increment();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern bool berkeley_skip, berkeley_shared_data;
|
extern bool berkeley_skip, berkeley_shared_data;
|
||||||
|
@ -166,6 +166,8 @@ class Item_sum_count_distinct :public Item_sum_int
|
|||||||
|
|
||||||
/* Item to get the value of a stored sum function */
|
/* Item to get the value of a stored sum function */
|
||||||
|
|
||||||
|
class Item_sum_avg;
|
||||||
|
|
||||||
class Item_avg_field :public Item_result_field
|
class Item_avg_field :public Item_result_field
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -200,6 +202,7 @@ class Item_sum_avg :public Item_sum_num
|
|||||||
const char *func_name() const { return "avg"; }
|
const char *func_name() const { return "avg"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Item_sum_std;
|
||||||
|
|
||||||
class Item_std_field :public Item_result_field
|
class Item_std_field :public Item_result_field
|
||||||
{
|
{
|
||||||
|
@ -18,6 +18,10 @@
|
|||||||
/* logging of commands */
|
/* logging of commands */
|
||||||
/* TODO: Abort logging when we get an error in reading or writing log files */
|
/* TODO: Abort logging when we get an error in reading or writing log files */
|
||||||
|
|
||||||
|
#ifdef __EMX__
|
||||||
|
#include <io.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mysql_priv.h"
|
#include "mysql_priv.h"
|
||||||
#include "sql_acl.h"
|
#include "sql_acl.h"
|
||||||
#include "sql_repl.h"
|
#include "sql_repl.h"
|
||||||
|
@ -18,6 +18,10 @@
|
|||||||
#ifndef _LOG_EVENT_H
|
#ifndef _LOG_EVENT_H
|
||||||
#define _LOG_EVENT_H
|
#define _LOG_EVENT_H
|
||||||
|
|
||||||
|
#ifdef __EMX__
|
||||||
|
#undef write // remove pthread.h macro definition, conflict with write() class member
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__GNUC__) && !defined(MYSQL_CLIENT)
|
#if defined(__GNUC__) && !defined(MYSQL_CLIENT)
|
||||||
#pragma interface /* gcc class implementation */
|
#pragma interface /* gcc class implementation */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1048,7 +1048,6 @@ static void init_signals(void)
|
|||||||
#elif defined(__EMX__)
|
#elif defined(__EMX__)
|
||||||
static void sig_reload(int signo)
|
static void sig_reload(int signo)
|
||||||
{
|
{
|
||||||
//reload_acl_and_cache(~0); // Flush everything
|
|
||||||
reload_acl_and_cache((THD*) 0,~0, (TABLE_LIST*) 0); // Flush everything
|
reload_acl_and_cache((THD*) 0,~0, (TABLE_LIST*) 0); // Flush everything
|
||||||
signal(signo, SIG_ACK);
|
signal(signo, SIG_ACK);
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ net_real_write(NET *net,const char *packet,ulong len)
|
|||||||
int length;
|
int length;
|
||||||
char *pos,*end;
|
char *pos,*end;
|
||||||
thr_alarm_t alarmed;
|
thr_alarm_t alarmed;
|
||||||
#if !defined(__WIN__) && !defined(__EMX__)
|
#if !defined(__WIN__)
|
||||||
ALARM alarm_buff;
|
ALARM alarm_buff;
|
||||||
#endif
|
#endif
|
||||||
uint retry_count=0;
|
uint retry_count=0;
|
||||||
@ -426,7 +426,7 @@ static void my_net_skip_rest(NET *net, ulong remain, thr_alarm_t *alarmed)
|
|||||||
if ((int) (length=vio_read(net->vio,(char*) net->buff,remain)) <= 0L)
|
if ((int) (length=vio_read(net->vio,(char*) net->buff,remain)) <= 0L)
|
||||||
{
|
{
|
||||||
my_bool interrupted = vio_should_retry(net->vio);
|
my_bool interrupted = vio_should_retry(net->vio);
|
||||||
if (!thr_got_alarm(&alarmed) && interrupted)
|
if (!thr_got_alarm(alarmed) && interrupted)
|
||||||
{ /* Probably in MIT threads */
|
{ /* Probably in MIT threads */
|
||||||
if (retry_count++ < RETRY_COUNT)
|
if (retry_count++ < RETRY_COUNT)
|
||||||
continue;
|
continue;
|
||||||
|
@ -88,6 +88,9 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int collect_string(String *element, element_count count,
|
||||||
|
TREE_INFO *info);
|
||||||
|
|
||||||
class field_str :public field_info
|
class field_str :public field_info
|
||||||
{
|
{
|
||||||
String min_arg, max_arg;
|
String min_arg, max_arg;
|
||||||
@ -130,6 +133,9 @@ public:
|
|||||||
{ return (String*) 0; }
|
{ return (String*) 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int collect_real(double *element, element_count count, TREE_INFO *info);
|
||||||
|
|
||||||
class field_real: public field_info
|
class field_real: public field_info
|
||||||
{
|
{
|
||||||
double min_arg, max_arg;
|
double min_arg, max_arg;
|
||||||
@ -174,6 +180,9 @@ public:
|
|||||||
{ return (tree_walk_action) collect_real;}
|
{ return (tree_walk_action) collect_real;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int collect_longlong(longlong *element, element_count count,
|
||||||
|
TREE_INFO *info);
|
||||||
|
|
||||||
class field_longlong: public field_info
|
class field_longlong: public field_info
|
||||||
{
|
{
|
||||||
longlong min_arg, max_arg;
|
longlong min_arg, max_arg;
|
||||||
@ -216,6 +225,8 @@ public:
|
|||||||
{ return (tree_walk_action) collect_longlong;}
|
{ return (tree_walk_action) collect_longlong;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int collect_ulonglong(ulonglong *element, element_count count,
|
||||||
|
TREE_INFO *info);
|
||||||
|
|
||||||
class field_ulonglong: public field_info
|
class field_ulonglong: public field_info
|
||||||
{
|
{
|
||||||
@ -261,6 +272,10 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Procedure *proc_analyse_init(THD *thd, ORDER *param,
|
||||||
|
select_result *result,
|
||||||
|
List<Item> &field_list);
|
||||||
|
|
||||||
class analyse: public Procedure
|
class analyse: public Procedure
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
@ -102,6 +102,9 @@ public:
|
|||||||
|
|
||||||
/* character conversion tables */
|
/* character conversion tables */
|
||||||
|
|
||||||
|
class CONVERT;
|
||||||
|
CONVERT *get_convert_set(const char *name_ptr);
|
||||||
|
|
||||||
class CONVERT
|
class CONVERT
|
||||||
{
|
{
|
||||||
const uchar *from_map,*to_map;
|
const uchar *from_map,*to_map;
|
||||||
|
@ -21,6 +21,10 @@
|
|||||||
#pragma interface /* gcc class implementation */
|
#pragma interface /* gcc class implementation */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class mapped_files;
|
||||||
|
mapped_files *map_file(const my_string name,byte *magic,uint magic_length);
|
||||||
|
void unmap_file(mapped_files *map);
|
||||||
|
|
||||||
class mapped_files :public ilink {
|
class mapped_files :public ilink {
|
||||||
byte *map;
|
byte *map;
|
||||||
ha_rows size;
|
ha_rows size;
|
||||||
|
@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
extern const char* any_db;
|
extern const char* any_db;
|
||||||
extern pthread_handler_decl(handle_slave,arg);
|
extern pthread_handler_decl(handle_slave,arg);
|
||||||
static int fake_rotate_event(NET* net, String* packet,
|
|
||||||
const char* log_file_name);
|
|
||||||
|
|
||||||
static int fake_rotate_event(NET* net, String* packet, char* log_file_name,
|
static int fake_rotate_event(NET* net, String* packet, char* log_file_name,
|
||||||
const char**errmsg)
|
const char**errmsg)
|
||||||
|
@ -25,6 +25,13 @@
|
|||||||
#define NOT_FIXED_DEC 31
|
#define NOT_FIXED_DEC 31
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
class String;
|
||||||
|
int sortcmp(const String *a,const String *b);
|
||||||
|
int stringcmp(const String *a,const String *b);
|
||||||
|
String *copy_if_not_alloced(String *a,String *b,uint32 arg_length);
|
||||||
|
int wild_case_compare(String &match,String &wild,char escape);
|
||||||
|
int wild_compare(String &match,String &wild,char escape);
|
||||||
|
|
||||||
class String
|
class String
|
||||||
{
|
{
|
||||||
char *Ptr;
|
char *Ptr;
|
||||||
|
@ -798,7 +798,6 @@ static int send_check_errmsg(THD* thd, TABLE_LIST* table,
|
|||||||
|
|
||||||
static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
static int prepare_for_restore(THD* thd, TABLE_LIST* table)
|
||||||
{
|
{
|
||||||
String *packet = &thd->packet;
|
|
||||||
DBUG_ENTER("prepare_for_restore");
|
DBUG_ENTER("prepare_for_restore");
|
||||||
|
|
||||||
if (table->table) // do not overwrite existing tables on restore
|
if (table->table) // do not overwrite existing tables on restore
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
/* Optimized longlong2str function for Intel 80x86 (gcc/gas syntax) */
|
# Optimized longlong2str function for Intel 80x86 (gcc/gas syntax)
|
||||||
/* Some set sequences are optimized for pentuimpro II */
|
# Some set sequences are optimized for pentuimpro II
|
||||||
|
|
||||||
.file "longlong2str.s"
|
.file "longlong2str.s"
|
||||||
.version "1.01"
|
.version "1.01"
|
||||||
@ -32,90 +32,90 @@ longlong2str:
|
|||||||
pushl %esi
|
pushl %esi
|
||||||
pushl %edi
|
pushl %edi
|
||||||
pushl %ebx
|
pushl %ebx
|
||||||
movl 100(%esp),%esi /* Lower part of val */
|
movl 100(%esp),%esi # Lower part of val
|
||||||
movl 104(%esp),%ebp /* Higher part of val */
|
movl 104(%esp),%ebp # Higher part of val
|
||||||
movl 108(%esp),%edi /* get dst */
|
movl 108(%esp),%edi # get dst
|
||||||
movl 112(%esp),%ebx /* Radix */
|
movl 112(%esp),%ebx # Radix
|
||||||
movl %ebx,%eax
|
movl %ebx,%eax
|
||||||
testl %eax,%eax
|
testl %eax,%eax
|
||||||
jge .L144
|
jge .L144
|
||||||
|
|
||||||
addl $36,%eax
|
addl $36,%eax
|
||||||
cmpl $34,%eax
|
cmpl $34,%eax
|
||||||
ja .Lerror /* Wrong radix */
|
ja .Lerror # Wrong radix
|
||||||
testl %ebp,%ebp
|
testl %ebp,%ebp
|
||||||
jge .L146
|
jge .L146
|
||||||
movb $45,(%edi) /* Add sign */
|
movb $45,(%edi) # Add sign
|
||||||
incl %edi /* Change sign of val */
|
incl %edi # Change sign of val
|
||||||
negl %esi
|
negl %esi
|
||||||
adcl $0,%ebp
|
adcl $0,%ebp
|
||||||
negl %ebp
|
negl %ebp
|
||||||
.L146:
|
.L146:
|
||||||
negl %ebx /* Change radix to positive */
|
negl %ebx # Change radix to positive
|
||||||
jmp .L148
|
jmp .L148
|
||||||
.p2align 4,,7
|
.align 4
|
||||||
.L144:
|
.L144:
|
||||||
addl $-2,%eax
|
addl $-2,%eax
|
||||||
cmpl $34,%eax
|
cmpl $34,%eax
|
||||||
ja .Lerror /* Radix in range */
|
ja .Lerror # Radix in range
|
||||||
|
|
||||||
.L148:
|
.L148:
|
||||||
movl %esi,%eax /* Test if zero (for easy loop) */
|
movl %esi,%eax # Test if zero (for easy loop)
|
||||||
orl %ebp,%eax
|
orl %ebp,%eax
|
||||||
jne .L150
|
jne .L150
|
||||||
movb $48,(%edi)
|
movb $48,(%edi)
|
||||||
incl %edi
|
incl %edi
|
||||||
jmp .L164
|
jmp .L164
|
||||||
.p2align 4,,7
|
.align 4
|
||||||
|
|
||||||
.L150:
|
.L150:
|
||||||
leal 92(%esp),%ecx /* End of buffer */
|
leal 92(%esp),%ecx # End of buffer
|
||||||
jmp .L155
|
jmp .L155
|
||||||
.p2align 4,,7
|
.align 4
|
||||||
|
|
||||||
.L153:
|
.L153:
|
||||||
/* val is stored in in ebp:esi */
|
# val is stored in in ebp:esi
|
||||||
|
|
||||||
movl %ebp,%eax /* High part of value */
|
movl %ebp,%eax # High part of value
|
||||||
xorl %edx,%edx
|
xorl %edx,%edx
|
||||||
divl %ebx
|
divl %ebx
|
||||||
movl %eax,%ebp
|
movl %eax,%ebp
|
||||||
movl %esi,%eax
|
movl %esi,%eax
|
||||||
divl %ebx
|
divl %ebx
|
||||||
movl %eax,%esi /* quotent in ebp:esi */
|
movl %eax,%esi # quotent in ebp:esi
|
||||||
movb _dig_vec(%edx),%al /* al is faster than dl */
|
movb _dig_vec(%edx),%al # al is faster than dl
|
||||||
decl %ecx
|
decl %ecx
|
||||||
movb %al,(%ecx) /* store value in buff */
|
movb %al,(%ecx) # store value in buff
|
||||||
.p2align 4,,7
|
.align 4
|
||||||
.L155:
|
.L155:
|
||||||
testl %ebp,%ebp
|
testl %ebp,%ebp
|
||||||
ja .L153
|
ja .L153
|
||||||
testl %esi,%esi /* rest value */
|
testl %esi,%esi # rest value
|
||||||
jl .L153
|
jl .L153
|
||||||
je .L160 /* Ready */
|
je .L160 # Ready
|
||||||
movl %esi,%eax
|
movl %esi,%eax
|
||||||
movl $_dig_vec,%ebp
|
movl $_dig_vec,%ebp
|
||||||
.p2align 4,,7
|
.align 4
|
||||||
|
|
||||||
.L154: /* Do rest with integer precision */
|
.L154: # Do rest with integer precision
|
||||||
cltd
|
cltd
|
||||||
divl %ebx
|
divl %ebx
|
||||||
decl %ecx
|
decl %ecx
|
||||||
movb (%edx,%ebp),%dl /* bh is always zero as ebx=radix < 36 */
|
movb (%edx,%ebp),%dl # bh is always zero as ebx=radix < 36
|
||||||
testl %eax,%eax
|
testl %eax,%eax
|
||||||
movb %dl,(%ecx)
|
movb %dl,(%ecx)
|
||||||
jne .L154
|
jne .L154
|
||||||
|
|
||||||
.L160:
|
.L160:
|
||||||
movl %ecx,%esi
|
movl %ecx,%esi
|
||||||
leal 92(%esp),%ecx /* End of buffer */
|
leal 92(%esp),%ecx # End of buffer
|
||||||
subl %esi,%ecx
|
subl %esi,%ecx
|
||||||
rep
|
rep
|
||||||
movsb
|
movsb
|
||||||
|
|
||||||
.L164:
|
.L164:
|
||||||
movl %edi,%eax /* Pointer to end null */
|
movl %edi,%eax # Pointer to end null
|
||||||
movb $0,(%edi) /* Store the end null */
|
movb $0,(%edi) # Store the end null
|
||||||
|
|
||||||
.L165:
|
.L165:
|
||||||
popl %ebx
|
popl %ebx
|
||||||
@ -126,7 +126,7 @@ longlong2str:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.Lerror:
|
.Lerror:
|
||||||
xorl %eax,%eax /* Wrong radix */
|
xorl %eax,%eax # Wrong radix
|
||||||
jmp .L165
|
jmp .L165
|
||||||
|
|
||||||
.Lfe3:
|
.Lfe3:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user