Commit 4013552c authored by unknown's avatar unknown

merged


configure.in:
  Auto merged
parents 7b30603b a9565261
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*.lo *.lo
*.o *.o
*.reject *.reject
*.so
*.spec *.spec
*/*_pure_*warnings */*_pure_*warnings
*/.pure */.pure
...@@ -26,24 +27,18 @@ ...@@ -26,24 +27,18 @@
.out .out
.snprj/* .snprj/*
.vimrc .vimrc
50
=6
BUILD/compile-pentium-maintainer BUILD/compile-pentium-maintainer
BitKeeper/etc/config
BitKeeper/etc/csets BitKeeper/etc/csets
BitKeeper/etc/csets-in BitKeeper/etc/csets-in
BitKeeper/etc/csets-out BitKeeper/etc/csets-out
BitKeeper/etc/gone
BitKeeper/etc/level BitKeeper/etc/level
BitKeeper/etc/pushed BitKeeper/etc/pushed
BitKeeper/post-commit BitKeeper/post-commit
BitKeeper/post-commit-manual BitKeeper/post-commit-manual
BitKeeper/tmp/* BitKeeper/tmp/*
BitKeeper/tmp/bkr3sAHD
BitKeeper/tmp/gone BitKeeper/tmp/gone
COPYING COPYING
COPYING.LIB COPYING.LIB
Docs/#manual.texi#
Docs/INSTALL-BINARY Docs/INSTALL-BINARY
Docs/Images/myaccess-odbc.txt Docs/Images/myaccess-odbc.txt
Docs/Images/myaccess.txt Docs/Images/myaccess.txt
...@@ -67,7 +62,6 @@ Docs/internals_toc.html ...@@ -67,7 +62,6 @@ Docs/internals_toc.html
Docs/manual.aux Docs/manual.aux
Docs/manual.cp Docs/manual.cp
Docs/manual.cps Docs/manual.cps
Docs/manual.de.log
Docs/manual.dvi Docs/manual.dvi
Docs/manual.fn Docs/manual.fn
Docs/manual.fns Docs/manual.fns
...@@ -76,8 +70,6 @@ Docs/manual.ky ...@@ -76,8 +70,6 @@ Docs/manual.ky
Docs/manual.log Docs/manual.log
Docs/manual.pdf Docs/manual.pdf
Docs/manual.pg Docs/manual.pg
Docs/manual.texi.orig
Docs/manual.texi.rej
Docs/manual.toc Docs/manual.toc
Docs/manual.tp Docs/manual.tp
Docs/manual.txt Docs/manual.txt
...@@ -98,17 +90,11 @@ Logs/* ...@@ -98,17 +90,11 @@ Logs/*
MIRRORS MIRRORS
Makefile Makefile
Makefile.in Makefile.in
Makefile.in'
PENDING/* PENDING/*
TAGS TAGS
aclocal.m4 aclocal.m4
autom4te-2.53.cache/output.0 autom4te-2.53.cache/*
autom4te-2.53.cache/requests
autom4te-2.53.cache/traces.0
autom4te.cache/* autom4te.cache/*
autom4te.cache/output.0
autom4te.cache/requests
autom4te.cache/traces.0
bdb/README bdb/README
bdb/btree/btree_auto.c bdb/btree/btree_auto.c
bdb/build_unix/* bdb/build_unix/*
...@@ -153,13 +139,8 @@ bdb/db/crdel_auto.c ...@@ -153,13 +139,8 @@ bdb/db/crdel_auto.c
bdb/db/db_auto.c bdb/db/db_auto.c
bdb/dbinc_auto/*.* bdb/dbinc_auto/*.*
bdb/dbreg/dbreg_auto.c bdb/dbreg/dbreg_auto.c
bdb/dist/autom4te-2.53.cache/output.0 bdb/dist/autom4te-2.53.cache/*
bdb/dist/autom4te-2.53.cache/requests
bdb/dist/autom4te-2.53.cache/traces.0
bdb/dist/autom4te.cache/* bdb/dist/autom4te.cache/*
bdb/dist/autom4te.cache/output.0
bdb/dist/autom4te.cache/requests
bdb/dist/autom4te.cache/traces.0
bdb/dist/config.hin bdb/dist/config.hin
bdb/dist/configure bdb/dist/configure
bdb/dist/tags bdb/dist/tags
...@@ -238,20 +219,13 @@ bdb/test/include.tcl ...@@ -238,20 +219,13 @@ bdb/test/include.tcl
bdb/test/logtrack.list bdb/test/logtrack.list
bdb/txn/txn_auto.c bdb/txn/txn_auto.c
binary/* binary/*
bkpull.log bkpull.log*
bkpull.log.2 bkpush.log*
bkpull.log.3
bkpull.log.4
bkpull.log.5
bkpull.log.6
bkpush.log
build.log build.log
build_tags.sh build_tags.sh
client/insert_test client/insert_test
client/log_event.cc client/log_event.cc
client/log_event.h client/log_event.h
client/mf_iocache.c
client/mf_iocache.cc
client/mysql client/mysql
client/mysqladmin client/mysqladmin
client/mysqlbinlog client/mysqlbinlog
...@@ -262,11 +236,8 @@ client/mysqlmanager-pwgen ...@@ -262,11 +236,8 @@ client/mysqlmanager-pwgen
client/mysqlmanagerc client/mysqlmanagerc
client/mysqlshow client/mysqlshow
client/mysqltest client/mysqltest
client/mysys_priv.h
client/select_test client/select_test
client/ssl_test client/ssl_test
client/thimble
client/thread_test
client_test client_test
cmd-line-utils/libedit/common.h cmd-line-utils/libedit/common.h
cmd-line-utils/libedit/makelist cmd-line-utils/libedit/makelist
...@@ -279,12 +250,20 @@ config.status ...@@ -279,12 +250,20 @@ config.status
configure configure
configure.lineno configure.lineno
core core
core.2430 core.*
db-*.*.* db-*.*.*
dbug/dbug_analyze
dbug/example*.r
dbug/factorial
dbug/factorial.r
dbug/main.r
dbug/output*.r
dbug/user.ps
dbug/user.t dbug/user.t
depcomp depcomp
emacs.h emacs.h
extra/comp_err extra/comp_err
extra/charset2html
extra/my_print_defaults extra/my_print_defaults
extra/mysql_install extra/mysql_install
extra/mysql_tzinfo_to_sql extra/mysql_tzinfo_to_sql
...@@ -296,6 +275,7 @@ extra/resolveip ...@@ -296,6 +275,7 @@ extra/resolveip
extra/tztime.cc extra/tztime.cc
fcns.c fcns.c
fcns.h fcns.h
gdbinit
gmon.out gmon.out
hardcopy.0 hardcopy.0
heap/hp_test1 heap/hp_test1
...@@ -309,13 +289,8 @@ include/readline ...@@ -309,13 +289,8 @@ include/readline
include/readline/*.h include/readline/*.h
include/readline/readline.h include/readline/readline.h
include/widec.h include/widec.h
innobase/autom4te-2.53.cache/output.0 innobase/autom4te-2.53.cache/*
innobase/autom4te-2.53.cache/requests
innobase/autom4te-2.53.cache/traces.0
innobase/autom4te.cache/* innobase/autom4te.cache/*
innobase/autom4te.cache/output.0
innobase/autom4te.cache/requests
innobase/autom4te.cache/traces.0
innobase/configure.lineno innobase/configure.lineno
innobase/conftest.s1 innobase/conftest.s1
innobase/conftest.subs innobase/conftest.subs
...@@ -435,6 +410,7 @@ libmysqld/sql_db.cc ...@@ -435,6 +410,7 @@ libmysqld/sql_db.cc
libmysqld/sql_delete.cc libmysqld/sql_delete.cc
libmysqld/sql_derived.cc libmysqld/sql_derived.cc
libmysqld/sql_do.cc libmysqld/sql_do.cc
libmysqld/sql_error.cc
libmysqld/sql_handler.cc libmysqld/sql_handler.cc
libmysqld/sql_help.cc libmysqld/sql_help.cc
libmysqld/sql_insert.cc libmysqld/sql_insert.cc
...@@ -445,6 +421,7 @@ libmysqld/sql_manager.cc ...@@ -445,6 +421,7 @@ libmysqld/sql_manager.cc
libmysqld/sql_map.cc libmysqld/sql_map.cc
libmysqld/sql_olap.cc libmysqld/sql_olap.cc
libmysqld/sql_parse.cc libmysqld/sql_parse.cc
libmysqld/sql_prepare.cc
libmysqld/sql_rename.cc libmysqld/sql_rename.cc
libmysqld/sql_repl.cc libmysqld/sql_repl.cc
libmysqld/sql_select.cc libmysqld/sql_select.cc
...@@ -479,15 +456,6 @@ linked_server_sources ...@@ -479,15 +456,6 @@ linked_server_sources
linked_tools_sources linked_tools_sources
locked locked
man/*.1 man/*.1
mit-pthreads/config.flags
mit-pthreads/include/bits
mit-pthreads/include/pthread/machdep.h
mit-pthreads/include/pthread/posix.h
mit-pthreads/include/sys
mit-pthreads/machdep.c
mit-pthreads/pg++
mit-pthreads/pgcc
mit-pthreads/syscall.S
myisam/FT1.MYD myisam/FT1.MYD
myisam/FT1.MYI myisam/FT1.MYI
myisam/ft_dump myisam/ft_dump
...@@ -513,9 +481,6 @@ myisam/test1.MYD ...@@ -513,9 +481,6 @@ myisam/test1.MYD
myisam/test1.MYI myisam/test1.MYI
myisam/test2.MYD myisam/test2.MYD
myisam/test2.MYI myisam/test2.MYI
mysql-4.0.2-alpha-pc-linux-gnu-i686.tar.gz
mysql-4.0.2-alpha.tar.gz
mysql-max-4.0.2-alpha-pc-linux-gnu-i686.tar.gz
mysql-test/gmon.out mysql-test/gmon.out
mysql-test/install_test_db mysql-test/install_test_db
mysql-test/mysql-test-run mysql-test/mysql-test-run
...@@ -539,12 +504,6 @@ mysql.proj ...@@ -539,12 +504,6 @@ mysql.proj
mysql_priv.h mysql_priv.h
mysqld.S mysqld.S
mysqld.sym mysqld.sym
mysys/#mf_iocache.c#
mysys/charset2html
mysys/getopt.c
mysys/getopt1.c
mysys/main.cc
mysys/ste5KbMa
mysys/test_charset mysys/test_charset
mysys/test_dir mysys/test_dir
mysys/test_gethwaddr mysys/test_gethwaddr
...@@ -667,14 +626,6 @@ ndb/examples/ndbapi_example2/ndbapi_example2 ...@@ -667,14 +626,6 @@ ndb/examples/ndbapi_example2/ndbapi_example2
ndb/examples/ndbapi_example3/ndbapi_example3 ndb/examples/ndbapi_example3/ndbapi_example3
ndb/examples/ndbapi_example5/ndbapi_example5 ndb/examples/ndbapi_example5/ndbapi_example5
ndb/examples/select_all/select_all ndb/examples/select_all/select_all
ndb/lib/libMGM_API.so
ndb/lib/libNDB_API.so
ndb/lib/libNDB_ODBC.so
ndb/lib/libNEWTON_API.so
ndb/lib/libNEWTON_BASICTEST_COMMON.so
ndb/lib/libREP_API.so
ndb/lib/libndbclient.so
ndb/lib/libndbclient_extra.so
ndb/src/common/mgmcommon/printConfig/*.d ndb/src/common/mgmcommon/printConfig/*.d
ndb/src/cw/cpcd/ndb_cpcd ndb/src/cw/cpcd/ndb_cpcd
ndb/src/kernel/blocks/backup/restore/ndb_restore ndb/src/kernel/blocks/backup/restore/ndb_restore
...@@ -806,7 +757,6 @@ sql-bench/test-insert ...@@ -806,7 +757,6 @@ sql-bench/test-insert
sql-bench/test-select sql-bench/test-select
sql-bench/test-transactions sql-bench/test-transactions
sql-bench/test-wisconsin sql-bench/test-wisconsin
sql/.gdbinit
sql/client.c sql/client.c
sql/gen_lex_hash sql/gen_lex_hash
sql/gmon.out sql/gmon.out
...@@ -821,24 +771,12 @@ sql/mysqld ...@@ -821,24 +771,12 @@ sql/mysqld
sql/mysqld-purecov sql/mysqld-purecov
sql/mysqld-purify sql/mysqld-purify
sql/mysqld-quantify sql/mysqld-quantify
sql/new.cc
sql/pack.c sql/pack.c
sql/safe_to_cache_query.txt
sql/share/*.sys sql/share/*.sys
sql/share/charsets/gmon.out
sql/share/gmon.out
sql/share/mysql
sql/share/norwegian-ny/errmsg.sys
sql/share/norwegian/errmsg.sys
sql/sql_select.cc.orig
sql/sql_yacc.cc sql/sql_yacc.cc
sql/sql_yacc.h sql/sql_yacc.h
sql/sql_yacc.output sql/sql_yacc.output
sql/sql_yacc.yy.orig
sql/test_time sql/test_time
sql/udf_example.so
sql_error.cc
sql_prepare.cc
stamp-h stamp-h
stamp-h.in stamp-h.in
stamp-h1 stamp-h1
...@@ -930,10 +868,8 @@ tests/client_test ...@@ -930,10 +868,8 @@ tests/client_test
tests/connect_test tests/connect_test
thread_test thread_test
tmp/* tmp/*
tools/my_vsnprintf.c
tools/mysqlmanager tools/mysqlmanager
tools/mysqlmngd tools/mysqlmngd
tools/mysys_priv.h
vi.h vi.h
vio/test-ssl vio/test-ssl
vio/test-sslclient vio/test-sslclient
......
...@@ -2861,12 +2861,10 @@ then ...@@ -2861,12 +2861,10 @@ then
AC_DEFINE([THREAD], [1], AC_DEFINE([THREAD], [1],
[Define if you want to have threaded code. This may be undef on client code]) [Define if you want to have threaded code. This may be undef on client code])
# Avoid _PROGRAMS names # Avoid _PROGRAMS names
THREAD_LPROGRAMS="test_thr_alarm\$(EXEEXT) test_thr_lock\$(EXEEXT)"
AC_SUBST(THREAD_LPROGRAMS)
THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o" THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o"
AC_SUBST(THREAD_LOBJECTS) AC_SUBST(THREAD_LOBJECTS)
server_scripts="mysqld_safe mysql_install_db" server_scripts="mysqld_safe mysql_install_db"
sql_server_dirs="strings dbug mysys extra regex" sql_server_dirs="strings mysys dbug extra regex"
# #
......
...@@ -16,42 +16,51 @@ ...@@ -16,42 +16,51 @@
# MA 02111-1307, USA # MA 02111-1307, USA
INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include
LDADD = libdbug.a ../strings/libmystrings.a LDADD = libdbug.a ../mysys/libmysys.a ../strings/libmystrings.a
pkglib_LIBRARIES = libdbug.a pkglib_LIBRARIES = libdbug.a
noinst_HEADERS = dbug_long.h noinst_HEADERS = dbug_long.h
libdbug_a_SOURCES = dbug.c sanity.c libdbug_a_SOURCES = dbug.c sanity.c
EXTRA_DIST = example1.c example2.c example3.c \ EXTRA_DIST = example1.c example2.c example3.c \
user.r monty.doc readme.prof \ user.r monty.doc readme.prof dbug_add_tags.pl \
main.c factorial.c dbug_analyze.c main.c factorial.c dbug_analyze.c
NROFF_INC = example1.r example2.r example3.r main.r \
factorial.r output1.r output2.r output3.r \
output4.r output5.r
# Must be linked with libs that are not compiled yet
extra_progs: factorial dbug_analyze
factorial: main.o factorial.o # Must be linked with libs that are not compiled yet
@rm -f factorial noinst_PROGRAMS = factorial dbug_analyze
$(LINK) main.o factorial.o -lmysys factorial_SOURCES = main.c factorial.c
dbug_analyze_SOURCES = dbug_analyze.c
dbug_analyze: dbug_analyze.o all: user.t user.ps
@rm -f dbug_analyze
$(LINK) dbug_analyze.o -lmysys
user.t: user.r $(NROFF_INC) user.t: user.r $(NROFF_INC)
nroff -cm user.r > $@ nroff -mm user.r > $@
user.ps: user.r $(NROFF_INC)
groff -mm user.r > $@
output1.r: factorial
./factorial 1 2 3 4 5 | cat > $@
output1.r: $(PROGRAM) output2.r: factorial
factorial 1 2 3 4 5 | cat > $@ ./factorial -\#t:o 2 3 | cat >$@
output2.r: $(PROGRAM) output3.r: factorial
factorial -\#t:o 2 3 | cat >$@ ./factorial -\#d:t:o 3 | cat >$@
output3.r: $(PROGRAM) output4.r: factorial
factorial -\#d:t:o 3 | cat >$@ ./factorial -\#d,result:o 4 | cat >$@
output4.r: $(PROGRAM) output5.r: factorial
factorial -\#d,result:o 4 | cat >$@ ./factorial -\#d:f,factorial:F:L:o 3 | cat >$@
.c.r:
@RM@ -f $@
@SED@ -e 's!\\!\\\\!g' $< > $@
output5.r: $(PROGRAM) clean:
factorial -\#d:f,factorial:F:L:o 3 | cat >$@ @RM@ -f $(NROFF_INC) user.t user.ps
# Don't update the files from bitkeeper # Don't update the files from bitkeeper
%::SCCS/s.% %::SCCS/s.%
...@@ -21,8 +21,7 @@ ...@@ -21,8 +21,7 @@
* all copies and derivative works. Thank you. * * all copies and derivative works. Thank you. *
* * * *
* The author makes no warranty of any kind with respect to this * * The author makes no warranty of any kind with respect to this *
* product and explicitly disclaims any implied warranties of mer- *ct_lex.table_list.first=0; * product and explicitly disclaims any implied warranties of mer- *
thd->lex.selec
* chantability or fitness for any particular purpose. * * chantability or fitness for any particular purpose. *
* * * *
****************************************************************************** ******************************************************************************
...@@ -60,8 +59,8 @@ ...@@ -60,8 +59,8 @@
* *
* Michael Widenius: * Michael Widenius:
* DBUG_DUMP - To dump a block of memory. * DBUG_DUMP - To dump a block of memory.
* PUSH_FLAG "O" - To be used insted of "o" if we don't * PUSH_FLAG "O" - To be used insted of "o" if we
* want flushing (for slow systems) * want flushing after each write
* PUSH_FLAG "A" - as 'O', but we will append to the out file instead * PUSH_FLAG "A" - as 'O', but we will append to the out file instead
* of creating a new one. * of creating a new one.
* Check of malloc on entry/exit (option "S") * Check of malloc on entry/exit (option "S")
...@@ -930,7 +929,7 @@ void _db_doprnt_ (const char *format,...) ...@@ -930,7 +929,7 @@ void _db_doprnt_ (const char *format,...)
/* /*
* FUNCTION * FUNCTION
* *
* _db_dump_ dump a string until '\0' is found * _db_dump_ dump a string in hex
* *
* SYNOPSIS * SYNOPSIS
* *
...@@ -1204,6 +1203,33 @@ static BOOLEAN DoProfile () ...@@ -1204,6 +1203,33 @@ static BOOLEAN DoProfile ()
} }
#endif #endif
/*
* FUNCTION
*
* _db_strict_keyword_ test keyword for member of keyword list
*
* SYNOPSIS
*
* BOOLEAN _db_strict_keyword_ (keyword)
* char *keyword;
*
* DESCRIPTION
*
* Similar to _db_keyword_, but keyword is NOT accepted if keyword list
* is empty. Used in DBUG_EXECUTE_IF() - for actions that must not be
* executed by default.
*
* Returns TRUE if keyword accepted, FALSE otherwise.
*
*/
BOOLEAN _db_strict_keyword_ (
const char *keyword)
{
if (stack -> keywords == NULL)
return FALSE;
return _db_keyword_ (keyword);
}
/* /*
* FUNCTION * FUNCTION
......
...@@ -572,6 +572,11 @@ int main (int argc, char **argv) ...@@ -572,6 +572,11 @@ int main (int argc, char **argv)
FILE *infile; FILE *infile;
FILE *outfile = {stdout}; FILE *outfile = {stdout};
#if defined(HAVE_PTHREAD_INIT) && defined(THREAD)
pthread_init(); /* Must be called before DBUG_ENTER */
#endif
my_thread_global_init();
{
DBUG_ENTER ("main"); DBUG_ENTER ("main");
DBUG_PROCESS (argv[0]); DBUG_PROCESS (argv[0]);
my_name = argv[0]; my_name = argv[0];
...@@ -601,6 +606,7 @@ int main (int argc, char **argv) ...@@ -601,6 +606,7 @@ int main (int argc, char **argv)
output (outfile); output (outfile);
DBUG_RETURN (EX_OK); DBUG_RETURN (EX_OK);
} }
}
#ifdef MSDOS #ifdef MSDOS
......
#error This file is not used in MySQL - see ../include/my_dbug.h instead
/****************************************************************************** /******************************************************************************
* * * *
* N O T I C E * * N O T I C E *
......
...@@ -13,6 +13,7 @@ char *argv[]; ...@@ -13,6 +13,7 @@ char *argv[];
#if defined(HAVE_PTHREAD_INIT) && defined(THREAD) #if defined(HAVE_PTHREAD_INIT) && defined(THREAD)
pthread_init(); /* Must be called before DBUG_ENTER */ pthread_init(); /* Must be called before DBUG_ENTER */
#endif #endif
my_thread_global_init();
{ {
DBUG_ENTER ("main"); DBUG_ENTER ("main");
DBUG_PROCESS (argv[0]); DBUG_PROCESS (argv[0]);
......
This diff is collapsed.
...@@ -20,6 +20,7 @@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../mysys/libmysys.a \ ...@@ -20,6 +20,7 @@ LDADD = @CLIENT_EXTRA_LDFLAGS@ ../mysys/libmysys.a \
../dbug/libdbug.a ../strings/libmystrings.a ../dbug/libdbug.a ../strings/libmystrings.a
bin_PROGRAMS = replace comp_err perror resolveip my_print_defaults \ bin_PROGRAMS = replace comp_err perror resolveip my_print_defaults \
resolve_stack_dump mysql_waitpid resolve_stack_dump mysql_waitpid
noinst_PROGRAMS = charset2html
# Don't update the files from bitkeeper # Don't update the files from bitkeeper
%::SCCS/s.% %::SCCS/s.%
...@@ -301,6 +301,9 @@ inline double ulonglong2double(ulonglong value) ...@@ -301,6 +301,9 @@ inline double ulonglong2double(ulonglong value)
#define HAVE_SETFILEPOINTER #define HAVE_SETFILEPOINTER
#define HAVE_VIO #define HAVE_VIO
#define HAME_MMAP /* in mysys/my_mmap.c */
#define HAVE_GETPAGESIZE /* in mysys/my_mmap.c */
#ifdef NOT_USED #ifdef NOT_USED
#define HAVE_SNPRINTF /* Gave link error */ #define HAVE_SNPRINTF /* Gave link error */
#define _snprintf snprintf #define _snprintf snprintf
......
...@@ -25,6 +25,7 @@ extern int _db_on_,_no_db_; ...@@ -25,6 +25,7 @@ extern int _db_on_,_no_db_;
extern FILE *_db_fp_; extern FILE *_db_fp_;
extern char *_db_process_; extern char *_db_process_;
extern int _db_keyword_(const char *keyword); extern int _db_keyword_(const char *keyword);
extern int _db_strict_keyword_(const char *keyword);
extern void _db_setjmp_(void); extern void _db_setjmp_(void);
extern void _db_longjmp_(void); extern void _db_longjmp_(void);
extern void _db_push_(const char *control); extern void _db_push_(const char *control);
...@@ -67,12 +68,15 @@ extern void _db_unlock_file(); ...@@ -67,12 +68,15 @@ extern void _db_unlock_file();
#define DBUG_LOCK_FILE { _db_lock_file(); } #define DBUG_LOCK_FILE { _db_lock_file(); }
#define DBUG_UNLOCK_FILE { _db_unlock_file(); } #define DBUG_UNLOCK_FILE { _db_unlock_file(); }
#define DBUG_ASSERT(A) assert(A) #define DBUG_ASSERT(A) assert(A)
#define DBUG_EXECUTE_IF(keyword,a1) \
{if (_db_on_) {if (_db_strict_keyword_ (keyword)) { a1 }}}
#else /* No debugger */ #else /* No debugger */
#define DBUG_ENTER(a1) #define DBUG_ENTER(a1)
#define DBUG_RETURN(a1) return(a1) #define DBUG_RETURN(a1) return(a1)
#define DBUG_VOID_RETURN return #define DBUG_VOID_RETURN return
#define DBUG_EXECUTE(keyword,a1) {} #define DBUG_EXECUTE(keyword,a1) {}
#define DBUG_EXECUTE_IF(keyword,a1) {}
#define DBUG_PRINT(keyword,arglist) {} #define DBUG_PRINT(keyword,arglist) {}
#define DBUG_PUSH(a1) {} #define DBUG_PUSH(a1) {}
#define DBUG_POP() {} #define DBUG_POP() {}
......
...@@ -674,21 +674,43 @@ extern pthread_t shutdown_th, main_th, signal_th; ...@@ -674,21 +674,43 @@ extern pthread_t shutdown_th, main_th, signal_th;
#ifndef thread_safe_increment #ifndef thread_safe_increment
#ifdef HAVE_ATOMIC_ADD #ifdef HAVE_ATOMIC_ADD
#define thread_safe_increment(V,L) atomic_add(1,(atomic_t*) &V); #define thread_safe_increment(V,L) atomic_inc((atomic_t*) &V);
#define thread_safe_decrement(V,L) atomic_dec((atomic_t*) &V);
#define thread_safe_dec_and_test(V, L) atomic_dec_and_test((atomic_t*) &V);
#define thread_safe_add(V,C,L) atomic_add((C),(atomic_t*) &V); #define thread_safe_add(V,C,L) atomic_add((C),(atomic_t*) &V);
#define thread_safe_sub(V,C,L) atomic_sub((C),(atomic_t*) &V); #define thread_safe_sub(V,C,L) atomic_sub((C),(atomic_t*) &V);
#else #else
#define thread_safe_increment(V,L) \ #define thread_safe_increment(V,L) \
pthread_mutex_lock((L)); (V)++; pthread_mutex_unlock((L)); (pthread_mutex_lock((L)), (V)++, pthread_mutex_unlock((L)))
#define thread_safe_add(V,C,L) \ #define thread_safe_decrement(V,L) \
pthread_mutex_lock((L)); (V)+=(C); pthread_mutex_unlock((L)); (pthread_mutex_lock((L)), (V)--, pthread_mutex_unlock((L)))
#define thread_safe_add(V,C,L) (pthread_mutex_lock((L)), (V)+=(C), pthread_mutex_unlock((L)))
#define thread_safe_sub(V,C,L) \ #define thread_safe_sub(V,C,L) \
pthread_mutex_lock((L)); (V)-=(C); pthread_mutex_unlock((L)); (pthread_mutex_lock((L)), (V)-=(C), pthread_mutex_unlock((L)))
#if defined (__GNUC__) || defined (__cplusplus)
static inline bool thread_safe_dec_and_test(ulong V, pthread_mutex_t *L)
{
ulong res;
pthread_mutex_lock(L);
res=V--;
pthread_mutex_unlock(L);
return res==0;
}
#else
/*
what should we do ? define it as static ?
a regular function somewhere in mysys/ ?
for now it's only used in c++ code, so there's no need to bother
*/
#warning "No thread_safe_dec_and_test() for this architecture"
#endif
#endif /* HAVE_ATOMIC_ADD */ #endif /* HAVE_ATOMIC_ADD */
#ifdef SAFE_STATISTICS #ifdef SAFE_STATISTICS
#define statistic_increment(V,L) thread_safe_increment((V),(L)) #define statistic_increment(V,L) thread_safe_increment((V),(L))
#define statistic_decrement(V,L) thread_safe_decrement((V),(L))
#define statistic_add(V,C,L) thread_safe_add((V),(C),(L)) #define statistic_add(V,C,L) thread_safe_add((V),(C),(L))
#else #else
#define statistic_decrement(V,L) (V)--
#define statistic_increment(V,L) (V)++ #define statistic_increment(V,L) (V)++
#define statistic_add(V,C,L) (V)+=(C) #define statistic_add(V,C,L) (V)+=(C)
#endif /* SAFE_STATISTICS */ #endif /* SAFE_STATISTICS */
......
...@@ -663,6 +663,8 @@ extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements, ...@@ -663,6 +663,8 @@ extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements,
extern qsort_t qsort2(void *base_ptr, size_t total_elems, size_t size, extern qsort_t qsort2(void *base_ptr, size_t total_elems, size_t size,
qsort2_cmp cmp, void *cmp_argument); qsort2_cmp cmp, void *cmp_argument);
extern qsort2_cmp get_ptr_compare(uint); extern qsort2_cmp get_ptr_compare(uint);
void my_store_ptr(byte *buff, uint pack_length, my_off_t pos);
my_off_t my_get_ptr(byte *ptr, uint pack_length);
extern int init_io_cache(IO_CACHE *info,File file,uint cachesize, extern int init_io_cache(IO_CACHE *info,File file,uint cachesize,
enum cache_type type,my_off_t seek_offset, enum cache_type type,my_off_t seek_offset,
pbool use_async_io, myf cache_myflags); pbool use_async_io, myf cache_myflags);
...@@ -772,6 +774,32 @@ void my_free_open_file_info(void); ...@@ -772,6 +774,32 @@ void my_free_open_file_info(void);
ulonglong my_getsystime(void); ulonglong my_getsystime(void);
my_bool my_gethwaddr(uchar *to); my_bool my_gethwaddr(uchar *to);
#ifdef HAVE_MMAP
#include <sys/mman.h>
#ifndef MAP_NOSYNC
#define MAP_NOSYNC 0
#endif
#define my_mmap(a,b,c,d,e,f) mmap(a,b,c,d,e,f)
#define my_getpagesize() getpagesize()
#define my_munmap(a,b) munmap(a,b)
#else
/* not a complete set of mmap() flags, but only those that nesessary */
#define PROT_READ 1
#define PROT_WRITE 2
#define MAP_NOSYNC 0x800
#define MAP_FAILED ((void *)-1)
#define MS_SYNC 0x0000
int my_getpagesize(void);
void *my_mmap(void *, size_t, int, int, int, my_off_t);
int my_munmap(void *, size_t);
#endif
int my_msync(int, void *, size_t, int);
/* character sets */ /* character sets */
extern uint get_charset_number(const char *cs_name, uint cs_flags); extern uint get_charset_number(const char *cs_name, uint cs_flags);
extern uint get_collation_number(const char *name); extern uint get_collation_number(const char *name);
......
...@@ -1284,3 +1284,10 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd"); ...@@ -1284,3 +1284,10 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd");
id id
4 4
DROP TABLE t1; DROP TABLE t1;
create temporary table t1 (a int, primary key(a)) engine=bdb;
select * from t1;
a
alter table t1 add b int;
select * from t1;
a b
drop table t1;
...@@ -929,3 +929,13 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterb"); ...@@ -929,3 +929,13 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterb");
SELECT id FROM t1 WHERE (list_id = 1) AND (term = "lettera"); SELECT id FROM t1 WHERE (list_id = 1) AND (term = "lettera");
SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd"); SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd");
DROP TABLE t1; DROP TABLE t1;
#
# alter temp table
#
create temporary table t1 (a int, primary key(a)) engine=bdb;
select * from t1;
alter table t1 add b int;
select * from t1;
drop table t1;
...@@ -26,7 +26,7 @@ noinst_HEADERS = mysys_priv.h my_static.h \ ...@@ -26,7 +26,7 @@ noinst_HEADERS = mysys_priv.h my_static.h \
my_os2cond.c my_os2dirsrch.c my_os2dirsrch.h \ my_os2cond.c my_os2dirsrch.c my_os2dirsrch.h \
my_os2dlfcn.c my_os2file64.c my_os2mutex.c \ my_os2dlfcn.c my_os2file64.c my_os2mutex.c \
my_os2thread.c my_os2tls.c my_os2thread.c my_os2tls.c
libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c \ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c my_mmap.c \
mf_path.c mf_loadpath.c my_file.c \ mf_path.c mf_loadpath.c my_file.c \
my_open.c my_create.c my_dup.c my_seek.c my_read.c \ my_open.c my_create.c my_dup.c my_seek.c my_read.c \
my_pread.c my_write.c \ my_pread.c my_write.c \
...@@ -57,7 +57,6 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c \ ...@@ -57,7 +57,6 @@ libmysys_a_SOURCES = my_init.c my_getwd.c mf_getdate.c \
EXTRA_DIST = thr_alarm.c thr_lock.c my_pthread.c my_thr_init.c \ EXTRA_DIST = thr_alarm.c thr_lock.c my_pthread.c my_thr_init.c \
thr_mutex.c thr_rwlock.c thr_mutex.c thr_rwlock.c
libmysys_a_LIBADD = @THREAD_LOBJECTS@ libmysys_a_LIBADD = @THREAD_LOBJECTS@
noinst_PROGRAMS = charset2html @THREAD_LPROGRAMS@
# test_dir_DEPENDENCIES= $(LIBRARIES) # test_dir_DEPENDENCIES= $(LIBRARIES)
# testhash_DEPENDENCIES= $(LIBRARIES) # testhash_DEPENDENCIES= $(LIBRARIES)
# test_charset_DEPENDENCIES= $(LIBRARIES) # test_charset_DEPENDENCIES= $(LIBRARIES)
...@@ -105,9 +104,6 @@ test_dir$(EXEEXT): test_dir.c $(LIBRARIES) ...@@ -105,9 +104,6 @@ test_dir$(EXEEXT): test_dir.c $(LIBRARIES)
test_charset$(EXEEXT): test_charset.c $(LIBRARIES) test_charset$(EXEEXT): test_charset.c $(LIBRARIES)
$(LINK) $(FLAGS) -DMAIN $(srcdir)/test_charset.c $(LDADD) $(LIBS) $(LINK) $(FLAGS) -DMAIN $(srcdir)/test_charset.c $(LDADD) $(LIBS)
charset2html$(EXEEXT): charset2html.c $(LIBRARIES)
$(LINK) $(FLAGS) -DMAIN $(srcdir)/charset2html.c $(LDADD) $(LIBS)
testhash$(EXEEXT): testhash.c $(LIBRARIES) testhash$(EXEEXT): testhash.c $(LIBRARIES)
$(LINK) $(FLAGS) -DMAIN $(srcdir)/testhash.c $(LDADD) $(LIBS) $(LINK) $(FLAGS) -DMAIN $(srcdir)/testhash.c $(LDADD) $(LIBS)
......
...@@ -48,9 +48,9 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags) ...@@ -48,9 +48,9 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
DBUG_PRINT("info",("old_size: %ld", (ulong) oldsize)); DBUG_PRINT("info",("old_size: %ld", (ulong) oldsize));
if (oldsize > newlength) if (oldsize > newlength)
{
#if defined(HAVE_SETFILEPOINTER) #if defined(HAVE_SETFILEPOINTER)
/* This is for the moment only true on windows */ /* This is for the moment only true on windows */
{
long is_success; long is_success;
HANDLE win_file= (HANDLE) _get_osfhandle(fd); HANDLE win_file= (HANDLE) _get_osfhandle(fd);
long length_low, length_high; long length_low, length_high;
...@@ -63,35 +63,29 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags) ...@@ -63,35 +63,29 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
DBUG_RETURN(0); DBUG_RETURN(0);
my_errno= GetLastError(); my_errno= GetLastError();
goto err; goto err;
}
#elif defined(HAVE_FTRUNCATE) #elif defined(HAVE_FTRUNCATE)
{
if (ftruncate(fd, (off_t) newlength)) if (ftruncate(fd, (off_t) newlength))
{ {
my_errno= errno; my_errno= errno;
goto err; goto err;
} }
DBUG_RETURN(0); DBUG_RETURN(0);
}
#elif defined(HAVE_CHSIZE) #elif defined(HAVE_CHSIZE)
{
if (chsize(fd, (off_t) newlength)) if (chsize(fd, (off_t) newlength))
{ {
my_errno=errno; my_errno=errno;
goto err; goto err;
} }
DBUG_RETURN(0); DBUG_RETURN(0);
}
#else #else
{
/* /*
Fill space between requested length and true length with 'filler' Fill space between requested length and true length with 'filler'
We should never come here on any modern machine We should never come here on any modern machine
*/ */
VOID(my_seek(fd, newlength, MY_SEEK_SET, MYF(MY_WME+MY_FAE))); VOID(my_seek(fd, newlength, MY_SEEK_SET, MYF(MY_WME+MY_FAE)));
swap_variables(my_off_t, newlength, oldsize); swap_variables(my_off_t, newlength, oldsize);
}
#endif #endif
}
/* Full file with 'filler' until it's as big as requested */ /* Full file with 'filler' until it's as big as requested */
bfill(buff, IO_SIZE, filler); bfill(buff, IO_SIZE, filler);
......
/* Copyright (C) 2000-2003 MySQL 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 */
#include "mysys_priv.h"
#ifdef HAVE_MMAP
/*
system msync() only syncs mmap'ed area to fs cache.
fsync() is required to really sync to disc
*/
int my_msync(int fd, void *addr, size_t len, int flags)
{
msync(addr, len, flags);
return my_sync(fd, MYF(0));
}
#else
#ifdef __WIN__
static SECURITY_ATTRIBUTES mmap_security_attributes=
{sizeof(SECURITY_ATTRIBUTES), 0, TRUE};
int my_getpagesize(void)
{
SYSTEM_INFO si;
GetSystemInfo(&si);
return si.dwPageSize;
}
void *my_mmap(void *addr, size_t len, int prot,
int flags, int fd, my_off_t offset)
{
DWORD flProtect=0;
HANDLE hFileMap;
LPVOID ptr;
flProtect|=SEC_COMMIT;
hFileMap=CreateFileMapping(fd, NULL, &mmap_security_attributes,
PAGE_READWRITE, 0, len, 0);
if (hFileMap == 0)
return MAP_FAILED;
ptr=MapViewOfFile(hFileMap,
flags & PROT_WRITE ? FILE_MAP_WRITE : FILE_MAP_READ,
(DWORD)(offset >> 32), (DWORD)offset, len);
/*
MSDN explicitly states that it's possible to close File Mapping Object
even when a view is not unmapped - then the object will be held open
implicitly until unmap, as every view stores internally a handler of
a corresponding File Mapping Object
*/
CloseHandle(hFileMap);
if (ptr)
return ptr;
return MAP_FAILED;
}
int my_munmap(void *addr, size_t len)
{
return UnmapViewOfFile(addr) ? 0 : -1;
}
int my_msync(int fd, void *addr, size_t len, int flags)
{
return FlushViewOfFile(addr, len) ? 0 : -1;
}
#endif
#error "no mmap!"
#endif
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
*/ */
#include "mysys_priv.h" #include "mysys_priv.h"
#include <myisampack.h>
static int ptr_compare(uint *compare_length, uchar **a, uchar **b); static int ptr_compare(uint *compare_length, uchar **a, uchar **b);
static int ptr_compare_0(uint *compare_length, uchar **a, uchar **b); static int ptr_compare_0(uint *compare_length, uchar **a, uchar **b);
...@@ -152,3 +153,41 @@ static int ptr_compare_3(uint *compare_length,uchar **a, uchar **b) ...@@ -152,3 +153,41 @@ static int ptr_compare_3(uint *compare_length,uchar **a, uchar **b)
} }
return (0); return (0);
} }
void my_store_ptr(byte *buff, uint pack_length, my_off_t pos)
{
switch (pack_length) {
#if SIZEOF_OFF_T > 4
case 8: mi_int8store(buff,pos); break;
case 7: mi_int7store(buff,pos); break;
case 6: mi_int6store(buff,pos); break;
case 5: mi_int5store(buff,pos); break;
#endif
case 4: mi_int4store(buff,pos); break;
case 3: mi_int3store(buff,pos); break;
case 2: mi_int2store(buff,pos); break;
case 1: buff[0]= (uchar) pos; break;
default: DBUG_ASSERT(0);
}
return;
}
my_off_t my_get_ptr(byte *ptr, uint pack_length)
{
my_off_t pos;
switch (pack_length) {
#if SIZEOF_OFF_T > 4
case 8: pos= (my_off_t) mi_uint8korr(ptr); break;
case 7: pos= (my_off_t) mi_uint7korr(ptr); break;
case 6: pos= (my_off_t) mi_uint6korr(ptr); break;
case 5: pos= (my_off_t) mi_uint5korr(ptr); break;
#endif
case 4: pos= (my_off_t) mi_uint4korr(ptr); break;
case 3: pos= (my_off_t) mi_uint3korr(ptr); break;
case 2: pos= (my_off_t) mi_uint2korr(ptr); break;
case 1: pos= (my_off_t) mi_uint2korr(ptr); break;
default: DBUG_ASSERT(0);
}
return pos;
}
...@@ -464,7 +464,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select, ...@@ -464,7 +464,7 @@ static ha_rows find_all_keys(SORTPARAM *param, SQL_SELECT *select,
error=file->rnd_next(sort_form->record[0]); error=file->rnd_next(sort_form->record[0]);
if (!flag) if (!flag)
{ {
ha_store_ptr(ref_pos,ref_length,record); // Position to row my_store_ptr(ref_pos,ref_length,record); // Position to row
record+=sort_form->db_record_offset; record+=sort_form->db_record_offset;
} }
else else
......
...@@ -172,7 +172,7 @@ int ha_isam::rnd_pos(byte * buf, byte *pos) ...@@ -172,7 +172,7 @@ int ha_isam::rnd_pos(byte * buf, byte *pos)
{ {
statistic_increment(current_thd->status_var.ha_read_rnd_count, statistic_increment(current_thd->status_var.ha_read_rnd_count,
&LOCK_status); &LOCK_status);
int error=nisam_rrnd(file, buf, (ulong) ha_get_ptr(pos,ref_length)); int error=nisam_rrnd(file, buf, (ulong) my_get_ptr(pos,ref_length));
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return !error ? 0 : my_errno ? my_errno : -1; return !error ? 0 : my_errno ? my_errno : -1;
} }
...@@ -182,7 +182,7 @@ void ha_isam::position(const byte *record) ...@@ -182,7 +182,7 @@ void ha_isam::position(const byte *record)
my_off_t position=nisam_position(file); my_off_t position=nisam_position(file);
if (position == (my_off_t) ~ (ulong) 0) if (position == (my_off_t) ~ (ulong) 0)
position=HA_OFFSET_ERROR; position=HA_OFFSET_ERROR;
ha_store_ptr(ref, ref_length, position); my_store_ptr(ref, ref_length, position);
} }
void ha_isam::info(uint flag) void ha_isam::info(uint flag)
...@@ -227,7 +227,7 @@ void ha_isam::info(uint flag) ...@@ -227,7 +227,7 @@ void ha_isam::info(uint flag)
if (flag & HA_STATUS_ERRKEY) if (flag & HA_STATUS_ERRKEY)
{ {
errkey = info.errkey; errkey = info.errkey;
ha_store_ptr(dupp_ref, ref_length, info.dupp_key_pos); my_store_ptr(dupp_ref, ref_length, info.dupp_key_pos);
} }
if (flag & HA_STATUS_TIME) if (flag & HA_STATUS_TIME)
update_time = info.update_time; update_time = info.update_time;
......
...@@ -138,7 +138,7 @@ int ha_isammrg::rnd_next(byte *buf) ...@@ -138,7 +138,7 @@ int ha_isammrg::rnd_next(byte *buf)
int ha_isammrg::rnd_pos(byte * buf, byte *pos) int ha_isammrg::rnd_pos(byte * buf, byte *pos)
{ {
statistic_increment(current_thd->status_var.ha_read_rnd_count, &LOCK_status); statistic_increment(current_thd->status_var.ha_read_rnd_count, &LOCK_status);
int error=mrg_rrnd(file, buf, (ulong) ha_get_ptr(pos,ref_length)); int error=mrg_rrnd(file, buf, (ulong) my_get_ptr(pos,ref_length));
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return !error ? 0 : my_errno ? my_errno : -1; return !error ? 0 : my_errno ? my_errno : -1;
} }
...@@ -146,7 +146,7 @@ int ha_isammrg::rnd_pos(byte * buf, byte *pos) ...@@ -146,7 +146,7 @@ int ha_isammrg::rnd_pos(byte * buf, byte *pos)
void ha_isammrg::position(const byte *record) void ha_isammrg::position(const byte *record)
{ {
ulong position= mrg_position(file); ulong position= mrg_position(file);
ha_store_ptr(ref, ref_length, (my_off_t) position); my_store_ptr(ref, ref_length, (my_off_t) position);
} }
......
...@@ -1197,7 +1197,7 @@ int ha_myisam::restart_rnd_next(byte *buf, byte *pos) ...@@ -1197,7 +1197,7 @@ int ha_myisam::restart_rnd_next(byte *buf, byte *pos)
int ha_myisam::rnd_pos(byte * buf, byte *pos) int ha_myisam::rnd_pos(byte * buf, byte *pos)
{ {
statistic_increment(current_thd->status_var.ha_read_rnd_count,&LOCK_status); statistic_increment(current_thd->status_var.ha_read_rnd_count,&LOCK_status);
int error=mi_rrnd(file, buf, ha_get_ptr(pos,ref_length)); int error=mi_rrnd(file, buf, my_get_ptr(pos,ref_length));
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return error; return error;
} }
...@@ -1205,7 +1205,7 @@ int ha_myisam::rnd_pos(byte * buf, byte *pos) ...@@ -1205,7 +1205,7 @@ int ha_myisam::rnd_pos(byte * buf, byte *pos)
void ha_myisam::position(const byte* record) void ha_myisam::position(const byte* record)
{ {
my_off_t position=mi_position(file); my_off_t position=mi_position(file);
ha_store_ptr(ref, ref_length, position); my_store_ptr(ref, ref_length, position);
} }
void ha_myisam::info(uint flag) void ha_myisam::info(uint flag)
...@@ -1261,7 +1261,7 @@ void ha_myisam::info(uint flag) ...@@ -1261,7 +1261,7 @@ void ha_myisam::info(uint flag)
if (flag & HA_STATUS_ERRKEY) if (flag & HA_STATUS_ERRKEY)
{ {
errkey = info.errkey; errkey = info.errkey;
ha_store_ptr(dupp_ref, ref_length, info.dupp_key_pos); my_store_ptr(dupp_ref, ref_length, info.dupp_key_pos);
} }
if (flag & HA_STATUS_TIME) if (flag & HA_STATUS_TIME)
update_time = info.update_time; update_time = info.update_time;
......
...@@ -190,7 +190,7 @@ int ha_myisammrg::rnd_next(byte *buf) ...@@ -190,7 +190,7 @@ int ha_myisammrg::rnd_next(byte *buf)
int ha_myisammrg::rnd_pos(byte * buf, byte *pos) int ha_myisammrg::rnd_pos(byte * buf, byte *pos)
{ {
statistic_increment(current_thd->status_var.ha_read_rnd_count,&LOCK_status); statistic_increment(current_thd->status_var.ha_read_rnd_count,&LOCK_status);
int error=myrg_rrnd(file, buf, ha_get_ptr(pos,ref_length)); int error=myrg_rrnd(file, buf, my_get_ptr(pos,ref_length));
table->status=error ? STATUS_NOT_FOUND: 0; table->status=error ? STATUS_NOT_FOUND: 0;
return error; return error;
} }
...@@ -198,7 +198,7 @@ int ha_myisammrg::rnd_pos(byte * buf, byte *pos) ...@@ -198,7 +198,7 @@ int ha_myisammrg::rnd_pos(byte * buf, byte *pos)
void ha_myisammrg::position(const byte *record) void ha_myisammrg::position(const byte *record)
{ {
ulonglong position= myrg_position(file); ulonglong position= myrg_position(file);
ha_store_ptr(ref, ref_length, (my_off_t) position); my_store_ptr(ref, ref_length, (my_off_t) position);
} }
......
...@@ -1845,7 +1845,6 @@ Cursor::fetch(ulong num_rows) ...@@ -1845,7 +1845,6 @@ Cursor::fetch(ulong num_rows)
error= 0; error= 0;
#ifdef USING_TRANSACTIONS #ifdef USING_TRANSACTIONS
if (thd->transaction.all.innobase_tid)
ha_release_temporary_latches(thd); ha_release_temporary_latches(thd);
#endif #endif
......
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