mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Patch from sleepycat to fix problem with BDB and log files
Print full command name to log files Convert table type to supported onces on ALTER TABLE Docs/manual.texi: Updates from user comments bdb/log/log_rec.c: Patch from sleepycat to fix problem with log files innobase/ibuf/Makefile.am: Don't let make do bk get innobase/include/Makefile.am: Don't let make do bk get man/Makefile.am: Don't let make do bk get myisam/mi_dbug.c: Print warning to debug log mysql-test/mysql-test-run.sh: Don't use innobase in replica mysql-test/r/null_key.result: Fix for new key lengths sql/ha_innobase.cc: Free hash cache at end sql/log.cc: Print full command name to log files sql/sql_table.cc: Convert table type to supported onces on ALTER TABLE
This commit is contained in:
@ -10794,7 +10794,12 @@ other contexts, however.
|
|||||||
@strong{MySQL} doesn't yet support the Oracle SQL extension:
|
@strong{MySQL} doesn't yet support the Oracle SQL extension:
|
||||||
@code{SELECT ... INTO TABLE ...}. @strong{MySQL} supports instead the
|
@code{SELECT ... INTO TABLE ...}. @strong{MySQL} supports instead the
|
||||||
ANSI SQL syntax @code{INSERT INTO ... SELECT ...}, which is basically
|
ANSI SQL syntax @code{INSERT INTO ... SELECT ...}, which is basically
|
||||||
the same thing.
|
the same thing. @xref{INSERT}.
|
||||||
|
|
||||||
|
@example
|
||||||
|
INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE
|
||||||
|
tblTemp1.fldOrder_ID > 100;
|
||||||
|
@end example
|
||||||
|
|
||||||
Alternatively, you can use @code{SELECT INTO OUTFILE...} or @code{CREATE
|
Alternatively, you can use @code{SELECT INTO OUTFILE...} or @code{CREATE
|
||||||
TABLE ... SELECT} to solve your problem.
|
TABLE ... SELECT} to solve your problem.
|
||||||
@ -11041,7 +11046,22 @@ constraints for application that can't easily be coded to avoid them.
|
|||||||
@subsection Views
|
@subsection Views
|
||||||
@cindex views
|
@cindex views
|
||||||
|
|
||||||
@strong{MySQL} doesn't support views, but this is on the TODO.
|
@strong{MySQL} doesn't yet support views, but we plan to implement these
|
||||||
|
to about 4.1.
|
||||||
|
|
||||||
|
Views are mostly useful in letting user access a set of relations as one
|
||||||
|
table (in read-only mode). Many SQL databases doesn't allow one to update
|
||||||
|
any rows in a view, but you have to do the updates in the separate tables.
|
||||||
|
|
||||||
|
As @strong{MySQL} is mostly used in applications and on web system where
|
||||||
|
the application write has full control on the database usage, most of
|
||||||
|
our users haven't regarded views to be very important. (At least no one
|
||||||
|
has been interested enough of this to be prepared to finance the
|
||||||
|
implementation of views).
|
||||||
|
|
||||||
|
One doesn't need views in @strong{MySQL} to restrict access to columns
|
||||||
|
as @strong{MySQL} has a very sophisticated privilege
|
||||||
|
system. @xref{Privilege system}.
|
||||||
|
|
||||||
@node Missing comments, , Missing Views, Missing functions
|
@node Missing comments, , Missing Views, Missing functions
|
||||||
@subsection @samp{--} as the Start of a Comment
|
@subsection @samp{--} as the Start of a Comment
|
||||||
@ -19539,15 +19559,18 @@ or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
|
|||||||
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
|
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
|
||||||
[INTO] tbl_name
|
[INTO] tbl_name
|
||||||
SET col_name=expression, col_name=expression, ...
|
SET col_name=expression, col_name=expression, ...
|
||||||
|
or INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name
|
||||||
|
SELECT ...
|
||||||
|
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@code{INSERT} inserts new rows into an existing table. The @code{INSERT ...
|
@code{INSERT} inserts new rows into an existing table. The @code{INSERT
|
||||||
VALUES} form of the statement inserts rows based on explicitly specified
|
... VALUES} form of the statement inserts rows based on explicitly
|
||||||
values. The @code{INSERT ... SELECT} form inserts rows selected from another
|
specified values. The @code{INSERT ... SELECT} form inserts rows
|
||||||
table or tables. The @code{INSERT ... VALUES} form with multiple value lists
|
selected from another table or tables. The @code{INSERT ... VALUES}
|
||||||
is supported in @strong{MySQL} Version 3.22.5 or later. The
|
form with multiple value lists is supported in @strong{MySQL} Version
|
||||||
@code{col_name=expression} syntax is supported in @strong{MySQL} Version 3.22.10 or
|
3.22.5 or later. The @code{col_name=expression} syntax is supported in
|
||||||
later.
|
@strong{MySQL} Version 3.22.10 or later.
|
||||||
|
|
||||||
@code{tbl_name} is the table into which rows should be inserted. The column
|
@code{tbl_name} is the table into which rows should be inserted. The column
|
||||||
name list or the @code{SET} clause indicates which columns the statement
|
name list or the @code{SET} clause indicates which columns the statement
|
||||||
@ -19607,9 +19630,17 @@ specify values for all columns that require a non-@code{NULL} value.
|
|||||||
You can find the value used for an @code{AUTO_INCREMENT} column
|
You can find the value used for an @code{AUTO_INCREMENT} column
|
||||||
with the @code{mysql_insert_id} function.
|
with the @code{mysql_insert_id} function.
|
||||||
@xref{mysql_insert_id, , @code{mysql_insert_id()}}.
|
@xref{mysql_insert_id, , @code{mysql_insert_id()}}.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
@item
|
With @code{INSERT ... SELECT} statement you can quickly insert many rows
|
||||||
The following conditions hold for an @code{INSERT INTO ... SELECT} statement:
|
into a table from one or many tables.
|
||||||
|
|
||||||
|
@example
|
||||||
|
INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE
|
||||||
|
tblTemp1.fldOrder_ID > 100;
|
||||||
|
@end example
|
||||||
|
|
||||||
|
The following conditions hold for an @code{INSERT ... SELECT} statement:
|
||||||
|
|
||||||
@itemize @minus
|
@itemize @minus
|
||||||
@item
|
@item
|
||||||
@ -19626,7 +19657,6 @@ sub-select clauses, the situation could easily be very confusing!)
|
|||||||
@item
|
@item
|
||||||
@code{AUTO_INCREMENT} columns work as usual.
|
@code{AUTO_INCREMENT} columns work as usual.
|
||||||
@end itemize
|
@end itemize
|
||||||
@end itemize
|
|
||||||
|
|
||||||
@findex mysql_info()
|
@findex mysql_info()
|
||||||
If you use @code{INSERT ... SELECT} or an @code{INSERT ... VALUES}
|
If you use @code{INSERT ... SELECT} or an @code{INSERT ... VALUES}
|
||||||
@ -29385,16 +29415,16 @@ going. Hopefully this will be better handled in future Linux Kernels.
|
|||||||
|
|
||||||
This should contain a technical description of the @strong{MySQL}
|
This should contain a technical description of the @strong{MySQL}
|
||||||
benchmark suite (and @code{crash-me}), but that description is not
|
benchmark suite (and @code{crash-me}), but that description is not
|
||||||
written yet. Currently, you should look at the code and results in the
|
written yet. Currently, you can get a good idea of the benchmark by
|
||||||
@file{sql-bench} directory in the distribution (and of course on the Web page
|
looking at the code and results in the @file{sql-bench} directory in any
|
||||||
at @uref{http://www.mysql.com/information/crash-me.php} and (normally found in
|
@strong{MySQL} source distributions.
|
||||||
the @file{sql-bench} directory in the @strong{MySQL} distribution)).
|
|
||||||
|
|
||||||
It is meant to be a benchmark that will tell any user what things a
|
This benchmark suite is meant to be a benchmark that will tell any user
|
||||||
given SQL implementation performs well or poorly at.
|
what things a given SQL implementation performs well or poorly at.
|
||||||
|
|
||||||
Note that this benchmark is single threaded, so it measures the minimum
|
Note that this benchmark is single threaded, so it measures the minimum
|
||||||
time for the operations.
|
time for the operations. We plan to in the future add a lot of
|
||||||
|
multi-threaded tests to the benchmark suite.
|
||||||
|
|
||||||
For example, (run on the same NT 4.0 machine):
|
For example, (run on the same NT 4.0 machine):
|
||||||
|
|
||||||
@ -29424,12 +29454,28 @@ For example, (run on the same NT 4.0 machine):
|
|||||||
|
|
||||||
In the above test @strong{MySQL} was run with a 8M index cache.
|
In the above test @strong{MySQL} was run with a 8M index cache.
|
||||||
|
|
||||||
|
We have gather some more benchmark results at
|
||||||
|
@uref{http://www.mysql.com/information/benchmarks.html}.
|
||||||
|
|
||||||
Note that Oracle is not included because they asked to be removed. All
|
Note that Oracle is not included because they asked to be removed. All
|
||||||
Oracle benchmarks have to be passed by Oracle! We believe that makes
|
Oracle benchmarks have to be passed by Oracle! We believe that makes
|
||||||
Oracle benchmarks @strong{VERY} biased because the above benchmarks are
|
Oracle benchmarks @strong{VERY} biased because the above benchmarks are
|
||||||
supposed to show what a standard installation can do for a single
|
supposed to show what a standard installation can do for a single
|
||||||
client.
|
client.
|
||||||
|
|
||||||
|
To run the benchmark suite, you have to download a MySQL source distribution
|
||||||
|
install the perl DBI driver, the perl DBD driver for the database you want to
|
||||||
|
test and then do:
|
||||||
|
|
||||||
|
@example
|
||||||
|
cd sql-bench
|
||||||
|
perl run-all-tests --server=#
|
||||||
|
@end example
|
||||||
|
|
||||||
|
where # is one of supported servers. You can get a list of all options
|
||||||
|
and supported servers by doing @code{run-all-tests --help}.
|
||||||
|
|
||||||
|
@cindex crash-me
|
||||||
@code{crash-me} tries to determine what features a database supports and
|
@code{crash-me} tries to determine what features a database supports and
|
||||||
what it's capabilities and limitations are by actually running
|
what it's capabilities and limitations are by actually running
|
||||||
queries. For example, it determines:
|
queries. For example, it determines:
|
||||||
@ -29447,6 +29493,9 @@ How big a query can be
|
|||||||
How big a @code{VARCHAR} column can be
|
How big a @code{VARCHAR} column can be
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
We can find the result from crash-me on a lot of different databases at
|
||||||
|
@uref{http://www.mysql.com/information/crash-me.php}.
|
||||||
|
|
||||||
@cindex utilities
|
@cindex utilities
|
||||||
@node Tools, Maintenance, MySQL Benchmarks, Top
|
@node Tools, Maintenance, MySQL Benchmarks, Top
|
||||||
@chapter MySQL Utilites
|
@chapter MySQL Utilites
|
||||||
@ -39011,6 +39060,7 @@ You can also find this at:
|
|||||||
|
|
||||||
There are 2 supported JDBC drivers for @strong{MySQL} (the mm driver and
|
There are 2 supported JDBC drivers for @strong{MySQL} (the mm driver and
|
||||||
the Reisin JDBC driver). You can find a copy of the mm driver at
|
the Reisin JDBC driver). You can find a copy of the mm driver at
|
||||||
|
@uref{http://mmmysql.sourceforge.net/} or
|
||||||
@uref{http://www.mysql.com/Downloads/Contrib/} and the Reisin driver at
|
@uref{http://www.mysql.com/Downloads/Contrib/} and the Reisin driver at
|
||||||
@uref{http://www.caucho.com/projects/jdbc-mysql/index.xtp} For
|
@uref{http://www.caucho.com/projects/jdbc-mysql/index.xtp} For
|
||||||
documentation consult any JDBC documentation and the driver's own
|
documentation consult any JDBC documentation and the driver's own
|
||||||
|
@ -50,6 +50,7 @@ static const char revid[] = "$Id: log_rec.c,v 11.48 2001/01/11 18:19:53 bostic E
|
|||||||
#include "db_am.h"
|
#include "db_am.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
static int __log_check_master __P((DB_ENV *, u_int8_t *, char *));
|
||||||
static int __log_do_open __P((DB_ENV *, DB_LOG *,
|
static int __log_do_open __P((DB_ENV *, DB_LOG *,
|
||||||
u_int8_t *, char *, DBTYPE, int32_t, db_pgno_t));
|
u_int8_t *, char *, DBTYPE, int32_t, db_pgno_t));
|
||||||
static int __log_open_file __P((DB_ENV *, DB_LOG *, __log_register_args *));
|
static int __log_open_file __P((DB_ENV *, DB_LOG *, __log_register_args *));
|
||||||
@ -341,6 +342,9 @@ __log_do_open(dbenv, lp, uid, name, ftype, ndx, meta_pgno)
|
|||||||
* Verify that we are opening the same file that we were
|
* Verify that we are opening the same file that we were
|
||||||
* referring to when we wrote this log record.
|
* referring to when we wrote this log record.
|
||||||
*/
|
*/
|
||||||
|
if (meta_pgno != PGNO_BASE_MD &&
|
||||||
|
__log_check_master(dbenv, uid, name) != 0)
|
||||||
|
goto not_right;
|
||||||
if (memcmp(uid, dbp->fileid, DB_FILE_ID_LEN) != 0) {
|
if (memcmp(uid, dbp->fileid, DB_FILE_ID_LEN) != 0) {
|
||||||
memset(zeroid, 0, DB_FILE_ID_LEN);
|
memset(zeroid, 0, DB_FILE_ID_LEN);
|
||||||
if (memcmp(dbp->fileid, zeroid, DB_FILE_ID_LEN) != 0)
|
if (memcmp(dbp->fileid, zeroid, DB_FILE_ID_LEN) != 0)
|
||||||
@ -361,6 +365,28 @@ not_right:
|
|||||||
return (ENOENT);
|
return (ENOENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
__log_check_master(dbenv, uid, name)
|
||||||
|
DB_ENV *dbenv;
|
||||||
|
u_int8_t *uid;
|
||||||
|
char *name;
|
||||||
|
{
|
||||||
|
DB *dbp;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
if ((ret = db_create(&dbp, dbenv, 0)) != 0)
|
||||||
|
return (ret);
|
||||||
|
dbp->type = DB_BTREE;
|
||||||
|
ret = __db_dbopen(dbp, name, 0, __db_omode("rw----"), PGNO_BASE_MD);
|
||||||
|
|
||||||
|
if (ret == 0 && memcmp(uid, dbp->fileid, DB_FILE_ID_LEN) != 0)
|
||||||
|
ret = EINVAL;
|
||||||
|
|
||||||
|
(void) dbp->close(dbp, 0);
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* __log_add_logid --
|
* __log_add_logid --
|
||||||
* Adds a DB entry to the log's DB entry table.
|
* Adds a DB entry to the log's DB entry table.
|
||||||
|
62
bdb/patches/log-corruption.patch
Normal file
62
bdb/patches/log-corruption.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
# This patch fixes a bug caused mysqld to get a core dump while
|
||||||
|
# bdb tries to resolve the log file after mysqld was killed with kill -9.
|
||||||
|
#
|
||||||
|
# Author: Michael Ubell, Sleepycat Software
|
||||||
|
# Mon, 26 Feb 2001 12:56:23 -0500 (EST)
|
||||||
|
#
|
||||||
|
|
||||||
|
*** log/log_rec.c 2001/02/08 03:05:01 11.50
|
||||||
|
--- log/log_rec.c 2001/02/24 00:42:46 11.51
|
||||||
|
***************
|
||||||
|
*** 50,55 ****
|
||||||
|
--- 50,56 ----
|
||||||
|
#include "db_am.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
+ static int __log_check_master __P((DB_ENV *, u_int8_t *, char *));
|
||||||
|
static int __log_do_open __P((DB_ENV *, DB_LOG *,
|
||||||
|
u_int8_t *, char *, DBTYPE, int32_t, db_pgno_t));
|
||||||
|
static int __log_open_file __P((DB_ENV *, DB_LOG *, __log_register_args *));
|
||||||
|
***************
|
||||||
|
*** 341,346 ****
|
||||||
|
--- 342,350 ----
|
||||||
|
* Verify that we are opening the same file that we were
|
||||||
|
* referring to when we wrote this log record.
|
||||||
|
*/
|
||||||
|
+ if (meta_pgno != PGNO_BASE_MD &&
|
||||||
|
+ __log_check_master(dbenv, uid, name) != 0)
|
||||||
|
+ goto not_right;
|
||||||
|
if (memcmp(uid, dbp->fileid, DB_FILE_ID_LEN) != 0) {
|
||||||
|
memset(zeroid, 0, DB_FILE_ID_LEN);
|
||||||
|
if (memcmp(dbp->fileid, zeroid, DB_FILE_ID_LEN) != 0)
|
||||||
|
***************
|
||||||
|
*** 359,364 ****
|
||||||
|
--- 363,390 ----
|
||||||
|
(void)__log_add_logid(dbenv, lp, NULL, ndx);
|
||||||
|
|
||||||
|
return (ENOENT);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ static int
|
||||||
|
+ __log_check_master(dbenv, uid, name)
|
||||||
|
+ DB_ENV *dbenv;
|
||||||
|
+ u_int8_t *uid;
|
||||||
|
+ char *name;
|
||||||
|
+ {
|
||||||
|
+ DB *dbp;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ ret = 0;
|
||||||
|
+ if ((ret = db_create(&dbp, dbenv, 0)) != 0)
|
||||||
|
+ return (ret);
|
||||||
|
+ dbp->type = DB_BTREE;
|
||||||
|
+ ret = __db_dbopen(dbp, name, 0, __db_omode("rw----"), PGNO_BASE_MD);
|
||||||
|
+
|
||||||
|
+ if (ret == 0 && memcmp(uid, dbp->fileid, DB_FILE_ID_LEN) != 0)
|
||||||
|
+ ret = EINVAL;
|
||||||
|
+
|
||||||
|
+ (void) dbp->close(dbp, 0);
|
||||||
|
+ return (ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
@ -22,3 +22,6 @@ libs_LIBRARIES = libibuf.a
|
|||||||
libibuf_a_SOURCES = ibuf0ibuf.c
|
libibuf_a_SOURCES = ibuf0ibuf.c
|
||||||
|
|
||||||
EXTRA_PROGRAMS =
|
EXTRA_PROGRAMS =
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -54,3 +54,6 @@ noinst_HEADERS = btr0btr.h btr0btr.ic btr0cur.h btr0cur.ic \
|
|||||||
usr0sess.h usr0sess.ic usr0types.h ut0byte.h ut0byte.ic \
|
usr0sess.h usr0sess.ic usr0types.h ut0byte.h ut0byte.ic \
|
||||||
ut0dbg.h ut0lst.h ut0mem.h ut0mem.ic ut0rnd.h ut0rnd.ic \
|
ut0dbg.h ut0lst.h ut0mem.h ut0mem.ic ut0rnd.h ut0rnd.ic \
|
||||||
ut0sort.h ut0ut.h ut0ut.ic
|
ut0sort.h ut0ut.h ut0ut.ic
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -22,3 +22,6 @@ man_MANS = mysql.1 isamchk.1 isamlog.1 mysql_zap.1 mysqlaccess.1 \
|
|||||||
perror.1 replace.1 safe_mysqld.1
|
perror.1 replace.1 safe_mysqld.1
|
||||||
|
|
||||||
EXTRA_DIST = $(man_MANS)
|
EXTRA_DIST = $(man_MANS)
|
||||||
|
|
||||||
|
# Don't update the files from bitkeeper
|
||||||
|
%::SCCS/s.%
|
||||||
|
@ -155,6 +155,7 @@ my_bool check_table_is_closed(const char *name, const char *where)
|
|||||||
{
|
{
|
||||||
char filename[FN_REFLEN];
|
char filename[FN_REFLEN];
|
||||||
LIST *pos;
|
LIST *pos;
|
||||||
|
DBUG_ENTER("check_table_is_closed");
|
||||||
|
|
||||||
(void) fn_format(filename,name,"",MI_NAME_IEXT,4+16+32);
|
(void) fn_format(filename,name,"",MI_NAME_IEXT,4+16+32);
|
||||||
for (pos=myisam_open_list ; pos ; pos=pos->next)
|
for (pos=myisam_open_list ; pos ; pos=pos->next)
|
||||||
@ -163,10 +164,14 @@ my_bool check_table_is_closed(const char *name, const char *where)
|
|||||||
MYISAM_SHARE *share=info->s;
|
MYISAM_SHARE *share=info->s;
|
||||||
if (!strcmp(share->filename,filename))
|
if (!strcmp(share->filename,filename))
|
||||||
{
|
{
|
||||||
fprintf(stderr,"Warning: Table: %s is open on %s\n", name,where);
|
if (share->last_version)
|
||||||
return 1;
|
{
|
||||||
|
fprintf(stderr,"Warning: Table: %s is open on %s\n", name,where);
|
||||||
|
DBUG_PRINT("warning",("Table: %s is open on %s", name,where));
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
#endif /* EXTRA_DEBUG */
|
#endif /* EXTRA_DEBUG */
|
||||||
|
@ -413,6 +413,7 @@ start_slave()
|
|||||||
--core \
|
--core \
|
||||||
--tmpdir=$MYSQL_TMP_DIR \
|
--tmpdir=$MYSQL_TMP_DIR \
|
||||||
--language=english \
|
--language=english \
|
||||||
|
--skip-innobase \
|
||||||
$SMALL_SERVER \
|
$SMALL_SERVER \
|
||||||
$EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
|
$EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
|
||||||
if [ x$DO_DDD = x1 ]
|
if [ x$DO_DDD = x1 ]
|
||||||
|
@ -7,7 +7,7 @@ t1 ref a,b a 9 const,const 1 where used; Using index
|
|||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 const a,b a 9 const,const 1
|
t1 const a,b a 9 const,const 1
|
||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 index NULL a 8 NULL 12 where used; Using index
|
t1 index NULL a 9 NULL 12 where used; Using index
|
||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
t1 range a,b a 9 NULL 3 where used; Using index
|
t1 range a,b a 9 NULL 3 where used; Using index
|
||||||
table type possible_keys key key_len ref rows Extra
|
table type possible_keys key key_len ref rows Extra
|
||||||
|
@ -499,6 +499,7 @@ innobase_end(void)
|
|||||||
DBUG_ENTER("innobase_end");
|
DBUG_ENTER("innobase_end");
|
||||||
|
|
||||||
err = innobase_shutdown_for_mysql();
|
err = innobase_shutdown_for_mysql();
|
||||||
|
hash_free(&innobase_open_tables);
|
||||||
|
|
||||||
if (err != DB_SUCCESS) {
|
if (err != DB_SUCCESS) {
|
||||||
|
|
||||||
@ -1214,7 +1215,7 @@ ha_innobase::write_row(
|
|||||||
row_prebuilt_t* prebuilt = (row_prebuilt_t*)innobase_prebuilt;
|
row_prebuilt_t* prebuilt = (row_prebuilt_t*)innobase_prebuilt;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
DBUG_ENTER("write_row");
|
DBUG_ENTER("ha_innobase::write_row");
|
||||||
|
|
||||||
statistic_increment(ha_write_count, &LOCK_status);
|
statistic_increment(ha_write_count, &LOCK_status);
|
||||||
|
|
||||||
@ -1432,7 +1433,7 @@ ha_innobase::update_row(
|
|||||||
upd_t* uvect;
|
upd_t* uvect;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
DBUG_ENTER("update_row");
|
DBUG_ENTER("ha_innobase::update_row");
|
||||||
|
|
||||||
if (prebuilt->upd_node) {
|
if (prebuilt->upd_node) {
|
||||||
uvect = prebuilt->upd_node->update;
|
uvect = prebuilt->upd_node->update;
|
||||||
@ -1476,7 +1477,7 @@ ha_innobase::delete_row(
|
|||||||
row_prebuilt_t* prebuilt = (row_prebuilt_t*) innobase_prebuilt;
|
row_prebuilt_t* prebuilt = (row_prebuilt_t*) innobase_prebuilt;
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
DBUG_ENTER("update_row");
|
DBUG_ENTER("ha_innobase::delete_row");
|
||||||
|
|
||||||
if (!prebuilt->upd_node) {
|
if (!prebuilt->upd_node) {
|
||||||
row_get_prebuilt_update_vector(prebuilt);
|
row_get_prebuilt_update_vector(prebuilt);
|
||||||
|
@ -583,7 +583,7 @@ bool MYSQL_LOG::write(THD *thd,enum enum_server_command command,
|
|||||||
}
|
}
|
||||||
else if (my_b_write(&log_file, (byte*) "\t\t",2) < 0)
|
else if (my_b_write(&log_file, (byte*) "\t\t",2) < 0)
|
||||||
error=errno;
|
error=errno;
|
||||||
sprintf(buff,"%7ld %-10.10s", id,command_name[(uint) command]);
|
sprintf(buff,"%7ld %-11.11s", id,command_name[(uint) command]);
|
||||||
if (my_b_write(&log_file, (byte*) buff,strlen(buff)))
|
if (my_b_write(&log_file, (byte*) buff,strlen(buff)))
|
||||||
error=errno;
|
error=errno;
|
||||||
if (format)
|
if (format)
|
||||||
|
@ -747,6 +747,7 @@ bool close_cached_table(THD *thd,TABLE *table)
|
|||||||
DBUG_ENTER("close_cached_table");
|
DBUG_ENTER("close_cached_table");
|
||||||
if (table)
|
if (table)
|
||||||
{
|
{
|
||||||
|
DBUG_PRINT("enter",("table: %s", table->table_name));
|
||||||
VOID(table->file->extra(HA_EXTRA_FORCE_REOPEN)); // Close all data files
|
VOID(table->file->extra(HA_EXTRA_FORCE_REOPEN)); // Close all data files
|
||||||
/* Mark all tables that are in use as 'old' */
|
/* Mark all tables that are in use as 'old' */
|
||||||
mysql_lock_abort(thd,table); // end threads waiting on lock
|
mysql_lock_abort(thd,table); // end threads waiting on lock
|
||||||
@ -1139,9 +1140,9 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
|||||||
old_db_type=table->db_type;
|
old_db_type=table->db_type;
|
||||||
if (create_info->db_type == DB_TYPE_DEFAULT)
|
if (create_info->db_type == DB_TYPE_DEFAULT)
|
||||||
create_info->db_type=old_db_type;
|
create_info->db_type=old_db_type;
|
||||||
|
new_db_type=create_info->db_type= ha_checktype(create_info->db_type);
|
||||||
if (create_info->row_type == ROW_TYPE_DEFAULT)
|
if (create_info->row_type == ROW_TYPE_DEFAULT)
|
||||||
create_info->row_type=table->row_type;
|
create_info->row_type=table->row_type;
|
||||||
new_db_type=create_info->db_type;
|
|
||||||
|
|
||||||
/* Check if the user only wants to do a simple RENAME */
|
/* Check if the user only wants to do a simple RENAME */
|
||||||
|
|
||||||
@ -1518,6 +1519,8 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
table=0; // Marker for win32 version
|
table=0; // Marker for win32 version
|
||||||
|
#else
|
||||||
|
table->file->extra(HA_EXTRA_FORCE_REOPEN); // Don't use this file anymore
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
error=0;
|
error=0;
|
||||||
|
Reference in New Issue
Block a user