1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

RENAME TABLE table_name TO new_table_name ; Faster Alloc

Small bug fixes
This commit is contained in:
monty@donna.mysql.com
2000-08-21 03:00:52 +03:00
parent 86f4dbe20e
commit aa3580924b
66 changed files with 546 additions and 282 deletions

View File

@ -275,7 +275,7 @@ Is there anything special to do when upgrading/downgrading MySQL?
How standards-compatible is MySQL? How standards-compatible is MySQL?
* Extensions to ANSI:: @strong{MySQL} extensions to ANSI SQL92 * Extensions to ANSI:: @strong{MySQL} extensions to ANSI SQL92
* Ansi mode:: Running @strong{MySQL} in ANSI mode * Ansi mode:: Runnning @strong{MySQL} in ANSI mode
* Differences from ANSI:: @strong{MySQL} differences compared to ANSI SQL92 * Differences from ANSI:: @strong{MySQL} differences compared to ANSI SQL92
* Missing functions:: Functionality missing from @strong{MySQL} * Missing functions:: Functionality missing from @strong{MySQL}
* Standards:: What standards does @strong{MySQL} follow? * Standards:: What standards does @strong{MySQL} follow?
@ -323,6 +323,7 @@ MySQL language reference
* DROP DATABASE:: @code{DROP DATABASE} syntax * DROP DATABASE:: @code{DROP DATABASE} syntax
* CREATE TABLE:: @code{CREATE TABLE} syntax * CREATE TABLE:: @code{CREATE TABLE} syntax
* ALTER TABLE:: @code{ALTER TABLE} syntax * ALTER TABLE:: @code{ALTER TABLE} syntax
* RENAME TABLE::
* DROP TABLE:: @code{DROP TABLE} syntax * DROP TABLE:: @code{DROP TABLE} syntax
* OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax * OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
* CHECK TABLE:: @code{CHECK TABLE} syntax * CHECK TABLE:: @code{CHECK TABLE} syntax
@ -608,7 +609,7 @@ Using @code{MySQL} with some common programs
Problems and common errors Problems and common errors
* What is crashing:: How to determine what is causing problems * What is crashing:: How to determinate what is causing problems
* Crashing:: What to do if @strong{MySQL} keeps crashing * Crashing:: What to do if @strong{MySQL} keeps crashing
* Link errors:: Problems when linking with the @strong{MySQL} client library * Link errors:: Problems when linking with the @strong{MySQL} client library
* Common errors:: Some common errors when using @strong{MySQL} * Common errors:: Some common errors when using @strong{MySQL}
@ -720,7 +721,7 @@ C API function descriptions
* mysql_store_result:: @code{mysql_store_result()} * mysql_store_result:: @code{mysql_store_result()}
* mysql_thread_id:: @code{mysql_thread_id()} * mysql_thread_id:: @code{mysql_thread_id()}
* mysql_use_result:: @code{mysql_use_result()} * mysql_use_result:: @code{mysql_use_result()}
* NULL mysql_store_result:: Why is it that after @code{mysql_query()} returns success, @code{mysql_store_result()} sometimes returns @code{NULL}? * NULL mysql_store_result:: Why is it that after @code{mysql_query()} returns success, @code{mysql_store_result()} sometimes returns @code{NULL?}
* Query results:: What results can I get from a query? * Query results:: What results can I get from a query?
* Getting unique ID:: How can I get the unique ID for the last inserted row? * Getting unique ID:: How can I get the unique ID for the last inserted row?
* C API linking problems:: Problems linking with the C API * C API linking problems:: Problems linking with the C API
@ -1826,7 +1827,7 @@ Apart from the following links, you can find and download a lot of
@strong{MySQL} programs, tools and APIs from the @strong{MySQL} programs, tools and APIs from the
@uref{http://www.mysql.com/Contrib/, Contrib directory}. @uref{http://www.mysql.com/Contrib/, Contrib directory}.
@subheading Tutorials and manuals @subheading Tutorials and Manuals
@itemize @bullet @itemize @bullet
@c just forwards to the devshed link below.. (jcole) @c just forwards to the devshed link below.. (jcole)
@ -2026,6 +2027,11 @@ reviewing.
@item @item
@uref{http://www.omnis-software.com/products/studio/studio.html, OMNIS} @uref{http://www.omnis-software.com/products/studio/studio.html, OMNIS}
OMNIS Studio is a rapid application development (RAD) tool. OMNIS Studio is a rapid application development (RAD) tool.
@item
@uref{http://www.webplus.com, talentsoft Web+ 4.6}
Web+ is a powerful and comprehensive development language for use in
creating web-based client/server applications without writing complicated,
low-level and time-consuming CGI programs.
@end itemize @end itemize
@subheading Database design tools with MySQL support @subheading Database design tools with MySQL support
@ -8959,6 +8965,7 @@ comparisons to be done according to the ASCII order used on the
@strong{MySQL} maps each database to a directory under the @strong{MySQL} @strong{MySQL} maps each database to a directory under the @strong{MySQL}
data directory, and tables within a database to filenames in the database data directory, and tables within a database to filenames in the database
directory. directory.
This has two implications: This has two implications:
@itemize @minus @itemize @minus
@ -9015,11 +9022,12 @@ Use of @code{TEMPORARY} or @code{IF NOT EXISTS} with @code{CREATE TABLE}.
Use of @code{COUNT(DISTINCT list)} where 'list' is more than one element. Use of @code{COUNT(DISTINCT list)} where 'list' is more than one element.
@item @item
Use of @code{CHANGE col_name}, @code{DROP col_name} or @code{DROP INDEX} Use of @code{CHANGE col_name}, @code{DROP col_name} or @code{DROP
in an @code{ALTER TABLE} statement. @xref{ALTER TABLE, , @code{ALTER TABLE}}. INDEX}, @code{IGNORE} or @code{RENAME} in an @code{ALTER TABLE}
statement. @xref{ALTER TABLE, , @code{ALTER TABLE}}.
@item @item
Use of @code{IGNORE} in an @code{ALTER TABLE} statement. Use of @code{RENAME TABLE}. @xref{RENAME TABLE, , @code{RENAME TABLE}}.
@item @item
Use of multiple @code{ADD}, @code{ALTER}, @code{DROP} or @code{CHANGE} Use of multiple @code{ADD}, @code{ALTER}, @code{DROP} or @code{CHANGE}
@ -11636,6 +11644,7 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to be able to run
* DROP DATABASE:: @code{DROP DATABASE} syntax * DROP DATABASE:: @code{DROP DATABASE} syntax
* CREATE TABLE:: @code{CREATE TABLE} syntax * CREATE TABLE:: @code{CREATE TABLE} syntax
* ALTER TABLE:: @code{ALTER TABLE} syntax * ALTER TABLE:: @code{ALTER TABLE} syntax
* RENAME TABLE::
* DROP TABLE:: @code{DROP TABLE} syntax * DROP TABLE:: @code{DROP TABLE} syntax
* OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax * OPTIMIZE TABLE:: @code{OPTIMIZE TABLE} syntax
* CHECK TABLE:: @code{CHECK TABLE} syntax * CHECK TABLE:: @code{CHECK TABLE} syntax
@ -15973,15 +15982,16 @@ mysql> select COUNT(*) from student;
@findex COUNT(DISTINCT) @findex COUNT(DISTINCT)
@findex DISTINCT @findex DISTINCT
@item COUNT(DISTINCT expr,[expr...]) @item COUNT(DISTINCT expr,[expr...])
Returns a count of the number of different values. Returns a count of the number of different not @code{NULL} values.
@example @example
mysql> select COUNT(DISTINCT results) from student; mysql> select COUNT(DISTINCT results) from student;
@end example @end example
In @strong{MySQL} you can get the number of distinct expressions combinations In @strong{MySQL} you can get the number of distinct expressions
by giving a list of expressions. In ANSI SQL you would have to do a combinations that doesn't contain NULL by giving a list of expressions.
concatenation of all expressions inside @code{CODE(DISTINCT ..)}. In ANSI SQL you would have to do a concatenation of all expressions
inside @code{CODE(DISTINCT ..)}.
@findex AVG() @findex AVG()
@item AVG(expr) @item AVG(expr)
@ -16547,7 +16557,7 @@ Certain other column type changes may occur if you compress a table
using @code{myisampack}. @xref{Compressed format}. using @code{myisampack}. @xref{Compressed format}.
@findex ALTER TABLE @findex ALTER TABLE
@node ALTER TABLE, DROP TABLE, CREATE TABLE, Reference @node ALTER TABLE, RENAME TABLE, CREATE TABLE, Reference
@section @code{ALTER TABLE} syntax @section @code{ALTER TABLE} syntax
@example @example
@ -16565,7 +16575,7 @@ alter_specification:
or DROP [COLUMN] col_name or DROP [COLUMN] col_name
or DROP PRIMARY KEY or DROP PRIMARY KEY
or DROP INDEX index_name or DROP INDEX index_name
or RENAME [AS] new_tbl_name or RENAME [TO] new_tbl_name
or table_options or table_options
@end example @end example
@ -16621,9 +16631,10 @@ INDEX} are @strong{MySQL} extensions to ANSI SQL92.
The optional word @code{COLUMN} is a pure noise word and can be omitted. The optional word @code{COLUMN} is a pure noise word and can be omitted.
@item @item
If you use @code{ALTER TABLE tbl_name RENAME AS new_name} without any other If you use @code{ALTER TABLE tbl_name RENAME TO new_name} without any other
options, @strong{MySQL} simply renames the files that correspond to the table options, @strong{MySQL} simply renames the files that correspond to the table
@code{tbl_name}. There is no need to create the temporary table. @code{tbl_name}. There is no need to create the temporary table.
@xref{RENAME TABLE,, @code{RENAME TABLE}}.
@item @item
@code{create_definition} clauses use the same syntax for @code{ADD} and @code{create_definition} clauses use the same syntax for @code{ADD} and
@ -16775,8 +16786,47 @@ sequence number be executing @code{SET INSERT_ID=#} before
See also @xref{ALTER TABLE problems, , @code{ALTER TABLE} problems}. See also @xref{ALTER TABLE problems, , @code{ALTER TABLE} problems}.
@findex RENAME TABLE
@node RENAME TABLE, DROP TABLE, ALTER TABLE, Reference
@section @code{RENAME TABLE} syntax
@example
RENAME TABLE tbl_name as new_table_name[, tbl_name2 as new_table_name2,...]
@end example
The rename is done atomic, which means that if no other thread can
access any of the tables while the rename is running. This makes it
possible to replace a table with an empty one:
@example
CREATE TABLE new_table (...);
RENAME TABLE old_table TO backup_table, new_table as old_table;
@end example
The rename is done from left to right, which means that if you want to
swap two tables names, you have to do:
@example
RENAME TABLE old_table TO backup_table, new_table as old_table, backup_table as old_table;
@end example
Is long as two databases are on the same disk you can also do a rename
from a database to another:
@example
RENAME TABLE current_database.table_name TO other_database.table_name;
@end example
When you execute @code{RENAME}, you can't have any locked tables or active
transactions. You must also have the @code{ALTER TABLE} privilege on both
the old and the new table.
If @strong{MySQL} encounters any errors in a multiple table rename, it
will do a reverse rename for all renamed tables to get everything back
to the original state.
@findex DROP TABLE @findex DROP TABLE
@node DROP TABLE, OPTIMIZE TABLE, ALTER TABLE, Reference @node DROP TABLE, OPTIMIZE TABLE, RENAME TABLE, Reference
@section @code{DROP TABLE} syntax @section @code{DROP TABLE} syntax
@example @example
@ -19172,9 +19222,8 @@ may be a column name or a string containing the SQL @samp{%} and @samp{_}
wildcard characters. wildcard characters.
If the column types are different than you expect them to be based on a If the column types are different than you expect them to be based on a
@code{CREATE TABLE} statement, note that @strong{MySQL} sometimes changes column @code{CREATE TABLE} statement, note that @strong{MySQL} sometimes
types. changes column types. @xref{Silent column changes}.
@xref{Silent column changes}.
@cindex Oracle compatibility @cindex Oracle compatibility
@cindex Compatibility, with Oracle @cindex Compatibility, with Oracle
@ -35350,6 +35399,10 @@ and will soon be declared beta, gamma and release.
@appendixsubsec Changes in release 3.23.23 @appendixsubsec Changes in release 3.23.23
@itemize @bullet @itemize @bullet
@item @item
Added atomic @code{RENAME} command.
@item
Don't count entries with @code{NULL} in @code{COUNT(DISTINCT ..)}.
@item
Changed @code{ALTER TABLE}, @code{LOAD DATA INFILE} on empty tables and Changed @code{ALTER TABLE}, @code{LOAD DATA INFILE} on empty tables and
@code{INSERT ... SELECT...} on empty tables to create non-unique indexs @code{INSERT ... SELECT...} on empty tables to create non-unique indexs
in a separate batch with sorting. This will make the above calls much in a separate batch with sorting. This will make the above calls much
@ -35372,7 +35425,9 @@ that don't have the @code{pthread_rwlock_rdlock} code.
When deleting rows with a non-unique key in a HEAP table, all rows weren't When deleting rows with a non-unique key in a HEAP table, all rows weren't
always deleted. always deleted.
@item @item
Fixed that BDB tables work on part keys. Fixed that @code{SELECT} on part keys works with BDB tables.
@item
Fixed that @code{INSERT INTO bdb_table ... SELECT} works with BDB tables.
@item @item
Check table now updates key statistics for the table. Check table now updates key statistics for the table.
@item @item
@ -35382,11 +35437,18 @@ will not be marked to be analyzed until they are updated in any way with
3.23.23 or newer. For older tables, you have to do @code{CHECK TABLE} 3.23.23 or newer. For older tables, you have to do @code{CHECK TABLE}
to update the key distribution. to update the key distribution.
@item @item
Fixed some minor privilege problems with @code{CHECK}, @code{ANALYZE},
@code{REPAIR} and @code{SHOW CREATE} commands.
@item
Added @code{CHANGE MASTER TO} command Added @code{CHANGE MASTER TO} command
@item @item
Added @code{FAST}, @code{QUICK} @code{EXTENDED} check types to Added @code{FAST}, @code{QUICK} @code{EXTENDED} check types to
@code{CHECK TABLES}. @code{CHECK TABLES}.
@item @item
Changed @code{myisamchk} so that @code{--fast} and
@code{--check-changed-tables} are also honored with @code{--sort-index} and
@code{--analyze}.
@item
Fixed fatal bug in @code{LOAD TABLE FROM MASTER} that did not lock the table during index re-build Fixed fatal bug in @code{LOAD TABLE FROM MASTER} that did not lock the table during index re-build
@item @item
@code{LOAD DATA INFILE} broke replication if the database was excluded from replication @code{LOAD DATA INFILE} broke replication if the database was excluded from replication
@ -38130,7 +38192,7 @@ Added new commands @code{CREATE DATABASE db_name} and @code{DROP
DATABASE db_name}. DATABASE db_name}.
@item @item
Added @code{RENAME} option to @code{ALTER TABLE}: @code{ALTER TABLE name Added @code{RENAME} option to @code{ALTER TABLE}: @code{ALTER TABLE name
RENAME AS new_name}. RENAME TO new_name}.
@item @item
@code{make_binary_distribution} now includes @file{libgcc.a} in @code{make_binary_distribution} now includes @file{libgcc.a} in
@file{libmysqlclient.a}. This should make linking work for people who don't @file{libmysqlclient.a}. This should make linking work for people who don't
@ -39474,7 +39536,7 @@ Fail safe replication.
@item @item
Optimize, test and document transactions safe tables Optimize, test and document transactions safe tables
@item @item
@code{RENAME table as table, table as table [,...]} @code{RENAME table to table, table to table [,...]}
@item @item
Allow users to change startup options. Allow users to change startup options.
@item @item
@ -39656,6 +39718,13 @@ A logfile analyzer that could parsed out information about which tables
are hit most often, how often multi-table joins are executed, etc. It are hit most often, how often multi-table joins are executed, etc. It
should help users identify areas or table design that could be optimized should help users identify areas or table design that could be optimized
to execute much more efficient queries. to execute much more efficient queries.
@item
Add @code{SUM(DISTINCT)}
@item
Add @code{ANY()},@code{EVERY()} and @code{SOME()} group functions. In
ANSI SQL these only works on boolean columns, but we can extend these to
work on any columns/expressions by applying: value == 0 -> FALSE and
value <> 0 -> TRUE.
@end itemize @end itemize
@node TODO sometime, TODO unplanned, TODO future, TODO @node TODO sometime, TODO unplanned, TODO future, TODO

View File

@ -1709,10 +1709,10 @@ CHARSET_COMP_CS_INIT="$CHARSET_COMP_CS_INIT
{ {
0, /* end-of-list marker */ 0, /* end-of-list marker */
NullS, NullS,
\"\", NULL,
\"\", NULL,
\"\", NULL,
\"\", NULL,
0, 0,
NULL, NULL,
NULL, NULL,

View File

@ -113,6 +113,12 @@
#define HAVE_ATOMIC_SUB #define HAVE_ATOMIC_SUB
#endif #endif
/* In Linux-ia64 including atomic.h will give us an error */
#if defined(HAVE_LINUXTHREADS) && defined(__GNUC__) && defined(__ia64__)
#undef HAVE_ATOMIC_ADD
#undef HAVE_ATOMIC_SUB
#endif
#if defined(_lint) && !defined(lint) #if defined(_lint) && !defined(lint)
#define lint #define lint
#endif #endif
@ -207,6 +213,7 @@
#endif #endif
/* Define void to stop lint from generating "null effekt" comments */ /* Define void to stop lint from generating "null effekt" comments */
#ifndef DONT_DEFINE_VOID
#ifdef _lint #ifdef _lint
int __void__; int __void__;
#define VOID(X) (__void__ = (int) (X)) #define VOID(X) (__void__ = (int) (X))
@ -214,6 +221,7 @@ int __void__;
#undef VOID #undef VOID
#define VOID(X) (X) #define VOID(X) (X)
#endif #endif
#endif /* DONT_DEFINE_VOID */
#if defined(_lint) || defined(FORCE_INIT_OF_VARS) #if defined(_lint) || defined(FORCE_INIT_OF_VARS)
#define LINT_INIT(var) var=0 /* No uninitialize-warning */ #define LINT_INIT(var) var=0 /* No uninitialize-warning */
@ -515,6 +523,8 @@ typedef long my_ptrdiff_t;
#define NEAR /* Who needs segments ? */ #define NEAR /* Who needs segments ? */
#define FAR /* On a good machine */ #define FAR /* On a good machine */
#define HUGE_PTR #define HUGE_PTR
#endif
#ifndef STDCALL
#define STDCALL #define STDCALL
#endif #endif

View File

@ -192,4 +192,5 @@
#define ER_MASTER_NET_READ 1189 #define ER_MASTER_NET_READ 1189
#define ER_MASTER_NET_WRITE 1190 #define ER_MASTER_NET_WRITE 1190
#define ER_FT_MATCHING_KEY_NOT_FOUND 1191 #define ER_FT_MATCHING_KEY_NOT_FOUND 1191
#define ER_ERROR_MESSAGES 192 #define ER_LOCK_OR_ACTIVE_TRANSACTION 1192
#define ER_ERROR_MESSAGES 193

View File

@ -190,7 +190,7 @@ static struct option long_options[] =
static void print_version(void) static void print_version(void)
{ {
printf("%s Ver 1.29 for %s at %s\n",my_progname,SYSTEM_TYPE, printf("%s Ver 1.30 for %s at %s\n",my_progname,SYSTEM_TYPE,
MACHINE_TYPE); MACHINE_TYPE);
} }
@ -295,7 +295,7 @@ static void get_options(register int *argc,register char ***argv)
set_all_changeable_vars(changeable_vars); set_all_changeable_vars(changeable_vars);
if (isatty(fileno(stdout))) if (isatty(fileno(stdout)))
check_param.testflag|=T_WRITE_LOOP; check_param.testflag|=T_WRITE_LOOP;
while ((c=getopt_long(*argc,*argv,"acCdeif?lqrmosSTuUvVw#:b:D:k:O:R:A::t:", while ((c=getopt_long(*argc,*argv,"acCdeifF?lqrmosSTuUvVw#:b:D:k:O:R:A::t:",
long_options, &option_index)) != EOF) long_options, &option_index)) != EOF)
{ {
switch(c) { switch(c) {
@ -520,10 +520,30 @@ static int myisamchk(MI_CHECK *param, my_string filename)
We are using --fast and the table is closed properly We are using --fast and the table is closed properly
We are using --check-only-changed-tables and the table hasn't changed We are using --check-only-changed-tables and the table hasn't changed
*/ */
if (((param->testflag & T_CHECK_ONLY_CHANGED) && if (param->testflag & (T_FAST | T_CHECK_ONLY_CHANGED))
{
my_bool need_to_check= mi_is_crashed(info) || share->state.open_count != 0;
if ((param->testflag & (T_REP_BY_SORT | T_REP | T_SORT_RECORDS)) &&
((share->state.changed & (STATE_CHANGED | STATE_CRASHED |
STATE_CRASHED_ON_REPAIR) ||
!(param->testflag & T_CHECK_ONLY_CHANGED))))
need_to_check=1;
if ((param->testflag & T_STATISTICS) &&
(share->state.changed & STATE_NOT_ANALYZED))
need_to_check=1;
if ((param->testflag & T_SORT_INDEX) &&
(share->state.changed & STATE_NOT_SORTED_PAGES))
need_to_check=1;
if ((param->testflag & T_REP_BY_SORT) &&
(share->state.changed & STATE_NOT_OPTIMIZED_KEYS))
need_to_check=1;
if ((param->testflag & T_CHECK_ONLY_CHANGED) &&
(share->state.changed & (STATE_CHANGED | STATE_CRASHED | (share->state.changed & (STATE_CHANGED | STATE_CRASHED |
STATE_CRASHED_ON_REPAIR))) || STATE_CRASHED_ON_REPAIR)))
(param->testflag & T_FAST) && share->state.open_count == 0) need_to_check=1;
if (!need_to_check)
{ {
if (!(param->testflag & T_SILENT) || param->testflag & T_INFO) if (!(param->testflag & T_SILENT) || param->testflag & T_INFO)
printf("MyISAM file: %s is already checked\n",filename); printf("MyISAM file: %s is already checked\n",filename);
@ -535,7 +555,7 @@ static int myisamchk(MI_CHECK *param, my_string filename)
} }
DBUG_RETURN(0); DBUG_RETURN(0);
} }
}
if ((param->testflag & (T_REP_BY_SORT | T_REP | T_STATISTICS | if ((param->testflag & (T_REP_BY_SORT | T_REP | T_STATISTICS |
T_SORT_RECORDS | T_SORT_INDEX)) && T_SORT_RECORDS | T_SORT_INDEX)) &&
(((param->testflag & T_UNPACK) && (((param->testflag & T_UNPACK) &&

View File

@ -48,5 +48,6 @@ int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag)
info->open_tables->table->s->keyinfo[inx].seg)) info->open_tables->table->s->keyinfo[inx].seg))
return my_errno; return my_errno;
} }
return 0;
} }

View File

@ -25,6 +25,9 @@
SerG SerG
*/ */
int _mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
enum ha_rkey_function search_flag, bool raw_key);
int myrg_rkey(MYRG_INFO *info,byte *record,int inx, const byte *key, int myrg_rkey(MYRG_INFO *info,byte *record,int inx, const byte *key,
uint key_len, enum ha_rkey_function search_flag) uint key_len, enum ha_rkey_function search_flag)
{ {

View File

@ -224,7 +224,7 @@ if ($limits->{'unique_index'})
$tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count); $tmpvar^= ((($tmpvar + 63) + $i)*3 % $opt_loop_count);
$tmp=$tmpvar % ($total_rows); $tmp=$tmpvar % ($total_rows);
$tmpquery = "$query ($tmp,1,2,'D')"; $tmpquery = "$query ($tmp,1,2,'D')";
if ($dbh->do($tmpquery)) if (!$dbh->do($tmpquery))
{ {
die "Didn't get an error when inserting duplicate record $tmp\n"; die "Didn't get an error when inserting duplicate record $tmp\n";
} }

View File

@ -1,3 +1,8 @@
2000-08-20 Michael Widenius <monty@mysql.com>
* Added memory as inline functions to THD to get them a bit faster
* Don't count entries with NULL in COUNT(DISTINCT ..)
2000-08-08 Michael Widenius <monty@mysql.com> 2000-08-08 Michael Widenius <monty@mysql.com>
* Changed ALTER TABLE and LOAD DATA INFILE to create non unique, small keys * Changed ALTER TABLE and LOAD DATA INFILE to create non unique, small keys

View File

@ -66,7 +66,7 @@ mysqld_SOURCES = sql_lex.cc \
records.cc filesort.cc handler.cc \ records.cc filesort.cc handler.cc \
ha_isam.cc ha_isammrg.cc ha_heap.cc \ ha_isam.cc ha_isammrg.cc ha_heap.cc \
ha_myisam.cc ha_myisammrg.cc ha_berkeley.cc \ ha_myisam.cc ha_myisammrg.cc ha_berkeley.cc \
sql_db.cc sql_table.cc sql_crypt.cc \ sql_db.cc sql_table.cc sql_rename.cc sql_crypt.cc \
sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc \ sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc \
sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \ sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \
slave.cc \ slave.cc \

View File

@ -839,6 +839,10 @@ bool Item_sum_count_distinct::add()
copy_fields(tmp_table_param); copy_fields(tmp_table_param);
copy_funcs(tmp_table_param->funcs); copy_funcs(tmp_table_param->funcs);
for (Field **field=table->field ; *field ; field++)
if ((*field)->is_real_null(0))
return 0; // Don't count NULL
if ((error=table->file->write_row(table->record[0]))) if ((error=table->file->write_row(table->record[0])))
{ {
if (error != HA_ERR_FOUND_DUPP_KEY && if (error != HA_ERR_FOUND_DUPP_KEY &&

View File

@ -384,3 +384,87 @@ static MYSQL_LOCK *get_lock_data(THD *thd, TABLE **table_ptr, uint count,
} }
return sql_lock; return sql_lock;
} }
/*****************************************************************************
** Lock table based on the name.
** This is used when we need total access to a closed, not open table
*****************************************************************************/
/*
Put a not open table with an old refresh version in the table cache.
This will force any other threads that uses the table to release it
as soon as possible.
One must have a lock on LOCK_open !
Return values:
< 0 error
== 0 table locked
> 0 table locked, but someone is using it
*/
int lock_table_name(THD *thd, TABLE_LIST *table_list)
{
TABLE *table;
char key[MAX_DBKEY_LENGTH];
uint key_length;
key_length=(uint) (strmov(strmov(key,table_list->db)+1,table_list->name)-key)+
1;
/* Only insert the table if we haven't insert it already */
for (table=(TABLE*) hash_search(&open_cache,(byte*) key,key_length) ;
table ;
table = (TABLE*) hash_next(&open_cache,(byte*) key,key_length))
if (table->in_use == thd)
return 0;
/* Create a table entry with the right key and with an old refresh version */
if (!(table= (TABLE*) thd->calloc(sizeof(*table)+key_length)))
return -1;
memcpy((table->table_cache_key= (char*) (table+1)), key, key_length);
table->key_length=key_length;
table->in_use=thd;
table_list->table=table;
if (hash_insert(&open_cache, (byte*) table))
return -1;
if (remove_table_from_cache(thd, table_list->db, table_list->name))
return 1; // Table is in use
return 0;
}
void unlock_table_name(THD *thd, TABLE_LIST *table_list)
{
if (table_list->table)
hash_delete(&open_cache, (gptr) table_list->table);
}
static bool locked_named_table(THD *thd, TABLE_LIST *table_list)
{
for ( ; table_list ; table_list=table_list->next)
{
if (table_list->table && table_is_used(table_list->table))
return 1;
}
return 0; // All tables are locked
}
bool wait_for_locked_table_names(THD *thd, TABLE_LIST *table_list)
{
bool result=0;
while (locked_named_table(thd,table_list))
{
if (thd->killed)
{
result=1;
break;
}
wait_for_refresh(thd);
}
pthread_mutex_lock(&thd->mysys_var->mutex);
thd->mysys_var->current_mutex=0;
thd->mysys_var->current_cond=0;
pthread_mutex_unlock(&thd->mysys_var->mutex);
return result;
}

Binary file not shown.

View File

@ -1,13 +1,13 @@
/* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB /* Copyright Abandoned 1997 TCX DataKonsult AB & Monty Program KB & Detron HB
This file is public domain and comes with NO WARRANTY of any kind */ This file is public domain and comes with NO WARRANTY of any kind */
/* Modifikoval Petr <20>najdr, snajdr@pvt.net, snajdr@cpress.cz v.0.01 /* Modifikoval Petr -B<EFBFBD>najdr, snajdr@pvt.net, snajdr@cpress.cz v.0.01 -A
ISO LATIN-8852-2 ISO LATIN-8852-2
Upravil Jan Pazdziora, adelton@fi.muni.cz Upravil Jan Pazdziora, adelton@fi.muni.cz
Tue Nov 18 17:53:55 MET 1997 verze 0.02 Tue Nov 18 17:53:55 MET 1997 verze 0.02
Roz<6F><7A><EFBFBD>eno podle 3.21.15c Jan Pazdziora, adelton@fi.muni.cz Roz-B<EFBFBD><EFBFBD><EFBFBD>eno podle 3.21.15c Jan Pazdziora, adelton@fi.muni.cz-A
Tue Dec 2 19:08:54 MET 1997 verze 0.03 Tue Dec 2 19:08:54 MET 1997 verze 0.03
Roz<6F><7A><EFBFBD>eno podle 3.21.29 Jan Pazdziora, adelton@fi.muni.cz Roz-B<EFBFBD><EFBFBD><EFBFBD>eno podle 3.21.29 Jan Pazdziora, adelton@fi.muni.cz-A
Thu May 7 17:40:49 MET DST 1998 verze 0.04 Thu May 7 17:40:49 MET DST 1998 verze 0.04
Podle verze 3.22.20 upravil Jan Pazdziora, adelton@fi.muni.cz Podle verze 3.22.20 upravil Jan Pazdziora, adelton@fi.muni.cz
Thu Apr 1 20:49:57 CEST 1999 Thu Apr 1 20:49:57 CEST 1999
@ -19,191 +19,192 @@
"isamchk", "isamchk",
"NE", "NE",
"ANO", "ANO",
"Nemohu vytvo<76>it soubor '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu vytvo-B<EFBFBD>it soubor '%-.64s' (chybov<6F> k<>d: %d)",-A
"Nemohu vytvo<76>it tabulku '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu vytvo-B<EFBFBD>it tabulku '%-.64s' (chybov<6F> k<>d: %d)",-A
"Nemohu vytvo<76>it datab<61>zi '%-.64s', chyba %d", "Nemohu vytvo-B<EFBFBD>it datab<61>zi '%-.64s', chyba %d",-A
"Nemohu vytvo<76>it datab<61>zi '%-.64s', datab<61>ze ji<6A> existuje", "Nemohu vytvo-B<EFBFBD>it datab<61>zi '%-.64s', datab<61>ze ji<6A> existuje",-A
"Nemohu zru<72>it datab<61>zi '%-.64s', datab<61>ze neexistuje", "Nemohu zru-B<EFBFBD>it datab<61>zi '%-.64s', datab<61>ze neexistuje",-A
"Chyba p<>i ru<72>en<65> datab<61>ze (nemohu vymazat '%-.64s', chyba %d)", "Chyba p-B<EFBFBD>i ru<72>en<65> datab<61>ze (nemohu vymazat '%-.64s', chyba %d)",-A
"Chyba p<>i ru<72>en<65> datab<61>ze (nemohu vymazat adres<65><73> '%-.64s', chyba %d)", "Chyba p-B<EFBFBD>i ru<72>en<65> datab<61>ze (nemohu vymazat adres<65><73> '%-.64s', chyba %d)",-A
"Chyba p<>i v<>mazu '%-.64s' (chybov<6F> k<>d: %d)", "Chyba p-B<EFBFBD>i v<>mazu '%-.64s' (chybov<6F> k<>d: %d)",-A
"Nemohu <20><>st z<>znam v syst<73>mov<6F> tabulce", "Nemohu -B<EFBFBD><EFBFBD>st z<>znam v syst<73>mov<6F> tabulce",-A
"Nemohu z<>skat stav '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu z-B<EFBFBD>skat stav '%-.64s' (chybov<6F> k<>d: %d)",-A
"Chyba p<>i zji<6A><69>ov<6F>n<EFBFBD> pracovn<76> adres<65><73> (chybov<6F> k<>d: %d)", "Chyba p-B<EFBFBD>i zji<6A><69>ov<6F>n<EFBFBD> pracovn<76> adres<65><73> (chybov<6F> k<>d: %d)",-A
"Nemohu uzamknout soubor (chybov<6F> k<>d: %d)", "Nemohu uzamknout soubor (chybov-B<EFBFBD> k<>d: %d)",-A
"Nemohu otev<65><76>t soubor '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu otev-B<EFBFBD><EFBFBD>t soubor '%-.64s' (chybov<6F> k<>d: %d)",-A
"Nemohu naj<61>t soubor '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu naj-B<EFBFBD>t soubor '%-.64s' (chybov<6F> k<>d: %d)",-A
"Nemohu <20><>st adres<65><73> '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu -B<EFBFBD><EFBFBD>st adres<65><73> '%-.64s' (chybov<6F> k<>d: %d)",-A
"Nemohu zm<7A>nit adres<65><73> na '%-.64s' (chybov<6F> k<>d: %d)", "Nemohu zm-B<EFBFBD>nit adres<65><73> na '%-.64s' (chybov<6F> k<>d: %d)",-A
"Z<>znam byl zm<7A>n<EFBFBD>n od posledn<64>ho <20>ten<65> v tabulce '%-.64s'", "Z-B<EFBFBD>znam byl zm<7A>n<EFBFBD>n od posledn<64>ho <20>ten<65> v tabulce '%-.64s'",-A
"Disk je pln<6C> (%s), <20>ek<65>m na uvoln<6C>n<EFBFBD> n<>jak<61>ho m<>sta ...", "Disk je pln-B<EFBFBD> (%s), <20>ek<65>m na uvoln<6C>n<EFBFBD> n<>jak<61>ho m<>sta ...",-A
"Nemohu zapsat, zdvojen<65> kl<6B><6C> v tabulce '%-.64s'", "Nemohu zapsat, zdvojen-B<EFBFBD> kl<6B><6C> v tabulce '%-.64s'",-A
"Chyba p<>i zav<61>r<EFBFBD>n<EFBFBD> '%-.64s' (chybov<6F> k<>d: %d)", "Chyba p-B<EFBFBD>i zav<61>r<EFBFBD>n<EFBFBD> '%-.64s' (chybov<6F> k<>d: %d)",-A
"Chyba p<>i <20>ten<65> souboru '%-.64s' (chybov<6F> k<>d: %d)", "Chyba p-B<EFBFBD>i <20>ten<65> souboru '%-.64s' (chybov<6F> k<>d: %d)",-A
"Chyba p<>i p<>ejmenov<6F>n<EFBFBD> '%-.64s' na '%-.64s' (chybov<6F> k<>d: %d)", "Chyba p-B<EFBFBD>i p<>ejmenov<6F>n<EFBFBD> '%-.64s' na '%-.64s' (chybov<6F> k<>d: %d)",-A
"Chyba p<>i z<>pisu do souboru '%-.64s' (chybov<6F> k<>d: %d)", "Chyba p-B<EFBFBD>i z<>pisu do souboru '%-.64s' (chybov<6F> k<>d: %d)",-A
"'%-.64s' je zam<61>en proti zm<7A>n<EFBFBD>m", "'%-.64s' je zam-B<EFBFBD>en proti zm<7A>n<EFBFBD>m",-A
"T<><54>d<EFBFBD>n<EFBFBD> p<>eru<72>eno", "T-B<EFBFBD><EFBFBD>d<EFBFBD>n<EFBFBD> p<>eru<72>eno",-A
"Pohled '%-.64s' pro '%-.64s' neexistuje", "Pohled '%-.64s' pro '%-.64s' neexistuje",
"Obsluha tabulky vr<76>tila chybu %d", "Obsluha tabulky vr-B<EFBFBD>tila chybu %d",-A
"Obsluha tabulky '%-.64s' nem<65> tento parametr", "Obsluha tabulky '%-.64s' nem-B<EFBFBD> tento parametr",-A
"Nemohu naj<61>t z<>znam v '%-.64s'", "Nemohu naj-B<EFBFBD>t z<>znam v '%-.64s'",-A
"Nespr<70>vn<76> informace v souboru '%-.64s'", "Nespr-B<EFBFBD>vn<EFBFBD> informace v souboru '%-.64s'",-A
"Nespr<70>vn<76> kl<6B><6C> pro tabulku '%-.64s'. Pokuste se ho opravit", "Nespr-B<EFBFBD>vn<EFBFBD> kl<6B><6C> pro tabulku '%-.64s'. Pokuste se ho opravit",-A
"Star<61> kl<6B><6C>ov<6F> soubor pro '%-.64s'. Opravte ho.", "Star-B<EFBFBD> kl<6B><6C>ov<6F> soubor pro '%-.64s'. Opravte ho.",-A
"'%-.64s' je jen pro <20>ten<65>", "'%-.64s' je jen pro -B<EFBFBD>ten<EFBFBD>",-A
"M<>lo pam<61>ti. P<>estartujte daemona a zkuste znovu (je pot<6F>eba %d byt<79>)", "M-B<EFBFBD>lo pam<61>ti. P<>estartujte daemona a zkuste znovu (je pot<6F>eba %d byt<79>)",-A
"M<>lo pam<61>ti pro t<><74>d<EFBFBD>n<EFBFBD>. Zvy<76>te velikost t<><74>d<EFBFBD>c<EFBFBD>ho bufferu", "M-B<EFBFBD>lo pam<61>ti pro t<><74>d<EFBFBD>n<EFBFBD>. Zvy<76>te velikost t<><74>d<EFBFBD>c<EFBFBD>ho bufferu",-A
"Neo<65>ek<65>van<61> konec souboru p<>i <20>ten<65> '%-.64s' (chybov<6F> k<>d: %d)", "Neo-B<EFBFBD>ek<EFBFBD>van<EFBFBD> konec souboru p<>i <20>ten<65> '%-.64s' (chybov<6F> k<>d: %d)",-A
"P<><50>li<6C> mnoho spojen<65>", "P-B<EFBFBD><EFBFBD>li<EFBFBD> mnoho spojen<65>",-A
"M<>lo prostoru/pam<61>ti pro thread", "M-B<EFBFBD>lo prostoru/pam<61>ti pro thread",-A
"Nemohu zjistit jm<6A>no stroje pro Va<56>i adresu", "Nemohu zjistit jm-B<EFBFBD>no stroje pro Va<56>i adresu",-A
"Chyba p<>i ustavov<6F>n<EFBFBD> spojen<65>", "Chyba p-B<EFBFBD>i ustavov<6F>n<EFBFBD> spojen<65>",-A
"P<><50>stup pro u<>ivatele '%-.32s@%-.64s' k datab<61>zi '%-.64s' nen<65> povolen", "P-B<EFBFBD><EFBFBD>stup pro u<>ivatele '%-.32s@%-.64s' k datab<61>zi '%-.64s' nen<65> povolen",-A
"P<><50>stup pro u<>ivatele '%-.32s@%-.64s' (s heslem %s)", "P-B<EFBFBD><EFBFBD>stup pro u<>ivatele '%-.32s@%-.64s' (s heslem %s)",-A
"Nebyla vybr<62>na <20><>dn<64> datab<61>ze", "Nebyla vybr-B<EFBFBD>na <20><>dn<64> datab<61>ze",-A
"Nezn<7A>m<EFBFBD> p<><70>kaz", "Nezn-B<EFBFBD>m<EFBFBD> p<><70>kaz",-A
"Sloupec '%-.64s' nem<65><6D>e b<>t null", "Sloupec '%-.64s' nem-B<EFBFBD><EFBFBD>e b<>t null",-A
"Nezn<7A>m<EFBFBD> datab<61>ze '%-.64s'", "Nezn-B<EFBFBD>m<EFBFBD> datab<61>ze '%-.64s'",-A
"Tabulka '%-.64s' ji<6A> existuje", "Tabulka '%-.64s' ji-B<EFBFBD> existuje",-A
"Nezn<7A>m<EFBFBD> tabulka '%-.64s'", "Nezn-B<EFBFBD>m<EFBFBD> tabulka '%-.64s'",-A
"Sloupec '%-.64s' v %s nen<65> zcela jasn<73>", "Sloupec '%-.64s' v %s nen-B<EFBFBD> zcela jasn<73>",-A
"Prob<6F>h<EFBFBD> ukon<6F>ov<6F>n<EFBFBD> pr<70>ce serveru", "Prob-B<EFBFBD>h<EFBFBD> ukon<6F>ov<6F>n<EFBFBD> pr<70>ce serveru",-A
"Nezn<7A>m<EFBFBD> sloupec '%-.64s' v %s", "Nezn-B<EFBFBD>m<EFBFBD> sloupec '%-.64s' v %s",-A
"Pou<6F>it<69> '%-.64s' nebylo v group by", "Pou-B<EFBFBD>it<EFBFBD> '%-.64s' nebylo v group by",-A
"Nemohu pou<6F><75>t group na '%-.64s'", "Nemohu pou-B<EFBFBD><EFBFBD>t group na '%-.64s'",-A
"P<><50>kaz obsahuje z<>rove<76> funkci sum a sloupce", "P-B<EFBFBD><EFBFBD>kaz obsahuje z<>rove<76> funkci sum a sloupce",-A
"Po<50>et sloupc<70> neodpov<6F>d<EFBFBD> zadan<61> hodnot<6F>", "Po-B<EFBFBD>et sloupc<70> neodpov<6F>d<EFBFBD> zadan<61> hodnot<6F>",-A
"Jm<4A>no identifik<69>toru '%-.64s' je p<><70>li<6C> dlouh<75>", "Jm-B<EFBFBD>no identifik<69>toru '%-.64s' je p<><70>li<6C> dlouh<75>",-A
"Zdvojen<65> jm<6A>no sloupce '%-.64s'", "Zdvojen-B<EFBFBD> jm<6A>no sloupce '%-.64s'",-A
"Zdvojen<65> jm<6A>no kl<6B><6C>e '%-.64s'", "Zdvojen-B<EFBFBD> jm<6A>no kl<6B><6C>e '%-.64s'",-A
"Zvojen<65> kl<6B><6C> '%-.64s' (<28><>slo kl<6B><6C>e %d)", "Zvojen-B<EFBFBD> kl<6B><6C> '%-.64s' (<28><>slo kl<6B><6C>e %d)",-A
"Chybn<62> specifikace sloupce '%-.64s'", "Chybn-B<EFBFBD> specifikace sloupce '%-.64s'",-A
"%s bl<62>zko '%-.64s' na <20><>dku %d", "%s bl-B<EFBFBD>zko '%-.64s' na <20><>dku %d",-A
"V<>sledek dotazu je pr<70>zdn<64>", "V-B<EFBFBD>sledek dotazu je pr<70>zdn<64>",-A
"Nejednozna<6E>n<EFBFBD> tabulka/alias: '%-.64s'", "Nejednozna-B<EFBFBD>n<EFBFBD> tabulka/alias: '%-.64s'",-A
"Chybn<62> defaultn<74> hodnota pro '%-.64s'", "Chybn-B<EFBFBD> defaultn<74> hodnota pro '%-.64s'",-A
"Definov<6F>no v<>ce prim<69>rn<72>ch kl<6B><6C><EFBFBD>", "Definov-B<EFBFBD>no v<>ce prim<69>rn<72>ch kl<6B><6C><EFBFBD>",-A
"Zad<61>no p<><70>li<6C> mnoho kl<6B><6C><EFBFBD>, je povoleno nejv<6A>ce %d kl<6B><6C><EFBFBD>", "Zad-B<EFBFBD>no p<><70>li<6C> mnoho kl<6B><6C><EFBFBD>, je povoleno nejv<6A>ce %d kl<6B><6C><EFBFBD>",-A
"Zad<61>no p<><70>li<6C> mnoho <20><>st kl<6B><6C><EFBFBD>, je povoleno nejv<6A>ce %d <20><>st<73>", "Zad-B<EFBFBD>no p<><70>li<6C> mnoho <20><>st kl<6B><6C><EFBFBD>, je povoleno nejv<6A>ce %d <20><>st<73>",-A
"Zadan<61> kl<6B><6C> byl p<><70>li<6C> dlouh<75>, nejv<6A>t<EFBFBD><74> d<>lka kl<6B><6C>e je %d", "Zadan-B<EFBFBD> kl<6B><6C> byl p<><70>li<6C> dlouh<75>, nejv<6A>t<EFBFBD><74> d<>lka kl<6B><6C>e je %d",-A
"Kl<4B><6C>ov<6F> sloupec '%-.64s' v tabulce neexistuje", "Kl-B<EFBFBD><EFBFBD>ov<EFBFBD> sloupec '%-.64s' v tabulce neexistuje",-A
"Blob sloupec '%-.64s' nem<65><6D>e b<>t pou<6F>it jako kl<6B><6C>", "Blob sloupec '%-.64s' nem-B<EFBFBD><EFBFBD>e b<>t pou<6F>it jako kl<6B><6C>",-A
"P<><50>li<6C> velk<6C> d<>lka sloupce '%-.64s' (nejv<6A>ce %d). Pou<6F>ijte BLOB", "P-B<EFBFBD><EFBFBD>li<EFBFBD> velk<6C> d<>lka sloupce '%-.64s' (nejv<6A>ce %d). Pou<6F>ijte BLOB",-A
"M<><4D>ete m<>t pouze jedno AUTO pole a to mus<75> b<>t definov<6F>no jako kl<6B><6C>", "M-B<EFBFBD><EFBFBD>ete m<>t pouze jedno AUTO pole a to mus<75> b<>t definov<6F>no jako kl<6B><6C>",-A
"%s: p<>ipraven na spojen<65>\n", "%s: p-B<EFBFBD>ipraven na spojen<65>\n",-A
"%s: norm<72>ln<6C> ukon<6F>en<65>\n", "%s: norm-B<EFBFBD>ln<EFBFBD> ukon<6F>en<65>\n",-A
"%s: p<>ijat signal %d, kon<6F><6E>m\n", "%s: p-B<EFBFBD>ijat signal %d, kon<6F><6E>m\n",-A
"%s: ukon<6F>en<65> pr<70>ce hotovo\n", "%s: ukon-B<EFBFBD>en<EFBFBD> pr<70>ce hotovo\n",-A
"%s: n<>siln<6C> uzav<61>en<65> threadu %ld u<>ivatele '%-.64s'\n", "%s: n-B<EFBFBD>siln<EFBFBD> uzav<61>en<65> threadu %ld u<>ivatele '%-.64s'\n",-A
"Nemohu vytvo<76>it IP socket", "Nemohu vytvo-B<EFBFBD>it IP socket",-A
"Tabulka '%-.64s' nem<65> index odpov<6F>daj<61>c<EFBFBD> CREATE INDEX. Vytvo<76>te tabulku znovu", "Tabulka '%-.64s' nem-B<EFBFBD> index odpov<6F>daj<61>c<EFBFBD> CREATE INDEX. Vytvo<76>te tabulku znovu",-A
"Argument separ<61>toru polo<6C>ek nebyl o<>ek<65>v<EFBFBD>n. P<>e<EFBFBD>t<EFBFBD>te si manu<6E>l", "Argument separ-B<EFBFBD>toru polo<6C>ek nebyl o<>ek<65>v<EFBFBD>n. P<>e<EFBFBD>t<EFBFBD>te si manu<6E>l",-A
"Nen<65> mo<6D>n<EFBFBD> pou<6F><75>t pevn<76> rowlength s BLOBem. Pou<6F>ijte 'fields terminated by'.", "Nen-B<EFBFBD> mo<6D>n<EFBFBD> pou<6F><75>t pevn<76> rowlength s BLOBem. Pou<6F>ijte 'fields terminated by'.",-A
"Soubor '%-.64s' mus<75> b<>t v adres<65><73>i datab<61>ze nebo <20>iteln<6C> pro v<>echny", "Soubor '%-.64s' mus-B<EFBFBD> b<>t v adres<65><73>i datab<61>ze nebo <20>iteln<6C> pro v<>echny",-A
"Soubor '%-.64s' ji<6A> existuje", "Soubor '%-.64s' ji-B<EFBFBD> existuje",-A
"Z<>znam<61>: %ld Vymaz<61>no: %ld P<>esko<6B>eno: %ld Varov<6F>n<EFBFBD>: %ld", "Z-B<EFBFBD>znam<EFBFBD>: %ld Vymaz<61>no: %ld P<>esko<6B>eno: %ld Varov<6F>n<EFBFBD>: %ld",-A
"Z<>znam<61>: %ld Zdvojen<65>ch: %ld", "Z-B<EFBFBD>znam<EFBFBD>: %ld Zdvojen<65>ch: %ld",-A
"Chybn<62> pod<6F><64>st kl<6B><6C>e -- nen<65> to <20>et<65>zec nebo je del<65><6C> ne<6E> d<>lka <20><>sti kl<6B><6C>e", "Chybn-B<EFBFBD> pod<6F><64>st kl<6B><6C>e -- nen<65> to <20>et<65>zec nebo je del<65><6C> ne<6E> d<>lka <20><>sti kl<6B><6C>e",-A
"Nen<65> mo<6D>n<EFBFBD> vymazat v<>echny polo<6C>ky s ALTER TABLE. Pou<6F>ijte DROP TABLE", "Nen-B<EFBFBD> mo<6D>n<EFBFBD> vymazat v<>echny polo<6C>ky s ALTER TABLE. Pou<6F>ijte DROP TABLE",-A
"Nemohu zru<72>it '%-.64s' (prov<6F>st DROP). Zkontrolujte, zda neexistuj<75> z<>znamy/kl<6B><6C>e", "Nemohu zru-B<EFBFBD>it '%-.64s' (prov<6F>st DROP). Zkontrolujte, zda neexistuj<75> z<>znamy/kl<6B><6C>e",-A
"Z<>znam<61>: %ld Zdvojen<65>ch: %ld Varov<6F>n<EFBFBD>: %ld", "Z-B<EFBFBD>znam<EFBFBD>: %ld Zdvojen<65>ch: %ld Varov<6F>n<EFBFBD>: %ld",-A
"INSERT TABLE '%-.64s' nen<65> dovoleno v seznamu tabulek FROM", "INSERT TABLE '%-.64s' nen-B<EFBFBD> dovoleno v seznamu tabulek FROM",-A
"Nezn<7A>m<EFBFBD> identifikace threadu: %lu", "Nezn-B<EFBFBD>m<EFBFBD> identifikace threadu: %lu",-A
"Nejste vlastn<74>kem threadu %lu", "Nejste vlastn-B<EFBFBD>kem threadu %lu",-A
"Nejsou pou<6F>ity <20><>dn<64> tabulky", "Nejsou pou-B<EFBFBD>ity <20><>dn<64> tabulky",-A
"P<><50>li<6C> mnoho <20>et<65>zc<7A> pro sloupec %s a SET", "P-B<EFBFBD><EFBFBD>li<EFBFBD> mnoho <20>et<65>zc<7A> pro sloupec %s a SET",-A
"Nemohu vytvo<76>it jednozna<6E>n<EFBFBD> jm<6A>no logovac<61>ho souboru %s.(1-999)\n", "Nemohu vytvo-B<EFBFBD>it jednozna<6E>n<EFBFBD> jm<6A>no logovac<61>ho souboru %s.(1-999)\n",-A
"Tabulka '%-.64s' byla zam<61>ena s READ a nem<65><6D>e b<>t zm<7A>n<EFBFBD>na", "Tabulka '%-.64s' byla zam-B<EFBFBD>ena s READ a nem<65><6D>e b<>t zm<7A>n<EFBFBD>na",-A
"Tabulka '%-.64s' nebyla zam<61>ena s LOCK TABLES", "Tabulka '%-.64s' nebyla zam-B<EFBFBD>ena s LOCK TABLES",-A
"Blob polo<6C>ka '%-.64s' nem<65><6D>e m<>t defaultn<74> hodnotu", "Blob polo-B<EFBFBD>ka '%-.64s' nem<65><6D>e m<>t defaultn<74> hodnotu",-A
"Nep<65><70>pustn<74> jm<6A>no datab<61>ze '%-.64s'", "Nep-B<EFBFBD><EFBFBD>pustn<EFBFBD> jm<6A>no datab<61>ze '%-.64s'",-A
"Nep<65><70>pustn<74> jm<6A>no tabulky '%-.64s'", "Nep-B<EFBFBD><EFBFBD>pustn<EFBFBD> jm<6A>no tabulky '%-.64s'",-A
"Zadan<61> SELECT by proch<63>zel p<><70>li<6C> mnoho z<>znam<61> a trval velmi dlouho. Zkontrolujte tvar WHERE a je-li SELECT v po<70><6F>dku, pou<6F>ijte SET OPTION SQL_BIG_SELECTS=1", "Zadan-B<EFBFBD> SELECT by proch<63>zel p<><70>li<6C> mnoho z<>znam<61> a trval velmi dlouho. Zkontrolujte tvar WHERE a je-li SELECT v po<70><6F>dku, pou<6F>ijte SET OPTION SQL_BIG_SELECTS=1",-A
"Nezn<7A>m<EFBFBD> chyba", "Nezn-B<EFBFBD>m<EFBFBD> chyba",-A
"Nezn<7A>m<EFBFBD> procedura %s", "Nezn-B<EFBFBD>m<EFBFBD> procedura %s",-A
"Chybn<62> po<70>et parametr<74> procedury %s", "Chybn-B<EFBFBD> po<70>et parametr<74> procedury %s",-A
"Chybn<62> parametry procedury %s", "Chybn-B<EFBFBD> parametry procedury %s",-A
"Nezn<7A>m<EFBFBD> tabulka '%-.64s' v %s", "Nezn-B<EFBFBD>m<EFBFBD> tabulka '%-.64s' v %s",-A
"Polo<6C>ka '%-.64s' je zad<61>na dvakr<6B>t", "Polo-B<EFBFBD>ka '%-.64s' je zad<61>na dvakr<6B>t",-A
"Nespr<70>vn<76> pou<6F>it<69> funkce group", "Nespr-B<EFBFBD>vn<EFBFBD> pou<6F>it<69> funkce group",-A
"Tabulka '%-.64s' pou<6F><75>v<EFBFBD> roz<6F><7A><EFBFBD>en<65>, kter<65> v t<>to verzi MySQL nen<65>", "Tabulka '%-.64s' pou-B<EFBFBD><EFBFBD>v<EFBFBD> roz<6F><7A><EFBFBD>en<65>, kter<65> v t<>to verzi MySQL nen<65>",-A
"Tabulka mus<75> m<>t alespo<70> jeden sloupec", "Tabulka mus-B<EFBFBD> m<>t alespo<70> jeden sloupec",-A
"Tabulka '%-.64s' je pln<EFBFBD>", "Tabulka '%-.64s' je pln-B<>",-A
"Nezn<7A>m<EFBFBD> znakov<6F> sada: '%-.64s'", "Nezn-B<EFBFBD>m<EFBFBD> znakov<6F> sada: '%-.64s'",-A
"P<><50>li<6C> mnoho tabulek, MySQL jich m<><6D>e m<>t v joinu jen %d", "P-B<EFBFBD><EFBFBD>li<EFBFBD> mnoho tabulek, MySQL jich m<><6D>e m<>t v joinu jen %d",-A
"P<><50>li<6C> mnoho polo<6C>ek", "P-B<EFBFBD><EFBFBD>li<EFBFBD> mnoho polo<6C>ek",-A
"<22><>dek je p<><70>li<6C> velk<6C>. Maxim<69>ln<6C> velikost <20><>dku, nepo<70><6F>taje polo<6C>ky blob, je %d. Mus<75>te zm<7A>nit n<>kter<65> polo<6C>ky na blob", "-B<EFBFBD><EFBFBD>dek je p<><70>li<6C> velk<6C>. Maxim<69>ln<6C> velikost <20><>dku, nepo<70><6F>taje polo<6C>ky blob, je %d. Mus<75>te zm<7A>nit n<>kter<65> polo<6C>ky na blob",-A
"P<>ete<74>en<65> z<>sobn<62>ku threadu: pou<6F>ito %ld z %ld. Pou<6F>ijte 'mysqld -O thread_stack=#' k zad<61>n<EFBFBD> v<>t<EFBFBD><74>ho z<>sobn<62>ku", "P-B<EFBFBD>ete<EFBFBD>en<EFBFBD> z<>sobn<62>ku threadu: pou<6F>ito %ld z %ld. Pou<6F>ijte 'mysqld -O thread_stack=#' k zad<61>n<EFBFBD> v<>t<EFBFBD><74>ho z<>sobn<62>ku",-A
"V OUTER JOIN byl nalezen k<><6B><EFBFBD>ov<6F> odkaz. Prov<6F><76>te ON podm<64>nky", "V OUTER JOIN byl nalezen k-B<EFBFBD><EFBFBD><EFBFBD>ov<EFBFBD> odkaz. Prov<6F><76>te ON podm<64>nky",-A
"Sloupec '%-.32s' je pou<6F>it s UNIQUE nebo INDEX, ale nen<65> definov<6F>n jako NOT NULL", "Sloupec '%-.32s' je pou-B<EFBFBD>it s UNIQUE nebo INDEX, ale nen<65> definov<6F>n jako NOT NULL",-A
"Nemohu na<6E><61>st funkci '%-.64s'", "Nemohu na-B<EFBFBD><EFBFBD>st funkci '%-.64s'",-A
"Nemohu inicializovat funkci '%-.64s'; %-.80s", "Nemohu inicializovat funkci '%-.64s'; %-.80s",
"Pro sd<73>lenou knihovnu nejsou povoleny cesty", "Pro sd-B<EFBFBD>lenou knihovnu nejsou povoleny cesty",-A
"Funkce '%-.64s' ji<6A> existuje", "Funkce '%-.64s' ji-B<EFBFBD> existuje",-A
"Nemohu otev<65><76>t sd<73>lenou knihovnu '%-.64s' (errno: %d %s)", "Nemohu otev-B<EFBFBD><EFBFBD>t sd<73>lenou knihovnu '%-.64s' (errno: %d %s)",-A
"Nemohu naj<61>t funkci '%-.64s' v knihovn<76>'", "Nemohu naj-B<EFBFBD>t funkci '%-.64s' v knihovn<76>'",-A
"Funkce '%-.64s' nen<65> definov<6F>na", "Funkce '%-.64s' nen-B<EFBFBD> definov<6F>na",-A
"Stroj '%-.64s' je zablokov<6F>n kv<6B>li mnoha chyb<79>m p<>i p<>ipojov<6F>n<EFBFBD>. Odblokujete pou<6F>it<69>m 'mysqladmin flush-hosts'", "Stroj '%-.64s' je zablokov-B<EFBFBD>n kv<6B>li mnoha chyb<79>m p<>i p<>ipojov<6F>n<EFBFBD>. Odblokujete pou<6F>it<69>m 'mysqladmin flush-hosts'",-A
"Stroj '%-.64s' nem<65> povoleno se k tomuto MySQL serveru p<>ipojit", "Stroj '%-.64s' nem-B<EFBFBD> povoleno se k tomuto MySQL serveru p<>ipojit",-A
"Pou<6F><75>v<EFBFBD>te MySQL jako anonymn<6D> u<>ivatel a anonymn<6D> u<>ivatel<65> nemaj<61> povoleno m<>nit hesla", "Pou-B<EFBFBD><EFBFBD>v<EFBFBD>te MySQL jako anonymn<6D> u<>ivatel a anonymn<6D> u<>ivatel<65> nemaj<61> povoleno m<>nit hesla",-A
"Na zm<7A>nu hesel ostatn<74>m mus<75>te m<>t pr<70>vo prov<6F>st update tabulek v datab<61>zi mysql", "Na zm-B<EFBFBD>nu hesel ostatn<74>m mus<75>te m<>t pr<70>vo prov<6F>st update tabulek v datab<61>zi mysql",-A
"V tabulce user nen<65> <20><>dn<64> odpov<6F>daj<61>c<EFBFBD> <20><>dek", "V tabulce user nen-B<EFBFBD> <20><>dn<64> odpov<6F>daj<61>c<EFBFBD> <20><>dek",-A
"Nalezen<65>ch <20><>dk<64>: %ld Zm<5A>n<EFBFBD>no: %ld Varov<6F>n<EFBFBD>: %ld", "Nalezen-B<EFBFBD>ch <20><>dk<64>: %ld Zm<5A>n<EFBFBD>no: %ld Varov<6F>n<EFBFBD>: %ld",-A
"Nemohu vytvo<76>it nov<6F> thread (errno %d). Pokud je je<6A>t<EFBFBD> n<>jak<61> voln<6C> pam<61><6D>, pod<6F>vejte se do manu<6E>lu na <20><>st o chyb<79>ch specifick<63>ch pro jednotliv<69> opera<72>n<EFBFBD> syst<73>my", "Nemohu vytvo-B<EFBFBD>it nov<6F> thread (errno %d). Pokud je je<6A>t<EFBFBD> n<>jak<61> voln<6C> pam<61><6D>, pod<6F>vejte se do manu<6E>lu na <20><>st o chyb<79>ch specifick<63>ch pro jednotliv<69> opera<72>n<EFBFBD> syst<73>my",-A
"Po<50>et sloupc<70> neodpov<6F>d<EFBFBD> po<70>tu hodnot na <20><>dku %ld", "Po-B<EFBFBD>et sloupc<70> neodpov<6F>d<EFBFBD> po<70>tu hodnot na <20><>dku %ld",-A
"Nemohu znovuotev<65><76>t tabulku: '%-.64s', "Nemohu znovuotev-B<EFBFBD><EFBFBD>t tabulku: '%-.64s',-A
"Neplatn<74> u<>it<69> hodnoty NULL", "Neplatn-B<EFBFBD> u<>it<69> hodnoty NULL",-A
"Regul<75>rn<72> v<>raz vr<76>til chybu '%-.64s'", "Regul-B<EFBFBD>rn<EFBFBD> v<>raz vr<76>til chybu '%-.64s'",-A
"Pokud nen<65> <20><>dn<64> GROUP BY klauzule, nen<65> dovoleno sou<6F>asn<73> pou<6F>it<69> GROUP polo<6C>ek (MIN(),MAX(),COUNT()...) s ne GROUP polo<6C>kami", "Pokud nen-B<EFBFBD> <20><>dn<64> GROUP BY klauzule, nen<65> dovoleno sou<6F>asn<73> pou<6F>it<69> GROUP polo<6C>ek (MIN(),MAX(),COUNT()...) s ne GROUP polo<6C>kami",-A
"Neexistuje odpov<6F>daj<61>c<EFBFBD> grant pro u<>ivatele '%-.32s' na stroji '%-.64s'", "Neexistuje odpov-B<EFBFBD>daj<EFBFBD>c<EFBFBD> grant pro u<>ivatele '%-.32s' na stroji '%-.64s'",-A
"%-.16s p<><70>kaz nep<65><70>stupn<70> pro u<>ivatele: '%-.32s@%-.64s' pro tabulku '%-.64s'", "%-.16s p-B<EFBFBD><EFBFBD>kaz nep<65><70>stupn<70> pro u<>ivatele: '%-.32s@%-.64s' pro tabulku '%-.64s'",-A
"%-.16s p<><70>kaz nep<65><70>stupn<70> pro u<>ivatele: '%-.32s@%-.64s' pro sloupec '%-.64s' v tabulce '%-.64s'", "%-.16s p-B<EFBFBD><EFBFBD>kaz nep<65><70>stupn<70> pro u<>ivatele: '%-.32s@%-.64s' pro sloupec '%-.64s' v tabulce '%-.64s'",-A
"Neplatn<74> p<><70>kaz GRANT/REVOKE. Pros<6F>m, p<>e<EFBFBD>t<EFBFBD>te si v manu<6E>lu, jak<61> privilegia je mo<6D>n<EFBFBD> pou<6F><75>t.", "Neplatn-B<EFBFBD> p<><70>kaz GRANT/REVOKE. Pros<6F>m, p<>e<EFBFBD>t<EFBFBD>te si v manu<6E>lu, jak<61> privilegia je mo<6D>n<EFBFBD> pou<6F><75>t.",-A
"Argument p<><70>kazu GRANT u<>ivatel nebo stroj je p<><70>li<6C> dlouh<75>", "Argument p-B<EFBFBD><EFBFBD>kazu GRANT u<>ivatel nebo stroj je p<><70>li<6C> dlouh<75>",-A
"Tabulka '%-64s.%s' neexistuje", "Tabulka '%-64s.%s' neexistuje",
"Neexistuje odpov<6F>daj<61>c<EFBFBD> grant pro u<>ivatele '%-.32s' na stroji '%-.64s' pro tabulku '%-.64s'", "Neexistuje odpov-B<EFBFBD>daj<EFBFBD>c<EFBFBD> grant pro u<>ivatele '%-.32s' na stroji '%-.64s' pro tabulku '%-.64s'",-A
"Pou<6F>it<69> p<><70>kaz nen<65> v t<>to verzi MySQL povolen", "Pou-B<EFBFBD>it<EFBFBD> p<><70>kaz nen<65> v t<>to verzi MySQL povolen",-A
"Va<56>e syntaxe je n<>jak<61> divn<76>", "Va-B<EFBFBD>e syntaxe je n<>jak<61> divn<76>",-A
"Zpo<70>d<EFBFBD>n<EFBFBD> insert threadu nebyl schopen z<>skat po<70>adovan<61> z<>mek pro tabulku %-.64s", "Zpo-B<EFBFBD>d<EFBFBD>n<EFBFBD> insert threadu nebyl schopen z<>skat po<70>adovan<61> z<>mek pro tabulku %-.64s",-A
"P<><50>li<6C> mnoho zpo<70>d<EFBFBD>n<EFBFBD>ch thread<61>", "P-B<EFBFBD><EFBFBD>li<EFBFBD> mnoho zpo<70>d<EFBFBD>n<EFBFBD>ch thread<61>",-A
"Zru<72>eno spojen<65> %ld do datab<61>ze: '%-.64s' u<>ivatel: '%-.64s' (%s)", "Zru-B<EFBFBD>eno spojen<65> %ld do datab<61>ze: '%-.64s' u<>ivatel: '%-.64s' (%s)",-A
"Zji<6A>t<EFBFBD>n p<><70>choz<6F> packet del<65><6C> ne<6E> 'max_allowed_packet'", "Zji-B<EFBFBD>t<EFBFBD>n p<><70>choz<6F> packet del<65><6C> ne<6E> 'max_allowed_packet'",-A
"Zji<6A>t<EFBFBD>na chyba p<>i <20>ten<65> z roury spojen<65>", "Zji-B<EFBFBD>t<EFBFBD>na chyba p<>i <20>ten<65> z roury spojen<65>",-A
"Zji<6A>t<EFBFBD>na chyba fcntl()", "Zji-B<EFBFBD>t<EFBFBD>na chyba fcntl()",-A
"P<><50>choz<6F> packety v chybn<62>m po<70>ad<61>", "P-B<EFBFBD><EFBFBD>choz<EFBFBD> packety v chybn<62>m po<70>ad<61>",-A
"Nemohu rozkomprimovat komunika<6B>n<EFBFBD> packet", "Nemohu rozkomprimovat komunika-B<EFBFBD>n<EFBFBD> packet",-A
"Zji<6A>t<EFBFBD>na chyba p<>i <20>ten<65> komunika<6B>n<EFBFBD>ho packetu", "Zji-B<EFBFBD>t<EFBFBD>na chyba p<>i <20>ten<65> komunika<6B>n<EFBFBD>ho packetu",-A
"Zji<6A>t<EFBFBD>n timeout p<>i <20>ten<65> komunika<6B>n<EFBFBD>ho packetu", "Zji-B<EFBFBD>t<EFBFBD>n timeout p<>i <20>ten<65> komunika<6B>n<EFBFBD>ho packetu",-A
"Zji<6A>t<EFBFBD>na chyba p<>i z<>pisu komunika<6B>n<EFBFBD>ho packetu", "Zji-B<EFBFBD>t<EFBFBD>na chyba p<>i z<>pisu komunika<6B>n<EFBFBD>ho packetu",-A
"Zji<6A>t<EFBFBD>n timeout p<>i z<>pisu komunika<6B>n<EFBFBD>ho packetu", "Zji-B<EFBFBD>t<EFBFBD>n timeout p<>i z<>pisu komunika<6B>n<EFBFBD>ho packetu",-A
"V<>sledn<64> <20>et<65>zec je del<65><6C> ne<6E> max_allowed_packet", "V-B<EFBFBD>sledn<EFBFBD> <20>et<65>zec je del<65><6C> ne<6E> max_allowed_packet",-A
"Typ pou<6F>it<69> tabulky nepodporuje BLOB/TEXT sloupce", "Typ pou-B<EFBFBD>it<EFBFBD> tabulky nepodporuje BLOB/TEXT sloupce",-A
"Typ pou<6F>it<69> tabulky nepodporuje AUTO_INCREMENT sloupce", "Typ pou-B<EFBFBD>it<EFBFBD> tabulky nepodporuje AUTO_INCREMENT sloupce",-A
"INSERT DELAYED nen<65> mo<6D>no s tabulkou '%-.64s' pou<6F><75>t, proto<74>e je zam<61>en<65> pomoc<6F> LOCK TABLES", "INSERT DELAYED nen-B<EFBFBD> mo<6D>no s tabulkou '%-.64s' pou<6F><75>t, proto<74>e je zam<61>en<65> pomoc<6F> LOCK TABLES",-A
"Nespr<70>vn<76> jm<6A>no sloupce '%-.100s'", "Nespr-B<EFBFBD>vn<EFBFBD> jm<6A>no sloupce '%-.100s'",-A
"Handler pou<6F>it<69> tabulky neum<75> indexovat sloupce '%-.64s'", "Handler pou-B<EFBFBD>it<EFBFBD> tabulky neum<75> indexovat sloupce '%-.64s'",-A
"V<>echny tabulky v MERGE tabulce nejsou definov<6F>ny stejn<6A>", "V-B<EFBFBD>echny tabulky v MERGE tabulce nejsou definov<6F>ny stejn<6A>",-A
"Kv<4B>li unique constraintu nemozu zapsat do tabulky '%-.64s'", "Kv-B<EFBFBD>li unique constraintu nemozu zapsat do tabulky '%-.64s'",-A
"BLOB sloupec '%-.64s' je pou<6F>it ve specifikaci kl<6B><6C>e bez d<>lky", "BLOB sloupec '%-.64s' je pou-B<EFBFBD>it ve specifikaci kl<6B><6C>e bez d<>lky",-A
+"V-B<>echny <20><>sti prim<69>rn<72>ho kl<6B><6C>e musej<65> b<>t NOT NULL; pokud pot<6F>ebujete NULL, pou<6F>ijte UNIQUE",-A "V-B<>echny <20><>sti prim<69>rn<72>ho kl<6B><6C>e musej<65> b<>t NOT NULL; pokud pot<6F>ebujete NULL, pou<6F>ijte UNIQUE",-A
+"V-B<>sledek obsahuje v<>ce ne<6E> jeden <20><>dek",-A "V-B<>sledek obsahuje v<>ce ne<6E> jeden <20><>dek",-A
+"Tento typ tabulky vy-B<>aduje prim<69>rn<72> kl<6B><6C>",-A "Tento typ tabulky vy-B<>aduje prim<69>rn<72> kl<6B><6C>",-A
+"Tato verze MySQL nen-B<> zkompilov<6F>na s podporou RAID",-A "Tato verze MySQL nen-B<> zkompilov<6F>na s podporou RAID",-A
+"Update tabulky bez WHERE s kl-B<><42>em nen<65> v m<>du bezpe<70>n<EFBFBD>ch update dovoleno",-A "Update tabulky bez WHERE s kl-B<><42>em nen<65> v m<>du bezpe<70>n<EFBFBD>ch update dovoleno",-A
+"Kl-B<><42> '%-.64s' v tabulce '%-.64s' neexistuje",-A "Kl-B<><42> '%-.64s' v tabulce '%-.64s' neexistuje",-A
+"Nemohu otev-B<><42>t tabulku",-A "Nemohu otev-B<><42>t tabulku",-A
+"Handler tabulky nepodporuje check/repair", "Handler tabulky nepodporuje check/repair",
"You are not allowed to execute this command in a transaction", "Proveden-B<> tohoto p<><70>kazu nen<65> v transakci dovoleno",-A
"Got error %d during COMMIT", "Chyba %d p-B<>i COMMIT",-A
"Got error %d during ROLLBACK", "Chyba %d p-B<>i ROLLBACK",-A
"Got error %d during FLUSH_LOGS", "Chyba %d p-B<>i FLUSH_LOGS",-A
"Got error %d during CHECKPOINT", "Chyba %d p-B<>i CHECKPOINT",-A
"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)", "Spojen-B<> %ld do datab<EFBFBD>ze: '%-.64s' u<EFBFBD>ivatel: '%-.32s' stroj: `%-.64s' (%-.64s) bylo p<>eru<72>eno",-A
"The handler for the table does not support binary table dump", "Handler tabulky nepodporuje bin-B<>rn<72> dump",-A
"Binlog closed while trying to FLUSH MASTER", "Binlog uzav-B<>en p<>i pokusu o FLUSH MASTER",-A
"Failed rebuilding the index of dumped table '%-.64s'", "P-B<>ebudov<6F>n<EFBFBD> indexu dumpnut<EFBFBD> tabulky '%-.64s' nebylo <20>sp<73><70>n<EFBFBD>",-A
"Error from master: '%-.64s'", "Chyba masteru: '%-.64s'",
"Net error reading from master", "S-B<><42>ov<6F> chyba p<>i <20>ten<65> z masteru",-A
"Net error writing to master", "S-B<><42>ov<6F> chyba p<>i z<>pisu na master",-A
"Can't find FULLTEXT index matching the column list", "-B<><42>dn<64> sloupec nem<65> vytvo<76>en fulltextov<6F> index",-A
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -196,3 +196,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -197,3 +197,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -196,3 +196,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -195,3 +195,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Errore di rete ricevendo dal master", "Errore di rete ricevendo dal master",
"Errore di rete inviando al master", "Errore di rete inviando al master",
"Impossibile trovare un indice FULLTEXT che corrisponda all'elenco delle colonne", "Impossibile trovare un indice FULLTEXT che corrisponda all'elenco delle colonne",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -195,3 +195,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

View File

@ -195,3 +195,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

View File

@ -195,3 +195,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -197,3 +197,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -197,3 +197,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -196,3 +196,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"FULLTEXT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "FULLTEXT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -201,3 +201,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -194,3 +194,4 @@
"Net error reading from master", "Net error reading from master",
"Net error writing to master", "Net error writing to master",
"Can't find FULLTEXT index matching the column list", "Can't find FULLTEXT index matching the column list",
"Can't execute the given command because you have active locked tables or an active transaction",

View File

@ -193,3 +193,5 @@
"Fick n<>tverksfel vid l<>sning fr<66>n master", "Fick n<>tverksfel vid l<>sning fr<66>n master",
"Fick n<>tverksfel vid skrivning till master", "Fick n<>tverksfel vid skrivning till master",
"Hittar inte ett FULLTEXT index i kolumnlist", "Hittar inte ett FULLTEXT index i kolumnlist",
#ER_LOCK_OR_ACTIVE_TRANSACTION
"Can't execute the given command because you have active locked tables or an active transaction",

Binary file not shown.

View File

@ -193,3 +193,4 @@
"Fick n<>tverksfel vid l<>sning fr<66>n master", "Fick n<>tverksfel vid l<>sning fr<66>n master",
"Fick n<>tverksfel vid skrivning till master", "Fick n<>tverksfel vid skrivning till master",
"Hittar inte ett FULLTEXT index i kolumnlist", "Hittar inte ett FULLTEXT index i kolumnlist",
"Can't execute the given command because you have active locked tables or an active transaction",

View File

@ -406,7 +406,7 @@ static int init_slave_thread(THD* thd)
if (init_thr_lock() || if (init_thr_lock() ||
my_pthread_setspecific_ptr(THR_THD, thd) || my_pthread_setspecific_ptr(THR_THD, thd) ||
my_pthread_setspecific_ptr(THR_MALLOC, &thd->alloc) || my_pthread_setspecific_ptr(THR_MALLOC, &thd->mem_root) ||
my_pthread_setspecific_ptr(THR_NET, &thd->net)) my_pthread_setspecific_ptr(THR_NET, &thd->net))
{ {
close_connection(&thd->net,ER_OUT_OF_RESOURCES); // is this needed? close_connection(&thd->net,ER_OUT_OF_RESOURCES); // is this needed?
@ -422,7 +422,7 @@ static int init_slave_thread(THD* thd)
VOID(pthread_sigmask(SIG_UNBLOCK,&set,&thd->block_signals)); VOID(pthread_sigmask(SIG_UNBLOCK,&set,&thd->block_signals));
#endif #endif
thd->alloc.free=thd->alloc.used=0; thd->mem_root.free=thd->mem_root.used=0; // Probably not needed
if (thd->max_join_size == (ulong) ~0L) if (thd->max_join_size == (ulong) ~0L)
thd->options |= OPTION_BIG_SELECTS; thd->options |= OPTION_BIG_SELECTS;
@ -557,7 +557,7 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
{ {
Query_log_event* qev = (Query_log_event*)ev; Query_log_event* qev = (Query_log_event*)ev;
int q_len = qev->q_len; int q_len = qev->q_len;
init_sql_alloc(&thd->alloc, 8192); init_sql_alloc(&thd->mem_root, 8192);
thd->db = (char*)qev->db; thd->db = (char*)qev->db;
if(db_ok(thd->db, replicate_do_db, replicate_ignore_db)) if(db_ok(thd->db, replicate_do_db, replicate_ignore_db))
{ {
@ -602,7 +602,7 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
thd->db = 0;// prevent db from being freed thd->db = 0;// prevent db from being freed
thd->query = 0; // just to be sure thd->query = 0; // just to be sure
close_thread_tables(thd); close_thread_tables(thd);
free_root(&thd->alloc); free_root(&thd->mem_root);
if (thd->query_error) if (thd->query_error)
{ {
sql_print_error("Slave: error running query '%s' ", sql_print_error("Slave: error running query '%s' ",
@ -626,7 +626,7 @@ static int exec_event(THD* thd, NET* net, MASTER_INFO* mi, int event_len)
case LOAD_EVENT: case LOAD_EVENT:
{ {
Load_log_event* lev = (Load_log_event*)ev; Load_log_event* lev = (Load_log_event*)ev;
init_sql_alloc(&thd->alloc, 8192); init_sql_alloc(&thd->mem_root, 8192);
thd->db = (char*)lev->db; thd->db = (char*)lev->db;
thd->query = 0; thd->query = 0;
thd->query_error = 0; thd->query_error = 0;

View File

@ -29,8 +29,6 @@
#include <io.h> #include <io.h>
#endif #endif
#define MAX_DBKEY_LENGTH (FN_LEN*2+2)
static int key_cache_used=0; static int key_cache_used=0;
TABLE *unused_tables; /* Used by mysql_test */ TABLE *unused_tables; /* Used by mysql_test */
HASH open_cache; /* Used by mysql_test */ HASH open_cache; /* Used by mysql_test */
@ -120,7 +118,7 @@ static byte *cache_key(const byte *record,uint *length,
void table_cache_init(void) void table_cache_init(void)
{ {
VOID(hash_init(&open_cache,table_cache_size,0,0,cache_key, VOID(hash_init(&open_cache,table_cache_size+16,0,0,cache_key,
(void (*)(void*)) free_cache_entry,0)); (void (*)(void*)) free_cache_entry,0));
mysql_rm_tmp_tables(); mysql_rm_tmp_tables();
} }
@ -1234,7 +1232,7 @@ void close_old_data_files(THD *thd, TABLE *table, bool abort_locks)
if the table is closed if the table is closed
*/ */
static bool table_is_used(TABLE *table) bool table_is_used(TABLE *table)
{ {
do do
{ {
@ -2171,4 +2169,3 @@ int setup_ftfuncs(THD *thd,TABLE_LIST *tables, List<Item_func_match> &ftfuncs)
return 0; return 0;
} }

View File

@ -109,7 +109,7 @@ THD::THD()
net.vio=0; net.vio=0;
ull=0; ull=0;
system_thread=0; system_thread=0;
bzero((char*) &alloc,sizeof(alloc)); bzero((char*) &mem_root,sizeof(mem_root));
#ifdef __WIN__ #ifdef __WIN__
real_id = 0 ; real_id = 0 ;
#endif #endif
@ -154,7 +154,7 @@ THD::~THD()
safeFree(user); safeFree(user);
safeFree(db); safeFree(db);
safeFree(ip); safeFree(ip);
free_root(&alloc); free_root(&mem_root);
mysys_var=0; // Safety (shouldn't be needed) mysys_var=0; // Safety (shouldn't be needed)
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
@ -165,11 +165,10 @@ THD::~THD()
bool THD::store_globals() bool THD::store_globals()
{ {
return (my_pthread_setspecific_ptr(THR_THD, this) || return (my_pthread_setspecific_ptr(THR_THD, this) ||
my_pthread_setspecific_ptr(THR_MALLOC, &alloc) || my_pthread_setspecific_ptr(THR_MALLOC, &mem_root) ||
my_pthread_setspecific_ptr(THR_NET, &net)); my_pthread_setspecific_ptr(THR_NET, &net));
} }
/***************************************************************************** /*****************************************************************************
** Functions to provide a interface to select results ** Functions to provide a interface to select results
*****************************************************************************/ *****************************************************************************/

View File

@ -223,7 +223,7 @@ class THD :public ilink {
public: public:
NET net; NET net;
LEX lex; LEX lex;
MEM_ROOT alloc; MEM_ROOT mem_root;
HASH user_vars; HASH user_vars;
String packet; /* Room for 1 row */ String packet; /* Room for 1 row */
struct sockaddr_in remote; struct sockaddr_in remote;
@ -287,6 +287,19 @@ public:
} }
return last_insert_id; return last_insert_id;
} }
inline bool active_transaction() { return transaction.bdb_tid != 0; }
inline gptr alloc(unsigned int size) { return alloc_root(&mem_root,size); }
inline gptr calloc(unsigned int size)
{
gptr ptr;
if ((ptr=alloc_root(&mem_root,size)))
bzero((char*) ptr,size);
return ptr;
}
inline char *strdup(const char *str)
{ return strdup_root(&mem_root,str); }
inline char *memdup(const char *str, unsigned int size)
{ return memdup_root(&mem_root,str,size); }
}; };

View File

@ -1215,14 +1215,19 @@ void select_insert::send_error(uint errcode,const char *err)
::send_error(&thd->net,errcode,err); ::send_error(&thd->net,errcode,err);
table->file->extra(HA_EXTRA_NO_CACHE); table->file->extra(HA_EXTRA_NO_CACHE);
table->file->activate_all_index(thd); table->file->activate_all_index(thd);
ha_rollback(thd);
} }
bool select_insert::send_eof() bool select_insert::send_eof()
{ {
int error; int error,error2;
if ((error=table->file->extra(HA_EXTRA_NO_CACHE)) || if (!(error=table->file->extra(HA_EXTRA_NO_CACHE)))
(error=table->file->activate_all_index(thd))) error=table->file->activate_all_index(thd);
if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
error=error2;
if (error)
{ {
table->file->print_error(error,MYF(0)); table->file->print_error(error,MYF(0));
::send_error(&thd->net); ::send_error(&thd->net);

View File

@ -46,7 +46,8 @@ enum enum_sql_command {
SQLCOM_FLUSH, SQLCOM_KILL, SQLCOM_SHOW_GRANTS, SQLCOM_ANALYZE, SQLCOM_FLUSH, SQLCOM_KILL, SQLCOM_SHOW_GRANTS, SQLCOM_ANALYZE,
SQLCOM_ROLLBACK, SQLCOM_COMMIT, SQLCOM_SLAVE_START, SQLCOM_SLAVE_STOP, SQLCOM_ROLLBACK, SQLCOM_COMMIT, SQLCOM_SLAVE_START, SQLCOM_SLAVE_STOP,
SQLCOM_BEGIN, SQLCOM_LOAD_MASTER_TABLE, SQLCOM_SHOW_CREATE, SQLCOM_BEGIN, SQLCOM_LOAD_MASTER_TABLE, SQLCOM_SHOW_CREATE,
SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT, SQLCOM_CHANGE_MASTER SQLCOM_SHOW_MASTER_STAT, SQLCOM_SHOW_SLAVE_STAT, SQLCOM_CHANGE_MASTER,
SQLCOM_RENAME_TABLE
}; };
enum lex_states { STATE_START, STATE_CHAR, STATE_IDENT, enum lex_states { STATE_START, STATE_CHAR, STATE_IDENT,

View File

@ -773,9 +773,9 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds,
DBUG_ENTER("make_join_statistics"); DBUG_ENTER("make_join_statistics");
table_count=join->tables; table_count=join->tables;
stat=(JOIN_TAB*) sql_calloc(sizeof(JOIN_TAB)*table_count); stat=(JOIN_TAB*) join->thd->calloc(sizeof(JOIN_TAB)*table_count);
stat_ref=(JOIN_TAB**) sql_alloc(sizeof(JOIN_TAB*)*MAX_TABLES); stat_ref=(JOIN_TAB**) join->thd->alloc(sizeof(JOIN_TAB*)*MAX_TABLES);
table_vector=(TABLE**) sql_alloc(sizeof(TABLE**)*(table_count*2)); table_vector=(TABLE**) join->thd->alloc(sizeof(TABLE**)*(table_count*2));
if (!stat || !stat_ref || !table_vector) if (!stat || !stat_ref || !table_vector)
DBUG_RETURN(1); // Eom /* purecov: inspected */ DBUG_RETURN(1); // Eom /* purecov: inspected */
select=0; select=0;
@ -1832,7 +1832,7 @@ get_best_combination(JOIN *join)
table_count=join->tables; table_count=join->tables;
if (!(join->join_tab=join_tab= if (!(join->join_tab=join_tab=
(JOIN_TAB*) sql_alloc(sizeof(JOIN_TAB)*table_count))) (JOIN_TAB*) join->thd->alloc(sizeof(JOIN_TAB)*table_count)))
return TRUE; return TRUE;
join->const_tables=0; /* for checking */ join->const_tables=0; /* for checking */
@ -2056,8 +2056,8 @@ make_simple_join(JOIN *join,TABLE *tmp_table)
TABLE **tableptr; TABLE **tableptr;
JOIN_TAB *join_tab; JOIN_TAB *join_tab;
if (!(tableptr=(TABLE**) sql_alloc(sizeof(TABLE*))) || if (!(tableptr=(TABLE**) join->thd->alloc(sizeof(TABLE*))) ||
!(join_tab=(JOIN_TAB*) sql_alloc(sizeof(JOIN_TAB)))) !(join_tab=(JOIN_TAB*) join->thd->alloc(sizeof(JOIN_TAB))))
return TRUE; return TRUE;
join->join_tab=join_tab; join->join_tab=join_tab;
join->table=tableptr; tableptr[0]=tmp_table; join->table=tableptr; tableptr[0]=tmp_table;

View File

@ -55,7 +55,7 @@ mysqld_show_dbs(THD *thd,const char *wild)
char *file_name; char *file_name;
DBUG_ENTER("mysqld_show_dbs"); DBUG_ENTER("mysqld_show_dbs");
field->name=(char*) sql_alloc(20+ (wild ? strlen(wild)+4: 0)); field->name=(char*) thd->alloc(20+ (wild ? strlen(wild)+4: 0));
field->max_length=NAME_LEN; field->max_length=NAME_LEN;
end=strmov(field->name,"Database"); end=strmov(field->name,"Database");
if (wild && wild[0]) if (wild && wild[0])
@ -92,7 +92,7 @@ int mysqld_show_tables(THD *thd,const char *db,const char *wild)
char *file_name; char *file_name;
DBUG_ENTER("mysqld_show_tables"); DBUG_ENTER("mysqld_show_tables");
field->name=(char*) sql_alloc(20+strlen(db)+(wild ? strlen(wild)+4:0)); field->name=(char*) thd->alloc(20+strlen(db)+(wild ? strlen(wild)+4:0));
end=strxmov(field->name,"Tables_in_",db,NullS); end=strxmov(field->name,"Tables_in_",db,NullS);
if (wild && wild[0]) if (wild && wild[0])
strxmov(end," (",wild,")",NullS); strxmov(end," (",wild,")",NullS);
@ -170,7 +170,7 @@ mysql_find_files(THD *thd,List<char> *files, const char *db,const char *path,
if (check_grant(thd,TABLE_ACLS,&table_list,1)) if (check_grant(thd,TABLE_ACLS,&table_list,1))
continue; continue;
} }
if (files->push_back(sql_strdup(file->name))) if (files->push_back(thd->strdup(file->name)))
{ {
my_dirend(dirp); my_dirend(dirp);
DBUG_RETURN(-1); DBUG_RETURN(-1);
@ -868,12 +868,12 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
thread_info *thd_info=new thread_info; thread_info *thd_info=new thread_info;
thd_info->thread_id=tmp->thread_id; thd_info->thread_id=tmp->thread_id;
thd_info->user=sql_strdup(tmp->user ? tmp->user : (tmp->system_thread ? thd_info->user=thd->strdup(tmp->user ? tmp->user : (tmp->system_thread ?
"system user" : "unauthenticated user")); "system user" : "unauthenticated user"));
thd_info->host=sql_strdup(tmp->host ? tmp->host : (tmp->ip ? tmp->ip : thd_info->host=thd->strdup(tmp->host ? tmp->host : (tmp->ip ? tmp->ip :
(tmp->system_thread ? "none" : "connecting host"))); (tmp->system_thread ? "none" : "connecting host")));
if ((thd_info->db=tmp->db)) // Safe test if ((thd_info->db=tmp->db)) // Safe test
thd_info->db=sql_strdup(thd_info->db); thd_info->db=thd->strdup(thd_info->db);
thd_info->command=(int) tmp->command; thd_info->command=(int) tmp->command;
if (tmp->mysys_var) if (tmp->mysys_var)
pthread_mutex_lock(&tmp->mysys_var->mutex); pthread_mutex_lock(&tmp->mysys_var->mutex);
@ -902,7 +902,7 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose)
uint length=strlen(tmp->query); uint length=strlen(tmp->query);
if (length > max_query_length) if (length > max_query_length)
length=max_query_length; length=max_query_length;
thd_info->query=(char*) sql_memdup(tmp->query,length+1); thd_info->query=(char*) thd->memdup(tmp->query,length+1);
thd_info->query[length]=0; thd_info->query[length]=0;
} }
thread_infos.append(thd_info); thread_infos.append(thd_info);

View File

@ -644,7 +644,7 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
** Alter a table definition ** Alter a table definition
****************************************************************************/ ****************************************************************************/
static bool bool
mysql_rename_table(enum db_type base, mysql_rename_table(enum db_type base,
const char *old_db, const char *old_db,
const char * old_name, const char * old_name,
@ -659,9 +659,17 @@ mysql_rename_table(enum db_type base,
(void) sprintf(to,"%s/%s/%s",mysql_data_home,new_db,new_name); (void) sprintf(to,"%s/%s/%s",mysql_data_home,new_db,new_name);
fn_format(from,from,"","",4); fn_format(from,from,"","",4);
fn_format(to,to, "","",4); fn_format(to,to, "","",4);
if (file->rename_table((const char*) from,(const char *) to) || if (file->rename_table((const char*) from,(const char *) to))
rename_file_ext(from,to,reg_ext))
error=1; error=1;
else
{
if (rename_file_ext(from,to,reg_ext))
{
error=1;
/* Restore old file name */
file->rename_table((const char*) to,(const char *) from);
}
}
delete file; delete file;
DBUG_RETURN(error); DBUG_RETURN(error);
} }
@ -1412,7 +1420,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
#ifdef __WIN__ #ifdef __WIN__
// Win32 can't rename an open table, so we must close the org table! // Win32 can't rename an open table, so we must close the org table!
table_name=sql_strdup(table_name); // must be saved table_name=thd->strdup(table_name); // must be saved
if (close_cached_table(thd,table)) if (close_cached_table(thd,table))
{ // Aborted { // Aborted
VOID(quick_rm_table(new_db_type,new_db,tmp_name)); VOID(quick_rm_table(new_db_type,new_db,tmp_name));

View File

@ -488,7 +488,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
query verb_clause create change select drop insert replace insert2 query verb_clause create change select drop insert replace insert2
insert_values update delete show describe load alter optimize flush insert_values update delete show describe load alter optimize flush
begin commit rollback slave master_def master_defs begin commit rollback slave master_def master_defs
repair analyze check field_list field_list_item field_spec kill repair analyze check rename
field_list field_list_item field_spec kill
select_item_list select_item values_list no_braces select_item_list select_item values_list no_braces
limit_clause delete_limit_clause fields opt_values values limit_clause delete_limit_clause fields opt_values values
procedure_list procedure_list2 procedure_item procedure_list procedure_list2 procedure_item
@ -504,6 +505,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize);
flush_options flush_option insert_lock_option replace_lock_option flush_options flush_option insert_lock_option replace_lock_option
equal optional_braces opt_key_definition key_usage_list2 equal optional_braces opt_key_definition key_usage_list2
opt_mi_check_type opt_to mi_check_types normal_join opt_mi_check_type opt_to mi_check_types normal_join
table_to_table_list table_to_table
END_OF_INPUT END_OF_INPUT
%type <NONE> %type <NONE>
@ -539,6 +541,7 @@ verb_clause:
| lock | lock
| kill | kill
| optimize | optimize
| rename
| repair | repair
| replace | replace
| revoke | revoke
@ -1078,6 +1081,7 @@ opt_place:
opt_to: opt_to:
/* empty */ {} /* empty */ {}
| TO_SYM {} | TO_SYM {}
| AS {}
slave: slave:
SLAVE START_SYM SLAVE START_SYM
@ -1134,6 +1138,24 @@ optimize:
YYABORT; YYABORT;
} }
rename:
RENAME table_or_tables
{
Lex->sql_command=SQLCOM_RENAME_TABLE;
}
table_to_table_list
table_to_table_list:
table_to_table
| table_to_table_list ',' table_to_table
table_to_table:
table_ident TO_SYM table_ident
{ if (add_table_to_list($1,NULL,TL_IGNORE) ||
add_table_to_list($3,NULL,TL_IGNORE))
YYABORT;
}
/* /*
** Select : retrieve data from table ** Select : retrieve data from table
*/ */

View File

@ -23,6 +23,7 @@ extern "C" {
void sql_alloc_error_handler(void) void sql_alloc_error_handler(void)
{ {
current_thd->fatal_error=1; /* purecov: inspected */ current_thd->fatal_error=1; /* purecov: inspected */
sql_print_error(ER(ER_OUT_OF_RESOURCES));
} }
} }
@ -37,10 +38,6 @@ gptr sql_alloc(uint Size)
{ {
MEM_ROOT *root=my_pthread_getspecific_ptr(MEM_ROOT*,THR_MALLOC); MEM_ROOT *root=my_pthread_getspecific_ptr(MEM_ROOT*,THR_MALLOC);
char *ptr= (char*) alloc_root(root,Size); char *ptr= (char*) alloc_root(root,Size);
if (!ptr)
{
sql_print_error(ER(ER_OUT_OF_RESOURCES));
}
return ptr; return ptr;
} }

View File

@ -40,6 +40,7 @@
#define ERRMAPP 1 /* Errormap f|r my_error */ #define ERRMAPP 1 /* Errormap f|r my_error */
#define LIBLEN FN_REFLEN-FN_LEN /* Max l{ngd p} dev */ #define LIBLEN FN_REFLEN-FN_LEN /* Max l{ngd p} dev */
#define MAX_DBKEY_LENGTH (FN_LEN*2+2)
#define MAX_FIELD_NAME 34 /* Max colum name length +2 */ #define MAX_FIELD_NAME 34 /* Max colum name length +2 */
#define MAX_KEY 32 /* Max used keys */ #define MAX_KEY 32 /* Max used keys */
#define MAX_REF_PARTS 16 /* Max parts used as ref */ #define MAX_REF_PARTS 16 /* Max parts used as ref */

View File

@ -224,7 +224,8 @@ int my_strnncoll_sjis(const uchar *s1, int len1, const uchar *s2, int len2)
int my_strcoll_sjis(const uchar *s1, const uchar *s2) int my_strcoll_sjis(const uchar *s1, const uchar *s2)
{ {
return (uint) my_strnncoll_sjis(s1,(uint) strlen(s1), s2,(uint) strlen(s2)); return (uint) my_strnncoll_sjis(s1,(uint) strlen((char*) s1),
s2,(uint) strlen((char*) s2));
} }
int my_strnxfrm_sjis(uchar *dest, uchar *src, int len, int srclen) int my_strnxfrm_sjis(uchar *dest, uchar *src, int len, int srclen)
@ -245,7 +246,7 @@ int my_strnxfrm_sjis(uchar *dest, uchar *src, int len, int srclen)
int my_strxfrm_sjis(uchar *dest, uchar *src, int len) int my_strxfrm_sjis(uchar *dest, uchar *src, int len)
{ {
return my_strnxfrm_sjis(dest, src, len, (uint) strlen(src)); return my_strnxfrm_sjis(dest, src, len, (uint) strlen((char*) src));
} }