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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
d8994a51
Commit
d8994a51
authored
Mar 07, 2003
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge work:/my/mysql-4.0 into mashka.mysql.fi:/home/my/mysql-4.0
BitKeeper/etc/ignore: auto-union configure.in: Auto merged
parents
085bb1c6
b07efa92
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
314 additions
and
167 deletions
+314
-167
.bzrignore
.bzrignore
+8
-8
client/mysqlbinlog.cc
client/mysqlbinlog.cc
+1
-1
configure.in
configure.in
+0
-1
libmysql/libmysql.c
libmysql/libmysql.c
+3
-0
mysql-test/r/ctype_latin1_de.result
mysql-test/r/ctype_latin1_de.result
+107
-103
mysql-test/r/delete.result
mysql-test/r/delete.result
+15
-0
mysql-test/r/select.result
mysql-test/r/select.result
+0
-1
mysql-test/r/type_datetime.result
mysql-test/r/type_datetime.result
+6
-0
mysql-test/t/ctype_latin1_de.test
mysql-test/t/ctype_latin1_de.test
+2
-2
mysql-test/t/delete.test
mysql-test/t/delete.test
+20
-0
mysql-test/t/select.test
mysql-test/t/select.test
+0
-2
mysql-test/t/type_datetime.test
mysql-test/t/type_datetime.test
+5
-0
mysys/my_tempnam.c
mysys/my_tempnam.c
+8
-2
sql-bench/crash-me.sh
sql-bench/crash-me.sh
+30
-7
sql/field.h
sql/field.h
+1
-1
sql/ha_myisam.cc
sql/ha_myisam.cc
+7
-7
sql/lock.cc
sql/lock.cc
+74
-2
sql/mysql_priv.h
sql/mysql_priv.h
+3
-0
sql/share/polish/errmsg.txt
sql/share/polish/errmsg.txt
+1
-1
sql/sql_rename.cc
sql/sql_rename.cc
+11
-23
sql/sql_select.cc
sql/sql_select.cc
+5
-0
sql/sql_table.cc
sql/sql_table.cc
+7
-6
No files found.
.bzrignore
View file @
d8994a51
...
...
@@ -206,6 +206,7 @@ config.h.in
config.log
config.status
configure
configure.lineno
core
core.2430
db-*.*.*
...
...
@@ -214,6 +215,7 @@ depcomp
extra/comp_err
extra/my_print_defaults
extra/mysql_install
extra/mysql_waitpid
extra/perror
extra/replace
extra/resolve_stack_dump
...
...
@@ -232,6 +234,7 @@ innobase/autom4te.cache/*
innobase/autom4te.cache/output.0
innobase/autom4te.cache/requests
innobase/autom4te.cache/traces.0
innobase/configure.lineno
innobase/conftest.s1
innobase/conftest.subs
innobase/ib_config.h
...
...
@@ -499,6 +502,11 @@ stamp-h1
strings/conf_to_src
strings/ctype_autoconf.c
strings/ctype_extra_sources.c
support-files/MacOSX/Description.plist
support-files/MacOSX/Info.plist
support-files/MacOSX/StartupParameters.plist
support-files/MacOSX/postinstall
support-files/MacOSX/preinstall
support-files/binary-configure
support-files/my-huge.cnf
support-files/my-large.cnf
...
...
@@ -522,11 +530,3 @@ vio/test-ssl
vio/test-sslclient
vio/test-sslserver
vio/viotest-ssl
extra/mysql_waitpid
support-files/MacOSX/Description.plist
support-files/MacOSX/Info.plist
support-files/MacOSX/StartupParameters.plist
support-files/MacOSX/postinstall
support-files/MacOSX/preinstall
configure.lineno
innobase/configure.lineno
client/mysqlbinlog.cc
View file @
d8994a51
...
...
@@ -27,7 +27,7 @@
#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | CLIENT_LOCAL_FILES)
char
server_version
[
SERVER_VERSION_LENGTH
];
u
int32
server_id
=
0
;
u
long
server_id
=
0
;
// needed by net_serv.c
ulong
bytes_sent
=
0L
,
bytes_received
=
0L
;
...
...
configure.in
View file @
d8994a51
...
...
@@ -14,7 +14,6 @@ SHARED_LIB_VERSION=12:0:0
# Set all version vars based on $VERSION. How do we do this more elegant ?
# Remember that regexps needs to quote [ and ] since this is run through m4
MYSQL_NO_DASH_VERSION
=
`
echo
$VERSION
|
sed
-e
"s|-.*
$|
|"
`
MYSQL_NO_DASH_VERSION
=
`
echo
$VERSION
|
sed
-e
"s|[[a-z]]*-.*
$|
|"
`
MYSQL_BASE_VERSION
=
`
echo
$MYSQL_NO_DASH_VERSION
|
sed
-e
"s|
\.
[[^.]]*
$|
|"
`
F_PART
=
`
echo
$MYSQL_BASE_VERSION
|
sed
-e
"s|
\.
||g"
|
sed
-e
"s|[a-zA-Z]
\+
||"
|sed
-e
"s|^
\(
..
\)
$|
\\
10|"
`
...
...
libmysql/libmysql.c
View file @
d8994a51
...
...
@@ -218,6 +218,9 @@ int my_connect(my_socket s, const struct sockaddr *name, uint namelen,
* implementations of select that don't adjust tv upon
* failure to reflect the time remaining
*/
#ifdef HAVE_POLL
return
(
0
);
#endif
start_time
=
time
(
NULL
);
for
(;;)
{
...
...
mysql-test/r/ctype_latin1_de.result
View file @
d8994a51
drop table if exists t1;
create table t1 (a char (20) not null, b int not null auto_increment, index (a,b)
,index(b)
);
create table t1 (a char (20) not null, b int not null auto_increment, index (a,b));
insert into t1 (a) values (''),('ac'),('ae'),('ad'),('c'),('aeb');
insert into t1 (a) values ('c'),('uc'),('ue'),('ud'),(''),('ueb'),('uf');
insert into t1 (a) values (''),('oc'),('a'),('oe'),('od'),('c'),('oeb');
insert into t1 (a) values ('s'),('ss'),(''),('b'),('ssa'),('ssc'),('a');
insert into t1 (a) values ('e'),('u'),('o'),(''),('a'),('aeae');
insert into t1 (a) values ('q'),('a'),('u'),('o'),(''),('');
insert into t1 (a) values ('q'),('a'),('u'),('o'),(''),('')
,('a')
;
select a,b from t1 order by a,b;
a b
a 35
ac 2
ad 4
a 1
a 2
ac 1
ad 1
1
ae
3
3
1
aeae
33
a
32
aeb
6
c
5
38
39
e
28
o
37
oc 1
5
od 1
8
1
4
oe
17
a 1
6
oeb
20
c 1
9
o
30
q
34
s
2
1
ss
22
2
3
ssa
25
a 2
7
b
24
ssc
26
u
36
uc
8
ud 1
0
ue
9
11
ueb 1
2
c
7
uf 1
3
u
29
ae
2
1
aeae
2
a
1
aeb
1
c
1
1
2
e
1
o
1
oc 1
od 1
1
oe
2
a 1
oeb
1
c 1
o
1
q
1
s 1
ss
1
2
ssa
1
a 2
b
1
ssc
1
u
1
uc
1
ud 1
ue
1
2
ueb 1
c
1
uf 1
u
1
select a,b from t1 order by upper(a),b;
a b
a 35
ac 2
ad 4
a 1
a 2
ac 1
ad 1
1
ae
3
3
1
aeae
33
a
32
aeb
6
c
5
38
39
e
28
o
37
oc 1
5
od 1
8
1
4
oe
17
a 1
6
oeb
20
c 1
9
o
30
q
34
s
2
1
ss
22
2
3
ssa
25
a 2
7
b
24
ssc
26
u
36
uc
8
ud 1
0
ue
9
11
ueb 1
2
c
7
uf 1
3
u
29
ae
2
1
aeae
2
a
1
aeb
1
c
1
1
2
e
1
o
1
oc 1
od 1
1
oe
2
a 1
oeb
1
c 1
o
1
q
1
s 1
ss
1
2
ssa
1
a 2
b
1
ssc
1
u
1
uc
1
ud 1
ue
1
2
ueb 1
c
1
uf 1
u
1
select a from t1 order by a desc;
a
u
...
...
@@ -129,44 +131,46 @@ ae
ad
ac
a
a
check table t1;
Table Op Msg_type Msg_text
test.t1 check status OK
select * from t1 where a like "%";
a b
1
4
a 1
6
c 1
9
o
30
1
a 1
c 1
o
1
select * from t1 where a like binary "%%";
a b
39
2
select * from t1 where a like "%%";
a b
a 35
ac 2
ad 4
ae 3
aeae 33
a 32
aeb 6
a 16
ssa 25
a 27
a 1
a 2
ac 1
ad 1
ae 2
aeae 2
a 1
aeb 1
a 1
ssa 1
a 2
select * from t1 where a like "%U%";
a b
u
36
uc
8
ud 1
0
ue
9
ueb 1
2
uf 1
3
u
29
u
1
uc
1
ud 1
ue
1
ueb 1
uf 1
u
1
select * from t1 where a like "%ss%";
a b
ss
22
ssa
25
ssc
26
ss
1
ssa
1
ssc
1
drop table t1;
select strcmp('','ae'),strcmp('ae',''),strcmp('aeq','q'),strcmp('q','aeq');
strcmp('','ae') strcmp('ae','') strcmp('aeq','q') strcmp('q','aeq')
...
...
mysql-test/r/delete.result
View file @
d8994a51
...
...
@@ -24,3 +24,18 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
insert into t1 values (2),(4),(6),(8),(10),(12),(14),(16),(18),(20),(22),(24),(26),(23),(27);
delete from t1 where a=27;
drop table t1;
CREATE TABLE t1 (
bool char(0) default NULL,
not_null varchar(20) binary NOT NULL default '',
misc integer not null,
PRIMARY KEY (not_null)
) TYPE=MyISAM;
INSERT INTO t1 VALUES (NULL,'a',4), (NULL,'b',5), (NULL,'c',6), (NULL,'d',7);
select * from t1 where misc > 5 and bool is null;
bool not_null misc
NULL c 6
NULL d 7
delete from t1 where misc > 5 and bool is null;
select * from t1 where misc > 5 and bool is null;
bool not_null misc
drop table t1;
mysql-test/r/select.result
View file @
d8994a51
use test;
drop table if exists t1,t2,t3,t4;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,
...
...
mysql-test/r/type_datetime.result
View file @
d8994a51
...
...
@@ -78,3 +78,9 @@ EXPLAIN SELECT * FROM t1 WHERE expedition='0001-00-00 00:00:00';
table type possible_keys key key_len ref rows Extra
t1 ref expedition expedition 8 const 1 Using where
drop table t1;
create table t1 (a datetime not null, b datetime not null);
insert into t1 values (now(), now());
insert into t1 values (now(), now());
select * from t1 where a is null or b is null;
a b
drop table t1;
mysql-test/t/ctype_latin1_de.test
View file @
d8994a51
...
...
@@ -2,13 +2,13 @@
# Test latin_de character set
#
drop
table
if
exists
t1
;
create
table
t1
(
a
char
(
20
)
not
null
,
b
int
not
null
auto_increment
,
index
(
a
,
b
)
,
index
(
b
)
);
create
table
t1
(
a
char
(
20
)
not
null
,
b
int
not
null
auto_increment
,
index
(
a
,
b
));
insert
into
t1
(
a
)
values
(
''
),(
'ac'
),(
'ae'
),(
'ad'
),(
'c'
),(
'aeb'
);
insert
into
t1
(
a
)
values
(
'c'
),(
'uc'
),(
'ue'
),(
'ud'
),(
''
),(
'ueb'
),(
'uf'
);
insert
into
t1
(
a
)
values
(
''
),(
'oc'
),(
'a'
),(
'oe'
),(
'od'
),(
'c'
),(
'oeb'
);
insert
into
t1
(
a
)
values
(
's'
),(
'ss'
),(
''
),(
'b'
),(
'ssa'
),(
'ssc'
),(
'a'
);
insert
into
t1
(
a
)
values
(
'e'
),(
'u'
),(
'o'
),(
''
),(
'a'
),(
'aeae'
);
insert
into
t1
(
a
)
values
(
'q'
),(
'a'
),(
'u'
),(
'o'
),(
''
),(
''
);
insert
into
t1
(
a
)
values
(
'q'
),(
'a'
),(
'u'
),(
'o'
),(
''
),(
''
)
,(
'a'
)
;
select
a
,
b
from
t1
order
by
a
,
b
;
select
a
,
b
from
t1
order
by
upper
(
a
),
b
;
select
a
from
t1
order
by
a
desc
;
...
...
mysql-test/t/delete.test
View file @
d8994a51
...
...
@@ -35,3 +35,23 @@ create table t1 (a bigint not null, primary key (a,a,a,a,a,a,a,a,a,a));
insert
into
t1
values
(
2
),(
4
),(
6
),(
8
),(
10
),(
12
),(
14
),(
16
),(
18
),(
20
),(
22
),(
24
),(
26
),(
23
),(
27
);
delete
from
t1
where
a
=
27
;
drop
table
t1
;
#
# CHAR(0) bug - not actually DELETE bug, but anyway...
#
CREATE
TABLE
t1
(
bool
char
(
0
)
default
NULL
,
not_null
varchar
(
20
)
binary
NOT
NULL
default
''
,
misc
integer
not
null
,
PRIMARY
KEY
(
not_null
)
)
TYPE
=
MyISAM
;
INSERT
INTO
t1
VALUES
(
NULL
,
'a'
,
4
),
(
NULL
,
'b'
,
5
),
(
NULL
,
'c'
,
6
),
(
NULL
,
'd'
,
7
);
select
*
from
t1
where
misc
>
5
and
bool
is
null
;
delete
from
t1
where
misc
>
5
and
bool
is
null
;
select
*
from
t1
where
misc
>
5
and
bool
is
null
;
drop
table
t1
;
mysql-test/t/select.test
View file @
d8994a51
...
...
@@ -6,8 +6,6 @@
# Simple select test
#
use
test
;
drop
table
if
exists
t1
,
t2
,
t3
,
t4
;
CREATE
TABLE
t1
(
...
...
mysql-test/t/type_datetime.test
View file @
d8994a51
...
...
@@ -59,3 +59,8 @@ INSERT INTO t1 (numfacture,expedition) VALUES ('1212','0001-00-00 00:00:00');
SELECT
*
FROM
t1
WHERE
expedition
=
'0001-00-00 00:00:00'
;
EXPLAIN
SELECT
*
FROM
t1
WHERE
expedition
=
'0001-00-00 00:00:00'
;
drop
table
t1
;
create
table
t1
(
a
datetime
not
null
,
b
datetime
not
null
);
insert
into
t1
values
(
now
(),
now
());
insert
into
t1
values
(
now
(),
now
());
select
*
from
t1
where
a
is
null
or
b
is
null
;
drop
table
t1
;
mysys/my_tempnam.c
View file @
d8994a51
...
...
@@ -115,13 +115,19 @@ my_string my_tempnam(const char *dir, const char *pfx,
old_env
=
(
char
**
)
environ
;
if
(
dir
)
{
/* Don't use TMPDIR if dir is given */
((
char
**
)
environ
)
=
(
char
**
)
temp_env
;
/*
The following strange cast is required because the IBM compiler on AIX
doesn't allow us to cast the value of environ.
The cast of environ is needed as some systems doesn't allow us to
update environ with a char ** pointer. (const mismatch)
*/
(
*
(
char
***
)
&
environ
)
=
(
char
**
)
temp_env
;
temp_env
[
0
]
=
0
;
}
#endif
res
=
tempnam
((
char
*
)
dir
,(
my_string
)
pfx
);
/* Use stand. dir with prefix */
#if !defined(OS2) && !defined(__NETWARE__)
(
(
char
**
)
environ
)
=
(
char
**
)
old_env
;
(
*
(
char
***
)
&
environ
)
=
(
char
**
)
old_env
;
#endif
if
(
!
res
)
DBUG_PRINT
(
"error"
,(
"Got error: %d from tempnam"
,
errno
));
...
...
sql-bench/crash-me.sh
View file @
d8994a51
...
...
@@ -39,7 +39,7 @@
# as such, and clarify ones such as "mediumint" with comments such as
# "3-byte int" or "same as xxx".
$version
=
"1.6
0
"
;
$version
=
"1.6
1
"
;
use DBI
;
use Getopt::Long
;
...
...
@@ -74,7 +74,7 @@ usage() if ($opt_help || $opt_Information);
version
()
&&
exit
(
0
)
if
(
$opt_version
)
;
$opt_suffix
=
'-'
.
$opt_suffix
if
(
length
(
$opt_suffix
)
!=
0
)
;
$opt_config_file
=
"
$pwd
/
$opt_dir
/
$opt_server$opt_suffix
.cfg"
$opt_config_file
=
"
$pwd
/
$opt_dir
/
$opt_server$opt_suffix
.cfg"
if
(
length
(
$opt_config_file
)
==
0
)
;
$log_prefix
=
' ###'
;
# prefix for log lines in result file
$safe_query_log
=
''
;
...
...
@@ -540,7 +540,7 @@ else
" Please start it and try again
\n
"
;
exit
1
;
}
$dbh
=
safe
_connect
()
;
$dbh
=
retry
_connect
()
;
}
...
...
@@ -2880,9 +2880,10 @@ As all used queries are legal according to some SQL standard. any
reasonable SQL server should be able to run this test without any
problems.
All questions is cached in
$opt_dir
/'server_name'.cfg that future runs will use
limits found in previous runs. Remove this file if you want to find the
current limits for your version of the database server.
All questions is cached in
$opt_dir
/'server_name'[-suffix].cfg that
future runs will use limits found in previous runs. Remove this file
if you want to find the current limits for your version of the
database server.
This program uses some table names while testing things. If you have any
tables with the name of 'crash_me' or 'crash_qxxxx' where 'x' is a number,
...
...
@@ -3152,7 +3153,29 @@ sub safe_connect
}
#
# Check if the server is upp and running. If not, ask the user to restart it
# Test connecting a couple of times before giving an error
# This is needed to get the server time to free old connections
# after the connect test
#
sub retry_connect
{
my
(
$dbh
,
$i
)
;
for
(
i
=
0
;
$i
< 10
;
$i
++
)
{
if
((
$dbh
=
DBI->connect
(
$server
->
{
'data_source'
}
,
$opt_user
,
$opt_password
,
{
PrintError
=>
0, AutoCommit
=>
1
})))
{
$dbh
->
{
LongReadLen
}=
16000000
;
# Set max retrieval buffer
return
$dbh
;
}
sleep
(
1
)
;
}
return
safe_connect
()
;
}
#
# Check if the server is up and running. If not, ask the user to restart it
#
sub check_connect
...
...
sql/field.h
View file @
d8994a51
...
...
@@ -65,7 +65,7 @@ class Field {
virtual
String
*
val_str
(
String
*
,
String
*
)
=
0
;
virtual
Item_result
result_type
()
const
=
0
;
virtual
Item_result
cmp_type
()
const
{
return
result_type
();
}
bool
eq
(
Field
*
field
)
{
return
ptr
==
field
->
ptr
;
}
bool
eq
(
Field
*
field
)
{
return
ptr
==
field
->
ptr
&&
null_ptr
==
field
->
null_ptr
;
}
virtual
bool
eq_def
(
Field
*
field
);
virtual
uint32
pack_length
()
const
{
return
(
uint32
)
field_length
;
}
virtual
void
reset
(
void
)
{
bzero
(
ptr
,
pack_length
());
}
...
...
sql/ha_myisam.cc
View file @
d8994a51
...
...
@@ -1021,7 +1021,7 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
{
int
error
;
uint
i
,
j
,
recpos
,
minpos
,
fieldpos
,
temp_length
,
length
;
bool
found_
auto_increment
=
0
,
found_
real_auto_increment
=
0
;
bool
found_real_auto_increment
=
0
;
enum
ha_base_keytype
type
;
char
buff
[
FN_REFLEN
];
KEY
*
pos
;
...
...
@@ -1091,12 +1091,6 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
keydef
[
i
].
seg
[
j
].
null_bit
=
0
;
keydef
[
i
].
seg
[
j
].
null_pos
=
0
;
}
if
(
field
->
flags
&
AUTO_INCREMENT_FLAG
&&
!
found_auto_increment
)
{
keydef
[
i
].
flag
|=
HA_AUTO_KEY
;
found_auto_increment
=
1
;
found_real_auto_increment
=
(
j
==
0
);
}
if
(
field
->
type
()
==
FIELD_TYPE_BLOB
)
{
keydef
[
i
].
seg
[
j
].
flag
|=
HA_BLOB_PART
;
...
...
@@ -1108,6 +1102,12 @@ int ha_myisam::create(const char *name, register TABLE *table_arg,
keyseg
+=
pos
->
key_parts
;
}
if
(
table_arg
->
found_next_number_field
)
{
keydef
[
table_arg
->
next_number_index
].
flag
|=
HA_AUTO_KEY
;
found_real_auto_increment
=
table_arg
->
next_number_key_offset
==
0
;
}
recpos
=
0
;
recinfo_pos
=
recinfo
;
while
(
recpos
<
(
uint
)
table_arg
->
reclength
)
{
...
...
sql/lock.cc
View file @
d8994a51
...
...
@@ -487,11 +487,12 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
{
TABLE
*
table
;
char
key
[
MAX_DBKEY_LENGTH
];
char
*
db
=
table_list
->
db
?
table_list
->
db
:
(
thd
->
db
?
thd
->
db
:
(
char
*
)
""
);
uint
key_length
;
DBUG_ENTER
(
"lock_table_name"
);
safe_mutex_assert_owner
(
&
LOCK_open
);
key_length
=
(
uint
)
(
strmov
(
strmov
(
key
,
table_list
->
db
)
+
1
,
table_list
->
real_name
)
key_length
=
(
uint
)
(
strmov
(
strmov
(
key
,
db
)
+
1
,
table_list
->
real_name
)
-
key
)
+
1
;
/* Only insert the table if we haven't insert it already */
...
...
@@ -520,7 +521,7 @@ int lock_table_name(THD *thd, TABLE_LIST *table_list)
my_free
((
gptr
)
table
,
MYF
(
0
));
DBUG_RETURN
(
-
1
);
}
if
(
remove_table_from_cache
(
thd
,
table_list
->
db
,
table_list
->
real_name
))
if
(
remove_table_from_cache
(
thd
,
db
,
table_list
->
real_name
))
DBUG_RETURN
(
1
);
// Table is in use
DBUG_RETURN
(
0
);
}
...
...
@@ -564,6 +565,77 @@ bool wait_for_locked_table_names(THD *thd, TABLE_LIST *table_list)
DBUG_RETURN
(
result
);
}
/*
Lock all tables in list with a name lock
SYNOPSIS
lock_table_names()
thd Thread handle
table_list Names of tables to lock
NOTES
One must have a lock on LOCK_open when calling this
RETURN
0 ok
1 Fatal error (end of memory ?)
*/
bool
lock_table_names
(
THD
*
thd
,
TABLE_LIST
*
table_list
)
{
bool
got_all_locks
=
1
;
TABLE_LIST
*
lock_table
;
for
(
lock_table
=
table_list
;
lock_table
;
lock_table
=
lock_table
->
next
)
{
int
got_lock
;
if
((
got_lock
=
lock_table_name
(
thd
,
lock_table
))
<
0
)
goto
end
;
// Fatal error
if
(
got_lock
)
got_all_locks
=
0
;
// Someone is using table
}
/* If some table was in use, wait until we got the lock */
if
(
!
got_all_locks
&&
wait_for_locked_table_names
(
thd
,
table_list
))
goto
end
;
return
0
;
end:
unlock_table_names
(
thd
,
table_list
,
lock_table
);
return
1
;
}
/*
Unlock all tables in list with a name lock
SYNOPSIS
unlock_table_names()
thd Thread handle
table_list Names of tables to unlock
last_table Don't unlock any tables after this one.
(default 0, which will unlock all tables)
NOTES
One must have a lock on LOCK_open when calling this
This function will send a COND_refresh signal to inform other threads
that the name locks are removed
RETURN
0 ok
1 Fatal error (end of memory ?)
*/
void
unlock_table_names
(
THD
*
thd
,
TABLE_LIST
*
table_list
,
TABLE_LIST
*
last_table
)
{
for
(
TABLE_LIST
*
table
=
table_list
;
table
!=
last_table
;
table
=
table
->
next
)
unlock_table_name
(
thd
,
table
);
pthread_cond_broadcast
(
&
COND_refresh
);
}
static
void
print_lock_error
(
int
error
)
{
int
textno
;
...
...
sql/mysql_priv.h
View file @
d8994a51
...
...
@@ -723,6 +723,9 @@ int lock_and_wait_for_table_name(THD *thd, TABLE_LIST *table_list);
int
lock_table_name
(
THD
*
thd
,
TABLE_LIST
*
table_list
);
void
unlock_table_name
(
THD
*
thd
,
TABLE_LIST
*
table_list
);
bool
wait_for_locked_table_names
(
THD
*
thd
,
TABLE_LIST
*
table_list
);
bool
lock_table_names
(
THD
*
thd
,
TABLE_LIST
*
table_list
);
void
unlock_table_names
(
THD
*
thd
,
TABLE_LIST
*
table_list
,
TABLE_LIST
*
last_table
=
0
);
/* old unireg functions */
...
...
sql/share/polish/errmsg.txt
View file @
d8994a51
...
...
@@ -7,8 +7,8 @@
"hashchk",
"isamchk",
"TAK",
"NIE",
"TAK",
"Nie mona stworzy pliku '%-.64s' (Kod bdu: %d)",
"Nie mona stworzy tabeli '%-.64s' (Kod bdu: %d)",
"Nie mona stworzy bazy danych '%-.64s'. B?d %d",
...
...
sql/sql_rename.cc
View file @
d8994a51
...
...
@@ -31,8 +31,8 @@ static TABLE_LIST *rename_tables(THD *thd, TABLE_LIST *table_list,
bool
mysql_rename_tables
(
THD
*
thd
,
TABLE_LIST
*
table_list
)
{
bool
error
=
1
,
got_all_locks
=
1
;
TABLE_LIST
*
lock_table
,
*
ren_table
=
0
;
bool
error
=
1
;
TABLE_LIST
*
ren_table
=
0
;
DBUG_ENTER
(
"mysql_rename_tables"
);
/*
...
...
@@ -47,23 +47,11 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
}
VOID
(
pthread_mutex_lock
(
&
LOCK_open
));
for
(
lock_table
=
table_list
;
lock_table
;
lock_table
=
lock_table
->
next
)
{
int
got_lock
;
if
((
got_lock
=
lock_table_name
(
thd
,
lock_table
))
<
0
)
goto
end
;
if
(
got_lock
)
got_all_locks
=
0
;
}
if
(
!
got_all_locks
&&
wait_for_locked_table_names
(
thd
,
table_list
))
goto
end
;
if
(
lock_table_names
(
thd
,
table_list
))
goto
err
;
if
(
!
(
ren_table
=
rename_tables
(
thd
,
table_list
,
0
)))
error
=
0
;
end:
if
(
ren_table
)
error
=
0
;
if
((
ren_table
=
rename_tables
(
thd
,
table_list
,
0
)))
{
/* Rename didn't succeed; rename back the tables in reverse order */
TABLE_LIST
*
prev
=
0
,
*
table
;
...
...
@@ -85,7 +73,7 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
table
=
table
->
next
->
next
;
// Skip error table
/* Revert to old names */
rename_tables
(
thd
,
table
,
1
);
/* Note that lock_table == 0 here, so the unlock loop will work */
error
=
1
;
}
/* Lets hope this doesn't fail as the result will be messy */
...
...
@@ -100,9 +88,9 @@ bool mysql_rename_tables(THD *thd, TABLE_LIST *table_list)
send_ok
(
&
thd
->
net
);
}
for
(
TABLE_LIST
*
table
=
table_list
;
table
!=
lock_table
;
table
=
table
->
next
)
unlock_table_name
(
thd
,
table
);
pthread_cond_broadcast
(
&
COND_refresh
);
unlock_table_names
(
thd
,
table_list
);
err:
pthread_mutex_unlock
(
&
LOCK_open
);
DBUG_RETURN
(
error
);
}
...
...
@@ -131,7 +119,7 @@ rename_tables(THD *thd, TABLE_LIST *table_list, bool skip_error)
if
(
!
access
(
name
,
F_OK
))
{
my_error
(
ER_TABLE_EXISTS_ERROR
,
MYF
(
0
),
name
);
DBUG_RETURN
(
ren_table
);
// This can't be skip
p
ed
DBUG_RETURN
(
ren_table
);
// This can't be skiped
}
sprintf
(
name
,
"%s/%s/%s%s"
,
mysql_data_home
,
ren_table
->
db
,
ren_table
->
real_name
,
...
...
sql/sql_select.cc
View file @
d8994a51
...
...
@@ -3330,6 +3330,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
==
Item_func
::
COND_AND_FUNC
;
List_iterator
<
Item
>
li
(
*
((
Item_cond
*
)
cond
)
->
argument_list
());
Item
::
cond_result
tmp_cond_value
;
bool
should_fix_fields
=
0
;
*
cond_value
=
Item
::
COND_UNDEF
;
Item
*
item
;
...
...
@@ -3349,6 +3350,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
delete
item
;
// This may be shared
#endif
VOID
(
li
.
replace
(
new_item
));
should_fix_fields
=
1
;
}
if
(
*
cond_value
==
Item
::
COND_UNDEF
)
*
cond_value
=
tmp_cond_value
;
...
...
@@ -3375,6 +3377,9 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
break
;
/* purecov: deadcode */
}
}
if
(
should_fix_fields
)
cond
->
fix_fields
(
current_thd
,
0
);
if
(
!
((
Item_cond
*
)
cond
)
->
argument_list
()
->
elements
||
*
cond_value
!=
Item
::
COND_OK
)
return
(
COND
*
)
0
;
...
...
sql/sql_table.cc
View file @
d8994a51
/* Copyright (C) 2000
MySQL AB & MySQL Finland AB & TCX DataKonsult
AB
/* Copyright (C) 2000
-2003 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
...
...
@@ -80,7 +80,6 @@ int mysql_rm_table(THD *thd,TABLE_LIST *tables, my_bool if_exists)
{
my_error
(
ER_TABLE_NOT_LOCKED_FOR_WRITE
,
MYF
(
0
),
tables
->
real_name
);
error
=
1
;
goto
err
;
}
while
(
global_read_lock
&&
!
thd
->
killed
)
...
...
@@ -93,7 +92,6 @@ int mysql_rm_table(THD *thd,TABLE_LIST *tables, my_bool if_exists)
err:
pthread_mutex_unlock
(
&
LOCK_open
);
VOID
(
pthread_cond_broadcast
(
&
COND_refresh
));
// Signal to refresh
pthread_mutex_lock
(
&
thd
->
mysys_var
->
mutex
);
thd
->
mysys_var
->
current_mutex
=
0
;
...
...
@@ -138,7 +136,6 @@ int mysql_rm_table_part2_with_lock(THD *thd,
error
=
mysql_rm_table_part2
(
thd
,
tables
,
if_exists
,
dont_log_query
);
pthread_mutex_unlock
(
&
LOCK_open
);
VOID
(
pthread_cond_broadcast
(
&
COND_refresh
));
// Signal to refresh
pthread_mutex_lock
(
&
thd
->
mysys_var
->
mutex
);
thd
->
mysys_var
->
current_mutex
=
0
;
...
...
@@ -171,6 +168,9 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
bool
some_tables_deleted
=
0
,
tmp_table_deleted
=
0
;
DBUG_ENTER
(
"mysql_rm_table_part2"
);
if
(
lock_table_names
(
thd
,
tables
))
DBUG_RETURN
(
1
);
for
(
table
=
tables
;
table
;
table
=
table
->
next
)
{
char
*
db
=
table
->
db
?
table
->
db
:
thd
->
db
;
...
...
@@ -242,11 +242,12 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
}
}
error
=
0
;
unlock_table_names
(
thd
,
tables
);
error
=
0
;
if
(
wrong_tables
.
length
())
{
my_error
(
ER_BAD_TABLE_ERROR
,
MYF
(
0
),
wrong_tables
.
c_ptr
());
error
=
1
;
error
=
1
;
}
DBUG_RETURN
(
error
);
}
...
...
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