mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Increased max possible max_allowed_packet to 1G
Small optimization to not do external locking of temporary MyISAM tables.
This commit is contained in:
@ -31258,8 +31258,8 @@ stored into a temporary table) is calculated in MySQL Version
|
||||
@item expr2 or expr3 returns an integer @tab integer
|
||||
@end multitable
|
||||
|
||||
If expr2 and expr3 are strings, then the result is case-sensitive if
|
||||
both strings are case-sensitive. (Starting from 3.23.51)
|
||||
If expr2 and expr3 are strings, then the result is case-insensitive if
|
||||
both strings are case-insensitive. (Starting from 3.23.51)
|
||||
|
||||
@findex CASE
|
||||
@item CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
|
||||
@ -33246,9 +33246,15 @@ anything; just use the string value as it would be a number:
|
||||
|
||||
@example
|
||||
mysql> SELECT 1+'1';
|
||||
-> 2
|
||||
-> 2
|
||||
@end example
|
||||
|
||||
If you use a number in string context the number will automaticly be
|
||||
converted to a @code{BINARY} string.
|
||||
|
||||
mysql> SELECT concat("hello you ",2);
|
||||
-> "hello you 2"
|
||||
|
||||
MySQL supports arithmetic with both signed and unsigned 64-bit values.
|
||||
If you are using an numerical operations (like @code{+}) and one of the
|
||||
operands are @code{unsigned integer}, then the result will be unsigned.
|
||||
@ -50442,13 +50448,15 @@ each individual 4.0.x release.
|
||||
|
||||
@itemize @bullet
|
||||
@item
|
||||
Fixed bug when doing a multi-line insert on a table with an
|
||||
Increased max possible @code{max_allowed_packet} in @code{mysqld} to 1G.
|
||||
@item
|
||||
Fixed bug when doing a multi-line @code{INSERT} on a table with an
|
||||
auto_increment key which was not in the first part of the key.
|
||||
@item
|
||||
Changed @code{LOAD DATA INFILE} to not recreate index if the table had
|
||||
rows from before.
|
||||
@item
|
||||
Fixed overrun bug when calling @code{AES_DECRYPT()} with wrong arguments
|
||||
Fixed overrun bug when calling @code{AES_DECRYPT()} with wrong arguments.
|
||||
@item
|
||||
@code{--skip-ssl} can now be used to disable SSL in the MySQL clients,
|
||||
even if one is using other ssl options in a options file or previously
|
||||
@ -50508,8 +50516,9 @@ Fixed a bug in my_getopt; --set-variable syntax didn't work for
|
||||
those options that didn't have a valid variable in my_option struct.
|
||||
This affected at least @code{default-table-type} option.
|
||||
@item
|
||||
Fixed a bug that caused @code{REPAIR TABLE} to fail on tables
|
||||
with duplicates in a unique key.
|
||||
Fixed a bug from 4.0.2 that caused @code{REPAIR TABLE} and
|
||||
@code{myisamchk --repair} to fail on tables with duplicates in a unique
|
||||
key.
|
||||
@item
|
||||
Fixed a bug from 4.0.3 in calculating the default field type for some
|
||||
functions. This affected queries of type @code{CREATE TABLE table_name
|
||||
|
@ -407,7 +407,8 @@ static void dump_local_log_entries(const char* logname)
|
||||
File fd = -1;
|
||||
IO_CACHE cache,*file= &cache;
|
||||
ulonglong rec_count = 0;
|
||||
char last_db[FN_REFLEN+1], tmp_buff[BIN_LOG_HEADER_SIZE];
|
||||
char last_db[FN_REFLEN+1];
|
||||
byte tmp_buff[BIN_LOG_HEADER_SIZE];
|
||||
bool old_format = 0;
|
||||
|
||||
last_db[0]=0;
|
||||
|
@ -232,7 +232,7 @@ static struct my_option my_long_options[] =
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET, "",
|
||||
(gptr*) &max_allowed_packet, (gptr*) &max_allowed_packet, 0,
|
||||
GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096, 512*1024L*1024L,
|
||||
GET_ULONG, REQUIRED_ARG, 24*1024*1024, 4096, 1024*1024L*1024L,
|
||||
MALLOC_OVERHEAD, 1024, 0},
|
||||
{"net_buffer_length", OPT_NET_BUFFER_LENGTH, "",
|
||||
(gptr*) &net_buffer_length, (gptr*) &net_buffer_length, 0,
|
||||
|
@ -20,8 +20,8 @@ pkginclude_HEADERS = dbug.h m_string.h my_sys.h my_list.h \
|
||||
mysql.h mysql_com.h mysqld_error.h mysql_embed.h \
|
||||
my_semaphore.h my_pthread.h my_no_pthread.h raid.h \
|
||||
errmsg.h my_global.h my_net.h my_alloc.h \
|
||||
my_getopt.h sslopt-longopts.h sslopt-usage.h \
|
||||
sslopt-vars.h $(BUILT_SOURCES)
|
||||
my_getopt.h sslopt-longopts.h \
|
||||
sslopt-vars.h sslopt-case.h $(BUILT_SOURCES)
|
||||
noinst_HEADERS = config-win.h config-os2.h \
|
||||
nisam.h heap.h merge.h my_bitmap.h\
|
||||
myisam.h myisampack.h myisammrg.h ft_global.h\
|
||||
|
@ -553,9 +553,9 @@ extern gptr _my_memdup(const byte *from,uint length,
|
||||
const char *sFile, uint uLine,myf MyFlag);
|
||||
extern my_string _my_strdup(const char *from, const char *sFile, uint uLine,
|
||||
myf MyFlag);
|
||||
extern my_string _my_strdup_with_length(const char *from, uint length,
|
||||
const char *sFile, uint uLine,
|
||||
myf MyFlag);
|
||||
extern char *_my_strdup_with_length(const byte *from, uint length,
|
||||
const char *sFile, uint uLine,
|
||||
myf MyFlag);
|
||||
|
||||
#ifndef TERMINATE
|
||||
extern void TERMINATE(FILE *file);
|
||||
|
@ -1,25 +0,0 @@
|
||||
/* Copyright (C) 2000 MySQL AB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#ifdef HAVE_OPENSSL
|
||||
puts("\
|
||||
--ssl Use SSL for connection (automatically set with other flags\n\
|
||||
--ssl-key X509 key in PEM format (implies --ssl)\n\
|
||||
--ssl-cert X509 cert in PEM format (implies --ssl)\n\
|
||||
--ssl-ca CA file in PEM format (check OpenSSL docs, implies --ssl)\n\
|
||||
--ssl-capath CA directory (check OpenSSL docs, implies --ssl)\n\
|
||||
--ssl-cipher SSL cipher to use (implies --ssl)");
|
||||
#endif
|
@ -529,20 +529,20 @@ gptr _my_memdup(const byte *from, uint length, const char *sFile, uint uLine,
|
||||
} /*_my_memdup */
|
||||
|
||||
|
||||
my_string _my_strdup(const char *from, const char *sFile, uint uLine,
|
||||
myf MyFlags)
|
||||
char *_my_strdup(const char *from, const char *sFile, uint uLine,
|
||||
myf MyFlags)
|
||||
{
|
||||
gptr ptr;
|
||||
uint length=(uint) strlen(from)+1;
|
||||
if ((ptr=_mymalloc(length,sFile,uLine,MyFlags)) != 0)
|
||||
memcpy((byte*) ptr, (byte*) from,(size_t) length);
|
||||
return((my_string) ptr);
|
||||
return((char*) ptr);
|
||||
} /* _my_strdup */
|
||||
|
||||
|
||||
my_string _my_strdup_with_length(const char *from, uint length,
|
||||
const char *sFile, uint uLine,
|
||||
myf MyFlags)
|
||||
char *_my_strdup_with_length(const byte *from, uint length,
|
||||
const char *sFile, uint uLine,
|
||||
myf MyFlags)
|
||||
{
|
||||
gptr ptr;
|
||||
if ((ptr=_mymalloc(length+1,sFile,uLine,MyFlags)) != 0)
|
||||
@ -550,5 +550,5 @@ my_string _my_strdup_with_length(const char *from, uint length,
|
||||
memcpy((byte*) ptr, (byte*) from,(size_t) length);
|
||||
ptr[length]=0;
|
||||
}
|
||||
return((my_string) ptr);
|
||||
return((char *) ptr);
|
||||
}
|
||||
|
@ -244,7 +244,9 @@ int ha_isam::reset(void)
|
||||
|
||||
int ha_isam::external_lock(THD *thd, int lock_type)
|
||||
{
|
||||
return nisam_lock_database(file,lock_type);
|
||||
if (!table->tmp_table)
|
||||
return nisam_lock_database(file,lock_type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -970,7 +970,9 @@ int ha_myisam::delete_table(const char *name)
|
||||
|
||||
int ha_myisam::external_lock(THD *thd, int lock_type)
|
||||
{
|
||||
return mi_lock_database(file,lock_type);
|
||||
if (!table->tmp_table)
|
||||
return mi_lock_database(file,lock_type);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
42
sql/lock.cc
42
sql/lock.cc
@ -21,6 +21,46 @@
|
||||
before getting internal locks. If we do it in the other order, the status
|
||||
information is not up to date when called from the lock handler.
|
||||
|
||||
GENERAL DESCRIPTION OF LOCKING
|
||||
|
||||
When not using LOCK TABLES:
|
||||
|
||||
- For each SQL statement mysql_lock_tables() is called for all involved
|
||||
tables.
|
||||
- mysql_lock_tables() will call
|
||||
table_handler->external_lock(thd,locktype) for each table.
|
||||
This is followed by a call to thr_multi_lock() for all tables.
|
||||
|
||||
- When statement is done, we call mysql_unlock_tables().
|
||||
This will call thr_multi_unlock() followed by
|
||||
table_handler->external_lock(thd, F_UNLCK) for each table.
|
||||
|
||||
- Note that mysql_unlock_tables() may be called several times as
|
||||
MySQL in some cases can free some tables earlier than others.
|
||||
|
||||
- The above is true both for normal and temporary tables.
|
||||
|
||||
- Temporary non transactional tables are never passed to thr_multi_lock()
|
||||
and we never call external_lock(thd, F_UNLOCK) on these.
|
||||
|
||||
When using LOCK TABLES:
|
||||
|
||||
- LOCK TABLE will call mysql_lock_tables() for all tables.
|
||||
mysql_lock_tables() will call
|
||||
table_handler->external_lock(thd,locktype) for each table.
|
||||
This is followed by a call to thr_multi_lock() for all tables.
|
||||
|
||||
- For each statement, we will call table_handler->start_stmt(THD)
|
||||
to inform the table handler that we are using the table.
|
||||
|
||||
The tables used can only be tables used in LOCK TABLES or a
|
||||
temporary table.
|
||||
|
||||
- When statement is done, we will call ha_commit_stmt(thd);
|
||||
|
||||
- When calling UNLOCK TABLES we call mysql_unlock_tables() for all
|
||||
tables used in LOCK TABLES
|
||||
|
||||
TODO:
|
||||
Change to use my_malloc() ONLY when using LOCK TABLES command or when
|
||||
we are forced to use mysql_lock_merge.
|
||||
@ -206,7 +246,7 @@ void mysql_unlock_read_tables(THD *thd, MYSQL_LOCK *sql_lock)
|
||||
sql_lock->lock_count= found;
|
||||
}
|
||||
|
||||
/* Then to the same for the external locks */
|
||||
/* Then do the same for the external locks */
|
||||
/* Move all write locked tables first */
|
||||
TABLE **table=sql_lock->table;
|
||||
for (i=found=0 ; i < sql_lock->table_count ; i++)
|
||||
|
@ -744,10 +744,10 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len,
|
||||
ident_offset = ROTATE_HEADER_LEN;
|
||||
}
|
||||
set_if_smaller(ident_len,FN_REFLEN-1);
|
||||
if (!(new_log_ident= (char*) my_strdup_with_length((byte*) buf +
|
||||
ident_offset,
|
||||
(uint) ident_len,
|
||||
MYF(MY_WME))))
|
||||
if (!(new_log_ident= my_strdup_with_length((byte*) buf +
|
||||
ident_offset,
|
||||
(uint) ident_len,
|
||||
MYF(MY_WME))))
|
||||
return;
|
||||
alloced = 1;
|
||||
}
|
||||
|
@ -3477,7 +3477,7 @@ struct my_option my_long_options[] =
|
||||
"Max packetlength to send/receive from to server.",
|
||||
(gptr*) &global_system_variables.max_allowed_packet,
|
||||
(gptr*) &max_system_variables.max_allowed_packet, 0, GET_ULONG,
|
||||
REQUIRED_ARG, 1024*1024L, 80, 64*1024*1024L, MALLOC_OVERHEAD, 1024, 0},
|
||||
REQUIRED_ARG, 1024*1024L, 80, 1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
|
||||
{"max_binlog_cache_size", OPT_MAX_BINLOG_CACHE_SIZE,
|
||||
"Can be used to restrict the total size used to cache a multi-transaction query.",
|
||||
(gptr*) &max_binlog_cache_size, (gptr*) &max_binlog_cache_size, 0,
|
||||
|
@ -18,10 +18,10 @@
|
||||
/* drop and alter of tables */
|
||||
|
||||
#include "mysql_priv.h"
|
||||
#include <hash.h>
|
||||
#ifdef HAVE_BERKELEY_DB
|
||||
#include <ha_berkeley.h>
|
||||
#include "ha_berkeley.h"
|
||||
#endif
|
||||
#include <hash.h>
|
||||
#include <myisam.h>
|
||||
#include <assert.h>
|
||||
|
||||
|
Reference in New Issue
Block a user