Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
d2b07732
Commit
d2b07732
authored
Sep 19, 2002
by
monty@mashka.mysql.fi
Browse files
Options
Browse Files
Download
Plain Diff
Merge work:/my/mysql-4.0 into mashka.mysql.fi:/home/my/mysql-4.0
parents
c44c70fc
ce4b584a
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
143 additions
and
61 deletions
+143
-61
Docs/manual.texi
Docs/manual.texi
+21
-6
client/mysqlbinlog.cc
client/mysqlbinlog.cc
+2
-1
client/mysqldump.c
client/mysqldump.c
+1
-1
include/Makefile.am
include/Makefile.am
+2
-2
include/my_base.h
include/my_base.h
+1
-0
include/my_sys.h
include/my_sys.h
+3
-3
include/sslopt-usage.h
include/sslopt-usage.h
+0
-25
myisam/mi_extra.c
myisam/mi_extra.c
+11
-1
mysql-test/r/insert.result
mysql-test/r/insert.result
+8
-0
mysql-test/t/insert.test
mysql-test/t/insert.test
+9
-0
mysys/safemalloc.c
mysys/safemalloc.c
+7
-7
sql/ha_isam.cc
sql/ha_isam.cc
+3
-1
sql/ha_myisam.cc
sql/ha_myisam.cc
+21
-3
sql/lock.cc
sql/lock.cc
+41
-1
sql/log_event.cc
sql/log_event.cc
+4
-4
sql/mysqld.cc
sql/mysqld.cc
+1
-1
sql/sql_insert.cc
sql/sql_insert.cc
+2
-0
sql/sql_load.cc
sql/sql_load.cc
+1
-2
sql/sql_table.cc
sql/sql_table.cc
+2
-2
sql/table.h
sql/table.h
+1
-1
vio/viosslfactories.c
vio/viosslfactories.c
+2
-0
No files found.
Docs/manual.texi
View file @
d2b07732
...
@@ -31258,8 +31258,8 @@ stored into a temporary table) is calculated in MySQL Version
...
@@ -31258,8 +31258,8 @@ stored into a temporary table) is calculated in MySQL Version
@item expr2 or expr3 returns an integer @tab integer
@item expr2 or expr3 returns an integer @tab integer
@end multitable
@end multitable
If expr2 and expr3 are strings, then the result is case-sensitive if
If expr2 and expr3 are strings, then the result is case-
in
sensitive if
both strings are case-sensitive. (Starting from 3.23.51)
both strings are case-
in
sensitive. (Starting from 3.23.51)
@findex CASE
@findex CASE
@item CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
@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:
...
@@ -33246,9 +33246,15 @@ anything; just use the string value as it would be a number:
@example
@example
mysql> SELECT 1+'1';
mysql> SELECT 1+'1';
-> 2
-> 2
@end example
@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.
MySQL supports arithmetic with both signed and unsigned 64-bit values.
If you are using an numerical operations (like @code{+}) and one of the
If you are using an numerical operations (like @code{+}) and one of the
operands are @code{unsigned integer}, then the result will be unsigned.
operands are @code{unsigned integer}, then the result will be unsigned.
...
@@ -50442,7 +50448,15 @@ each individual 4.0.x release.
...
@@ -50442,7 +50448,15 @@ each individual 4.0.x release.
@itemize @bullet
@itemize @bullet
@item
@item
Fixed overrun bug when calling @code{AES_DECRYPT()} with wrong arguments
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.
@item
@item
@code{--skip-ssl} can now be used to disable SSL in the MySQL clients,
@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
even if one is using other ssl options in a options file or previously
...
@@ -50502,8 +50516,9 @@ Fixed a bug in my_getopt; --set-variable syntax didn't work for
...
@@ -50502,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.
those options that didn't have a valid variable in my_option struct.
This affected at least @code{default-table-type} option.
This affected at least @code{default-table-type} option.
@item
@item
Fixed a bug that caused @code{REPAIR TABLE} to fail on tables
Fixed a bug from 4.0.2 that caused @code{REPAIR TABLE} and
with duplicates in a unique key.
@code{myisamchk --repair} to fail on tables with duplicates in a unique
key.
@item
@item
Fixed a bug from 4.0.3 in calculating the default field type for some
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
functions. This affected queries of type @code{CREATE TABLE table_name
client/mysqlbinlog.cc
View file @
d2b07732
...
@@ -407,7 +407,8 @@ static void dump_local_log_entries(const char* logname)
...
@@ -407,7 +407,8 @@ static void dump_local_log_entries(const char* logname)
File
fd
=
-
1
;
File
fd
=
-
1
;
IO_CACHE
cache
,
*
file
=
&
cache
;
IO_CACHE
cache
,
*
file
=
&
cache
;
ulonglong
rec_count
=
0
;
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
;
bool
old_format
=
0
;
last_db
[
0
]
=
0
;
last_db
[
0
]
=
0
;
...
...
client/mysqldump.c
View file @
d2b07732
...
@@ -232,7 +232,7 @@ static struct my_option my_long_options[] =
...
@@ -232,7 +232,7 @@ static struct my_option my_long_options[] =
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
NO_ARG
,
0
,
0
,
0
,
0
,
0
,
0
},
{
"max_allowed_packet"
,
OPT_MAX_ALLOWED_PACKET
,
""
,
{
"max_allowed_packet"
,
OPT_MAX_ALLOWED_PACKET
,
""
,
(
gptr
*
)
&
max_allowed_packet
,
(
gptr
*
)
&
max_allowed_packet
,
0
,
(
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
},
MALLOC_OVERHEAD
,
1024
,
0
},
{
"net_buffer_length"
,
OPT_NET_BUFFER_LENGTH
,
""
,
{
"net_buffer_length"
,
OPT_NET_BUFFER_LENGTH
,
""
,
(
gptr
*
)
&
net_buffer_length
,
(
gptr
*
)
&
net_buffer_length
,
0
,
(
gptr
*
)
&
net_buffer_length
,
(
gptr
*
)
&
net_buffer_length
,
0
,
...
...
include/Makefile.am
View file @
d2b07732
...
@@ -20,8 +20,8 @@ pkginclude_HEADERS = dbug.h m_string.h my_sys.h my_list.h \
...
@@ -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
\
mysql.h mysql_com.h mysqld_error.h mysql_embed.h
\
my_semaphore.h my_pthread.h my_no_pthread.h raid.h
\
my_semaphore.h my_pthread.h my_no_pthread.h raid.h
\
errmsg.h my_global.h my_net.h my_alloc.h
\
errmsg.h my_global.h my_net.h my_alloc.h
\
my_getopt.h sslopt-longopts.h
sslopt-usage.h
\
my_getopt.h sslopt-longopts.h
\
sslopt-vars.h
$(BUILT_SOURCES)
sslopt-vars.h
sslopt-case.h
$(BUILT_SOURCES)
noinst_HEADERS
=
config-win.h config-os2.h
\
noinst_HEADERS
=
config-win.h config-os2.h
\
nisam.h heap.h merge.h my_bitmap.h
\
nisam.h heap.h merge.h my_bitmap.h
\
myisam.h myisampack.h myisammrg.h ft_global.h
\
myisam.h myisampack.h myisammrg.h ft_global.h
\
...
...
include/my_base.h
View file @
d2b07732
...
@@ -107,6 +107,7 @@ enum ha_extra_function {
...
@@ -107,6 +107,7 @@ enum ha_extra_function {
HA_EXTRA_NO_IGNORE_DUP_KEY
,
HA_EXTRA_NO_IGNORE_DUP_KEY
,
HA_EXTRA_DONT_USE_CURSOR_TO_UPDATE
,
/* Cursor will not be used for update */
HA_EXTRA_DONT_USE_CURSOR_TO_UPDATE
,
/* Cursor will not be used for update */
HA_EXTRA_BULK_INSERT_BEGIN
,
HA_EXTRA_BULK_INSERT_BEGIN
,
HA_EXTRA_BULK_INSERT_FLUSH
,
/* Flush one index */
HA_EXTRA_BULK_INSERT_END
,
HA_EXTRA_BULK_INSERT_END
,
HA_EXTRA_PREPARE_FOR_DELETE
HA_EXTRA_PREPARE_FOR_DELETE
};
};
...
...
include/my_sys.h
View file @
d2b07732
...
@@ -553,9 +553,9 @@ extern gptr _my_memdup(const byte *from,uint length,
...
@@ -553,9 +553,9 @@ extern gptr _my_memdup(const byte *from,uint length,
const
char
*
sFile
,
uint
uLine
,
myf
MyFlag
);
const
char
*
sFile
,
uint
uLine
,
myf
MyFlag
);
extern
my_string
_my_strdup
(
const
char
*
from
,
const
char
*
sFile
,
uint
uLine
,
extern
my_string
_my_strdup
(
const
char
*
from
,
const
char
*
sFile
,
uint
uLine
,
myf
MyFlag
);
myf
MyFlag
);
extern
my_string
_my_strdup_with_length
(
const
char
*
from
,
uint
length
,
extern
char
*
_my_strdup_with_length
(
const
byte
*
from
,
uint
length
,
const
char
*
sFile
,
uint
uLine
,
const
char
*
sFile
,
uint
uLine
,
myf
MyFlag
);
myf
MyFlag
);
#ifndef TERMINATE
#ifndef TERMINATE
extern
void
TERMINATE
(
FILE
*
file
);
extern
void
TERMINATE
(
FILE
*
file
);
...
...
include/sslopt-usage.h
deleted
100644 → 0
View file @
c44c70fc
/* 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
myisam/mi_extra.c
View file @
d2b07732
...
@@ -34,7 +34,9 @@
...
@@ -34,7 +34,9 @@
HA_EXTRA_WRITE_CACHE
HA_EXTRA_WRITE_CACHE
HA_EXTRA_CACHE
HA_EXTRA_CACHE
HA_EXTRA_BULK_INSERT_BEGIN
HA_EXTRA_BULK_INSERT_BEGIN
If extra_arg is 0, then the default cache size is used.
If extra_arg is 0, then the default cache size is used.
HA_EXTRA_BULK_INSERT_FLUSH
extra_arg is a a pointer to which index to flush (uint*)
RETURN VALUES
RETURN VALUES
0 ok
0 ok
*/
*/
...
@@ -356,6 +358,14 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg)
...
@@ -356,6 +358,14 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function, void *extra_arg)
error
=
_mi_init_bulk_insert
(
info
,
(
extra_arg
?
*
(
ulong
*
)
extra_arg
:
error
=
_mi_init_bulk_insert
(
info
,
(
extra_arg
?
*
(
ulong
*
)
extra_arg
:
myisam_bulk_insert_tree_size
));
myisam_bulk_insert_tree_size
));
break
;
break
;
case
HA_EXTRA_BULK_INSERT_FLUSH
:
if
(
info
->
bulk_insert
)
{
uint
index_to_flush
=
*
(
uint
*
)
extra_arg
;
if
(
is_tree_inited
(
&
info
->
bulk_insert
[
index_to_flush
]))
reset_tree
(
&
info
->
bulk_insert
[
index_to_flush
]);
}
break
;
case
HA_EXTRA_BULK_INSERT_END
:
case
HA_EXTRA_BULK_INSERT_END
:
if
(
info
->
bulk_insert
)
if
(
info
->
bulk_insert
)
{
{
...
...
mysql-test/r/insert.result
View file @
d2b07732
...
@@ -41,6 +41,14 @@ a t>0 c i
...
@@ -41,6 +41,14 @@ a t>0 c i
5 0 a NULL
5 0 a NULL
6 1 hello NULL
6 1 hello NULL
drop table t1;
drop table t1;
create table t1 (sid char(20), id int(2) NOT NULL auto_increment, key(sid, id));
insert into t1 values ('skr',NULL),('skr',NULL),('test',NULL);
select * from t1;
sid id
skr 1
skr 2
test 1
drop table t1;
drop database if exists foo;
drop database if exists foo;
create database foo;
create database foo;
use foo;
use foo;
...
...
mysql-test/t/insert.test
View file @
d2b07732
...
@@ -39,6 +39,15 @@ insert into t1 set a=default,t=default,c=default,i=default;
...
@@ -39,6 +39,15 @@ insert into t1 set a=default,t=default,c=default,i=default;
select
a
,
t
>
0
,
c
,
i
from
t1
;
select
a
,
t
>
0
,
c
,
i
from
t1
;
drop
table
t1
;
drop
table
t1
;
#
# Test problem with bulk insert and auto_increment on second part keys
#
create
table
t1
(
sid
char
(
20
),
id
int
(
2
)
NOT
NULL
auto_increment
,
key
(
sid
,
id
));
insert
into
t1
values
(
'skr'
,
NULL
),(
'skr'
,
NULL
),(
'test'
,
NULL
);
select
*
from
t1
;
drop
table
t1
;
#
#
# Test of mysqld crash with fully qualified column names
# Test of mysqld crash with fully qualified column names
#
#
...
...
mysys/safemalloc.c
View file @
d2b07732
...
@@ -529,20 +529,20 @@ gptr _my_memdup(const byte *from, uint length, const char *sFile, uint uLine,
...
@@ -529,20 +529,20 @@ gptr _my_memdup(const byte *from, uint length, const char *sFile, uint uLine,
}
/*_my_memdup */
}
/*_my_memdup */
my_string
_my_strdup
(
const
char
*
from
,
const
char
*
sFile
,
uint
uLine
,
char
*
_my_strdup
(
const
char
*
from
,
const
char
*
sFile
,
uint
uLine
,
myf
MyFlags
)
myf
MyFlags
)
{
{
gptr
ptr
;
gptr
ptr
;
uint
length
=
(
uint
)
strlen
(
from
)
+
1
;
uint
length
=
(
uint
)
strlen
(
from
)
+
1
;
if
((
ptr
=
_mymalloc
(
length
,
sFile
,
uLine
,
MyFlags
))
!=
0
)
if
((
ptr
=
_mymalloc
(
length
,
sFile
,
uLine
,
MyFlags
))
!=
0
)
memcpy
((
byte
*
)
ptr
,
(
byte
*
)
from
,(
size_t
)
length
);
memcpy
((
byte
*
)
ptr
,
(
byte
*
)
from
,(
size_t
)
length
);
return
((
my_string
)
ptr
);
return
((
char
*
)
ptr
);
}
/* _my_strdup */
}
/* _my_strdup */
my_string
_my_strdup_with_length
(
const
char
*
from
,
uint
length
,
char
*
_my_strdup_with_length
(
const
byte
*
from
,
uint
length
,
const
char
*
sFile
,
uint
uLine
,
const
char
*
sFile
,
uint
uLine
,
myf
MyFlags
)
myf
MyFlags
)
{
{
gptr
ptr
;
gptr
ptr
;
if
((
ptr
=
_mymalloc
(
length
+
1
,
sFile
,
uLine
,
MyFlags
))
!=
0
)
if
((
ptr
=
_mymalloc
(
length
+
1
,
sFile
,
uLine
,
MyFlags
))
!=
0
)
...
@@ -550,5 +550,5 @@ my_string _my_strdup_with_length(const char *from, uint length,
...
@@ -550,5 +550,5 @@ my_string _my_strdup_with_length(const char *from, uint length,
memcpy
((
byte
*
)
ptr
,
(
byte
*
)
from
,(
size_t
)
length
);
memcpy
((
byte
*
)
ptr
,
(
byte
*
)
from
,(
size_t
)
length
);
ptr
[
length
]
=
0
;
ptr
[
length
]
=
0
;
}
}
return
((
my_string
)
ptr
);
return
((
char
*
)
ptr
);
}
}
sql/ha_isam.cc
View file @
d2b07732
...
@@ -244,7 +244,9 @@ int ha_isam::reset(void)
...
@@ -244,7 +244,9 @@ int ha_isam::reset(void)
int
ha_isam
::
external_lock
(
THD
*
thd
,
int
lock_type
)
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
;
}
}
...
...
sql/ha_myisam.cc
View file @
d2b07732
...
@@ -657,7 +657,15 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
...
@@ -657,7 +657,15 @@ int ha_myisam::repair(THD *thd, MI_CHECK ¶m, bool optimize)
}
}
/* Deactive all not unique index that can be recreated fast */
/*
Deactive all not unique index that can be recreated fast
SYNOPSIS
deactivate_non_unique_index()
rows Rows to be inserted
0 if we don't know
HA_POS_ERROR if we want to disable all keys
*/
void
ha_myisam
::
deactivate_non_unique_index
(
ha_rows
rows
)
void
ha_myisam
::
deactivate_non_unique_index
(
ha_rows
rows
)
{
{
...
@@ -670,9 +678,12 @@ void ha_myisam::deactivate_non_unique_index(ha_rows rows)
...
@@ -670,9 +678,12 @@ void ha_myisam::deactivate_non_unique_index(ha_rows rows)
mi_extra
(
file
,
HA_EXTRA_NO_KEYS
,
0
);
mi_extra
(
file
,
HA_EXTRA_NO_KEYS
,
0
);
else
else
{
{
mi_disable_non_unique_index
(
file
,
rows
);
/* Only disable old index if the table was empty */
if
(
file
->
state
->
records
==
0
)
mi_disable_non_unique_index
(
file
,
rows
);
ha_myisam
::
extra_opt
(
HA_EXTRA_BULK_INSERT_BEGIN
,
ha_myisam
::
extra_opt
(
HA_EXTRA_BULK_INSERT_BEGIN
,
current_thd
->
variables
.
bulk_insert_buff_size
);
current_thd
->
variables
.
bulk_insert_buff_size
);
table
->
bulk_insert
=
1
;
}
}
}
}
enable_activate_all_index
=
1
;
enable_activate_all_index
=
1
;
...
@@ -690,6 +701,7 @@ bool ha_myisam::activate_all_index(THD *thd)
...
@@ -690,6 +701,7 @@ bool ha_myisam::activate_all_index(THD *thd)
DBUG_ENTER
(
"activate_all_index"
);
DBUG_ENTER
(
"activate_all_index"
);
mi_extra
(
file
,
HA_EXTRA_BULK_INSERT_END
,
0
);
mi_extra
(
file
,
HA_EXTRA_BULK_INSERT_END
,
0
);
table
->
bulk_insert
=
0
;
if
(
enable_activate_all_index
&&
if
(
enable_activate_all_index
&&
share
->
state
.
key_map
!=
set_bits
(
ulonglong
,
share
->
base
.
keys
))
share
->
state
.
key_map
!=
set_bits
(
ulonglong
,
share
->
base
.
keys
))
{
{
...
@@ -958,7 +970,9 @@ int ha_myisam::delete_table(const char *name)
...
@@ -958,7 +970,9 @@ int ha_myisam::delete_table(const char *name)
int
ha_myisam
::
external_lock
(
THD
*
thd
,
int
lock_type
)
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
;
}
}
...
@@ -1194,6 +1208,10 @@ longlong ha_myisam::get_auto_increment()
...
@@ -1194,6 +1208,10 @@ longlong ha_myisam::get_auto_increment()
return
auto_increment_value
;
return
auto_increment_value
;
}
}
if
(
table
->
bulk_insert
)
mi_extra
(
file
,
HA_EXTRA_BULK_INSERT_FLUSH
,
(
void
*
)
&
table
->
next_number_index
);
longlong
nr
;
longlong
nr
;
int
error
;
int
error
;
byte
key
[
MI_MAX_KEY_LENGTH
];
byte
key
[
MI_MAX_KEY_LENGTH
];
...
...
sql/lock.cc
View file @
d2b07732
...
@@ -21,6 +21,46 @@
...
@@ -21,6 +21,46 @@
before getting internal locks. If we do it in the other order, the status
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.
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:
TODO:
Change to use my_malloc() ONLY when using LOCK TABLES command or when
Change to use my_malloc() ONLY when using LOCK TABLES command or when
we are forced to use mysql_lock_merge.
we are forced to use mysql_lock_merge.
...
@@ -206,7 +246,7 @@ void mysql_unlock_read_tables(THD *thd, MYSQL_LOCK *sql_lock)
...
@@ -206,7 +246,7 @@ void mysql_unlock_read_tables(THD *thd, MYSQL_LOCK *sql_lock)
sql_lock
->
lock_count
=
found
;
sql_lock
->
lock_count
=
found
;
}
}
/* Then
t
o the same for the external locks */
/* Then
d
o the same for the external locks */
/* Move all write locked tables first */
/* Move all write locked tables first */
TABLE
**
table
=
sql_lock
->
table
;
TABLE
**
table
=
sql_lock
->
table
;
for
(
i
=
found
=
0
;
i
<
sql_lock
->
table_count
;
i
++
)
for
(
i
=
found
=
0
;
i
<
sql_lock
->
table_count
;
i
++
)
...
...
sql/log_event.cc
View file @
d2b07732
...
@@ -744,10 +744,10 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len,
...
@@ -744,10 +744,10 @@ Rotate_log_event::Rotate_log_event(const char* buf, int event_len,
ident_offset
=
ROTATE_HEADER_LEN
;
ident_offset
=
ROTATE_HEADER_LEN
;
}
}
set_if_smaller
(
ident_len
,
FN_REFLEN
-
1
);
set_if_smaller
(
ident_len
,
FN_REFLEN
-
1
);
if
(
!
(
new_log_ident
=
(
char
*
)
my_strdup_with_length
((
byte
*
)
buf
+
if
(
!
(
new_log_ident
=
my_strdup_with_length
((
byte
*
)
buf
+
ident_offset
,
ident_offset
,
(
uint
)
ident_len
,
(
uint
)
ident_len
,
MYF
(
MY_WME
))))
MYF
(
MY_WME
))))
return
;
return
;
alloced
=
1
;
alloced
=
1
;
}
}
...
...
sql/mysqld.cc
View file @
d2b07732
...
@@ -3477,7 +3477,7 @@ struct my_option my_long_options[] =
...
@@ -3477,7 +3477,7 @@ struct my_option my_long_options[] =
"Max packetlength to send/receive from to server."
,
"Max packetlength to send/receive from to server."
,
(
gptr
*
)
&
global_system_variables
.
max_allowed_packet
,
(
gptr
*
)
&
global_system_variables
.
max_allowed_packet
,
(
gptr
*
)
&
max_system_variables
.
max_allowed_packet
,
0
,
GET_ULONG
,
(
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
,
{
"max_binlog_cache_size"
,
OPT_MAX_BINLOG_CACHE_SIZE
,
"Can be used to restrict the total size used to cache a multi-transaction query."
,
"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
,
(
gptr
*
)
&
max_binlog_cache_size
,
(
gptr
*
)
&
max_binlog_cache_size
,
0
,
...
...
sql/sql_insert.cc
View file @
d2b07732
...
@@ -202,6 +202,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
...
@@ -202,6 +202,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
thd
->
variables
.
read_buff_size
);
thd
->
variables
.
read_buff_size
);
table
->
file
->
extra_opt
(
HA_EXTRA_BULK_INSERT_BEGIN
,
table
->
file
->
extra_opt
(
HA_EXTRA_BULK_INSERT_BEGIN
,
thd
->
variables
.
bulk_insert_buff_size
);
thd
->
variables
.
bulk_insert_buff_size
);
table
->
bulk_insert
=
1
;
}
}
while
((
values
=
its
++
))
while
((
values
=
its
++
))
...
@@ -290,6 +291,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
...
@@ -290,6 +291,7 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
error
=
1
;
error
=
1
;
}
}
}
}
table
->
bulk_insert
=
0
;
}
}
if
(
id
&&
values_list
.
elements
!=
1
)
if
(
id
&&
values_list
.
elements
!=
1
)
thd
->
insert_id
(
id
);
// For update log
thd
->
insert_id
(
id
);
// For update log
...
...
sql/sql_load.cc
View file @
d2b07732
...
@@ -248,8 +248,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
...
@@ -248,8 +248,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
table
->
next_number_field
=
table
->
found_next_number_field
;
table
->
next_number_field
=
table
->
found_next_number_field
;
VOID
(
table
->
file
->
extra_opt
(
HA_EXTRA_WRITE_CACHE
,
VOID
(
table
->
file
->
extra_opt
(
HA_EXTRA_WRITE_CACHE
,
thd
->
variables
.
read_buff_size
));
thd
->
variables
.
read_buff_size
));
VOID
(
table
->
file
->
extra_opt
(
HA_EXTRA_BULK_INSERT_BEGIN
,
table
->
bulk_insert
=
1
;
thd
->
variables
.
bulk_insert_buff_size
));
if
(
handle_duplicates
==
DUP_IGNORE
||
if
(
handle_duplicates
==
DUP_IGNORE
||
handle_duplicates
==
DUP_REPLACE
)
handle_duplicates
==
DUP_REPLACE
)
table
->
file
->
extra
(
HA_EXTRA_IGNORE_DUP_KEY
);
table
->
file
->
extra
(
HA_EXTRA_IGNORE_DUP_KEY
);
...
...
sql/sql_table.cc
View file @
d2b07732
...
@@ -18,10 +18,10 @@
...
@@ -18,10 +18,10 @@
/* drop and alter of tables */
/* drop and alter of tables */
#include "mysql_priv.h"
#include "mysql_priv.h"
#include <hash.h>
#ifdef HAVE_BERKELEY_DB
#ifdef HAVE_BERKELEY_DB
#include
<ha_berkeley.h>
#include
"ha_berkeley.h"
#endif
#endif
#include <hash.h>
#include <myisam.h>
#include <myisam.h>
#include <assert.h>
#include <assert.h>
...
...
sql/table.h
View file @
d2b07732
...
@@ -91,7 +91,7 @@ struct st_table {
...
@@ -91,7 +91,7 @@ struct st_table {
my_bool
null_row
;
/* All columns are null */
my_bool
null_row
;
/* All columns are null */
my_bool
maybe_null
,
outer_join
;
/* Used with OUTER JOIN */
my_bool
maybe_null
,
outer_join
;
/* Used with OUTER JOIN */
my_bool
distinct
,
const_table
,
no_rows
;
my_bool
distinct
,
const_table
,
no_rows
;
my_bool
key_read
;
my_bool
key_read
,
bulk_insert
;
my_bool
crypted
;
my_bool
crypted
;
my_bool
db_low_byte_first
;
/* Portable row format */
my_bool
db_low_byte_first
;
/* Portable row format */
my_bool
locked_by_flush
;
my_bool
locked_by_flush
;
...
...
vio/viosslfactories.c
View file @
d2b07732
...
@@ -71,9 +71,11 @@ report_errors()
...
@@ -71,9 +71,11 @@ report_errors()
while
((
l
=
ERR_get_error_line_data
(
&
file
,
&
line
,
&
data
,
&
flags
))
!=
0
)
while
((
l
=
ERR_get_error_line_data
(
&
file
,
&
line
,
&
data
,
&
flags
))
!=
0
)
{
{
#ifndef DBUG_OFF
/* Avoid warning */
char
buf
[
200
];
char
buf
[
200
];
DBUG_PRINT
(
"error"
,
(
"OpenSSL: %s:%s:%d:%s
\n
"
,
ERR_error_string
(
l
,
buf
),
DBUG_PRINT
(
"error"
,
(
"OpenSSL: %s:%s:%d:%s
\n
"
,
ERR_error_string
(
l
,
buf
),
file
,
line
,(
flags
&
ERR_TXT_STRING
)
?
data
:
""
))
;
file
,
line
,(
flags
&
ERR_TXT_STRING
)
?
data
:
""
))
;
#endif
}
}
DBUG_VOID_RETURN
;
DBUG_VOID_RETURN
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment