diff options
author | unknown <tomas@whalegate.ndb.mysql.com> | 2007-04-27 11:45:28 +0200 |
---|---|---|
committer | unknown <tomas@whalegate.ndb.mysql.com> | 2007-04-27 11:45:28 +0200 |
commit | 56c184503cdbcbbdca808b178bb0861c055c6d9c (patch) | |
tree | 3eb78469f31084eaff3e905d0317f9770846fcfd | |
parent | 11a463bbff755dfe2550a1f766a9c72e613fe15d (diff) | |
parent | f63100e144e403c32b9536efbb0502e78b81e85f (diff) | |
download | mariadb-git-56c184503cdbcbbdca808b178bb0861c055c6d9c.tar.gz |
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
29 files changed, 187 insertions, 111 deletions
diff --git a/BUILD/compile-pentium-debug b/BUILD/compile-pentium-debug index 7957caead29..e31cb59a8a4 100755 --- a/BUILD/compile-pentium-debug +++ b/BUILD/compile-pentium-debug @@ -1,7 +1,8 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" $@ --with-debug=full +set -- "$@" --with-debug=full +. "$path/SETUP.sh" extra_flags="$pentium_cflags $debug_cflags" c_warnings="$c_warnings $debug_extra_warnings" diff --git a/BUILD/compile-pentium-debug-max b/BUILD/compile-pentium-debug-max index a69513ac6bb..56e24617abb 100755 --- a/BUILD/compile-pentium-debug-max +++ b/BUILD/compile-pentium-debug-max @@ -1,7 +1,8 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" $@ --with-debug=full +set -- "$@" --with-debug=full +. "$path/SETUP.sh" extra_flags="$pentium_cflags $debug_cflags $max_cflags" c_warnings="$c_warnings $debug_extra_warnings" diff --git a/BUILD/compile-pentium-debug-max-no-ndb b/BUILD/compile-pentium-debug-max-no-ndb index 26ec7eacc9d..92a388f9cb9 100755 --- a/BUILD/compile-pentium-debug-max-no-ndb +++ b/BUILD/compile-pentium-debug-max-no-ndb @@ -1,7 +1,8 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" $@ --with-debug=full +set -- "$@" --with-debug=full +. "$path/SETUP.sh" extra_flags="$pentium_cflags $debug_cflags $max_cflags" c_warnings="$c_warnings $debug_extra_warnings" diff --git a/BUILD/compile-pentium64-debug b/BUILD/compile-pentium64-debug index 0299669f79a..1edc9827366 100755 --- a/BUILD/compile-pentium64-debug +++ b/BUILD/compile-pentium64-debug @@ -1,7 +1,8 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" $@ --with-debug=full +set -- "$@" --with-debug=full +. "$path/SETUP.sh" extra_flags="$pentium64_cflags $debug_cflags" c_warnings="$c_warnings $debug_extra_warnings" diff --git a/BUILD/compile-pentium64-debug-max b/BUILD/compile-pentium64-debug-max index f0745c88c90..656825d8494 100755 --- a/BUILD/compile-pentium64-debug-max +++ b/BUILD/compile-pentium64-debug-max @@ -1,7 +1,8 @@ #! /bin/sh path=`dirname $0` -. "$path/SETUP.sh" $@ --with-debug=full +set -- "$@" --with-debug=full +. "$path/SETUP.sh" extra_flags="$pentium64_cflags $debug_cflags $max_cflags" c_warnings="$c_warnings $debug_extra_warnings" diff --git a/Makefile.am b/Makefile.am index 9e9520c29d8..992a6f6d755 100644 --- a/Makefile.am +++ b/Makefile.am @@ -153,6 +153,10 @@ test-bt: @PERL@ ./mysql-test-run.pl --force --comment=normal --report-features -cd mysql-test ; MTR_BUILD_THREAD=auto \ @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: -cd mysql-test ; MTR_BUILD_THREAD=auto \ diff --git a/VC++Files/mysql.sln b/VC++Files/mysql.sln index 31b9232e2ec..f9b22b6dcc9 100644 --- a/VC++Files/mysql.sln +++ b/VC++Files/mysql.sln @@ -733,6 +733,7 @@ Global {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}.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.Build.0 = Debug|Win32 {44D9C7DC-6636-4B82-BD01-6876C64017DF}.Enterprise GPL.ActiveCfg = Release|Win32 diff --git a/configure.in b/configure.in index 86caf320d96..1026c855bf2 100644 --- a/configure.in +++ b/configure.in @@ -463,6 +463,22 @@ AC_SUBST(MAKEINDEX) # icheck, used for ABI check 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) # Lock for PS @@ -2380,28 +2396,6 @@ AC_ARG_WITH(man, [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? AC_ARG_WITH(bench, [ --without-bench Skip building of the benchmark suite.], @@ -2536,6 +2530,60 @@ MYSQL_CHECK_BLACKHOLEDB MYSQL_CHECK_NDBCLUSTER 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 sql_server_dirs= server_scripts= diff --git a/dbug/dbug_analyze.c b/dbug/dbug_analyze.c index 8cd0af4f7e0..3263b2ccc59 100644 --- a/dbug/dbug_analyze.c +++ b/dbug/dbug_analyze.c @@ -574,10 +574,12 @@ int main (int argc, char **argv) FILE *infile; 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 */ #endif my_thread_global_init(); +#endif /* THREAD */ { DBUG_ENTER ("main"); DBUG_PROCESS (argv[0]); diff --git a/include/Makefile.am b/include/Makefile.am index e5fac39e5ff..ccd5ac627bf 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -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 \ my_xml.h mysql_embed.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 \ sslopt-vars.h sslopt-case.h sql_common.h keycache.h \ 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_aes.h my_tree.h hash.h thr_alarm.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 # Remove built files and the symlinked directories diff --git a/myisam/mi_info.c b/myisam/mi_info.c index 0435269ed6d..b7de8e7b37d 100644 --- a/myisam/mi_info.c +++ b/myisam/mi_info.c @@ -57,9 +57,9 @@ int mi_status(MI_INFO *info, register MI_ISAMINFO *x, uint flag) x->keys = share->state.header.keys; x->check_time = share->state.check_time; - x->mean_reclength = info->state->records ? - (ulong) ((info->state->data_file_length-info->state->empty)/ - info->state->records) : (ulong) share->min_pack_length; + x->mean_reclength= x->records ? + (ulong) ((x->data_file_length - x->delete_length) / x->records) : + (ulong) share->min_pack_length; } if (flag & HA_STATUS_ERRKEY) { diff --git a/myisam/mi_rkey.c b/myisam/mi_rkey.c index 6323c95ffd7..83259a275b1 100644 --- a/myisam/mi_rkey.c +++ b/myisam/mi_rkey.c @@ -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; pack_key_length= 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 { @@ -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); /* Save packed_key_length for use by the MERGE engine. */ 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, key_buff, pack_key_length);); } diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h index 0733073a7ea..1a04cbe74fc 100644 --- a/myisam/myisamdef.h +++ b/myisam/myisamdef.h @@ -263,6 +263,7 @@ struct st_myisam_info { enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */ uint save_lastkey_length; uint pack_key_length; /* For MYISAMMRG */ + uint16 last_used_keyseg; /* For MyISAMMRG */ int errkey; /* Got last error on this key */ int lock_type; /* How database was locked */ int tmp_lock_type; /* When locked by readinfo */ diff --git a/myisammrg/myrg_rkey.c b/myisammrg/myrg_rkey.c index f7b7f082019..0f9e9a9b822 100644 --- a/myisammrg/myrg_rkey.c +++ b/myisammrg/myrg_rkey.c @@ -40,12 +40,14 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key, { byte *key_buff; uint pack_key_length; + uint16 last_used_keyseg; MYRG_TABLE *table; MI_INFO *mi; int err; DBUG_ENTER("myrg_rkey"); LINT_INIT(key_buff); LINT_INIT(pack_key_length); + LINT_INIT(last_used_keyseg); if (_myrg_init_queue(info,inx,search_flag)) 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. */ key_buff=(byte*) mi->lastkey+mi->s->base.max_key_length; pack_key_length=mi->pack_key_length; + last_used_keyseg= mi->last_used_keyseg; } else { 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); } info->last_used_table=table+1; diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index d48b8c7dfe4..6c7207b0b2d 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -33,7 +33,7 @@ endif benchdir_root= $(prefix) testdir = $(benchdir_root)/mysql-test 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 PRESCRIPTS = mysql-test-run.pl test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS) @@ -67,6 +67,7 @@ dist-hook: $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib + -rm -rf `find $(distdir)/suite -type d -name SCCS` install-data-local: $(mkinstalldirs) \ @@ -98,6 +99,12 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data $(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: @RM@ -f -r $(DESTDIR)$(testdir) diff --git a/mysql-test/r/fulltext.result b/mysql-test/r/fulltext.result index 7c9069791fa..f6efe2411c0 100644 --- a/mysql-test/r/fulltext.result +++ b/mysql-test/r/fulltext.result @@ -456,3 +456,10 @@ a FORMAT(MATCH(a) AGAINST('test1 test'),6) test1 0.685267 DEALLOCATE PREPARE stmt; 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; diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index c4419d64a65..27465dd96f6 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -816,6 +816,17 @@ ALTER TABLE m1 ENGINE=MERGE UNION=(t1); SELECT * FROM m1; c1 c2 c3 c4 c5 c6 c7 c8 c9 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 t2 (b bit(1)); create table tm (b bit(1)) engine = merge union = (t1,t2); diff --git a/mysql-test/r/truncate.result b/mysql-test/r/truncate.result index 6c21db0e2b8..b194f9b7dc6 100644 --- a/mysql-test/r/truncate.result +++ b/mysql-test/r/truncate.result @@ -57,26 +57,6 @@ create table t1 (s1 int); insert into t1 (s1) values (1), (2), (3), (4), (5); create view v1 as select * from t1; truncate table v1; -select count(*) from t1; -count(*) -0 -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; +ERROR 42S02: Table 'test.v1' doesn't exist +drop view v1; +drop table t1; diff --git a/mysql-test/t/fulltext.test b/mysql-test/t/fulltext.test index 0f7835e9e7e..44375562307 100644 --- a/mysql-test/t/fulltext.test +++ b/mysql-test/t/fulltext.test @@ -377,4 +377,14 @@ EXECUTE stmt; DEALLOCATE PREPARE stmt; 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 diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index 490010c0a42..b3944416adc 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -447,6 +447,19 @@ ALTER TABLE m1 ENGINE=MERGE UNION=(t1); SELECT * FROM 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 # diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 64876ae0584..c94a526e10c 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -7075,8 +7075,11 @@ DROP FUNCTION bug5274_f2| delimiter ;| 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 t2 (a int auto_increment primary key, b int) engine=innodb; +--enable_warnings set @a=0; delimiter |; diff --git a/mysql-test/t/truncate.test b/mysql-test/t/truncate.test index c52260124cb..ba5364bd324 100644 --- a/mysql-test/t/truncate.test +++ b/mysql-test/t/truncate.test @@ -54,33 +54,18 @@ drop table t1; # End of 4.1 tests # 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); - insert into t1 (s1) values (1), (2), (3), (4), (5); create view v1 as select * from t1; +--error 1146 truncate table v1; -select count(*) from 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; +drop view v1; +drop table t1; # End of 5.0 tests + diff --git a/ndb/include/ndbapi/Ndb.hpp b/ndb/include/ndbapi/Ndb.hpp index 5af86cd09a8..b3c9acd4e20 100644 --- a/ndb/include/ndbapi/Ndb.hpp +++ b/ndb/include/ndbapi/Ndb.hpp @@ -1051,18 +1051,7 @@ class Ndb friend class NdbDictionaryImpl; friend class NdbDictInterface; friend class NdbBlob; - friend class Ndb_free_list_t<NdbRecAttr>; - 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>; + friend class NdbImpl; #endif public: diff --git a/ndb/src/ndbapi/NdbImpl.hpp b/ndb/src/ndbapi/NdbImpl.hpp index ec386074692..dc0a057619f 100644 --- a/ndb/src/ndbapi/NdbImpl.hpp +++ b/ndb/src/ndbapi/NdbImpl.hpp @@ -89,6 +89,15 @@ public: 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 * 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); if (m_free_list == 0) { - ndb->theError.code = 4000; + NdbImpl::setNdbError(*ndb, 4000); assert(false); return -1; } @@ -218,7 +227,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt) T* obj= new T(ndb); if(obj == 0) { - ndb->theError.code = 4000; + NdbImpl::setNdbError(*ndb, 4000); assert(false); return -1; } @@ -250,7 +259,7 @@ Ndb_free_list_t<T>::seize(Ndb* ndb) } else { - ndb->theError.code = 4000; + NdbImpl::setNdbError(*ndb, 4000); assert(false); } return tmp; diff --git a/ndb/test/ndbapi/testScanFilter.cpp b/ndb/test/ndbapi/testScanFilter.cpp index e195c04bd93..5098d83745b 100644 --- a/ndb/test/ndbapi/testScanFilter.cpp +++ b/ndb/test/ndbapi/testScanFilter.cpp @@ -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 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. + the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 604a5ea19e2..8701a216b8e 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -733,8 +733,8 @@ int ha_ndbcluster::set_ndb_value(NdbOperation *ndb_op, Field *field, DBUG_DUMP("value", (char*)&bits, pack_len); #ifdef WORDS_BIGENDIAN /* store lsw first */ - bits = ((bits >> 32) & 0x00000000FFFFFFFF) - | ((bits << 32) & 0xFFFFFFFF00000000); + bits = ((bits >> 32) & 0x00000000FFFFFFFFLL) + | ((bits << 32) & 0xFFFFFFFF00000000LL); #endif 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 */ Uint32 *buf= (Uint32 *)(*value).rec->aRef(); ((Field_bit *) *field)->store((((longlong)*buf) - & 0x000000000FFFFFFFF) + & 0x000000000FFFFFFFFLL) | ((((longlong)*(buf+1)) << 32) - & 0xFFFFFFFF00000000), + & 0xFFFFFFFF00000000LL), TRUE); #else ((Field_bit *) *field)->store((longlong) diff --git a/sql/item_func.cc b/sql/item_func.cc index c4279d1bd4e..503b4362e7a 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -4734,7 +4734,7 @@ bool Item_func_match::fix_index() for (keynr=0 ; keynr < table->s->keys ; keynr++) { 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_cnt[fts]=0; diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 071acb57945..bccd4d4cafe 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -369,8 +369,6 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds) { Item *fake_conds= 0; SELECT_LEX *select_lex= &thd->lex->select_lex; - const char *operation = thd->lex->sql_command == SQLCOM_TRUNCATE ? - "TRUNCATE" : "DELETE"; DBUG_ENTER("mysql_prepare_delete"); List<Item> all_fields; @@ -385,14 +383,14 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds) DBUG_RETURN(TRUE); 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); } { TABLE_LIST *duplicate; 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); } } @@ -897,8 +895,7 @@ bool mysql_truncate(THD *thd, TABLE_LIST *table_list, bool dont_send_ok) if (!dont_send_ok) { db_type table_type; - if (mysql_frm_type(thd, path, &table_type) == FRMTYPE_VIEW) - goto trunc_by_del; + mysql_frm_type(thd, path, &table_type); if (table_type == DB_TYPE_UNKNOWN) { my_error(ER_NO_SUCH_TABLE, MYF(0), diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 4be0aca3ea7..3be844b6761 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -1834,7 +1834,6 @@ bool st_lex::can_use_merged() case SQLCOM_UPDATE_MULTI: case SQLCOM_DELETE: case SQLCOM_DELETE_MULTI: - case SQLCOM_TRUNCATE: case SQLCOM_INSERT: case SQLCOM_INSERT_SELECT: case SQLCOM_REPLACE: |