Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0
into whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb sql/ha_ndbcluster.cc: Auto merged
This commit is contained in:
commit
56c184503c
@ -1,7 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/SETUP.sh" $@ --with-debug=full
|
set -- "$@" --with-debug=full
|
||||||
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
extra_flags="$pentium_cflags $debug_cflags"
|
extra_flags="$pentium_cflags $debug_cflags"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/SETUP.sh" $@ --with-debug=full
|
set -- "$@" --with-debug=full
|
||||||
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
extra_flags="$pentium_cflags $debug_cflags $max_cflags"
|
extra_flags="$pentium_cflags $debug_cflags $max_cflags"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/SETUP.sh" $@ --with-debug=full
|
set -- "$@" --with-debug=full
|
||||||
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
extra_flags="$pentium_cflags $debug_cflags $max_cflags"
|
extra_flags="$pentium_cflags $debug_cflags $max_cflags"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/SETUP.sh" $@ --with-debug=full
|
set -- "$@" --with-debug=full
|
||||||
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
extra_flags="$pentium64_cflags $debug_cflags"
|
extra_flags="$pentium64_cflags $debug_cflags"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
|
||||||
path=`dirname $0`
|
path=`dirname $0`
|
||||||
. "$path/SETUP.sh" $@ --with-debug=full
|
set -- "$@" --with-debug=full
|
||||||
|
. "$path/SETUP.sh"
|
||||||
|
|
||||||
extra_flags="$pentium64_cflags $debug_cflags $max_cflags"
|
extra_flags="$pentium64_cflags $debug_cflags $max_cflags"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
@ -153,6 +153,10 @@ test-bt:
|
|||||||
@PERL@ ./mysql-test-run.pl --force --comment=normal --report-features
|
@PERL@ ./mysql-test-run.pl --force --comment=normal --report-features
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@PERL@ ./mysql-test-run.pl --force --comment=ps --ps-protocol
|
@PERL@ ./mysql-test-run.pl --force --comment=ps --ps-protocol
|
||||||
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --suite=funcs_1
|
||||||
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2
|
||||||
|
|
||||||
test-bt-debug:
|
test-bt-debug:
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@ -733,6 +733,7 @@ Global
|
|||||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug 98.ActiveCfg = Debug 98|Win32
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug 98.ActiveCfg = Debug 98|Win32
|
||||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug 98.Build.0 = Debug 98|Win32
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Debug 98.Build.0 = Debug 98|Win32
|
||||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise.ActiveCfg = Release|Win32
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise.ActiveCfg = Release|Win32
|
||||||
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise.Build.0 = Release|Win32
|
||||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise Debug.ActiveCfg = Debug|Win32
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise Debug.ActiveCfg = Debug|Win32
|
||||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise Debug.Build.0 = Debug|Win32
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise Debug.Build.0 = Debug|Win32
|
||||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise GPL.ActiveCfg = Release|Win32
|
{44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise GPL.ActiveCfg = Release|Win32
|
||||||
|
92
configure.in
92
configure.in
@ -463,6 +463,22 @@ AC_SUBST(MAKEINDEX)
|
|||||||
|
|
||||||
# icheck, used for ABI check
|
# icheck, used for ABI check
|
||||||
AC_PATH_PROG(ICHECK, icheck, no)
|
AC_PATH_PROG(ICHECK, icheck, no)
|
||||||
|
# "icheck" is also the name of a file system check program on Tru64.
|
||||||
|
# Verify the program found is really the interface checker.
|
||||||
|
if test "x$ICHECK" != "xno"
|
||||||
|
then
|
||||||
|
AC_MSG_CHECKING(if $ICHECK works as expected)
|
||||||
|
echo "int foo;" > conftest.h
|
||||||
|
$ICHECK --canonify -o conftest.ic conftest.h 2>/dev/null
|
||||||
|
if test -f "conftest.ic"
|
||||||
|
then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
ICHECK=no
|
||||||
|
fi
|
||||||
|
rm -f conftest.ic conftest.h
|
||||||
|
fi
|
||||||
AC_SUBST(ICHECK)
|
AC_SUBST(ICHECK)
|
||||||
|
|
||||||
# Lock for PS
|
# Lock for PS
|
||||||
@ -2380,28 +2396,6 @@ AC_ARG_WITH(man,
|
|||||||
[with_man=yes]
|
[with_man=yes]
|
||||||
)
|
)
|
||||||
|
|
||||||
if test X"$with_man" = Xyes
|
|
||||||
then
|
|
||||||
man_dirs="man"
|
|
||||||
if test X"$have_ndbcluster" = Xyes
|
|
||||||
then
|
|
||||||
man1_files=`ls $srcdir/man/*.1 | sed -e 's;^.*man/;;'`
|
|
||||||
man8_files=`ls $srcdir/man/*.8 | sed -e 's;^.*man/;;'`
|
|
||||||
else
|
|
||||||
man1_files=`ls $srcdir/man/*.1 | grep -v '/ndb' | sed -e 's;^.*man/;;'`
|
|
||||||
man8_files=`ls $srcdir/man/*.8 | grep -v '/ndb' | sed -e 's;^.*man/;;'`
|
|
||||||
fi
|
|
||||||
man1_files=`echo $man1_files`
|
|
||||||
man8_files=`echo $man8_files`
|
|
||||||
else
|
|
||||||
man_dirs=""
|
|
||||||
man1_files=""
|
|
||||||
man8_files=""
|
|
||||||
fi
|
|
||||||
AC_SUBST(man_dirs)
|
|
||||||
AC_SUBST(man1_files)
|
|
||||||
AC_SUBST(man8_files)
|
|
||||||
|
|
||||||
# Shall we build the bench code?
|
# Shall we build the bench code?
|
||||||
AC_ARG_WITH(bench,
|
AC_ARG_WITH(bench,
|
||||||
[ --without-bench Skip building of the benchmark suite.],
|
[ --without-bench Skip building of the benchmark suite.],
|
||||||
@ -2536,6 +2530,60 @@ MYSQL_CHECK_BLACKHOLEDB
|
|||||||
MYSQL_CHECK_NDBCLUSTER
|
MYSQL_CHECK_NDBCLUSTER
|
||||||
MYSQL_CHECK_FEDERATED
|
MYSQL_CHECK_FEDERATED
|
||||||
|
|
||||||
|
# Include man pages, if desired, adapted to the configured parts.
|
||||||
|
if test X"$with_man" = Xyes
|
||||||
|
then
|
||||||
|
# First, create the list of all man pages present.
|
||||||
|
MANLISTFIL=manlist.$$
|
||||||
|
TMPLISTFIL=`echo $MANLISTFIL | sed -e 's/manlist/tmplist/'`
|
||||||
|
if test -f $MANLISTFIL -o -f $TMPLISTFIL
|
||||||
|
then
|
||||||
|
echo "Temp file '$MANLISTFIL' or '$TMPLISTFIL' already exists in '`pwd`' - aborting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
touch $MANLISTFIL $TMPLISTFIL
|
||||||
|
|
||||||
|
ls $srcdir/man/*.[[18]] > $MANLISTFIL
|
||||||
|
|
||||||
|
# Then, remove all those pages from the list which are specific to parts
|
||||||
|
# (table handlers, features, ...) which are not configured in this run.
|
||||||
|
AC_MSG_CHECKING("for man pages to remove")
|
||||||
|
MAN_DROP="dropping"
|
||||||
|
if test X"$have_ndbcluster" != Xyes
|
||||||
|
then
|
||||||
|
MAN_DROP="$MAN_DROP ndbcluster"
|
||||||
|
grep -v '/ndb' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL
|
||||||
|
fi
|
||||||
|
if test X"$with_embedded_server" != Xyes
|
||||||
|
then
|
||||||
|
MAN_DROP="$MAN_DROP embedded"
|
||||||
|
grep -v 'embedded' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL
|
||||||
|
fi
|
||||||
|
if test X"$have_innodb" != Xyes
|
||||||
|
then
|
||||||
|
MAN_DROP="$MAN_DROP innodb"
|
||||||
|
grep -v 'inno' $MANLISTFIL > $TMPLISTFIL ; mv -f $TMPLISTFIL $MANLISTFIL
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT([$MAN_DROP])
|
||||||
|
|
||||||
|
# Finally, split the man pages into sections 1 and 8.
|
||||||
|
# Get rid of line breaks.
|
||||||
|
man1_files=`sed -n -e '/\.1$/s/^.*man\///p' <$MANLISTFIL`
|
||||||
|
man8_files=`sed -n -e '/\.8$/s/^.*man\///p' <$MANLISTFIL`
|
||||||
|
|
||||||
|
man_dirs="man"
|
||||||
|
man1_files=`echo $man1_files`
|
||||||
|
man8_files=`echo $man8_files`
|
||||||
|
rm -f $MANLISTFIL $TMPLISTFIL
|
||||||
|
else
|
||||||
|
man_dirs=""
|
||||||
|
man1_files=""
|
||||||
|
man8_files=""
|
||||||
|
fi
|
||||||
|
AC_SUBST(man_dirs)
|
||||||
|
AC_SUBST(man1_files)
|
||||||
|
AC_SUBST(man8_files)
|
||||||
|
|
||||||
# If we have threads generate some library functions and test programs
|
# If we have threads generate some library functions and test programs
|
||||||
sql_server_dirs=
|
sql_server_dirs=
|
||||||
server_scripts=
|
server_scripts=
|
||||||
|
@ -574,10 +574,12 @@ int main (int argc, char **argv)
|
|||||||
FILE *infile;
|
FILE *infile;
|
||||||
FILE *outfile = {stdout};
|
FILE *outfile = {stdout};
|
||||||
|
|
||||||
#if defined(HAVE_PTHREAD_INIT) && defined(THREAD)
|
#ifdef THREAD
|
||||||
|
#if defined(HAVE_PTHREAD_INIT)
|
||||||
pthread_init(); /* Must be called before DBUG_ENTER */
|
pthread_init(); /* Must be called before DBUG_ENTER */
|
||||||
#endif
|
#endif
|
||||||
my_thread_global_init();
|
my_thread_global_init();
|
||||||
|
#endif /* THREAD */
|
||||||
{
|
{
|
||||||
DBUG_ENTER ("main");
|
DBUG_ENTER ("main");
|
||||||
DBUG_PROCESS (argv[0]);
|
DBUG_PROCESS (argv[0]);
|
||||||
|
@ -22,7 +22,7 @@ HEADERS_ABI = mysql.h mysql_com.h mysql_time.h \
|
|||||||
pkginclude_HEADERS = $(HEADERS_ABI) my_dbug.h m_string.h my_sys.h \
|
pkginclude_HEADERS = $(HEADERS_ABI) my_dbug.h m_string.h my_sys.h \
|
||||||
my_xml.h mysql_embed.h \
|
my_xml.h mysql_embed.h \
|
||||||
my_pthread.h my_no_pthread.h raid.h \
|
my_pthread.h my_no_pthread.h raid.h \
|
||||||
errmsg.h my_global.h my_net.h \
|
decimal.h errmsg.h my_global.h my_net.h \
|
||||||
my_getopt.h sslopt-longopts.h my_dir.h \
|
my_getopt.h sslopt-longopts.h my_dir.h \
|
||||||
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
|
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
|
||||||
m_ctype.h my_attribute.h $(HEADERS_GEN)
|
m_ctype.h my_attribute.h $(HEADERS_GEN)
|
||||||
@ -33,7 +33,7 @@ noinst_HEADERS = config-win.h config-os2.h config-netware.h \
|
|||||||
my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
|
my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
|
||||||
my_aes.h my_tree.h hash.h thr_alarm.h \
|
my_aes.h my_tree.h hash.h thr_alarm.h \
|
||||||
thr_lock.h t_ctype.h violite.h md5.h base64.h \
|
thr_lock.h t_ctype.h violite.h md5.h base64.h \
|
||||||
mysql_version.h.in my_handler.h my_time.h decimal.h \
|
mysql_version.h.in my_handler.h my_time.h \
|
||||||
my_user.h my_libwrap.h
|
my_user.h my_libwrap.h
|
||||||
|
|
||||||
# Remove built files and the symlinked directories
|
# Remove built files and the symlinked directories
|
||||||
|
@ -57,9 +57,9 @@ int mi_status(MI_INFO *info, register MI_ISAMINFO *x, uint flag)
|
|||||||
|
|
||||||
x->keys = share->state.header.keys;
|
x->keys = share->state.header.keys;
|
||||||
x->check_time = share->state.check_time;
|
x->check_time = share->state.check_time;
|
||||||
x->mean_reclength = info->state->records ?
|
x->mean_reclength= x->records ?
|
||||||
(ulong) ((info->state->data_file_length-info->state->empty)/
|
(ulong) ((x->data_file_length - x->delete_length) / x->records) :
|
||||||
info->state->records) : (ulong) share->min_pack_length;
|
(ulong) share->min_pack_length;
|
||||||
}
|
}
|
||||||
if (flag & HA_STATUS_ERRKEY)
|
if (flag & HA_STATUS_ERRKEY)
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,7 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
|
|||||||
key_buff=info->lastkey+info->s->base.max_key_length;
|
key_buff=info->lastkey+info->s->base.max_key_length;
|
||||||
pack_key_length= key_len;
|
pack_key_length= key_len;
|
||||||
bmove(key_buff,key,key_len);
|
bmove(key_buff,key,key_len);
|
||||||
last_used_keyseg= 0;
|
last_used_keyseg= info->s->keyinfo[inx].seg + info->last_used_keyseg;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -61,6 +61,8 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
|
|||||||
key_len, &last_used_keyseg);
|
key_len, &last_used_keyseg);
|
||||||
/* Save packed_key_length for use by the MERGE engine. */
|
/* Save packed_key_length for use by the MERGE engine. */
|
||||||
info->pack_key_length= pack_key_length;
|
info->pack_key_length= pack_key_length;
|
||||||
|
info->last_used_keyseg= (uint16) (last_used_keyseg -
|
||||||
|
info->s->keyinfo[inx].seg);
|
||||||
DBUG_EXECUTE("key",_mi_print_key(DBUG_FILE, keyinfo->seg,
|
DBUG_EXECUTE("key",_mi_print_key(DBUG_FILE, keyinfo->seg,
|
||||||
key_buff, pack_key_length););
|
key_buff, pack_key_length););
|
||||||
}
|
}
|
||||||
|
@ -263,6 +263,7 @@ struct st_myisam_info {
|
|||||||
enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */
|
enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */
|
||||||
uint save_lastkey_length;
|
uint save_lastkey_length;
|
||||||
uint pack_key_length; /* For MYISAMMRG */
|
uint pack_key_length; /* For MYISAMMRG */
|
||||||
|
uint16 last_used_keyseg; /* For MyISAMMRG */
|
||||||
int errkey; /* Got last error on this key */
|
int errkey; /* Got last error on this key */
|
||||||
int lock_type; /* How database was locked */
|
int lock_type; /* How database was locked */
|
||||||
int tmp_lock_type; /* When locked by readinfo */
|
int tmp_lock_type; /* When locked by readinfo */
|
||||||
|
@ -40,12 +40,14 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
|
|||||||
{
|
{
|
||||||
byte *key_buff;
|
byte *key_buff;
|
||||||
uint pack_key_length;
|
uint pack_key_length;
|
||||||
|
uint16 last_used_keyseg;
|
||||||
MYRG_TABLE *table;
|
MYRG_TABLE *table;
|
||||||
MI_INFO *mi;
|
MI_INFO *mi;
|
||||||
int err;
|
int err;
|
||||||
DBUG_ENTER("myrg_rkey");
|
DBUG_ENTER("myrg_rkey");
|
||||||
LINT_INIT(key_buff);
|
LINT_INIT(key_buff);
|
||||||
LINT_INIT(pack_key_length);
|
LINT_INIT(pack_key_length);
|
||||||
|
LINT_INIT(last_used_keyseg);
|
||||||
|
|
||||||
if (_myrg_init_queue(info,inx,search_flag))
|
if (_myrg_init_queue(info,inx,search_flag))
|
||||||
DBUG_RETURN(my_errno);
|
DBUG_RETURN(my_errno);
|
||||||
@ -60,10 +62,12 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key,
|
|||||||
/* Get the saved packed key and packed key length. */
|
/* Get the saved packed key and packed key length. */
|
||||||
key_buff=(byte*) mi->lastkey+mi->s->base.max_key_length;
|
key_buff=(byte*) mi->lastkey+mi->s->base.max_key_length;
|
||||||
pack_key_length=mi->pack_key_length;
|
pack_key_length=mi->pack_key_length;
|
||||||
|
last_used_keyseg= mi->last_used_keyseg;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mi->once_flags|= USE_PACKED_KEYS;
|
mi->once_flags|= USE_PACKED_KEYS;
|
||||||
|
mi->last_used_keyseg= last_used_keyseg;
|
||||||
err=mi_rkey(mi,0,inx,key_buff,pack_key_length,search_flag);
|
err=mi_rkey(mi,0,inx,key_buff,pack_key_length,search_flag);
|
||||||
}
|
}
|
||||||
info->last_used_table=table+1;
|
info->last_used_table=table+1;
|
||||||
|
@ -33,7 +33,7 @@ endif
|
|||||||
benchdir_root= $(prefix)
|
benchdir_root= $(prefix)
|
||||||
testdir = $(benchdir_root)/mysql-test
|
testdir = $(benchdir_root)/mysql-test
|
||||||
EXTRA_SCRIPTS = mysql-test-run-shell.sh install_test_db.sh valgrind.supp $(PRESCRIPTS)
|
EXTRA_SCRIPTS = mysql-test-run-shell.sh install_test_db.sh valgrind.supp $(PRESCRIPTS)
|
||||||
EXTRA_DIST = $(EXTRA_SCRIPTS)
|
EXTRA_DIST = $(EXTRA_SCRIPTS) suite
|
||||||
GENSCRIPTS = mysql-test-run-shell mysql-test-run install_test_db mtr
|
GENSCRIPTS = mysql-test-run-shell mysql-test-run install_test_db mtr
|
||||||
PRESCRIPTS = mysql-test-run.pl
|
PRESCRIPTS = mysql-test-run.pl
|
||||||
test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS)
|
test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS)
|
||||||
@ -67,6 +67,7 @@ dist-hook:
|
|||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib
|
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib
|
||||||
|
-rm -rf `find $(distdir)/suite -type d -name SCCS`
|
||||||
|
|
||||||
install-data-local:
|
install-data-local:
|
||||||
$(mkinstalldirs) \
|
$(mkinstalldirs) \
|
||||||
@ -98,6 +99,12 @@ install-data-local:
|
|||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
||||||
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib
|
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib
|
||||||
|
for f in `(cd $(srcdir); find suite -type f | grep -v SCCS)`; \
|
||||||
|
do \
|
||||||
|
d=$(DESTDIR)$(testdir)/`dirname $$f`; \
|
||||||
|
mkdir -p $$d ; \
|
||||||
|
$(INSTALL_DATA) $(srcdir)/$$f $$d ; \
|
||||||
|
done
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
@RM@ -f -r $(DESTDIR)$(testdir)
|
@RM@ -f -r $(DESTDIR)$(testdir)
|
||||||
|
@ -456,3 +456,10 @@ a FORMAT(MATCH(a) AGAINST('test1 test'),6)
|
|||||||
test1 0.685267
|
test1 0.685267
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(255), FULLTEXT(a));
|
||||||
|
SELECT * FROM t1 IGNORE INDEX(a) WHERE MATCH(a) AGAINST('test');
|
||||||
|
a
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
||||||
|
ERROR HY000: Can't find FULLTEXT index matching the column list
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -816,6 +816,17 @@ ALTER TABLE m1 ENGINE=MERGE UNION=(t1);
|
|||||||
SELECT * FROM m1;
|
SELECT * FROM m1;
|
||||||
c1 c2 c3 c4 c5 c6 c7 c8 c9
|
c1 c2 c3 c4 c5 c6 c7 c8 c9
|
||||||
DROP TABLE t1, m1;
|
DROP TABLE t1, m1;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_german2_ci,
|
||||||
|
b INT, INDEX(a,b));
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
CREATE TABLE t3 LIKE t1;
|
||||||
|
ALTER TABLE t3 ENGINE=MERGE UNION=(t1,t2);
|
||||||
|
INSERT INTO t1 VALUES ('ss',1);
|
||||||
|
INSERT INTO t2 VALUES ('ss',2),(0xDF,2);
|
||||||
|
SELECT COUNT(*) FROM t3 WHERE a=0xDF AND b=2;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
create table t1 (b bit(1));
|
create table t1 (b bit(1));
|
||||||
create table t2 (b bit(1));
|
create table t2 (b bit(1));
|
||||||
create table tm (b bit(1)) engine = merge union = (t1,t2);
|
create table tm (b bit(1)) engine = merge union = (t1,t2);
|
||||||
|
@ -57,26 +57,6 @@ create table t1 (s1 int);
|
|||||||
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
truncate table v1;
|
truncate table v1;
|
||||||
select count(*) from t1;
|
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||||
count(*)
|
drop view v1;
|
||||||
0
|
drop table t1;
|
||||||
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
|
||||||
create view v2 as select * from t1 where s1 > 3;
|
|
||||||
truncate table v2;
|
|
||||||
select * from t1;
|
|
||||||
s1
|
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
select * from v2;
|
|
||||||
s1
|
|
||||||
delete from t1;
|
|
||||||
create table t2 (s1 int, s2 int);
|
|
||||||
create view v3 as select a.s1, b.s2 from t1 a join t2 b on a.s1 = b.s1 where a.s1 > 3;
|
|
||||||
truncate table v3;
|
|
||||||
ERROR HY000: Can not delete from join view 'test.v3'
|
|
||||||
create view v4 as select * from t1 limit 1,1;
|
|
||||||
truncate table v4;
|
|
||||||
ERROR HY000: The target table v4 of the TRUNCATE is not updatable
|
|
||||||
drop view v1, v2, v3, v4;
|
|
||||||
drop table t1, t2;
|
|
||||||
|
@ -377,4 +377,14 @@ EXECUTE stmt;
|
|||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#25951 - ignore/use index does not work with fulltext
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a VARCHAR(255), FULLTEXT(a));
|
||||||
|
SELECT * FROM t1 IGNORE INDEX(a) WHERE MATCH(a) AGAINST('test');
|
||||||
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
|
--error 1191
|
||||||
|
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -447,6 +447,19 @@ ALTER TABLE m1 ENGINE=MERGE UNION=(t1);
|
|||||||
SELECT * FROM m1;
|
SELECT * FROM m1;
|
||||||
DROP TABLE t1, m1;
|
DROP TABLE t1, m1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#24342 - Incorrect results with query over MERGE table
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_german2_ci,
|
||||||
|
b INT, INDEX(a,b));
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
CREATE TABLE t3 LIKE t1;
|
||||||
|
ALTER TABLE t3 ENGINE=MERGE UNION=(t1,t2);
|
||||||
|
INSERT INTO t1 VALUES ('ss',1);
|
||||||
|
INSERT INTO t2 VALUES ('ss',2),(0xDF,2);
|
||||||
|
SELECT COUNT(*) FROM t3 WHERE a=0xDF AND b=2;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -7075,8 +7075,11 @@ DROP FUNCTION bug5274_f2|
|
|||||||
delimiter ;|
|
delimiter ;|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
# Disable warnings to allow test run without InnoDB
|
||||||
|
--disable_warnings
|
||||||
CREATE TABLE t1 (a int auto_increment primary key) engine=MyISAM;
|
CREATE TABLE t1 (a int auto_increment primary key) engine=MyISAM;
|
||||||
CREATE TABLE t2 (a int auto_increment primary key, b int) engine=innodb;
|
CREATE TABLE t2 (a int auto_increment primary key, b int) engine=innodb;
|
||||||
|
--enable_warnings
|
||||||
set @a=0;
|
set @a=0;
|
||||||
|
|
||||||
delimiter |;
|
delimiter |;
|
||||||
|
@ -54,33 +54,18 @@ drop table t1;
|
|||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
# Test for Bug#5507 "TRUNCATE should work with views"
|
# Test for Bug#5507 "TRUNCATE should work with views"
|
||||||
|
#
|
||||||
|
# when it'll be fixed, the error should become 1347
|
||||||
|
# (test.v1' is not BASE TABLE)
|
||||||
|
#
|
||||||
|
|
||||||
create table t1 (s1 int);
|
create table t1 (s1 int);
|
||||||
|
|
||||||
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
|
--error 1146
|
||||||
truncate table v1;
|
truncate table v1;
|
||||||
select count(*) from t1;
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
|
||||||
create view v2 as select * from t1 where s1 > 3;
|
|
||||||
truncate table v2;
|
|
||||||
select * from t1;
|
|
||||||
select * from v2;
|
|
||||||
delete from t1;
|
|
||||||
|
|
||||||
# The following should fail
|
|
||||||
create table t2 (s1 int, s2 int);
|
|
||||||
create view v3 as select a.s1, b.s2 from t1 a join t2 b on a.s1 = b.s1 where a.s1 > 3;
|
|
||||||
--error 1395
|
|
||||||
truncate table v3;
|
|
||||||
|
|
||||||
# The following should fail
|
|
||||||
create view v4 as select * from t1 limit 1,1;
|
|
||||||
--error 1288
|
|
||||||
truncate table v4;
|
|
||||||
|
|
||||||
drop view v1, v2, v3, v4;
|
|
||||||
drop table t1, t2;
|
|
||||||
|
|
||||||
# End of 5.0 tests
|
# End of 5.0 tests
|
||||||
|
|
||||||
|
@ -1051,18 +1051,7 @@ class Ndb
|
|||||||
friend class NdbDictionaryImpl;
|
friend class NdbDictionaryImpl;
|
||||||
friend class NdbDictInterface;
|
friend class NdbDictInterface;
|
||||||
friend class NdbBlob;
|
friend class NdbBlob;
|
||||||
friend class Ndb_free_list_t<NdbRecAttr>;
|
friend class NdbImpl;
|
||||||
friend class Ndb_free_list_t<NdbApiSignal>;
|
|
||||||
friend class Ndb_free_list_t<NdbLabel>;
|
|
||||||
friend class Ndb_free_list_t<NdbBranch>;
|
|
||||||
friend class Ndb_free_list_t<NdbSubroutine>;
|
|
||||||
friend class Ndb_free_list_t<NdbCall>;
|
|
||||||
friend class Ndb_free_list_t<NdbBlob>;
|
|
||||||
friend class Ndb_free_list_t<NdbReceiver>;
|
|
||||||
friend class Ndb_free_list_t<NdbIndexScanOperation>;
|
|
||||||
friend class Ndb_free_list_t<NdbOperation>;
|
|
||||||
friend class Ndb_free_list_t<NdbIndexOperation>;
|
|
||||||
friend class Ndb_free_list_t<NdbTransaction>;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -89,6 +89,15 @@ public:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
We need this friend accessor function to work around a HP compiler problem,
|
||||||
|
where template class friends are not working.
|
||||||
|
*/
|
||||||
|
static inline void setNdbError(Ndb &ndb,int code){
|
||||||
|
ndb.theError.code = code;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NOTE free lists must be _after_ theNdbObjectIdMap take
|
* NOTE free lists must be _after_ theNdbObjectIdMap take
|
||||||
* assure that destructors are run in correct order
|
* assure that destructors are run in correct order
|
||||||
@ -208,7 +217,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
|
|||||||
m_free_list = new T(ndb);
|
m_free_list = new T(ndb);
|
||||||
if (m_free_list == 0)
|
if (m_free_list == 0)
|
||||||
{
|
{
|
||||||
ndb->theError.code = 4000;
|
NdbImpl::setNdbError(*ndb, 4000);
|
||||||
assert(false);
|
assert(false);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -218,7 +227,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
|
|||||||
T* obj= new T(ndb);
|
T* obj= new T(ndb);
|
||||||
if(obj == 0)
|
if(obj == 0)
|
||||||
{
|
{
|
||||||
ndb->theError.code = 4000;
|
NdbImpl::setNdbError(*ndb, 4000);
|
||||||
assert(false);
|
assert(false);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -250,7 +259,7 @@ Ndb_free_list_t<T>::seize(Ndb* ndb)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ndb->theError.code = 4000;
|
NdbImpl::setNdbError(*ndb, 4000);
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
return tmp;
|
return tmp;
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
/* Copyright (C) 2007, Justin He, MySQL AB
|
/* Copyright (C) 2007 MySQL AB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
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
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation; version 2 of the License.
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
@ -733,8 +733,8 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field,
|
|||||||
DBUG_DUMP("value", (char*)&bits, pack_len);
|
DBUG_DUMP("value", (char*)&bits, pack_len);
|
||||||
#ifdef WORDS_BIGENDIAN
|
#ifdef WORDS_BIGENDIAN
|
||||||
/* store lsw first */
|
/* store lsw first */
|
||||||
bits = ((bits >> 32) & 0x00000000FFFFFFFF)
|
bits = ((bits >> 32) & 0x00000000FFFFFFFFLL)
|
||||||
| ((bits << 32) & 0xFFFFFFFF00000000);
|
| ((bits << 32) & 0xFFFFFFFF00000000LL);
|
||||||
#endif
|
#endif
|
||||||
DBUG_RETURN(ndb_op->setValue(fieldnr, (char*)&bits, pack_len) != 0);
|
DBUG_RETURN(ndb_op->setValue(fieldnr, (char*)&bits, pack_len) != 0);
|
||||||
}
|
}
|
||||||
@ -2685,10 +2685,10 @@ void ha_ndbcluster::unpack_record(byte* buf)
|
|||||||
/* lsw is stored first */
|
/* lsw is stored first */
|
||||||
Uint32 *buf= (Uint32 *)(*value).rec->aRef();
|
Uint32 *buf= (Uint32 *)(*value).rec->aRef();
|
||||||
((Field_bit *) *field)->store((((longlong)*buf)
|
((Field_bit *) *field)->store((((longlong)*buf)
|
||||||
& 0x000000000FFFFFFFF)
|
& 0x000000000FFFFFFFFLL)
|
||||||
|
|
|
|
||||||
((((longlong)*(buf+1)) << 32)
|
((((longlong)*(buf+1)) << 32)
|
||||||
& 0xFFFFFFFF00000000),
|
& 0xFFFFFFFF00000000LL),
|
||||||
TRUE);
|
TRUE);
|
||||||
#else
|
#else
|
||||||
((Field_bit *) *field)->store((longlong)
|
((Field_bit *) *field)->store((longlong)
|
||||||
|
@ -4734,7 +4734,7 @@ bool Item_func_match::fix_index()
|
|||||||
for (keynr=0 ; keynr < table->s->keys ; keynr++)
|
for (keynr=0 ; keynr < table->s->keys ; keynr++)
|
||||||
{
|
{
|
||||||
if ((table->key_info[keynr].flags & HA_FULLTEXT) &&
|
if ((table->key_info[keynr].flags & HA_FULLTEXT) &&
|
||||||
(table->keys_in_use_for_query.is_set(keynr)))
|
(table->s->keys_in_use.is_set(keynr)))
|
||||||
{
|
{
|
||||||
ft_to_key[fts]=keynr;
|
ft_to_key[fts]=keynr;
|
||||||
ft_cnt[fts]=0;
|
ft_cnt[fts]=0;
|
||||||
|
@ -369,8 +369,6 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
|
|||||||
{
|
{
|
||||||
Item *fake_conds= 0;
|
Item *fake_conds= 0;
|
||||||
SELECT_LEX *select_lex= &thd->lex->select_lex;
|
SELECT_LEX *select_lex= &thd->lex->select_lex;
|
||||||
const char *operation = thd->lex->sql_command == SQLCOM_TRUNCATE ?
|
|
||||||
"TRUNCATE" : "DELETE";
|
|
||||||
DBUG_ENTER("mysql_prepare_delete");
|
DBUG_ENTER("mysql_prepare_delete");
|
||||||
List<Item> all_fields;
|
List<Item> all_fields;
|
||||||
|
|
||||||
@ -385,14 +383,14 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
|
|||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
if (!table_list->updatable || check_key_in_view(thd, table_list))
|
if (!table_list->updatable || check_key_in_view(thd, table_list))
|
||||||
{
|
{
|
||||||
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, operation);
|
my_error(ER_NON_UPDATABLE_TABLE, MYF(0), table_list->alias, "DELETE");
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
TABLE_LIST *duplicate;
|
TABLE_LIST *duplicate;
|
||||||
if ((duplicate= unique_table(thd, table_list, table_list->next_global, 0)))
|
if ((duplicate= unique_table(thd, table_list, table_list->next_global, 0)))
|
||||||
{
|
{
|
||||||
update_non_unique_table_error(table_list, operation, duplicate);
|
update_non_unique_table_error(table_list, "DELETE", duplicate);
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -897,8 +895,7 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok)
|
|||||||
if (!dont_send_ok)
|
if (!dont_send_ok)
|
||||||
{
|
{
|
||||||
db_type table_type;
|
db_type table_type;
|
||||||
if (mysql_frm_type(thd, path, &table_type) == FRMTYPE_VIEW)
|
mysql_frm_type(thd, path, &table_type);
|
||||||
goto trunc_by_del;
|
|
||||||
if (table_type == DB_TYPE_UNKNOWN)
|
if (table_type == DB_TYPE_UNKNOWN)
|
||||||
{
|
{
|
||||||
my_error(ER_NO_SUCH_TABLE, MYF(0),
|
my_error(ER_NO_SUCH_TABLE, MYF(0),
|
||||||
|
@ -1834,7 +1834,6 @@ bool st_lex::can_use_merged()
|
|||||||
case SQLCOM_UPDATE_MULTI:
|
case SQLCOM_UPDATE_MULTI:
|
||||||
case SQLCOM_DELETE:
|
case SQLCOM_DELETE:
|
||||||
case SQLCOM_DELETE_MULTI:
|
case SQLCOM_DELETE_MULTI:
|
||||||
case SQLCOM_TRUNCATE:
|
|
||||||
case SQLCOM_INSERT:
|
case SQLCOM_INSERT:
|
||||||
case SQLCOM_INSERT_SELECT:
|
case SQLCOM_INSERT_SELECT:
|
||||||
case SQLCOM_REPLACE:
|
case SQLCOM_REPLACE:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user